Repository navigation
Conversation
…ontract List containerClassName, containerStyle, controlClassName, and controlStyle in the English, Chinese, and dense API references, and update the draft contract for the family FR10 base-prop and part-styling adoption and the shared clear glyph target.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
PR Analysis Report📚 Storybook Preview🧪 Sandbox PreviewModified ComponentsDateInput (@astryxdesign/core) · View in Storybook
Bundle Size Summary
Accessibility AuditStatus: No accessibility violations detected. Visual Regression42 of 448 shot(s) changed. A change here is a question, not a failure: check whether the after is the
and 22 more. Generated by PR Enrichment workflow | Storybook | Sandbox | View full report |
There was a problem hiding this comment.
The new DateInput API reference entries and the [docs] Changeset match the props DateInput already accepts and the input-field family's part-styling rule. Approval now waits on a maintainer decision about the new draft requirement FR13 and its verification-map row in DateInput.spec.md, which a maintainer needs to approve, reword, or reject. Separately, FR13's base-prop list leaves out the family rule's hidden, inert, and dir and both of its development warnings, so please reference the full input-field FR10 rule, or list all of it, instead of a subset.
[Automated review]
| | FR10 | Standalone mode MUST compose Field; admitted InputGroup mode MUST remove competing Field chrome while preserving name, description, value, keyboard, focus, and editing semantics. | `family:input-fields/FR3`; current source and InputGroup tests | Settled shared rule and verified adoption | | ||
| | FR11 | Clear MUST emit `undefined` through the ordinary change pipeline. The pointer and bottom-sheet surfaces restore field focus using their shipped timing; the native surface MUST NOT reclaim focus because doing so reopens the OS picker. | Current source and focused clear tests | Verified shipped behavior | | ||
| | FR12 | Disabled-with-reason MUST remain focusable enough to expose its explanation while blocking mutation. Ordinary disabled and explicit-loading states remain inactive. During a pending Action, pointer and bottom-sheet surfaces remain inactive; the native surface stays focusable so the OS picker remains attached but rejects additional commits until the Action settles. | `family:input-fields/FR4–FR6`; current source and focused tests | Settled shared rule and verified adoption | | ||
| | FR13 | Base props (`ref`, `id`, `data-*`, `aria-*`, and DOM event handlers) MUST reach the date input on every surface; root `xstyle`, `className`, and `style` are not accepted; `container*` MUST style the Field box where one renders and `control*` the visual control box, never the native input. A caller DOM handler runs after DateInput's own handler and cannot cancel built-in behavior. | `family:input-fields/FR10`; current source and FR10 tests | Settled shared rule and verified adoption | |
There was a problem hiding this comment.
This row restates the input-field family's FR10 but narrows it: FR10 also requires hidden, inert, and dir to reach the primary semantic control, and it requires development warnings for untyped root styling and for container* where no Field box renders (DateInput already does all of this). Referencing the family rule — for example, "DateInput adopts family:input-fields/FR10 on every surface; its primary semantic control is the date input" — or listing the full FR10 set would keep the draft from reading as a narrower rule.
There was a problem hiding this comment.
The new DateInput API reference rows and the [docs] Changeset match the props DateInput already accepts and the input-field family's part-styling rule, and FR13 now links the family's FR10 rule instead of restating part of it. Approval waits on a maintainer decision to approve or reject the new draft requirement FR13 and its verification-map row in DateInput.spec.md, because no current spec states them as written. If a maintainer rejects them, removing FR13 and its row while keeping the FR10 citation in the governing-rules row would settle it.
[Automated review]
There was a problem hiding this comment.
The new DateInput API reference rows and the [docs] Changeset match the props DateInput already accepts and the input-field family's FR10 part-styling rule, and the other draft-record edits match current specs. Approval waits on a maintainer decision to approve or reject the new draft requirement FR13 and its verification-map row in DateInput.spec.md, because no current spec states them as written: the family record names DateInput's primary semantic control only as "date input", and the cited DateInput.fr10.test.tsx does not exercise hidden, inert, or dir. If a maintainer rejects them, removing FR13 and its row while keeping the FR10 citation in the governing-rules row settles it; nothing else needs to change.
[Automated review]
There was a problem hiding this comment.
Nothing here needs to change: the four new DateInput API reference rows match the props DateInput already accepts and the input-field family's FR10 part-styling rule, and the [docs] Changeset passes its check. The draft contract cites FR10 without adding a component requirement of its own, and its clear-glyph theming text matches the alias removal in 0.7.0. As an optional cleanup, the description's writing-rubric line still mentions FR13, which this revision removed.
[Automated review]
User impact
Builders reading DateInput's API reference could not find
containerClassName,containerStyle,controlClassName, orcontrolStyle, even though DateInput accepts them and they are the only class-name and inline-style hooks it has after root styling was removed. The English, Chinese, and dense references now list all six part-styling props, like the other field components. The draft contract now matches DateInput's current behavior. Runtime behavior does not change.Audit scope
core/DateInput1e883f86e7aa5c2be376671f746d79e5cfae769b4faee79d299c5f4661bfecbb01a7aade966440ee[docs]Changeset)Score
3, 5, 5, 3, 5, nm, 5, 5, 4, 5, 4; after3, 5, 5, 3, 5, nm, 5, 5, 5, 5, 4.Findings
architecture:interaction-modality; WCAG 2.2 SC 2.4.3undefinedto Calendar, which treats it as uncontrolled, so reopening the calendar shows the cleared date as selected. A focused test at the exact head reproduces it: one day stays selected after clear and reopen.null; WCAG 2.2 SC 4.1.2containerClassName,containerStyle,controlClassName, andcontrolStyle, which DateInput accepts underfamily:input-fields/FR10; the other field members list them.family:input-fields/FR10; rubric X5bdate-input-clear-iconalias and did not cite the FR10 base-prop and part-styling rule DateInput now follows.family:input-fields/FR10verified_by. No new component requirement is added.Not scored: the bottom-sheet surface inherits BottomSheet's recorded shared-dismissal adoption gap (owned by BottomSheet under
family:overlay-dismissal). The bottom-sheet calendar's day cells fade their colors without a reduced-motion collapse, but the motion record is still a draft, so no current authority applies.What changed
DateInput.doc.mjs— four props entries indocsanddocsZh, fourdocsDensedescriptions, matching the sibling field components.DateInput.spec.md(draft) — citesfamily:input-fields/FR10in the governing rules and the family relationship, addsDateInput.fr10.test.tsxtoverified_by, and names the current clear-glyph target..changeset/date-input-part-style-props-docs.md—[docs]patch, because the API reference ships in the package.Evidence
4faee79: CI run 38256902974 succeeded, including build, lint, unit tests, docsite tests, and the Storybook build.pr-a11yaudited all 26 DateInput stories: 0 violations and no new baseline entries.pr-rtl(core):core/DateInputpasses the automatic check and its curated calendar/clear control-order check.review-requiredis success on4faee79, set by GitHub Actions through the repository's Review signal workflow.spec-owner-approvalis success (draft record only), and the CLA check passes.typecheck:docs;pnpm build; docsite generate and tests — 620 passed, 6 skipped;check:knowledge;check:changesets. Later commits changed only draft-contract text, withcheck:knowledgere-run after each, plus one empty commit that retriggered a failed preview deployment.Closed evidence inventory
Presentation.test.tsx; native and touch suitesOpenCalendarAuditstoryDateInputTouch.test.tsxNativeDateField.test.tsxAllVariationsDateInput.fr10.test.tsx;StylingPartsstoryDateInput.doc.mjsthemingTargets.test.ts; themed storiespr-a11y(26 stories) andpr-rtl(core)Visual acceptance
Product visual delta: N/A. The change is limited to the API reference, the draft contract, and a Changeset; no component source, style, story, or rendered output changes.
The exact-head stable visual gate passed with verdict
changed: 448 shots, 356 unchanged, 42 changed, 50 added, 22 removed, 0 failed, against a baseline captured on 2026-09-26. #7370's exact-head report, from a PR that changed no DateInput file, lists the same 42 changed, 50 added, and 22 removed shots. 41 changed shots match it pixel for pixel; the 42nd, a SideNav resize shot, also varies between runs of this PR. No DateInput shot changed: its 8 added and 2 removed shots appear identically in #7370's report. The verdict reflects baseline drift, not this PR.Knowledge overlap search
component:DateInput,DateInput.spec.md,containerClassName,controlClassName,FR10,date-input-clear-icon, plus the pathpackages/core/src/DateInput/.component:DateInputatpackages/core/src/DateInput/DateInput.spec.md; the FR10 rule stays withfamily:input-fieldsand is linked, not copied.TouchDateField.tsx; feat(DateInput): add exact theme-aware picker adaptations #6133 and feat(core): make the CLI visible where agents read #5939 are drafts. None editsDateInput.spec.md. DateRangeInput, DateTimeInput, and TimeInput carry the same API-reference gap; that is outside this audit.Review feedback
family:input-fields/FR10and then that it not add a draft requirement that no current spec states. The contract now only cites FR10; the earlier FR13 row and its verification row are removed. The automated review approved the final head.Needs Review
Writing rubric results
FR10 exact-head report
{ "schemaVersion": 1, "component": "DateInput", "package": "core", "mode": "night-watch", "rubricVersion": "1.16.6", "repositoryBase": "1e883f86e7aa5c2be376671f746d79e5cfae769b", "repositoryHead": "4faee79d299c5f4661bfecbb01a7aade966440ee", "componentContractHead": "4faee79d299c5f4661bfecbb01a7aade966440ee", "inventory": {"closed": true, "rows": 13}, "score": {"before": 85.6, "after": 87.3, "beforeBlocks": 2, "afterBlocks": 2}, "unresolvedObjectiveGaps": [{"id": "D1", "rule": "A5", "owner": "#6304"}, {"id": "D2", "rule": "B15", "owner": "#6935"}], "unresolvedManualGaps": [], "remediations": [ {"id": "D3", "state": "verified-source", "evidence": "six part-styling props listed in all three references"}, {"id": "D4", "state": "verified-source", "evidence": "draft contract cites FR10 and names the shared clear glyph target"} ], "approvals": {"privateExactHeadSelfReview": "clean", "reviewSignal": "success (GitHub Actions)", "specOwner": "draft record only"}, "checks": {"local": "green; no local browser", "exactHeadCI": "success (run 38256902974)", "a11y": "0 violations across 26 owned stories", "rtl": "automatic and curated checks pass", "visual": "N/A product delta; gate drift matches an unrelated PR"}, "eligibility": {"eligible": false, "reasons": ["FR11 auto-merge inactive", "two open BLOCKs owned by contributor pull requests", "held until the 0.7.0 release is tagged"]} }