Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
|
/approve-spec 9474c56 |
PR Analysis Report🔎 Preview ·
|
| Component | Size | LoC | Visual · A11y · RTL |
|---|---|---|---|
| LayoutPanel | 20.7 kB (+205 B) · 4.9 kB CSS (0) | — | ✗ · ✓ · ✓ |
| Layout | 6.8 kB (0) · 2.3 kB CSS (0) | — | ✗ · ✓ · ✓ |
| LayoutContent | 17.4 kB (0) · 1.7 kB CSS (0) | — | ✗ · ✓ · ✓ |
21 more components
| Component | Size | LoC | Visual · A11y · RTL |
|---|---|---|---|
| LayoutFooter | 5.9 kB (0) · 1.6 kB CSS (0) | — | ✗ · ✓ · ✗ |
| LayoutHeader | 6.0 kB (0) · 1.6 kB CSS (0) | — | ✗ · ✓ · ✗ |
| SideNav | 🔴 93.3 kB (+5.6 kB) · 11.3 kB CSS (0) | — | — · — · — |
| AppShell | 88.7 kB (+376 B) · 13.4 kB CSS (0) | — | — · — · — |
| ResizeHandle | 20.6 kB (+74 B) · 4.3 kB CSS (0) | — | ✓ · ✓ · ✓ |
| TableCell | 106.5 kB (+6 B) · 17.4 kB CSS (0) | — | — · — · — |
| TableHeaderCell | 106.1 kB (+2 B) · 17.2 kB CSS (0) | — | — · — · — |
| lab/Comments | 321.2 kB (+2 B) · 2.5 kB CSS (0) | — | — · — · — |
| List | 17.4 kB (+1 B) · 651 B CSS (0) | — | — · — · — |
| Collapsible | 26.4 kB (0) · 4.5 kB CSS (0) | — | — · — · — |
| ContextMenu | 105.3 kB (0) · 17.0 kB CSS (0) | — | — · — · — |
| DropdownMenu | 93.7 kB (0) · 17.1 kB CSS (0) | — | — · — · — |
| Markdown | 177.3 kB (0) · 20.0 kB CSS (0) | — | — · — · — |
| MoreMenu | 94.0 kB (0) · 17.1 kB CSS (0) | — | — · — · — |
| PowerSearch | 279.3 kB (0) · 23.5 kB CSS (0) | — | — · — · — |
| Table | 114.7 kB (0) · 17.7 kB CSS (0) | — | — · — · — |
| lab/TransferList | 105.3 kB (0) · 1.7 kB CSS (0) | — | — · — · — |
| CheckboxList | 67.3 kB (−1 B) · 8.1 kB CSS (0) | — | — · — · — |
| TreeList | 43.0 kB (−1 B) · 5.6 kB CSS (0) | — | — · — · — |
| lab/TransferListSelector | 111.9 kB (−1 B) · 1.9 kB CSS (0) | — | — · — · — |
| lab/CommentThread | 316.3 kB (−2 B) · 2.4 kB CSS (0) | — | — · — · — |
Visual changes: 2 snapshots in 1 component
A change is a question for the reviewer, not a failure.
| Component · story | Before | After | Diff |
|---|---|---|---|
| Layout · Content Width — Scrollbar Placement (neutral, dark) | ![]() |
![]() |
![]() |
| Layout · Content Width — Scrollbar Placement (neutral, light) | ![]() |
![]() |
![]() |
Package size: @astryxdesign/core 6.89 MB packed (+8.2 kB); no new dependencies.
API changes: none in this pull request
Committed API report behind this build: cli 19 rows, core 25 rows; run pnpm api:report.
Touched components checked; add ci:run-visual or ci:run-rtl to run the full suites.
Generated by PR Enrichment workflow | View full report
There was a problem hiding this comment.
Requesting changes: two blocking items.
- Desktop behavior change needs an owner decision: the LayoutPanel slide plays under a mouse and trackpad as well as touch (
createResizable.tslines 749–767 measure it andresizablePane.tsline 382 plays it, and the changeset says "under every pointer"), so either gate the slide to touch input or cite the owner decision that covers this desktop change. - Size: at 2,832 authored lines this branch is over the 2,000-line threshold because it carries #9300's commits while #9300's body does not carry the identical
Stack: #9300 → #9989line, so add that line to #9300 (or land #9300 first) so the stack rules apply.
Non-blocking: new comments in resizablePane.ts and createResizable.ts call the hook's own region, which slides, the "configuration-object form", while component:LayoutPanel FR7 and AR2 say the configuration-object form never slides; "the hook's region" would read unambiguously.
Otherwise the slide, the focus move and the widened resizable slot match their records, and the new tests cover each path. CI has not run on this head yet.
[Automated review]
9474c56 to
891333d
Compare
891333d to
4cf1f97
Compare
|
/approve-spec 4cf1f97 |
There was a problem hiding this comment.
Requesting changes on the stack.
#9300: approved, pending CI
No blocking findings: the widened resizable slot, SideNav's region path and the focus move follow component:Resizable FR9, component:LayoutPanel FR8 and AR2, and component:SideNav FR7, and the records now name the widened type.
#9989: changes requested
The record edits are approved at this head; one blocker remains.
- Desktop behavior change needs an owner decision: the LayoutPanel slide plays under a mouse and trackpad as well as touch (
createResizable.tslines 744–767 measure it andresizablePane.tsline 382 plays it, with no pointer gate), so either gate the slide to touch input or cite the owner decision that covers this desktop change (an approval of the spec text alone is not that decision).
Non-blocking: the browser test named for the hook's props passes the region (Resizable.stories.tsx line 903), so no real-browser test drives resizable={region.props}.
Whole stack: it does not pass while #9989's slide waits on that decision. A pull request lands only when it and every pull request below it are approved. CI has not run on either head: both are drafts from a fork, so CI runs once each is marked ready for review and a maintainer adds the ci:run label.
[Automated review]
4cf1f97 to
ab40e35
Compare
|
/approve-spec ab40e35 |
There was a problem hiding this comment.
Requesting changes: two blocking items.
- Desktop behavior change needs an owner decision: the LayoutPanel slide plays under a mouse and trackpad as well as touch (
createResizable.tslines 753 and 766 measure it andresizablePane.tsline 382 plays it, with no pointer gate), so either gate the slide to touch input or cite the owner decision that covers this desktop change. - Regression: at 2,960 authored lines this branch is over the 2,000-line threshold because it carries #9300's commits while #9300's body no longer carries the identical
Stack: #9300 → #9989line, so restore that line in #9300 (or land #9300 first) so the stack rules apply.
The record edits are approved at this head, and the slide, the focus move and the widened resizable slot match their records with passing tests. Non-blocking: two new comments in createResizable.ts (lines 460–465 and 471–473) read as fragments; suggested rewrites are inline. CI has not run on this draft head yet.
[Automated review]
|
On the two blocking items at ab40e35:
The two comment rewrites will go into that rebase. |
ab40e35 to
281668b
Compare
|
/approve-spec 281668b |
|
/approve-spec 6c71421 |
There was a problem hiding this comment.
Approved pending CI: CI has not run on this head yet.
A resizable LayoutPanel given the hook's value now slides on every collapse and open path the Resizable and LayoutPanel specs list, and the slide cases pass in Chromium. The rubber band and the release close have moved out of this pull request, and the desktop reach is covered by the owner decision the description cites.
Next steps:
- Mark the pull request ready for review; because the branch lives in a fork, a maintainer adds the
ci:runlabel so CI runs.
Non-blocking:
- The three member comments on
LaidOutInsideinanimatedLayout.tsrestate their fields; renaminggutterstopaddinglets them go (see the inline note).
[Automated review]
| /** Its padding at the axis's start and end. */ | ||
| readonly gutters: readonly [string, string]; | ||
| /** Its overflow across and down. */ | ||
| readonly overflow: readonly [string, string]; | ||
| /** Its scroll offset across and down. */ | ||
| readonly scroll: readonly [number, number]; |
There was a problem hiding this comment.
Non-blocking (INV29): these three comments restate the fields' names and types. Suggested: rename gutters to padding and drop the three member comments; the interface's own JSDoc already says why the values are kept.
This pull request carries the slide alone. The rubber band at the limits, the close decided on the lift, their FR8 sentences and their tests move to the pull request stacked on this one. The tree is the slide's own commits on main 3bd058c, with the slide captures that wait for a commit by frames.
6c71421 to
fa3bfea
Compare
|
/approve-spec fa3bfea |
There was a problem hiding this comment.
This pull request is reviewed as part of its stack; see the review on #10292.
|
/approve-spec 78117f7 |
There was a problem hiding this comment.
Approved. A LayoutPanel given useResizable's value now slides closed and open on every collapse and open path, as component:Resizable FR8, component:LayoutPanel FR7 and spec:AST-105 FR9 describe, and the record edits carry an engineering owner's /approve-spec for this head. This pull request is judged on its own: its Stack: line lists #10292 above it, but #10292 does not contain this head, which merged main after #10292 was built.
Before merging:
- The
pr-a11ybrowser-spec checks failed before running any test because the job found no Storybook build (apps/storybook/dist/index.json); nothing in this change causes that, but those checks need a green re-run.
Non-blocking:
- The description's Testing note says its checks ran on this head's tree, but they ran before the merge of
main; the interaction suites pass in CI at this head, so only that sentence is stale.
[Automated review]
|
|
||
| export type {LayoutEdge}; | ||
|
|
||
| /** The width a panel renders: pixels, a CSS length, or none. */ |
There was a problem hiding this comment.
Non-blocking (INV29): this restates the type below it, and the comment on renderedWidth() (line 40) restates the method name. Suggested: drop both comments.
|
/approve-spec 662ec2c |
There was a problem hiding this comment.
Approved pending CI: CI has not finished on this head yet. A LayoutPanel given useResizable's value now slides closed and open on every collapse and open path, as component:Resizable FR8, component:LayoutPanel FR7 and spec:AST-105 FR9 describe, and the record edits carry an engineering owner's /approve-spec for this head. This pull request is judged on its own: its Stack: line lists #10292 above it, but #10292 does not contain this head, which merged main after #10292 was built.
Non-blocking:
- The description's Testing note says its checks ran on this head's tree, but they ran before the merges of
main; only that sentence is stale.
[Automated review]






