Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
578a218
fix(README): minial => minimal
wise-introvert Dec 22, 2020
6239c4a
Merge pull request #187 from wise-introvert/patch-1
iannbing Jan 3, 2021
d8ff5e1
chore: modernize toolchain + freeze v1 API contract (M1)
iannbing Apr 18, 2026
cb8e6b8
test: full v2 test suite — characterization + forward + unit stubs (M2)
iannbing Apr 18, 2026
d9d69bb
feat(tree): pure modules — walk, useDebouncedCallback, useTreeMenuSta…
iannbing Apr 18, 2026
6645e99
feat: v2 function components + CSS + strangler cutover (M4–M5)
iannbing Apr 18, 2026
84f17c6
refactor(types): exactOptionalPropertyTypes + kebab-case + review fol…
iannbing Apr 18, 2026
33e1653
feat: theming — Tailwind v4 vars, classNames prop, labels prop, polish
iannbing Apr 18, 2026
66a6a5f
docs: README v2 + CHANGELOG.md
iannbing Apr 18, 2026
5b55583
perf: feature-detected useDeferredValue
iannbing Apr 18, 2026
e6d3577
ci: release workflow — RC and stable via npm-version-suffix
iannbing Apr 18, 2026
4af4328
feat(dom): nested ul/li/ul default UI + row-wrapper a11y fixes
iannbing Apr 18, 2026
0283fa7
docs: Astro Starlight docs site + Pages deploy workflow
iannbing Apr 18, 2026
395b619
feat: dog-food example apps + render-cost bench + strict tree-node types
iannbing Apr 18, 2026
ab8919b
docs(stories): virtualization + render-props (flat + nested + a11y)
iannbing Apr 18, 2026
bc85a56
feat(api): unflatten export + review-pass fixes
iannbing Apr 18, 2026
5a8f859
docs(site): route rstm tokens through Starlight's theme-adaptive vars
iannbing Apr 19, 2026
4277500
fix(docs-site): target inner elements for rstm-token override
iannbing Apr 19, 2026
a088656
fix(styles): allow `--rstm-*` overrides via ancestor declarations
iannbing Apr 19, 2026
72377bc
docs(site): visual design pass — fonts, palette, hero, cards
iannbing Apr 19, 2026
2416bde
docs(site): logo + favicon; compact landing hero; fix card stagger hover
iannbing Apr 19, 2026
d61eccd
docs(site): live demo + code block side-by-side on landing
iannbing Apr 19, 2026
92c2924
docs(site): top-align demo+code; reflow JSX to avoid horizontal scroll
iannbing Apr 19, 2026
62e69f5
docs(site): match demo+code card treatment; drop redundant Try it header
iannbing Apr 19, 2026
22d5849
docs(site): add breathing room between hero CTAs and demo row
iannbing Apr 19, 2026
6cfcb33
feat(styles): toggle icon reads as clickable; new sideways-tree logo
iannbing Apr 19, 2026
e922fef
docs(site): remove logo and favicon
iannbing Apr 20, 2026
e42088c
docs(site): fix Get-started link + sharpen Tailwind messaging
iannbing Apr 20, 2026
60d9a9d
fix(keyboard): prevent page scroll when the tree handles an arrow key
iannbing Apr 20, 2026
17a4f5b
docs(site): demo explains the click contract + gives live feedback
iannbing Apr 20, 2026
001c717
fix(demo): toggle works; click-to-expand via render-props; skip Starl…
iannbing Apr 20, 2026
ddcc9fa
fix(styles): center the toggle glyph via inline SVG triangles
iannbing Apr 20, 2026
c016567
docs(site): hint strip now covers keyboard nav too
iannbing Apr 20, 2026
eeb7cbd
feat(keyboard): → on open branch focuses first child (WAI-ARIA tree p…
iannbing Apr 20, 2026
7d481e9
fix(styles): inline focus-shadow so ancestor ring-color overrides work
iannbing Apr 20, 2026
d143e3e
docs(site): minimalism pass — monochrome palette, anchored live demo
iannbing Apr 20, 2026
4c0551c
feat(styles): monochrome default palette + 1px focus ring
iannbing Apr 20, 2026
b605334
docs(site): skeleton placeholder for hero tree to kill hydration pop-in
iannbing Apr 20, 2026
b030a88
feat(api): `keySeparator` prop — customize the key-path delimiter
iannbing Apr 20, 2026
c6d2b01
feat(api): `expandAll()` / `collapseAll()` imperative handle + `colle…
iannbing Apr 20, 2026
509053a
chore(release): bump to 2.0.0
iannbing Apr 20, 2026
3f18b2b
Merge development + resolve README + fix CI test-infra gaps
iannbing Apr 20, 2026
5468c15
fix(tests): unblock React 19 CI matrix
iannbing Apr 20, 2026
b8a45f9
ci(docs): idempotently flip Pages to workflow-build on deploy
iannbing Apr 20, 2026
c82e791
fix(tests): move \`delay: null\` to userEvent.setup; tighten shim gen…
iannbing Apr 20, 2026
90f2bad
fix(tests): swap user.type → fireEvent.change in debounce-search tests
iannbing Apr 20, 2026
1edd6f0
docs(site): accessibility pass + hero polish + dev-scripts
iannbing Apr 21, 2026
7d8425c
docs: add CONTRIBUTING.md
iannbing Apr 21, 2026
5e3d9eb
ci(release): rewire to branch-driven flow + add annotated release tags
iannbing Apr 21, 2026
9802bd9
ci(release): only fire when shippable source actually changes
iannbing Apr 21, 2026
a29fd20
ci(release): drop NPM_TOKEN — switch to Trusted Publishing (OIDC)
iannbing Apr 21, 2026
fdc226e
refactor: reorganize imports and simplify code structure in walk func…
iannbing Apr 21, 2026
a66a622
build: drop dist/main.css alias — use /styles subpath only
iannbing Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .babelrc

This file was deleted.

143 changes: 0 additions & 143 deletions .circleci/config.yml

This file was deleted.

79 changes: 79 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: CI

on:
push:
branches: [master, development, 'feat/**']
pull_request:

jobs:
lint:
name: Lint + typecheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run lint
- run: npm run typecheck

test:
name: Test (React ${{ matrix.react }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
react: ['16.14.0', '17.0.2', '18.3.1', '19.0.0']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- name: Install React ${{ matrix.react }}
# RTL version matrix:
# - React 16.14 / 17 → RTL v12 (last version with those peers).
# Tests use a local renderHook shim built on render() so the
# missing @testing-library/react.renderHook export is OK.
# - React 18 → RTL v14.
# - React 19 → RTL v16 (first version with React 19 in its peer
# range; v14 pins to react@^18 and rejects @19.0.0 install).
run: |
if [[ "${{ matrix.react }}" == 16.* || "${{ matrix.react }}" == 17.* ]]; then
npm install --no-save \
react@${{ matrix.react }} \
react-dom@${{ matrix.react }} \
"@testing-library/react@^12"
elif [[ "${{ matrix.react }}" == 18.* ]]; then
npm install --no-save \
react@${{ matrix.react }} \
react-dom@${{ matrix.react }} \
"@testing-library/react@^14"
else
npm install --no-save \
react@${{ matrix.react }} \
react-dom@${{ matrix.react }} \
"@testing-library/react@^16"
fi
- run: npm test

build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run build
- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 7
66 changes: 66 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Deploy docs

on:
push:
branches: [master]
paths:
- 'docs/**'
- 'src/**'
- '.github/workflows/docs.yml'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
name: Build docs site
runs-on: ubuntu-latest
defaults:
run:
working-directory: docs
steps:
- uses: actions/checkout@v4

# The repo's Pages source used to be the `gh-pages` branch
# (legacy Storybook publish). `actions/deploy-pages` requires the
# source to be `workflow`, so idempotently flip it before we do
# anything else. The PUT is a no-op once the setting is already
# `workflow` — safe to run on every deploy.
- name: Ensure Pages is configured for Actions-based deploys
working-directory: .
run: |
gh api -X PUT "repos/${{ github.repository }}/pages" \
-F build_type=workflow
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: docs/package-lock.json
- run: npm ci
- run: npm run build
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/dist

deploy:
name: Deploy to GitHub Pages
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy
id: deployment
uses: actions/deploy-pages@v4
Loading
Loading