@qijenchen/design-system 0.1.0-beta.93 → 0.1.0-beta.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +6 -208
- package/CLAUDE.md +2 -23
- package/dist/components/Calendar/calendar.d.ts.map +1 -1
- package/dist/components/Calendar/calendar.js +47 -23
- package/dist/components/Calendar/calendar.js.map +1 -1
- package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
- package/dist/components/DataTable/cell-registry.js +1 -5
- package/dist/components/DataTable/cell-registry.js.map +1 -1
- package/dist/components/DataTable/data-table-filter-value-picker.js +4 -0
- package/dist/components/DataTable/data-table-filter-value-picker.js.map +1 -1
- package/dist/components/DataTable/data-table.d.ts.map +1 -1
- package/dist/components/DataTable/data-table.js +3 -2
- package/dist/components/DataTable/data-table.js.map +1 -1
- package/dist/components/DataTable/filter-tree.js +6 -0
- package/dist/components/DataTable/filter-tree.js.map +1 -1
- package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
- package/dist/components/DatePicker/date-picker.js +183 -156
- package/dist/components/DatePicker/date-picker.js.map +1 -1
- package/dist/components/Dialog/dialog.d.ts.map +1 -1
- package/dist/components/Dialog/dialog.js +4 -2
- package/dist/components/Dialog/dialog.js.map +1 -1
- package/dist/components/Field/field-context.d.ts +12 -0
- package/dist/components/Field/field-context.d.ts.map +1 -1
- package/dist/components/Field/field-context.js +10 -1
- package/dist/components/Field/field-context.js.map +1 -1
- package/dist/components/Field/field-wrapper.d.ts.map +1 -1
- package/dist/components/Field/field-wrapper.js +7 -1
- package/dist/components/Field/field-wrapper.js.map +1 -1
- package/dist/components/Field/field.d.ts.map +1 -1
- package/dist/components/Field/field.js +11 -2
- package/dist/components/Field/field.js.map +1 -1
- package/dist/components/InlineEdit/inline-edit.d.ts +5 -0
- package/dist/components/InlineEdit/inline-edit.d.ts.map +1 -1
- package/dist/components/InlineEdit/inline-edit.js +65 -33
- package/dist/components/InlineEdit/inline-edit.js.map +1 -1
- package/dist/components/Input/input.d.ts.map +1 -1
- package/dist/components/Input/input.js +3 -2
- package/dist/components/Input/input.js.map +1 -1
- package/dist/components/LinkInput/link-input.d.ts.map +1 -1
- package/dist/components/LinkInput/link-input.js +2 -1
- package/dist/components/LinkInput/link-input.js.map +1 -1
- package/dist/components/Popover/popover.d.ts.map +1 -1
- package/dist/components/Popover/popover.js +4 -2
- package/dist/components/Popover/popover.js.map +1 -1
- package/dist/components/Select/select.d.ts.map +1 -1
- package/dist/components/Select/select.js +59 -37
- package/dist/components/Select/select.js.map +1 -1
- package/dist/components/Textarea/textarea.d.ts +11 -0
- package/dist/components/Textarea/textarea.d.ts.map +1 -1
- package/dist/components/Textarea/textarea.js +22 -5
- package/dist/components/Textarea/textarea.js.map +1 -1
- package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
- package/dist/components/TimePicker/time-picker.js +4 -3
- package/dist/components/TimePicker/time-picker.js.map +1 -1
- package/dist/patterns/element-anatomy/item-anatomy.d.ts +9 -0
- package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
- package/dist/patterns/element-anatomy/item-anatomy.js +71 -27
- package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
- package/ds-canonical/adapters/claude/agents/README.md +58 -0
- package/ds-canonical/adapters/claude/agents/canonical-reviewer.md +14 -0
- package/ds-canonical/adapters/claude-root-instructions.md +24 -0
- package/ds-canonical/adapters/claude-settings-base.json +172 -0
- package/ds-canonical/commands/README.md +8 -13
- package/ds-canonical/commands/gov-status.md +5 -75
- package/ds-canonical/fork/AGENTS.md +116 -213
- package/ds-canonical/fork/CLAUDE.md +54 -0
- package/ds-canonical/fork/codex/agents/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/codex/agents/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/codex/agents/skills/independent-review/SKILL.md +29 -19
- package/ds-canonical/fork/codex/agents/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/codex/agents/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/codex/agents/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/codex/agents/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/codex/agents/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/codex/agents/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/codex/hooks.json +44 -3
- package/ds-canonical/fork/common/closed-tool-execution.mjs +1001 -0
- package/ds-canonical/fork/common/instruction.md +116 -0
- package/ds-canonical/fork/consumer/governance-check.mjs +3059 -0
- package/ds-canonical/fork/consumer/lib/closed-tool-execution.mjs +1001 -0
- package/ds-canonical/fork/consumer/lock.json +189 -0
- package/ds-canonical/fork/consumer/lock.schema.json +338 -0
- package/ds-canonical/fork/consumer/managed-files/0235cf6b3fd402a3717881dc205b5bf77aed7632e7d7d6f1811a40e3033bd816.blob +145 -0
- package/ds-canonical/fork/consumer/managed-files/145aab4b4fc470fc9ba7679b4a1d87d4f6a6d604940bd40f8d675c8af696498f.blob +47 -0
- package/ds-canonical/fork/consumer/managed-files/189e551431181e4a88783c02130d2787b801ef731c86e35bcde89a7313aa020e.blob +149 -0
- package/ds-canonical/fork/consumer/managed-files/24ad71c8613ddcf6fd23818cb3bb477a1fb6d83af4550b0bad43099813088686.blob +28 -0
- package/ds-canonical/fork/consumer/managed-files/2d1ef5617a5ce3c39ad9aae1c42af7d199f9270c0a0ccb490b63d62dbc6913db.blob +1001 -0
- package/ds-canonical/fork/consumer/managed-files/3625e02235cf166a50649a4d704cfb68fead69d0e168c481df013ebae9f6be25.blob +1412 -0
- package/ds-canonical/fork/consumer/managed-files/3ddedc67b464bdfe3dde9803a2d917920c96d633678b802eee638a44cd47366a.blob +8 -0
- package/ds-canonical/fork/consumer/managed-files/423729840acdd43c812f17c245b871716c6b60f76e4d3e94864d0e34a815bf8d.blob +348 -0
- package/ds-canonical/fork/consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob +464 -0
- package/ds-canonical/fork/consumer/managed-files/475fba657eaeb8abd88f60635f3eadab27a9d0d3114ba4fffc65f43a2a0fe6e2.blob +124 -0
- package/ds-canonical/fork/consumer/managed-files/61c6aca6d7f04bedbf556eaa9d3043681fe48cbe0e93a8ccb1d69a7c5e23fdcf.blob +113 -0
- package/ds-canonical/fork/consumer/managed-files/63061e05969667005020166ea2ae7df3c96663f7a928e7dd3eebc1471022df56.blob +2398 -0
- package/ds-canonical/fork/consumer/managed-files/65410b66e8799a560e07b71779c186fed2a0ef50575ac44745df7a0938a9c2b4.blob +317 -0
- package/ds-canonical/fork/consumer/managed-files/6929a3c8bb4d69c507720b4754aeb339c6cbb8ff655e0a381d76606d64695e38.blob +393 -0
- package/ds-canonical/fork/consumer/managed-files/6b746628ac11fcccbe277ef6fea94cc2a7b90ea2822e83536eae80d5ee4b3fa5.blob +167 -0
- package/ds-canonical/fork/consumer/managed-files/76d485470d30ff014afacf7ce643763de9f4f956d9fc8128dbc1814774cf2e63.blob +671 -0
- package/ds-canonical/fork/consumer/managed-files/77e06f62670dfee01e9b5e8b0f8dad085ce711d75538c1fb0679d9818acaca82.blob +424 -0
- package/ds-canonical/fork/consumer/managed-files/7937321877e5c34c27dae36c0d507d21cd42fa3f46a8f11a284b8b4a52b6faa4.blob +84 -0
- package/ds-canonical/fork/consumer/managed-files/794bb911ba8ebef58ab0d44a55b9968a19d2c62bcfb310b1ee3a84166f087f21.blob +880 -0
- package/ds-canonical/fork/consumer/managed-files/7b17835d0ceb17cdcdcaf930540a3e5d0943a34a747ac43c12ca8cd485c11581.blob +44 -0
- package/ds-canonical/fork/consumer/managed-files/7eb6cc60abfdabaf6617c336058fad1454ccde08889295767bfd9b7fd153cc6e.blob +778 -0
- package/ds-canonical/fork/consumer/managed-files/81037efa5b3b9f4a875704005fb268acdc9233bb901f44902e4e37e1da92b8e3.blob +46 -0
- package/ds-canonical/fork/consumer/managed-files/884721550b56308812b20917adac7a12f36fdb4ecda6b02460a7f5a219c0c966.blob +78 -0
- package/ds-canonical/fork/consumer/managed-files/91f414b9462ddc1e4be1d4c6ca4ac7a7340a6eec9e98ee109cbc049d3b354b6a.blob +36 -0
- package/ds-canonical/fork/consumer/managed-files/92e4828cdcb96ff0d01daa16f6885f24045a8e72820665650f2a1890dc3a446c.blob +121 -0
- package/ds-canonical/fork/consumer/managed-files/93a89f16f6717d1e4e4e27ec20ef916e3355c7aa890ca74cd9b12db30d8a899f.blob +43 -0
- package/ds-canonical/fork/consumer/managed-files/974521d6b8fe796ea4c58b3c78b0c2b8a1be262b97100d77aaf4cc9c7724bcab.blob +45 -0
- package/ds-canonical/fork/consumer/managed-files/9791c85388d2e2e2bd564e2550fadc3351c4c960a47ce838098afcba7544eb90.blob +959 -0
- package/ds-canonical/fork/consumer/managed-files/a448d2222133335c30e6fda5116e26a40db3283a19d62ccc0663c30d272262a7.blob +174 -0
- package/ds-canonical/fork/consumer/managed-files/ab072e7f2eca51f0e18a5e18c4b333260ee5d219a12cc6df5bb2d683f0b2734d.blob +2636 -0
- package/ds-canonical/fork/consumer/managed-files/bc44cabad181f766611dab6a8f52d81100afadd50ac59799015e8ba7bf46d9eb.blob +596 -0
- package/ds-canonical/fork/consumer/managed-files/c4aa767f11714467de0038a2149cf78074baddc17fc6a9e074b6aed7544c6f3c.blob +80 -0
- package/ds-canonical/fork/consumer/managed-files/c893e9b734b162f4c631fef871128c16a9ab565f796a0e76d7f320f821f220f5.blob +41 -0
- package/ds-canonical/fork/consumer/managed-files/cd9c61f8ff24fb9bcc3663e346e2cfa419cfb84e02aae18d3dc66dd192681696.blob +9 -0
- package/ds-canonical/fork/consumer/managed-files/da2ad2737315d25a5300905ddefd62f1695056a8a1af155c5b34170ad9923bce.blob +38 -0
- package/ds-canonical/fork/consumer/managed-files/e1b11160d6c4043002d2cbff6d9a4ae551698a96137773c4244dadfac152fcb0.blob +222 -0
- package/ds-canonical/fork/consumer/managed-files/e26057408661597aac4a57cdf7e30e2f9d0afb1b9a2dbbb692c3805cd9028ca5.blob +250 -0
- package/ds-canonical/fork/consumer/managed-files/e68ae1915965d8e17d4b2441c00c2b97fe062ea308ae8535c9eebb2fc16fa245.blob +20 -0
- package/ds-canonical/fork/consumer/managed-files/e71c65f45c6af7ce12b6b3c0d8028f185da5b719e2050c9b2a6b243d41ae4878.blob +182 -0
- package/ds-canonical/fork/consumer/managed-files/e813096d69c49812e40e00be9ac8fa14d77f0ec1f97ab4c45cb096b3bedd35de.blob +3 -0
- package/ds-canonical/fork/consumer/managed-files/e930ebca6fd8eeb30802aac0930efae7bcc44cc0996f24de07c11ca6a081fedf.blob +277 -0
- package/ds-canonical/fork/consumer/managed-files/ea94e914d5c8acb84ad7660e5bda0f01b6ccc8cf96b0f6b1ce048f8938d0f5b5.blob +47 -0
- package/ds-canonical/fork/consumer/managed-files/f4db6e616d5229aa7e700c6a3ace022cb9d90baae74e38ca65fce617f18e0d9b.blob +110 -0
- package/ds-canonical/fork/consumer/managed-files/faa128c26102415dc5345e68698efbbd28a395c35ee278dceae044cf430692b2.blob +11 -0
- package/ds-canonical/fork/governance.lock +1552 -103
- package/ds-canonical/fork/hooks/_log-fire.sh +109 -12
- package/ds-canonical/fork/hooks/block_prototype_imports.py +148 -29
- package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +23 -12
- package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +116 -65
- package/ds-canonical/fork/hooks/check_consumer_code_quality.sh +140 -0
- package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +84 -30
- package/ds-canonical/fork/hooks/check_dynamic_tailwind_class.sh +16 -6
- package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +65 -21
- package/ds-canonical/fork/hooks/check_field_family_invariants.sh +90 -24
- package/ds-canonical/fork/hooks/check_fork_product_quality.sh +8 -6
- package/ds-canonical/fork/hooks/check_item_list_gap.sh +4 -2
- package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +31 -13
- package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +220 -95
- package/ds-canonical/fork/hooks/check_pattern_invariants.sh +73 -14
- package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +23 -12
- package/ds-canonical/fork/hooks/check_story_determinism.sh +1 -1
- package/ds-canonical/fork/hooks/check_story_invariants.sh +342 -61
- package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
- package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
- package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +105 -22
- package/ds-canonical/fork/hooks/lib/_hook_integrity.sh +158 -0
- package/ds-canonical/fork/hooks/lib/_provider_paths.sh +162 -0
- package/ds-canonical/fork/launchers/approval-evidence.mjs +1131 -0
- package/ds-canonical/fork/launchers/authority-decision-evidence.mjs +413 -0
- package/ds-canonical/fork/launchers/canonical-order.mjs +8 -0
- package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +139 -29
- package/ds-canonical/fork/launchers/format-provider-hook-output.mjs +25 -0
- package/ds-canonical/fork/launchers/independent-review.mjs +490 -0
- package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +88 -43
- package/ds-canonical/fork/launchers/normalize-provider-event.mjs +355 -0
- package/ds-canonical/fork/launchers/product-hook-dispatch-runtime.mjs +1067 -0
- package/ds-canonical/fork/launchers/provider-hook-normalization.mjs +1646 -0
- package/ds-canonical/fork/launchers/provider-hook-output-transport.mjs +525 -0
- package/ds-canonical/fork/launchers/settings-hooks.json +30 -53
- package/ds-canonical/fork/manifest.json +1881 -23
- package/ds-canonical/fork/providers/claude/hook-config.json +333 -0
- package/ds-canonical/fork/providers/claude/instruction.md +54 -0
- package/ds-canonical/fork/providers/claude/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/providers/claude/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/SKILL.md +43 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/providers/claude/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/providers/claude/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/providers/claude/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/providers/claude/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/providers/codex/hook-config.json +57 -0
- package/ds-canonical/fork/providers/codex/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/providers/codex/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/SKILL.md +43 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/providers/codex/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/providers/codex/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/providers/codex/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/providers/codex/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/references/story-baseline-registry.json +117 -0
- package/ds-canonical/fork/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/fork/references/utility-registry.json +377 -0
- package/ds-canonical/fork/references/utility-registry.schema.json +373 -0
- package/ds-canonical/fork/review/canonical-order.mjs +8 -0
- package/ds-canonical/fork/review/provider-review-binding.mjs +2377 -0
- package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +19 -12
- package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +19 -15
- package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +17 -11
- package/ds-canonical/fork/skills/independent-review/SKILL.md +37 -0
- package/ds-canonical/fork/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/skills/performance-audit/SKILL.md +11 -8
- package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +31 -21
- package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +9 -5
- package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +30 -26
- package/ds-canonical/fork/skills/propose-options/SKILL.md +6 -4
- package/ds-canonical/fork/skills/prototype/SKILL.md +21 -21
- package/ds-canonical/fork/skills/prototype/references/audit-checks.md +7 -6
- package/ds-canonical/fork/skills/prototype/references/checkpoints.md +26 -17
- package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +2 -1
- package/ds-canonical/fork/skills/prototype/references/ooux-template.md +1 -1
- package/ds-canonical/fork/skills/prototype/references/proposal-template.md +6 -5
- package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +28 -27
- package/ds-canonical/fork/skills/ux-audit/SKILL.md +8 -5
- package/ds-canonical/fork/skills/visual-audit/SKILL.md +37 -43
- package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +15 -15
- package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +6 -6
- package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +2 -2
- package/ds-canonical/hooks/README.md +37 -23
- package/ds-canonical/hooks/_log-fire.sh +109 -12
- package/ds-canonical/hooks/auto_regen_ds_barrel.sh +52 -20
- package/ds-canonical/hooks/block_prototype_imports.py +148 -29
- package/ds-canonical/hooks/check_audit_post_report_validator.sh +76 -66
- package/ds-canonical/hooks/check_audit_sample_escape.sh +4 -4
- package/ds-canonical/hooks/check_benchmark_citation.sh +3 -3
- package/ds-canonical/hooks/check_canonical_propagation.sh +81 -22
- package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +22 -11
- package/ds-canonical/hooks/check_codex_brief_invariants.sh +100 -56
- package/ds-canonical/hooks/check_codex_collab_5step.sh +31 -25
- package/ds-canonical/hooks/check_consumer_app_invariants.sh +116 -65
- package/ds-canonical/hooks/check_consumer_code_quality.sh +140 -0
- package/ds-canonical/hooks/check_datatable_invariants.sh +103 -25
- package/ds-canonical/hooks/check_dim_count_drift.sh +5 -4
- package/ds-canonical/hooks/check_ds_anchor_preflight.sh +83 -29
- package/ds-canonical/hooks/check_dynamic_tailwind_class.sh +16 -6
- package/ds-canonical/hooks/check_escape_marker_abuse.sh +65 -21
- package/ds-canonical/hooks/check_field_controls_contracts.sh +10 -8
- package/ds-canonical/hooks/check_field_family_invariants.sh +90 -24
- package/ds-canonical/hooks/check_file_size_budget.sh +32 -14
- package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +60 -21
- package/ds-canonical/hooks/check_item_list_gap.sh +4 -2
- package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +31 -13
- package/ds-canonical/hooks/check_main_branch_workbench.sh +27 -68
- package/ds-canonical/hooks/check_naming_and_abstraction.sh +20 -9
- package/ds-canonical/hooks/check_opacity_token_usage.sh +220 -95
- package/ds-canonical/hooks/check_orphan_ds_css.sh +48 -18
- package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +29 -11
- package/ds-canonical/hooks/check_pattern_invariants.sh +73 -14
- package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +4 -4
- package/ds-canonical/hooks/check_pixel_quantified_audit.sh +3 -2
- package/ds-canonical/hooks/check_plugin_fork_health.sh +151 -41
- package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +5 -109
- package/ds-canonical/hooks/check_propose_discipline.sh +116 -29
- package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +6 -4
- package/ds-canonical/hooks/check_propose_without_benchmark.sh +10 -6
- package/ds-canonical/hooks/check_select_all_canonical.sh +1 -1
- package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +22 -11
- package/ds-canonical/hooks/check_solo_workflow.sh +117 -186
- package/ds-canonical/hooks/check_spec_class_drift.sh +33 -19
- package/ds-canonical/hooks/check_ssot_header_declaration.sh +6 -5
- package/ds-canonical/hooks/check_story_determinism.sh +1 -1
- package/ds-canonical/hooks/check_story_invariants.sh +526 -213
- package/ds-canonical/hooks/check_storybook_addon_packaging.sh +65 -15
- package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +137 -67
- package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
- package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
- package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +15 -12
- package/ds-canonical/hooks/chrome_header_dispatcher.sh +75 -26
- package/ds-canonical/hooks/enforce_home_charter.sh +29 -8
- package/ds-canonical/hooks/governance_control_plane.sh +15 -0
- package/ds-canonical/hooks/inject_deploy_url_after_push.sh +105 -22
- package/ds-canonical/hooks/inject_pending_self_audit.sh +27 -24
- package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +77 -29
- package/ds-canonical/hooks/lib/_approval_re.sh +5 -6
- package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +66 -20
- package/ds-canonical/hooks/lib/_code_quality.sh +9 -9
- package/ds-canonical/hooks/lib/_cva_default_sync.sh +11 -13
- package/ds-canonical/hooks/lib/_governance_coverage_check.sh +48 -21
- package/ds-canonical/hooks/lib/_hardcoded_strings.sh +13 -10
- package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +68 -48
- package/ds-canonical/hooks/lib/_hook_integrity.sh +158 -0
- package/ds-canonical/hooks/lib/_layout_space_canonical.sh +5 -5
- package/ds-canonical/hooks/lib/_overlay_handcraft.sh +21 -23
- package/ds-canonical/hooks/lib/_person_data_richness.sh +5 -5
- package/ds-canonical/hooks/lib/_provider_paths.sh +162 -0
- package/ds-canonical/hooks/lib/_story_compile_drift.sh +5 -5
- package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +247 -27
- package/ds-canonical/hooks/lib/_token_hygiene.sh +39 -22
- package/ds-canonical/hooks/lib/approval-evidence.mjs +1131 -0
- package/ds-canonical/hooks/lib/audit-report-validator.mjs +118 -0
- package/ds-canonical/hooks/lib/provider-marker-regex.mjs +23 -0
- package/ds-canonical/hooks/lib/tsx-governance-analysis.mjs +410 -0
- package/ds-canonical/hooks/log_governance_fires.sh +45 -13
- package/ds-canonical/hooks/log_skill_invokes.sh +8 -7
- package/ds-canonical/hooks/post_edit_dispatcher.sh +106 -28
- package/ds-canonical/hooks/registrations.json +488 -0
- package/ds-canonical/hooks/registrations.schema.json +58 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +1 -1
- package/ds-canonical/hooks/retired/check_governance_compliance.sh +1 -1
- package/ds-canonical/hooks/session_start_governance_check.sh +109 -78
- package/ds-canonical/hooks/stop_audit_content_quality.sh +20 -0
- package/ds-canonical/hooks/stop_extract_canonical_rules.sh +20 -0
- package/ds-canonical/hooks/stop_passive_logging.sh +133 -59
- package/ds-canonical/hooks/stop_self_audit.sh +349 -210
- package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v1.jsonl +3 -0
- package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v2.jsonl +3 -0
- package/ds-canonical/hooks/tests/registration-output-contracts.mjs +151 -0
- package/ds-canonical/hooks/tests/run-all.sh +35 -5
- package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +48 -4
- package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +157 -9
- package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +265 -127
- package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +119 -12
- package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +0 -0
- package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +0 -0
- package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +56 -5
- package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +6 -6
- package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +193 -100
- package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +143 -17
- package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +49 -5
- package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +128 -0
- package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_code_quality.sh +64 -0
- package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +26 -8
- package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +126 -12
- package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +13 -8
- package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +53 -7
- package/ds-canonical/hooks/tests/test_check_dynamic_tailwind_class.sh +3 -3
- package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +17 -7
- package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +72 -16
- package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +67 -5
- package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +107 -4
- package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +25 -15
- package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +177 -67
- package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +7 -7
- package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +45 -110
- package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +19 -2
- package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +114 -8
- package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +38 -22
- package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +68 -6
- package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +53 -0
- package/ds-canonical/hooks/tests/test_check_post_main_ssot_propagate.sh +37 -0
- package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +59 -0
- package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +7 -5
- package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +5 -5
- package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +45 -0
- package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +5 -5
- package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +183 -105
- package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +35 -7
- package/ds-canonical/hooks/tests/{test_check_story_anatomy.sh.broken → test_check_story_anatomy.sh} +73 -4
- package/ds-canonical/hooks/tests/{test_check_story_category.sh.broken → test_check_story_category.sh} +82 -2
- package/ds-canonical/hooks/tests/test_check_story_determinism.sh +39 -0
- package/ds-canonical/hooks/tests/test_check_story_invariants.sh +559 -43
- package/ds-canonical/hooks/tests/{test_check_story_name_jargon.sh.broken → test_check_story_name_jargon.sh} +22 -1
- package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +79 -0
- package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +546 -28
- package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +180 -98
- package/ds-canonical/hooks/tests/test_check_tabs_content_chrome_body_double_gap.sh +3 -3
- package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +63 -15
- package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +12 -6
- package/ds-canonical/hooks/tests/test_chrome_header_dispatcher.sh +125 -0
- package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +57 -3
- package/ds-canonical/hooks/tests/test_governance_control_plane.sh +66 -0
- package/ds-canonical/hooks/tests/test_governance_coverage_check.sh +88 -0
- package/ds-canonical/hooks/tests/test_hook_integrity_classification.sh +217 -0
- package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +85 -2
- package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +116 -11
- package/ds-canonical/hooks/tests/test_log_governance_fires.sh +117 -1
- package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +74 -5
- package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +234 -77
- package/ds-canonical/hooks/tests/test_provider_peer_symmetry.sh +76 -0
- package/ds-canonical/hooks/tests/test_registration_output_contracts.sh +20 -0
- package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +130 -18
- package/ds-canonical/hooks/tests/test_stop_audit_content_quality.sh +75 -0
- package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +101 -23
- package/ds-canonical/hooks/tests/test_stop_extract_canonical_rules.sh +75 -0
- package/ds-canonical/hooks/tests/{test_stop_governance_drift_check.sh.broken → test_stop_governance_drift_check.sh} +22 -12
- package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +102 -1
- package/ds-canonical/hooks/tests/test_stop_repository_command_context.sh +38 -0
- package/ds-canonical/hooks/tests/test_stop_self_audit.sh +363 -9
- package/ds-canonical/references/README.md +8 -8
- package/ds-canonical/references/audit-coverage-vs-24-checklist.md +4 -4
- package/ds-canonical/references/build-ui-canonicals.md +3 -3
- package/ds-canonical/references/certified-surfaces.md +46 -15
- package/ds-canonical/references/cva-patterns.md +2 -2
- package/ds-canonical/references/failure-class-registry.json +3 -2
- package/ds-canonical/references/governance-audit-coverage.md +8 -8
- package/ds-canonical/references/naming-conventions.md +1 -1
- package/ds-canonical/references/preflight-gate-baseline.json +210 -3
- package/ds-canonical/references/principle-dim-map.json +15 -9
- package/ds-canonical/references/props-naming.md +1 -1
- package/ds-canonical/references/scenario-definition.md +33 -30
- package/ds-canonical/references/spec-rules.md +1 -1
- package/ds-canonical/references/ssot-consultation.md +3 -3
- package/ds-canonical/references/ssot-index.md +1 -1
- package/ds-canonical/references/story-baseline-registry.json +9 -6
- package/ds-canonical/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/references/structural-token-retention.md +1 -1
- package/ds-canonical/references/tailwind-gotchas.md +2 -2
- package/ds-canonical/references/ui-dev-rules.md +1 -1
- package/ds-canonical/rules/README.md +14 -9
- package/ds-canonical/rules/meta-patterns.md +13 -13
- package/ds-canonical/rules/self-verify.md +12 -7
- package/ds-canonical/rules/spec-rules.md +1 -1
- package/ds-canonical/rules/ui-development.md +5 -5
- package/ds-canonical/skills/README.md +27 -15
- package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +14 -7
- package/ds-canonical/skills/canonical-reviewer/SKILL.md +29 -0
- package/ds-canonical/skills/code-quality-audit/SKILL.md +11 -7
- package/ds-canonical/skills/codex-collab/SKILL.md +19 -238
- package/ds-canonical/skills/codex-collab/references/brief-template.md +37 -47
- package/ds-canonical/skills/codex-collab/references/transport.md +38 -57
- package/ds-canonical/skills/codify-corrections/SKILL.md +32 -31
- package/ds-canonical/skills/codify-principle/SKILL.md +33 -32
- package/ds-canonical/skills/component-quality-gate/SKILL.md +13 -13
- package/ds-canonical/skills/component-quality-gate/references/checklist.md +7 -7
- package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +28 -229
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +36 -131
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +33 -187
- package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +22 -24
- package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +15 -79
- package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +24 -23
- package/ds-canonical/skills/delivery-handoff/SKILL.md +14 -8
- package/ds-canonical/skills/design-system-audit/SKILL.md +63 -62
- package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +86 -77
- package/ds-canonical/skills/design-system-audit/references/checkpoints.md +59 -50
- package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +8 -8
- package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +37 -32
- package/ds-canonical/skills/design-system-audit/references/rule-placement.md +39 -38
- package/ds-canonical/skills/ensure-canonical/SKILL.md +36 -34
- package/ds-canonical/skills/governance-health/SKILL.md +26 -22
- package/ds-canonical/skills/governance-status/SKILL.md +30 -0
- package/ds-canonical/skills/independent-review/SKILL.md +37 -0
- package/ds-canonical/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/skills/knowledge-prune/SKILL.md +45 -52
- package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +10 -7
- package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +6 -6
- package/ds-canonical/skills/new-component/SKILL.md +18 -12
- package/ds-canonical/skills/new-component/references/new-component-checklist.md +7 -6
- package/ds-canonical/skills/performance-audit/SKILL.md +13 -10
- package/ds-canonical/skills/product-ui-audit/SKILL.md +27 -17
- package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +7 -4
- package/ds-canonical/skills/product-ui-audit/references/report-template.md +30 -26
- package/ds-canonical/skills/propose-options/SKILL.md +1 -1
- package/ds-canonical/skills/prototype/SKILL.md +19 -21
- package/ds-canonical/skills/prototype/references/audit-checks.md +6 -5
- package/ds-canonical/skills/prototype/references/checkpoints.md +26 -17
- package/ds-canonical/skills/prototype/references/ooux-template.md +1 -1
- package/ds-canonical/skills/prototype/references/proposal-template.md +4 -4
- package/ds-canonical/skills/scan-similar-bugs/SKILL.md +22 -21
- package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +21 -20
- package/ds-canonical/skills/story-writing/SKILL.md +12 -12
- package/ds-canonical/skills/story-writing/references/anatomy-standard.md +1 -1
- package/ds-canonical/skills/story-writing/references/category-templates.md +5 -5
- package/ds-canonical/skills/ux-audit/SKILL.md +12 -9
- package/ds-canonical/skills/visual-audit/SKILL.md +41 -47
- package/ds-canonical/skills/visual-audit/references/audit-architecture.md +7 -7
- package/ds-canonical/skills/visual-audit/references/visual-checklist.md +12 -12
- package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +3 -3
- package/ds-canonical/templates/_README.md +6 -7
- package/ds-canonical/templates/consumer-governance.md +78 -0
- package/ds-canonical/templates/dashboard-app.tsx +3 -1
- package/ds-canonical/templates/product-launchers/fork-governance-dispatcher.sh +154 -0
- package/ds-canonical/templates/product-launchers/format-provider-hook-output.mjs +25 -0
- package/ds-canonical/templates/product-launchers/independent-review.mjs +490 -0
- package/ds-canonical/templates/product-launchers/inject_fork_governance_preamble.sh +99 -0
- package/ds-canonical/templates/product-launchers/normalize-provider-event.mjs +355 -0
- package/ds-canonical/templates/product-launchers/product-hook-dispatch-runtime.mjs +1067 -0
- package/ds-canonical/templates/product-provider-wiring.json +80 -0
- package/ds-canonical/templates/product-provider-wiring.schema.json +151 -0
- package/llms-full.txt +6 -6
- package/llms.txt +2 -2
- package/package.json +15 -4
- package/src/components/Accordion/accordion.principles.stories.tsx +16 -26
- package/src/components/Accordion/accordion.stories.tsx +22 -40
- package/src/components/Calendar/calendar.spec.md +1 -1
- package/src/components/Calendar/calendar.tsx +59 -25
- package/src/components/DataTable/cell-registry.tsx +3 -7
- package/src/components/DataTable/data-table.spec.md +1 -0
- package/src/components/DataTable/data-table.tsx +9 -2
- package/src/components/DatePicker/date-picker.spec.md +1 -1
- package/src/components/DatePicker/date-picker.tsx +203 -147
- package/src/components/Dialog/dialog.spec.md +1 -1
- package/src/components/Dialog/dialog.tsx +8 -2
- package/src/components/Field/field-context.ts +25 -1
- package/src/components/Field/field-wrapper.tsx +7 -1
- package/src/components/Field/field.spec.md +7 -0
- package/src/components/Field/field.tsx +13 -2
- package/src/components/InlineEdit/inline-edit.spec.md +12 -0
- package/src/components/InlineEdit/inline-edit.stories.tsx +28 -17
- package/src/components/InlineEdit/inline-edit.tsx +94 -31
- package/src/components/Input/input.tsx +7 -2
- package/src/components/LinkInput/link-input.spec.md +1 -1
- package/src/components/LinkInput/link-input.tsx +5 -1
- package/src/components/Popover/popover.tsx +7 -2
- package/src/components/Select/select.principles.stories.tsx +4 -3
- package/src/components/Select/select.stories.tsx +7 -6
- package/src/components/Select/select.tsx +61 -29
- package/src/components/Textarea/textarea.spec.md +10 -1
- package/src/components/Textarea/textarea.tsx +38 -5
- package/src/components/TimePicker/time-picker.tsx +11 -5
- package/src/components/Tooltip/tooltip.spec.md +6 -0
- package/src/patterns/element-anatomy/item-anatomy.spec.md +8 -1
- package/src/patterns/element-anatomy/item-anatomy.tsx +111 -30
- package/src/patterns/element-anatomy/truncated-text.spec.md +13 -2
- package/src/tokens/uiSize/uiSize.css +11 -0
- package/src/tokens/uiSize/uiSize.spec.md +1 -0
- package/src/tokens/utility-registry.json +119 -4
- package/src/tokens/utility-registry.schema.json +373 -0
- package/tools/README.md +9 -0
- package/tools/codemods/cli.mjs +93 -0
- package/tools/codemods/index.mjs +582 -0
- package/tools/shared/safe-filesystem.mjs +371 -0
- package/tools/visual-baseline/cli.mjs +97 -0
- package/tools/visual-baseline/index.mjs +522 -0
- /package/dist/{react-day-picker.css → index.css} +0 -0
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./utility-registry.schema.json",
|
|
3
|
+
"schemaVersion": 1,
|
|
3
4
|
"_meta": {
|
|
4
5
|
"purpose": "Single SSOT for Tailwind utility allow/block — extracted from typography/radius/opacity/elevation/color spec.md 禁止 lists. Hook reads this(not grep spec.md)to enforce token-first discipline. New token additions or removals → update here first, spec.md cite registry.",
|
|
5
6
|
"owner": "packages/design-system/src/tokens/utility-registry.json",
|
|
6
7
|
"consumed_by": [
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
8
|
+
"packages/design-system/ds-canonical/hooks/check_opacity_token_usage.sh",
|
|
9
|
+
"packages/design-system/ds-canonical/skills/design-system-audit/references/audit-prompts.md#Dim-5",
|
|
10
|
+
"packages/design-system/ds-canonical/hooks/lib/_token_hygiene.sh",
|
|
11
|
+
"packages/design-system/ds-canonical/hooks/check_consumer_code_quality.sh"
|
|
10
12
|
],
|
|
13
|
+
"provider_view_policy": ".claude/.agents/.codex projections are generated discovery adapters only; they are never registry owners or edit targets.",
|
|
11
14
|
"spec_sources": [
|
|
12
15
|
"packages/design-system/src/tokens/typography/typography.spec.md L118-156",
|
|
13
16
|
"packages/design-system/src/tokens/radius/radius.spec.md L57-71",
|
|
@@ -66,6 +69,116 @@
|
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
71
|
},
|
|
72
|
+
"enforcement": {
|
|
73
|
+
"schemaVersion": 1,
|
|
74
|
+
"engine": "utility-registry-rules-v1",
|
|
75
|
+
"block": [
|
|
76
|
+
{
|
|
77
|
+
"id": "typography-size",
|
|
78
|
+
"label": "typography size",
|
|
79
|
+
"tokenListPointer": "/typography/block/size_raw"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "typography-weight",
|
|
83
|
+
"label": "typography weight",
|
|
84
|
+
"tokenListPointer": "/typography/block/weight_raw"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "typography-leading-numeric",
|
|
88
|
+
"label": "leading numeric",
|
|
89
|
+
"pattern": "(?<![A-Za-z0-9_-])leading-[0-9]+(?:\\.[0-9]+)?(?![A-Za-z0-9_-])"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "typography-tracking",
|
|
93
|
+
"label": "tracking raw",
|
|
94
|
+
"tokenListPointer": "/typography/block/tracking_raw"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "typography-inline-style",
|
|
98
|
+
"label": "typography inline style",
|
|
99
|
+
"pattern": "style\\s*=\\s*\\{\\{[^}]*\\b(?:fontSize|lineHeight)\\s*:"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "radius-out-of-range",
|
|
103
|
+
"label": "radius out-of-range",
|
|
104
|
+
"tokenListPointer": "/radius/block/out_of_range"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "radius-ambiguous-default",
|
|
108
|
+
"label": "radius ambiguous default",
|
|
109
|
+
"tokenListPointer": "/radius/block/ambiguous_default"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "radius-arbitrary-examples",
|
|
113
|
+
"label": "radius arbitrary",
|
|
114
|
+
"tokenListPointer": "/radius/block/arbitrary_value"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "radius-arbitrary",
|
|
118
|
+
"label": "radius arbitrary",
|
|
119
|
+
"pattern": "(?<![A-Za-z0-9_-])rounded(?:-(?:t|b|l|r|tl|tr|bl|br|s|e|ss|se|es|ee))?-\\[[^\\]\\r\\n]+\\](?![A-Za-z0-9_-])",
|
|
120
|
+
"excludeTokenListPointer": "/radius/allow"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "radius-inline-style",
|
|
124
|
+
"label": "radius inline style",
|
|
125
|
+
"pattern": "style\\s*=\\s*\\{\\{[^}]*\\bborderRadius\\s*:"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "opacity-numeric-tier",
|
|
129
|
+
"label": "opacity",
|
|
130
|
+
"tokenListPointer": "/opacity/block/numeric_tier"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "opacity-numeric",
|
|
134
|
+
"label": "opacity",
|
|
135
|
+
"pattern": "(?<![A-Za-z0-9_-])opacity-[0-9]+(?![A-Za-z0-9_-])",
|
|
136
|
+
"excludeTokenListPointer": "/opacity/allow"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "opacity-arbitrary",
|
|
140
|
+
"label": "opacity arbitrary",
|
|
141
|
+
"pattern": "(?<![A-Za-z0-9_-])opacity-\\[[^\\]\\r\\n]+\\](?![A-Za-z0-9_-])"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "elevation-tailwind-size",
|
|
145
|
+
"label": "elevation size",
|
|
146
|
+
"tokenListPointer": "/elevation/block/tailwind_size"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "shadcn-color-alias",
|
|
150
|
+
"label": "shadcn alias",
|
|
151
|
+
"tokenListPointer": "/shadcn_alias/block/color_alias"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id": "primitive-color-examples",
|
|
155
|
+
"label": "primitive color as utility",
|
|
156
|
+
"tokenListPointer": "/primitive_color_as_utility/block/primitive_class"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "primitive-color-family",
|
|
160
|
+
"label": "primitive color as utility",
|
|
161
|
+
"pattern": "(?<![A-Za-z0-9_-])(?:bg|text|border)-(?:neutral|blue|red|green|yellow|orange|purple|pink|cyan|teal|deep-orange|deep-purple|light-blue|light-green|lime|amber|indigo|brown|gray)-[0-9]+(?![A-Za-z0-9_-])"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "phantom-state-suffix",
|
|
165
|
+
"label": "phantom state suffix(silent no-op)",
|
|
166
|
+
"pattern": "(?<![A-Za-z0-9_-])(?:(?:hover|active|focus):)?(?:bg|text|border|ring)-[a-z][a-z-]*-(?:hovered|actived|focussed|pressed)(?![A-Za-z0-9_-])"
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"warn": [
|
|
170
|
+
{
|
|
171
|
+
"id": "spacing-micro-gap",
|
|
172
|
+
"label": "micro gap <4px",
|
|
173
|
+
"tokenListPointer": "/spacing/warn/micro_gap"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"id": "sizing-fraction-width",
|
|
177
|
+
"label": "fraction width",
|
|
178
|
+
"tokenListPointer": "/sizing/warn/fraction"
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
},
|
|
69
182
|
"typography": {
|
|
70
183
|
"allow": [
|
|
71
184
|
"text-h1",
|
|
@@ -138,7 +251,9 @@
|
|
|
138
251
|
"rounded-2xl",
|
|
139
252
|
"rounded-3xl"
|
|
140
253
|
],
|
|
141
|
-
"ambiguous_default":
|
|
254
|
+
"ambiguous_default": [
|
|
255
|
+
"rounded"
|
|
256
|
+
],
|
|
142
257
|
"arbitrary_value": [
|
|
143
258
|
"rounded-[6px]",
|
|
144
259
|
"rounded-[var(--radius-md)]"
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://qijenchen.dev/schemas/design-system/utility-registry-v1.json",
|
|
4
|
+
"title": "Design-system utility policy registry",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"$schema",
|
|
9
|
+
"schemaVersion",
|
|
10
|
+
"_meta",
|
|
11
|
+
"enforcement",
|
|
12
|
+
"typography",
|
|
13
|
+
"radius",
|
|
14
|
+
"opacity",
|
|
15
|
+
"elevation",
|
|
16
|
+
"spacing",
|
|
17
|
+
"sizing",
|
|
18
|
+
"shadcn_alias",
|
|
19
|
+
"primitive_color_as_utility"
|
|
20
|
+
],
|
|
21
|
+
"properties": {
|
|
22
|
+
"$schema": { "const": "./utility-registry.schema.json" },
|
|
23
|
+
"schemaVersion": { "const": 1 },
|
|
24
|
+
"_meta": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": [
|
|
28
|
+
"purpose",
|
|
29
|
+
"owner",
|
|
30
|
+
"consumed_by",
|
|
31
|
+
"provider_view_policy",
|
|
32
|
+
"spec_sources",
|
|
33
|
+
"rationale",
|
|
34
|
+
"exceptions"
|
|
35
|
+
],
|
|
36
|
+
"properties": {
|
|
37
|
+
"purpose": { "$ref": "#/$defs/nonEmptyString" },
|
|
38
|
+
"owner": {
|
|
39
|
+
"const": "packages/design-system/src/tokens/utility-registry.json"
|
|
40
|
+
},
|
|
41
|
+
"consumed_by": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"minItems": 1,
|
|
44
|
+
"uniqueItems": true,
|
|
45
|
+
"items": { "$ref": "#/$defs/canonicalReference" }
|
|
46
|
+
},
|
|
47
|
+
"provider_view_policy": { "$ref": "#/$defs/nonEmptyString" },
|
|
48
|
+
"spec_sources": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"minItems": 1,
|
|
51
|
+
"uniqueItems": true,
|
|
52
|
+
"items": { "$ref": "#/$defs/nonEmptyString" }
|
|
53
|
+
},
|
|
54
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" },
|
|
55
|
+
"exceptions": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": [
|
|
59
|
+
"_added",
|
|
60
|
+
"anatomy_stories_inspector",
|
|
61
|
+
"token_stories_section_label",
|
|
62
|
+
"principles_stories_codepre",
|
|
63
|
+
"icon_as_text_and_numeric_in_circle"
|
|
64
|
+
],
|
|
65
|
+
"properties": {
|
|
66
|
+
"_added": { "$ref": "#/$defs/nonEmptyString" },
|
|
67
|
+
"anatomy_stories_inspector": {
|
|
68
|
+
"allOf": [
|
|
69
|
+
{ "$ref": "#/$defs/exceptionBase" },
|
|
70
|
+
{
|
|
71
|
+
"type": "object",
|
|
72
|
+
"additionalProperties": false,
|
|
73
|
+
"required": ["scope", "allowed_utilities", "rationale", "audit_dim_53_fix"],
|
|
74
|
+
"properties": {
|
|
75
|
+
"scope": { "$ref": "#/$defs/nonEmptyString" },
|
|
76
|
+
"allowed_utilities": { "$ref": "#/$defs/tokenArray" },
|
|
77
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" },
|
|
78
|
+
"audit_dim_53_fix": { "$ref": "#/$defs/nonEmptyString" }
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"token_stories_section_label": { "$ref": "#/$defs/standardException" },
|
|
84
|
+
"principles_stories_codepre": { "$ref": "#/$defs/standardException" },
|
|
85
|
+
"icon_as_text_and_numeric_in_circle": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"additionalProperties": false,
|
|
88
|
+
"required": [
|
|
89
|
+
"scope",
|
|
90
|
+
"allowed_utilities",
|
|
91
|
+
"rule_one_liner",
|
|
92
|
+
"rationale",
|
|
93
|
+
"current_consumers",
|
|
94
|
+
"non_goal"
|
|
95
|
+
],
|
|
96
|
+
"properties": {
|
|
97
|
+
"scope": { "$ref": "#/$defs/nonEmptyString" },
|
|
98
|
+
"allowed_utilities": { "$ref": "#/$defs/tokenArray" },
|
|
99
|
+
"rule_one_liner": { "$ref": "#/$defs/nonEmptyString" },
|
|
100
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" },
|
|
101
|
+
"current_consumers": {
|
|
102
|
+
"type": "array",
|
|
103
|
+
"minItems": 1,
|
|
104
|
+
"uniqueItems": true,
|
|
105
|
+
"items": { "$ref": "#/$defs/nonEmptyString" }
|
|
106
|
+
},
|
|
107
|
+
"non_goal": { "$ref": "#/$defs/nonEmptyString" }
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"enforcement": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"additionalProperties": false,
|
|
117
|
+
"required": ["schemaVersion", "engine", "block", "warn"],
|
|
118
|
+
"properties": {
|
|
119
|
+
"schemaVersion": { "const": 1 },
|
|
120
|
+
"engine": { "const": "utility-registry-rules-v1" },
|
|
121
|
+
"block": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"minItems": 18,
|
|
124
|
+
"maxItems": 18,
|
|
125
|
+
"items": { "$ref": "#/$defs/enforcementRule" }
|
|
126
|
+
},
|
|
127
|
+
"warn": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"minItems": 2,
|
|
130
|
+
"maxItems": 2,
|
|
131
|
+
"items": { "$ref": "#/$defs/enforcementRule" }
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"typography": {
|
|
136
|
+
"type": "object",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"required": ["allow", "block"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"allow": { "$ref": "#/$defs/tokenArray" },
|
|
141
|
+
"block": {
|
|
142
|
+
"type": "object",
|
|
143
|
+
"additionalProperties": false,
|
|
144
|
+
"required": [
|
|
145
|
+
"size_raw",
|
|
146
|
+
"weight_raw",
|
|
147
|
+
"leading_numeric",
|
|
148
|
+
"tracking_raw",
|
|
149
|
+
"tracking_raw_rationale",
|
|
150
|
+
"inline_style",
|
|
151
|
+
"rationale_path"
|
|
152
|
+
],
|
|
153
|
+
"properties": {
|
|
154
|
+
"size_raw": { "$ref": "#/$defs/tokenArray" },
|
|
155
|
+
"weight_raw": { "$ref": "#/$defs/tokenArray" },
|
|
156
|
+
"leading_numeric": { "$ref": "#/$defs/nonEmptyString" },
|
|
157
|
+
"tracking_raw": { "$ref": "#/$defs/tokenArray" },
|
|
158
|
+
"tracking_raw_rationale": { "$ref": "#/$defs/nonEmptyString" },
|
|
159
|
+
"inline_style": { "$ref": "#/$defs/nonEmptyString" },
|
|
160
|
+
"rationale_path": { "$ref": "#/$defs/nonEmptyString" }
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"radius": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"additionalProperties": false,
|
|
168
|
+
"required": ["allow", "allow_note", "block"],
|
|
169
|
+
"properties": {
|
|
170
|
+
"allow": { "$ref": "#/$defs/tokenArray" },
|
|
171
|
+
"allow_note": { "$ref": "#/$defs/nonEmptyString" },
|
|
172
|
+
"block": {
|
|
173
|
+
"type": "object",
|
|
174
|
+
"additionalProperties": false,
|
|
175
|
+
"required": [
|
|
176
|
+
"out_of_range",
|
|
177
|
+
"ambiguous_default",
|
|
178
|
+
"arbitrary_value",
|
|
179
|
+
"inline_style",
|
|
180
|
+
"rationale_path"
|
|
181
|
+
],
|
|
182
|
+
"properties": {
|
|
183
|
+
"out_of_range": { "$ref": "#/$defs/tokenArray" },
|
|
184
|
+
"ambiguous_default": { "$ref": "#/$defs/tokenArray" },
|
|
185
|
+
"arbitrary_value": { "$ref": "#/$defs/tokenArray" },
|
|
186
|
+
"inline_style": { "$ref": "#/$defs/nonEmptyString" },
|
|
187
|
+
"rationale_path": { "$ref": "#/$defs/nonEmptyString" }
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"opacity": {
|
|
193
|
+
"type": "object",
|
|
194
|
+
"additionalProperties": false,
|
|
195
|
+
"required": ["allow", "block"],
|
|
196
|
+
"properties": {
|
|
197
|
+
"allow": { "$ref": "#/$defs/tokenArray" },
|
|
198
|
+
"block": {
|
|
199
|
+
"type": "object",
|
|
200
|
+
"additionalProperties": false,
|
|
201
|
+
"required": ["numeric_tier", "arbitrary_value", "rationale_path", "philosophy"],
|
|
202
|
+
"properties": {
|
|
203
|
+
"numeric_tier": { "$ref": "#/$defs/tokenArray" },
|
|
204
|
+
"arbitrary_value": { "$ref": "#/$defs/nonEmptyString" },
|
|
205
|
+
"rationale_path": { "$ref": "#/$defs/nonEmptyString" },
|
|
206
|
+
"philosophy": { "$ref": "#/$defs/nonEmptyString" }
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"elevation": {
|
|
212
|
+
"type": "object",
|
|
213
|
+
"additionalProperties": false,
|
|
214
|
+
"required": ["allow", "block"],
|
|
215
|
+
"properties": {
|
|
216
|
+
"allow": { "$ref": "#/$defs/tokenArray" },
|
|
217
|
+
"block": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"additionalProperties": false,
|
|
220
|
+
"required": ["tailwind_size", "rationale_path", "philosophy"],
|
|
221
|
+
"properties": {
|
|
222
|
+
"tailwind_size": { "$ref": "#/$defs/tokenArray" },
|
|
223
|
+
"rationale_path": { "$ref": "#/$defs/nonEmptyString" },
|
|
224
|
+
"philosophy": { "$ref": "#/$defs/nonEmptyString" }
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"spacing": {
|
|
230
|
+
"type": "object",
|
|
231
|
+
"additionalProperties": false,
|
|
232
|
+
"required": ["allow_canonical", "warn"],
|
|
233
|
+
"properties": {
|
|
234
|
+
"allow_canonical": { "$ref": "#/$defs/nonEmptyString" },
|
|
235
|
+
"warn": {
|
|
236
|
+
"type": "object",
|
|
237
|
+
"additionalProperties": false,
|
|
238
|
+
"required": ["micro_gap", "rationale"],
|
|
239
|
+
"properties": {
|
|
240
|
+
"micro_gap": { "$ref": "#/$defs/tokenArray" },
|
|
241
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" }
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
"sizing": {
|
|
247
|
+
"type": "object",
|
|
248
|
+
"additionalProperties": false,
|
|
249
|
+
"required": ["warn"],
|
|
250
|
+
"properties": {
|
|
251
|
+
"warn": {
|
|
252
|
+
"type": "object",
|
|
253
|
+
"additionalProperties": false,
|
|
254
|
+
"required": ["fraction", "rationale"],
|
|
255
|
+
"properties": {
|
|
256
|
+
"fraction": { "$ref": "#/$defs/tokenArray" },
|
|
257
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" }
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"shadcn_alias": {
|
|
263
|
+
"type": "object",
|
|
264
|
+
"additionalProperties": false,
|
|
265
|
+
"required": ["block"],
|
|
266
|
+
"properties": {
|
|
267
|
+
"block": {
|
|
268
|
+
"type": "object",
|
|
269
|
+
"additionalProperties": false,
|
|
270
|
+
"required": ["color_alias", "rationale", "rationale_path"],
|
|
271
|
+
"properties": {
|
|
272
|
+
"color_alias": { "$ref": "#/$defs/tokenArray" },
|
|
273
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" },
|
|
274
|
+
"rationale_path": { "$ref": "#/$defs/nonEmptyString" }
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"primitive_color_as_utility": {
|
|
280
|
+
"type": "object",
|
|
281
|
+
"additionalProperties": false,
|
|
282
|
+
"required": ["block"],
|
|
283
|
+
"properties": {
|
|
284
|
+
"block": {
|
|
285
|
+
"type": "object",
|
|
286
|
+
"additionalProperties": false,
|
|
287
|
+
"required": ["primitive_class", "rationale"],
|
|
288
|
+
"properties": {
|
|
289
|
+
"primitive_class": { "$ref": "#/$defs/tokenArray" },
|
|
290
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" }
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"$defs": {
|
|
297
|
+
"nonEmptyString": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"minLength": 1,
|
|
300
|
+
"pattern": "^[^\\u0000-\\u001F\\u007F]+$"
|
|
301
|
+
},
|
|
302
|
+
"canonicalReference": {
|
|
303
|
+
"type": "string",
|
|
304
|
+
"minLength": 1,
|
|
305
|
+
"pattern": "^(?!\\.claude(?:/|$)|\\.agents(?:/|$)|\\.codex(?:/|$))(?!/)(?!.*(?:^|/)\\.\\.?/)(?!.*\\\\)[A-Za-z0-9_.@/#-]+(?: [A-Za-z0-9_.@/#()-]+)*$"
|
|
306
|
+
},
|
|
307
|
+
"tokenArray": {
|
|
308
|
+
"type": "array",
|
|
309
|
+
"minItems": 1,
|
|
310
|
+
"uniqueItems": true,
|
|
311
|
+
"items": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"minLength": 1,
|
|
314
|
+
"pattern": "^[^\\s\\u0000-\\u001F\\u007F]+$"
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
"exceptionBase": {
|
|
318
|
+
"type": "object"
|
|
319
|
+
},
|
|
320
|
+
"standardException": {
|
|
321
|
+
"type": "object",
|
|
322
|
+
"additionalProperties": false,
|
|
323
|
+
"required": ["scope", "allowed_utilities", "rationale"],
|
|
324
|
+
"properties": {
|
|
325
|
+
"scope": { "$ref": "#/$defs/nonEmptyString" },
|
|
326
|
+
"allowed_utilities": { "$ref": "#/$defs/tokenArray" },
|
|
327
|
+
"rationale": { "$ref": "#/$defs/nonEmptyString" }
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"enforcementRule": {
|
|
331
|
+
"oneOf": [
|
|
332
|
+
{
|
|
333
|
+
"type": "object",
|
|
334
|
+
"additionalProperties": false,
|
|
335
|
+
"required": ["id", "label", "tokenListPointer"],
|
|
336
|
+
"properties": {
|
|
337
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
338
|
+
"label": { "$ref": "#/$defs/nonEmptyString" },
|
|
339
|
+
"tokenListPointer": {
|
|
340
|
+
"enum": [
|
|
341
|
+
"/typography/block/size_raw",
|
|
342
|
+
"/typography/block/weight_raw",
|
|
343
|
+
"/typography/block/tracking_raw",
|
|
344
|
+
"/radius/block/out_of_range",
|
|
345
|
+
"/radius/block/ambiguous_default",
|
|
346
|
+
"/radius/block/arbitrary_value",
|
|
347
|
+
"/opacity/block/numeric_tier",
|
|
348
|
+
"/elevation/block/tailwind_size",
|
|
349
|
+
"/shadcn_alias/block/color_alias",
|
|
350
|
+
"/primitive_color_as_utility/block/primitive_class",
|
|
351
|
+
"/spacing/warn/micro_gap",
|
|
352
|
+
"/sizing/warn/fraction"
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"type": "object",
|
|
359
|
+
"additionalProperties": false,
|
|
360
|
+
"required": ["id", "label", "pattern"],
|
|
361
|
+
"properties": {
|
|
362
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
363
|
+
"label": { "$ref": "#/$defs/nonEmptyString" },
|
|
364
|
+
"pattern": { "$ref": "#/$defs/nonEmptyString" },
|
|
365
|
+
"excludeTokenListPointer": {
|
|
366
|
+
"enum": ["/radius/allow", "/opacity/allow"]
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
package/tools/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Design-system migration tools
|
|
2
|
+
|
|
3
|
+
This directory is shipped inside `@qijenchen/design-system`; it is the provider-neutral runtime for versioned API codemods and reviewed visual-baseline updates. Claude, Codex, hosted environments, and future models call the same package binaries and therefore do not own parallel migration logic.
|
|
4
|
+
|
|
5
|
+
- `codemods/`: exact TypeScript AST binding, versioned migration plans, manual blockers, digest-bound check/apply, and rollback-safe pathname publication.
|
|
6
|
+
- `visual-baseline/`: full PNG decode/CRC validation, content-addressed image statements, signed human or activated managed-broker review, and `apply-reviewed` without Git mutation.
|
|
7
|
+
- `shared/`: no-link path validation and the common exclusive transaction/rollback primitive.
|
|
8
|
+
|
|
9
|
+
The transaction claim is limited to cooperating writers that honor the same lock plus observed per-file pathname CAS. These tools do not claim parent-directory-swap resistance, storage power-loss durability, or protection from a non-cooperative writer that retains an old open file descriptor.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, realpathSync } from 'node:fs'
|
|
3
|
+
import { relative, resolve, sep } from 'node:path'
|
|
4
|
+
import { fileURLToPath } from 'node:url'
|
|
5
|
+
import {
|
|
6
|
+
BETA_84_MIGRATION_ID,
|
|
7
|
+
applyCodemodProposal,
|
|
8
|
+
checkCodemodProposal,
|
|
9
|
+
planCodemod,
|
|
10
|
+
} from './index.mjs'
|
|
11
|
+
import { canonicalJson, writeAtomicFile } from '../shared/safe-filesystem.mjs'
|
|
12
|
+
|
|
13
|
+
function fail(message) {
|
|
14
|
+
throw new Error(`design-system codemod CLI blocked:${message}`)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function parse(argv) {
|
|
18
|
+
const [migrationId, command, ...tokens] = argv
|
|
19
|
+
if (migrationId !== BETA_84_MIGRATION_ID) fail(`first argument must be ${BETA_84_MIGRATION_ID}`)
|
|
20
|
+
if (!['plan', 'check', 'apply'].includes(command)) fail('command must be plan, check, or apply')
|
|
21
|
+
const options = { migrationId, command, root: '.', sources: [], output: null, proposal: null, expectedDigest: null }
|
|
22
|
+
for (let index = 0; index < tokens.length; index += 1) {
|
|
23
|
+
const token = tokens[index]
|
|
24
|
+
const next = () => {
|
|
25
|
+
const value = tokens[++index]
|
|
26
|
+
if (!value || value.startsWith('--')) fail(`${token} requires a value`)
|
|
27
|
+
return value
|
|
28
|
+
}
|
|
29
|
+
if (token === '--root') options.root = next()
|
|
30
|
+
else if (token === '--source') options.sources.push(next())
|
|
31
|
+
else if (token === '--output') options.output = next()
|
|
32
|
+
else if (token === '--proposal') options.proposal = next()
|
|
33
|
+
else if (token === '--expected-proposal-digest') options.expectedDigest = next()
|
|
34
|
+
else fail(`unknown option:${token}`)
|
|
35
|
+
}
|
|
36
|
+
return options
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function relativeOutput(root, value) {
|
|
40
|
+
const absoluteRoot = resolve(root)
|
|
41
|
+
const absolute = resolve(absoluteRoot, value)
|
|
42
|
+
const path = relative(absoluteRoot, absolute)
|
|
43
|
+
if (!path || path === '..' || path.startsWith(`..${sep}`)) fail('output must be a file below --root')
|
|
44
|
+
return path.split(sep).join('/')
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function readProposal(root, value) {
|
|
48
|
+
if (!value) fail('--proposal is required')
|
|
49
|
+
const absolute = resolve(root, value)
|
|
50
|
+
let proposal
|
|
51
|
+
try { proposal = JSON.parse(readFileSync(absolute, 'utf8')) } catch (error) { fail(`proposal is unavailable or invalid JSON:${error.message}`) }
|
|
52
|
+
return proposal
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function runCodemodCli(argv = process.argv.slice(2)) {
|
|
56
|
+
const options = parse(argv)
|
|
57
|
+
if (options.command === 'plan') {
|
|
58
|
+
if (options.proposal || options.expectedDigest) fail('plan does not accept apply/check evidence options')
|
|
59
|
+
const proposal = planCodemod({ repoRoot: options.root, sourceRoots: options.sources.length ? options.sources : ['.'] })
|
|
60
|
+
const body = Buffer.from(canonicalJson(proposal))
|
|
61
|
+
if (options.output) writeAtomicFile(resolve(options.root), relativeOutput(options.root, options.output), body, 'codemod proposal', fail)
|
|
62
|
+
else process.stdout.write(body)
|
|
63
|
+
if (proposal.blockers.length) {
|
|
64
|
+
process.stderr.write(`codemod blocked: ${proposal.blockers.length} manual blocker(s); proposal ${proposal.proposalDigest}\n`)
|
|
65
|
+
return 2
|
|
66
|
+
}
|
|
67
|
+
if (options.output) process.stdout.write(`${canonicalJson({ proposalDigest: proposal.proposalDigest, files: proposal.files.length, output: options.output })}`)
|
|
68
|
+
return 0
|
|
69
|
+
}
|
|
70
|
+
if (options.sources.length || options.output) fail(`${options.command} does not accept --source or --output`)
|
|
71
|
+
const proposal = readProposal(options.root, options.proposal)
|
|
72
|
+
const result = options.command === 'check'
|
|
73
|
+
? checkCodemodProposal({ repoRoot: options.root, proposal })
|
|
74
|
+
: applyCodemodProposal({ repoRoot: options.root, proposal, expectedProposalDigest: options.expectedDigest })
|
|
75
|
+
process.stdout.write(canonicalJson(result))
|
|
76
|
+
return 0
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function isMainModule(argvPath = process.argv[1]) {
|
|
80
|
+
if (!argvPath) return false
|
|
81
|
+
try {
|
|
82
|
+
return realpathSync(argvPath) === realpathSync(fileURLToPath(import.meta.url))
|
|
83
|
+
} catch {
|
|
84
|
+
return resolve(argvPath) === resolve(fileURLToPath(import.meta.url))
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (isMainModule()) {
|
|
89
|
+
try { process.exitCode = runCodemodCli() } catch (error) {
|
|
90
|
+
console.error(error.message)
|
|
91
|
+
process.exitCode = 1
|
|
92
|
+
}
|
|
93
|
+
}
|