Stack: #9989 → #10292 → #10333
Behavior module: the resize controller's pane reveal.
User need
A resizable LayoutPanel jumps shut and open.
spec:AST-105FR9 slides it, with the content beside it.Problem and solution fit
useResizableregion slides closed and open, with the content beside it moving on the same motion.collapse(),expand(), Enter, a double-click, the grow arrow, a controlledisCollapsed, and a drag past the collapse threshold. A drag that reopens follows the pointer.The rubber band at the limits and the close decided on the lift are in the pull request stacked on this one.
Current specification
component:ResizableFR8 andcomponent:LayoutPanelFR7;spec:AST-105FR5, FR9.Authority for every pointer, desktop included: Cindy's specs decision on #8783, Oct 31 2026, verbatim: "edge reveal A". A LayoutPanel slides by default, with no new API.
Public delta and caller burden
No prop, option or export; size,
isCollapsed, callbacks, persistence and ARIA are unchanged. Changeset:[feat].Design and alternatives
architecture:react-component-runtimeINV6).Evidence
paneSlide.interaction.browser.spec.ts).Writing rubric results
Over
component:Resizableandcomponent:LayoutPanel: the FR8 and FR7 gaps go. R3 evidence: rows name tests. R1, R2, R4–R6: none.Scope
Testing
On main 3bd058c (#10236 merged). This head's tree is the one these checks ran on (6c71421); the try-it stories' commit is out of its history.
CI=true pnpm lint(0 errors); check:knowledge; check:changesets; the Storybook build;paneSlidein Chromium (13) and in WebKit under the CI profile (13).