@qijenchen/design-system 0.1.0-beta.13 → 0.1.0-beta.131
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 +8 -0
- package/CLAUDE.md +3 -199
- package/README.md +6 -4
- package/cli-init.mjs +30 -2
- package/dist/components/Accordion/accordion.d.ts +3 -3
- package/dist/components/Accordion/accordion.d.ts.map +1 -1
- package/dist/components/Accordion/accordion.js +6 -3
- package/dist/components/Accordion/accordion.js.map +1 -1
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/Accordion/index.js +9 -0
- package/dist/components/Accordion/index.js.map +1 -0
- package/dist/components/AccountMenu/account-menu.d.ts +93 -0
- package/dist/components/AccountMenu/account-menu.d.ts.map +1 -0
- package/dist/components/AccountMenu/account-menu.js +73 -0
- package/dist/components/AccountMenu/account-menu.js.map +1 -0
- package/dist/components/AccountMenu/index.d.ts +2 -0
- package/dist/components/AccountMenu/index.d.ts.map +1 -0
- package/dist/components/AccountMenu/index.js +6 -0
- package/dist/components/AccountMenu/index.js.map +1 -0
- package/dist/components/AgentPanel/agent-fab.d.ts +24 -0
- package/dist/components/AgentPanel/agent-fab.d.ts.map +1 -0
- package/dist/components/AgentPanel/agent-logo.d.ts +75 -0
- package/dist/components/AgentPanel/agent-logo.d.ts.map +1 -0
- package/dist/components/AgentPanel/agent-logo.js +371 -0
- package/dist/components/AgentPanel/agent-logo.js.map +1 -0
- package/dist/components/AgentPanel/agent-panel.d.ts +183 -0
- package/dist/components/AgentPanel/agent-panel.d.ts.map +1 -0
- package/dist/components/AgentPanel/agent-panel.js +900 -0
- package/dist/components/AgentPanel/agent-panel.js.map +1 -0
- package/dist/components/AgentPanel/index.d.ts +2 -0
- package/dist/components/AgentPanel/index.d.ts.map +1 -0
- package/dist/components/AgentPanel/index.js +16 -0
- package/dist/components/AgentPanel/index.js.map +1 -0
- package/dist/components/Alert/alert.d.ts +7 -2
- package/dist/components/Alert/alert.d.ts.map +1 -1
- package/dist/components/Alert/alert.js +12 -8
- package/dist/components/Alert/alert.js.map +1 -1
- package/dist/components/Alert/index.d.ts +2 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/Alert/index.js +7 -0
- package/dist/components/Alert/index.js.map +1 -0
- package/dist/components/AppShell/_demo-helpers.d.ts +3 -1
- package/dist/components/AppShell/_demo-helpers.d.ts.map +1 -1
- package/dist/components/AppShell/app-shell.d.ts +19 -4
- package/dist/components/AppShell/app-shell.d.ts.map +1 -1
- package/dist/components/AppShell/app-shell.js +48 -11
- package/dist/components/AppShell/app-shell.js.map +1 -1
- package/dist/components/AppShell/index.d.ts +2 -0
- package/dist/components/AppShell/index.d.ts.map +1 -0
- package/dist/components/AppShell/index.js +8 -0
- package/dist/components/AppShell/index.js.map +1 -0
- package/dist/components/AspectRatio/aspect-ratio.d.ts +3 -2
- package/dist/components/AspectRatio/aspect-ratio.d.ts.map +1 -1
- package/dist/components/AspectRatio/aspect-ratio.js +4 -2
- package/dist/components/AspectRatio/aspect-ratio.js.map +1 -1
- package/dist/components/AspectRatio/index.d.ts +2 -0
- package/dist/components/AspectRatio/index.d.ts.map +1 -0
- package/dist/components/AspectRatio/index.js +6 -0
- package/dist/components/AspectRatio/index.js.map +1 -0
- package/dist/components/Avatar/avatar.d.ts +14 -7
- package/dist/components/Avatar/avatar.d.ts.map +1 -1
- package/dist/components/Avatar/avatar.js +24 -30
- package/dist/components/Avatar/avatar.js.map +1 -1
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +6 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Badge/badge.d.ts +21 -9
- package/dist/components/Badge/badge.d.ts.map +1 -1
- package/dist/components/Badge/badge.js +9 -6
- package/dist/components/Badge/badge.js.map +1 -1
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge/index.js +7 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Breadcrumb/breadcrumb.d.ts +16 -3
- package/dist/components/Breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/breadcrumb.js +21 -53
- package/dist/components/Breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/index.d.ts +2 -0
- package/dist/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/index.js +12 -0
- package/dist/components/Breadcrumb/index.js.map +1 -0
- package/dist/components/BulkActionBar/bulk-action-bar.d.ts +7 -4
- package/dist/components/BulkActionBar/bulk-action-bar.d.ts.map +1 -1
- package/dist/components/BulkActionBar/bulk-action-bar.js +8 -8
- package/dist/components/BulkActionBar/bulk-action-bar.js.map +1 -1
- package/dist/components/BulkActionBar/index.d.ts +2 -0
- package/dist/components/BulkActionBar/index.d.ts.map +1 -0
- package/dist/components/BulkActionBar/index.js +7 -0
- package/dist/components/BulkActionBar/index.js.map +1 -0
- package/dist/components/Button/button-group.d.ts +31 -5
- package/dist/components/Button/button-group.d.ts.map +1 -1
- package/dist/components/Button/button-group.js +31 -14
- package/dist/components/Button/button-group.js.map +1 -1
- package/dist/components/Button/button.d.ts +15 -14
- package/dist/components/Button/button.d.ts.map +1 -1
- package/dist/components/Button/button.js +94 -52
- package/dist/components/Button/button.js.map +1 -1
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +11 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Calendar/calendar.d.ts +22 -19
- package/dist/components/Calendar/calendar.d.ts.map +1 -1
- package/dist/components/Calendar/calendar.js +180 -135
- package/dist/components/Calendar/calendar.js.map +1 -1
- package/dist/components/Calendar/index.d.ts +2 -0
- package/dist/components/Calendar/index.d.ts.map +1 -0
- package/dist/components/Calendar/index.js +6 -0
- package/dist/components/Calendar/index.js.map +1 -0
- package/dist/components/Carousel/carousel.d.ts +15 -9
- package/dist/components/Carousel/carousel.d.ts.map +1 -1
- package/dist/components/Carousel/carousel.js +91 -50
- package/dist/components/Carousel/carousel.js.map +1 -1
- package/dist/components/Carousel/index.d.ts +2 -0
- package/dist/components/Carousel/index.d.ts.map +1 -0
- package/dist/components/Carousel/index.js +11 -0
- package/dist/components/Carousel/index.js.map +1 -0
- package/dist/components/Chart/chart.d.ts +2 -2
- package/dist/components/Chart/chart.d.ts.map +1 -1
- package/dist/components/Chart/chart.js +5 -2
- package/dist/components/Chart/chart.js.map +1 -1
- package/dist/components/Chart/index.d.ts +2 -0
- package/dist/components/Chart/index.d.ts.map +1 -0
- package/dist/components/Chart/index.js +11 -0
- package/dist/components/Chart/index.js.map +1 -0
- package/dist/components/Checkbox/checkbox-group.d.ts +2 -1
- package/dist/components/Checkbox/checkbox-group.d.ts.map +1 -1
- package/dist/components/Checkbox/checkbox-group.js +21 -14
- package/dist/components/Checkbox/checkbox-group.js.map +1 -1
- package/dist/components/Checkbox/checkbox.d.ts +20 -11
- package/dist/components/Checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/checkbox.js +117 -18
- package/dist/components/Checkbox/checkbox.js.map +1 -1
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +10 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/Chip/chip.d.ts +30 -11
- package/dist/components/Chip/chip.d.ts.map +1 -1
- package/dist/components/Chip/chip.js +83 -33
- package/dist/components/Chip/chip.js.map +1 -1
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/Chip/index.d.ts.map +1 -0
- package/dist/components/Chip/index.js +8 -0
- package/dist/components/Chip/index.js.map +1 -0
- package/dist/components/CircularProgress/circular-progress.d.ts +2 -3
- package/dist/components/CircularProgress/circular-progress.d.ts.map +1 -1
- package/dist/components/CircularProgress/circular-progress.js +5 -4
- package/dist/components/CircularProgress/circular-progress.js.map +1 -1
- package/dist/components/CircularProgress/index.d.ts +2 -0
- package/dist/components/CircularProgress/index.d.ts.map +1 -0
- package/dist/components/CircularProgress/index.js +6 -0
- package/dist/components/CircularProgress/index.js.map +1 -0
- package/dist/components/Coachmark/coachmark-story-helpers.d.ts +22 -0
- package/dist/components/Coachmark/coachmark-story-helpers.d.ts.map +1 -0
- package/dist/components/Coachmark/coachmark.d.ts +15 -6
- package/dist/components/Coachmark/coachmark.d.ts.map +1 -1
- package/dist/components/Coachmark/coachmark.js +12 -4
- package/dist/components/Coachmark/coachmark.js.map +1 -1
- package/dist/components/Coachmark/index.d.ts +2 -0
- package/dist/components/Coachmark/index.d.ts.map +1 -0
- package/dist/components/Coachmark/index.js +6 -0
- package/dist/components/Coachmark/index.js.map +1 -0
- package/dist/components/Combobox/combobox.d.ts +39 -15
- package/dist/components/Combobox/combobox.d.ts.map +1 -1
- package/dist/components/Combobox/combobox.js +169 -65
- package/dist/components/Combobox/combobox.js.map +1 -1
- package/dist/components/Combobox/index.d.ts +2 -0
- package/dist/components/Combobox/index.d.ts.map +1 -0
- package/dist/components/Combobox/index.js +6 -0
- package/dist/components/Combobox/index.js.map +1 -0
- package/dist/components/Command/command.d.ts +7 -3
- package/dist/components/Command/command.d.ts.map +1 -1
- package/dist/components/Command/command.js +23 -10
- package/dist/components/Command/command.js.map +1 -1
- package/dist/components/Command/index.d.ts +2 -0
- package/dist/components/Command/index.d.ts.map +1 -0
- package/dist/components/Command/index.js +14 -0
- package/dist/components/Command/index.js.map +1 -0
- package/dist/components/DataTable/active-editor-controller.d.ts +4 -3
- package/dist/components/DataTable/active-editor-controller.d.ts.map +1 -1
- package/dist/components/DataTable/cell-registry.d.ts +5 -5
- package/dist/components/DataTable/cell-registry.d.ts.map +1 -1
- package/dist/components/DataTable/cell-registry.js +89 -95
- package/dist/components/DataTable/cell-registry.js.map +1 -1
- package/dist/components/DataTable/column-types.d.ts +11 -21
- package/dist/components/DataTable/column-types.d.ts.map +1 -1
- package/dist/components/DataTable/column-types.js.map +1 -1
- package/dist/components/DataTable/data-table-column-visibility-panel.d.ts +4 -3
- package/dist/components/DataTable/data-table-column-visibility-panel.d.ts.map +1 -1
- package/dist/components/DataTable/data-table-column-visibility-panel.js +193 -0
- package/dist/components/DataTable/data-table-column-visibility-panel.js.map +1 -0
- package/dist/components/DataTable/data-table-filter-group.d.ts +51 -0
- package/dist/components/DataTable/data-table-filter-group.d.ts.map +1 -0
- package/dist/components/DataTable/data-table-filter-group.js +159 -0
- package/dist/components/DataTable/data-table-filter-group.js.map +1 -0
- package/dist/components/DataTable/data-table-filter-labels.d.ts +44 -0
- package/dist/components/DataTable/data-table-filter-labels.d.ts.map +1 -0
- package/dist/components/DataTable/data-table-filter-labels.js +55 -0
- package/dist/components/DataTable/data-table-filter-labels.js.map +1 -0
- package/dist/components/DataTable/data-table-filter-panel.d.ts +12 -3
- package/dist/components/DataTable/data-table-filter-panel.d.ts.map +1 -1
- package/dist/components/DataTable/data-table-filter-panel.js +316 -0
- package/dist/components/DataTable/data-table-filter-panel.js.map +1 -0
- package/dist/components/DataTable/data-table-filter-value-picker.d.ts +32 -0
- package/dist/components/DataTable/data-table-filter-value-picker.d.ts.map +1 -0
- package/dist/components/DataTable/data-table-filter-value-picker.js +205 -0
- package/dist/components/DataTable/data-table-filter-value-picker.js.map +1 -0
- package/dist/components/DataTable/data-table-interaction-layer.d.ts +17 -20
- package/dist/components/DataTable/data-table-interaction-layer.d.ts.map +1 -1
- package/dist/components/DataTable/data-table-interaction-layer.js +1 -3
- package/dist/components/DataTable/data-table-interaction-layer.js.map +1 -1
- package/dist/components/DataTable/data-table-sort-manager.d.ts +5 -5
- package/dist/components/DataTable/data-table-sort-manager.d.ts.map +1 -1
- package/dist/components/DataTable/data-table-sort-manager.js +150 -0
- package/dist/components/DataTable/data-table-sort-manager.js.map +1 -0
- package/dist/components/DataTable/data-table.d.ts +66 -15
- package/dist/components/DataTable/data-table.d.ts.map +1 -1
- package/dist/components/DataTable/data-table.js +367 -185
- package/dist/components/DataTable/data-table.js.map +1 -1
- package/dist/components/DataTable/filter-operators.d.ts +1 -1
- package/dist/components/DataTable/filter-operators.js +140 -0
- package/dist/components/DataTable/filter-operators.js.map +1 -0
- package/dist/components/DataTable/filter-tree.d.ts +6 -1
- package/dist/components/DataTable/filter-tree.d.ts.map +1 -1
- package/dist/components/DataTable/filter-tree.js +318 -0
- package/dist/components/DataTable/filter-tree.js.map +1 -0
- package/dist/components/DataTable/index.d.ts +5 -0
- package/dist/components/DataTable/index.d.ts.map +1 -0
- package/dist/components/DataTable/index.js +21 -0
- package/dist/components/DataTable/index.js.map +1 -0
- package/dist/components/DataTable/lib/column-meta.js +25 -0
- package/dist/components/DataTable/lib/column-meta.js.map +1 -0
- package/dist/components/DateGrid/date-grid.d.ts +23 -19
- package/dist/components/DateGrid/date-grid.d.ts.map +1 -1
- package/dist/components/DateGrid/date-grid.js +60 -12
- package/dist/components/DateGrid/date-grid.js.map +1 -1
- package/dist/components/DateGrid/index.d.ts +2 -0
- package/dist/components/DateGrid/index.d.ts.map +1 -0
- package/dist/components/DateGrid/index.js +6 -0
- package/dist/components/DateGrid/index.js.map +1 -0
- package/dist/components/DatePicker/date-picker.d.ts +12 -12
- package/dist/components/DatePicker/date-picker.d.ts.map +1 -1
- package/dist/components/DatePicker/date-picker.js +418 -309
- package/dist/components/DatePicker/date-picker.js.map +1 -1
- package/dist/components/DatePicker/index.d.ts +2 -0
- package/dist/components/DatePicker/index.d.ts.map +1 -0
- package/dist/components/DatePicker/index.js +8 -0
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/DescriptionList/description-list.d.ts +6 -6
- package/dist/components/DescriptionList/description-list.d.ts.map +1 -1
- package/dist/components/DescriptionList/description-list.js +11 -10
- package/dist/components/DescriptionList/description-list.js.map +1 -1
- package/dist/components/DescriptionList/index.d.ts +2 -0
- package/dist/components/DescriptionList/index.d.ts.map +1 -0
- package/dist/components/DescriptionList/index.js +7 -0
- package/dist/components/DescriptionList/index.js.map +1 -0
- package/dist/components/Dialog/dialog.d.ts +22 -5
- package/dist/components/Dialog/dialog.d.ts.map +1 -1
- package/dist/components/Dialog/dialog.js +44 -23
- package/dist/components/Dialog/dialog.js.map +1 -1
- package/dist/components/Dialog/index.d.ts +2 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog/index.js +16 -0
- package/dist/components/Dialog/index.js.map +1 -0
- package/dist/components/DropdownMenu/dropdown-menu.d.ts +19 -10
- package/dist/components/DropdownMenu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/DropdownMenu/dropdown-menu.js +79 -28
- package/dist/components/DropdownMenu/dropdown-menu.js.map +1 -1
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/components/DropdownMenu/index.js +21 -0
- package/dist/components/DropdownMenu/index.js.map +1 -0
- package/dist/components/Empty/empty.d.ts +14 -6
- package/dist/components/Empty/empty.d.ts.map +1 -1
- package/dist/components/Empty/empty.js +7 -7
- package/dist/components/Empty/empty.js.map +1 -1
- package/dist/components/Empty/index.d.ts +2 -0
- package/dist/components/Empty/index.d.ts.map +1 -0
- package/dist/components/Empty/index.js +6 -0
- package/dist/components/Empty/index.js.map +1 -0
- package/dist/components/Field/field-context.d.ts +111 -4
- package/dist/components/Field/field-context.d.ts.map +1 -1
- package/dist/components/Field/field-context.js +70 -0
- package/dist/components/Field/field-context.js.map +1 -1
- package/dist/components/Field/field-edit-keys.d.ts +21 -0
- package/dist/components/Field/field-edit-keys.d.ts.map +1 -0
- package/dist/components/Field/field-edit-keys.js +19 -0
- package/dist/components/Field/field-edit-keys.js.map +1 -0
- package/dist/components/Field/field-types.d.ts +22 -3
- package/dist/components/Field/field-types.d.ts.map +1 -1
- package/dist/components/Field/field-types.js.map +1 -1
- package/dist/components/Field/field-wrapper.d.ts +24 -6
- package/dist/components/Field/field-wrapper.d.ts.map +1 -1
- package/dist/components/Field/field-wrapper.js +98 -74
- package/dist/components/Field/field-wrapper.js.map +1 -1
- package/dist/components/Field/field.d.ts +7 -4
- package/dist/components/Field/field.d.ts.map +1 -1
- package/dist/components/Field/field.js +39 -6
- package/dist/components/Field/field.js.map +1 -1
- package/dist/components/Field/index.d.ts +3 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/index.js +14 -0
- package/dist/components/Field/index.js.map +1 -0
- package/dist/components/Field/use-form-validation.d.ts +92 -0
- package/dist/components/Field/use-form-validation.d.ts.map +1 -0
- package/dist/components/Field/use-form-validation.js +137 -0
- package/dist/components/Field/use-form-validation.js.map +1 -0
- package/dist/components/FieldControlGroup/field-control-group.d.ts +8 -11
- package/dist/components/FieldControlGroup/field-control-group.d.ts.map +1 -1
- package/dist/components/FieldControlGroup/field-control-group.js +2 -2
- package/dist/components/FieldControlGroup/field-control-group.js.map +1 -1
- package/dist/components/FieldControlGroup/index.d.ts +2 -0
- package/dist/components/FieldControlGroup/index.d.ts.map +1 -0
- package/dist/components/FieldControlGroup/index.js +6 -0
- package/dist/components/FieldControlGroup/index.js.map +1 -0
- package/dist/components/FileItem/file-item.d.ts +14 -2
- package/dist/components/FileItem/file-item.d.ts.map +1 -1
- package/dist/components/FileItem/file-item.js +45 -16
- package/dist/components/FileItem/file-item.js.map +1 -1
- package/dist/components/FileItem/index.d.ts +2 -0
- package/dist/components/FileItem/index.d.ts.map +1 -0
- package/dist/components/FileItem/index.js +6 -0
- package/dist/components/FileItem/index.js.map +1 -0
- package/dist/components/FileUpload/file-upload.d.ts +39 -19
- package/dist/components/FileUpload/file-upload.d.ts.map +1 -1
- package/dist/components/FileUpload/file-upload.js +102 -32
- package/dist/components/FileUpload/file-upload.js.map +1 -1
- package/dist/components/FileUpload/index.d.ts +2 -0
- package/dist/components/FileUpload/index.d.ts.map +1 -0
- package/dist/components/FileUpload/index.js +6 -0
- package/dist/components/FileUpload/index.js.map +1 -0
- package/dist/components/FileViewer/can-render-image.d.ts +6 -0
- package/dist/components/FileViewer/can-render-image.d.ts.map +1 -0
- package/dist/components/FileViewer/can-render-image.js +11 -0
- package/dist/components/FileViewer/can-render-image.js.map +1 -0
- package/dist/components/FileViewer/file-viewer.d.ts +4 -4
- package/dist/components/FileViewer/file-viewer.d.ts.map +1 -1
- package/dist/components/FileViewer/file-viewer.js +88 -50
- package/dist/components/FileViewer/file-viewer.js.map +1 -1
- package/dist/components/FileViewer/image-renderer.d.ts +0 -5
- package/dist/components/FileViewer/image-renderer.d.ts.map +1 -1
- package/dist/components/FileViewer/image-renderer.js +23 -10
- package/dist/components/FileViewer/image-renderer.js.map +1 -1
- package/dist/components/FileViewer/index.d.ts +2 -0
- package/dist/components/FileViewer/index.d.ts.map +1 -0
- package/dist/components/FileViewer/index.js +7 -0
- package/dist/components/FileViewer/index.js.map +1 -0
- package/dist/components/HoverCard/hover-card.d.ts +9 -5
- package/dist/components/HoverCard/hover-card.d.ts.map +1 -1
- package/dist/components/HoverCard/hover-card.js +12 -5
- package/dist/components/HoverCard/hover-card.js.map +1 -1
- package/dist/components/HoverCard/index.d.ts +2 -0
- package/dist/components/HoverCard/index.d.ts.map +1 -0
- package/dist/components/HoverCard/index.js +8 -0
- package/dist/components/HoverCard/index.js.map +1 -0
- package/dist/components/InlineEdit/index.d.ts +2 -0
- package/dist/components/InlineEdit/index.d.ts.map +1 -0
- package/dist/components/InlineEdit/index.js +6 -0
- package/dist/components/InlineEdit/index.js.map +1 -0
- package/dist/components/InlineEdit/inline-edit.d.ts +86 -0
- package/dist/components/InlineEdit/inline-edit.d.ts.map +1 -0
- package/dist/components/InlineEdit/inline-edit.js +254 -0
- package/dist/components/InlineEdit/inline-edit.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +6 -0
- package/dist/components/Input/index.js.map +1 -0
- package/dist/components/Input/input.d.ts +31 -10
- package/dist/components/Input/input.d.ts.map +1 -1
- package/dist/components/Input/input.js +67 -30
- package/dist/components/Input/input.js.map +1 -1
- package/dist/components/LinkInput/index.d.ts +2 -0
- package/dist/components/LinkInput/index.d.ts.map +1 -0
- package/dist/components/LinkInput/index.js +6 -0
- package/dist/components/LinkInput/index.js.map +1 -0
- package/dist/components/LinkInput/link-input.d.ts +9 -9
- package/dist/components/LinkInput/link-input.d.ts.map +1 -1
- package/dist/components/LinkInput/link-input.js +40 -37
- package/dist/components/LinkInput/link-input.js.map +1 -1
- package/dist/components/Menu/index.d.ts +2 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +9 -0
- package/dist/components/Menu/index.js.map +1 -0
- package/dist/components/Menu/menu-item.d.ts +20 -4
- package/dist/components/Menu/menu-item.d.ts.map +1 -1
- package/dist/components/Menu/menu-item.js +37 -9
- package/dist/components/Menu/menu-item.js.map +1 -1
- package/dist/components/Notice/index.d.ts +2 -0
- package/dist/components/Notice/index.d.ts.map +1 -0
- package/dist/components/Notice/index.js +8 -0
- package/dist/components/Notice/index.js.map +1 -0
- package/dist/components/Notice/notice.d.ts +35 -7
- package/dist/components/Notice/notice.d.ts.map +1 -1
- package/dist/components/Notice/notice.js +34 -10
- package/dist/components/Notice/notice.js.map +1 -1
- package/dist/components/NumberInput/index.d.ts +2 -0
- package/dist/components/NumberInput/index.d.ts.map +1 -0
- package/dist/components/NumberInput/index.js +7 -0
- package/dist/components/NumberInput/index.js.map +1 -0
- package/dist/components/NumberInput/number-input.d.ts +5 -5
- package/dist/components/NumberInput/number-input.d.ts.map +1 -1
- package/dist/components/NumberInput/number-input.js +40 -18
- package/dist/components/NumberInput/number-input.js.map +1 -1
- package/dist/components/OverflowIndicator/index.d.ts +2 -0
- package/dist/components/OverflowIndicator/index.d.ts.map +1 -0
- package/dist/components/OverflowIndicator/index.js +6 -0
- package/dist/components/OverflowIndicator/index.js.map +1 -0
- package/dist/components/OverflowIndicator/overflow-indicator.d.ts +6 -2
- package/dist/components/OverflowIndicator/overflow-indicator.d.ts.map +1 -1
- package/dist/components/OverflowIndicator/overflow-indicator.js +11 -7
- package/dist/components/OverflowIndicator/overflow-indicator.js.map +1 -1
- package/dist/components/Pagination/index.d.ts +2 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pagination/index.js +6 -0
- package/dist/components/Pagination/index.js.map +1 -0
- package/dist/components/Pagination/pagination.d.ts +49 -0
- package/dist/components/Pagination/pagination.d.ts.map +1 -0
- package/dist/components/Pagination/pagination.js +182 -0
- package/dist/components/Pagination/pagination.js.map +1 -0
- package/dist/components/PeoplePicker/avatar-stack-overflow.d.ts +1 -1
- package/dist/components/PeoplePicker/avatar-stack-overflow.js.map +1 -1
- package/dist/components/PeoplePicker/index.d.ts +2 -0
- package/dist/components/PeoplePicker/index.d.ts.map +1 -0
- package/dist/components/PeoplePicker/index.js +15 -0
- package/dist/components/PeoplePicker/index.js.map +1 -0
- package/dist/components/PeoplePicker/people-picker-helpers.d.ts.map +1 -1
- package/dist/components/PeoplePicker/people-picker-helpers.js +2 -2
- package/dist/components/PeoplePicker/people-picker-helpers.js.map +1 -1
- package/dist/components/PeoplePicker/people-picker.d.ts +26 -10
- package/dist/components/PeoplePicker/people-picker.d.ts.map +1 -1
- package/dist/components/PeoplePicker/people-picker.js +97 -65
- package/dist/components/PeoplePicker/people-picker.js.map +1 -1
- package/dist/components/PeoplePicker/person-display.d.ts +19 -11
- package/dist/components/PeoplePicker/person-display.d.ts.map +1 -1
- package/dist/components/PeoplePicker/person-display.js +39 -23
- package/dist/components/PeoplePicker/person-display.js.map +1 -1
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Popover/index.js +14 -0
- package/dist/components/Popover/index.js.map +1 -0
- package/dist/components/Popover/popover.d.ts +2 -2
- package/dist/components/Popover/popover.d.ts.map +1 -1
- package/dist/components/Popover/popover.js +72 -42
- package/dist/components/Popover/popover.js.map +1 -1
- package/dist/components/ProfileCard/index.d.ts +2 -0
- package/dist/components/ProfileCard/index.d.ts.map +1 -0
- package/dist/components/ProfileCard/index.js +8 -0
- package/dist/components/ProfileCard/index.js.map +1 -0
- package/dist/components/{NameCard/name-card.d.ts → ProfileCard/profile-card.d.ts} +34 -20
- package/dist/components/ProfileCard/profile-card.d.ts.map +1 -0
- package/dist/components/{NameCard/name-card.js → ProfileCard/profile-card.js} +27 -16
- package/dist/components/ProfileCard/profile-card.js.map +1 -0
- package/dist/components/ProgressBar/index.d.ts +2 -0
- package/dist/components/ProgressBar/index.d.ts.map +1 -0
- package/dist/components/ProgressBar/index.js +6 -0
- package/dist/components/ProgressBar/index.js.map +1 -0
- package/dist/components/ProgressBar/progress-bar.d.ts +2 -14
- package/dist/components/ProgressBar/progress-bar.d.ts.map +1 -1
- package/dist/components/ProgressBar/progress-bar.js +5 -9
- package/dist/components/ProgressBar/progress-bar.js.map +1 -1
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/components/RadioGroup/index.js +8 -0
- package/dist/components/RadioGroup/index.js.map +1 -0
- package/dist/components/RadioGroup/radio-group.d.ts +18 -12
- package/dist/components/RadioGroup/radio-group.d.ts.map +1 -1
- package/dist/components/RadioGroup/radio-group.js +131 -40
- package/dist/components/RadioGroup/radio-group.js.map +1 -1
- package/dist/components/Rating/index.d.ts +2 -0
- package/dist/components/Rating/index.d.ts.map +1 -0
- package/dist/components/Rating/index.js +6 -0
- package/dist/components/Rating/index.js.map +1 -0
- package/dist/components/Rating/rating.d.ts +6 -2
- package/dist/components/Rating/rating.d.ts.map +1 -1
- package/dist/components/Rating/rating.js +17 -10
- package/dist/components/Rating/rating.js.map +1 -1
- package/dist/components/ScrollArea/index.d.ts +2 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/index.js +7 -0
- package/dist/components/ScrollArea/index.js.map +1 -0
- package/dist/components/ScrollArea/scroll-area.d.ts +16 -4
- package/dist/components/ScrollArea/scroll-area.d.ts.map +1 -1
- package/dist/components/ScrollArea/scroll-area.js +9 -6
- package/dist/components/ScrollArea/scroll-area.js.map +1 -1
- package/dist/components/SegmentedControl/index.d.ts +2 -0
- package/dist/components/SegmentedControl/index.d.ts.map +1 -0
- package/dist/components/SegmentedControl/index.js +9 -0
- package/dist/components/SegmentedControl/index.js.map +1 -0
- package/dist/components/SegmentedControl/segmented-control.d.ts +8 -7
- package/dist/components/SegmentedControl/segmented-control.d.ts.map +1 -1
- package/dist/components/SegmentedControl/segmented-control.js +31 -20
- package/dist/components/SegmentedControl/segmented-control.js.map +1 -1
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +6 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Select/select.d.ts +70 -13
- package/dist/components/Select/select.d.ts.map +1 -1
- package/dist/components/Select/select.js +271 -83
- package/dist/components/Select/select.js.map +1 -1
- package/dist/components/SelectMenu/index.d.ts +2 -0
- package/dist/components/SelectMenu/index.d.ts.map +1 -0
- package/dist/components/SelectMenu/index.js +8 -0
- package/dist/components/SelectMenu/index.js.map +1 -0
- package/dist/components/SelectMenu/select-menu.d.ts +61 -10
- package/dist/components/SelectMenu/select-menu.d.ts.map +1 -1
- package/dist/components/SelectMenu/select-menu.js +216 -93
- package/dist/components/SelectMenu/select-menu.js.map +1 -1
- package/dist/components/SelectionControl/boolean-value.d.ts +11 -0
- package/dist/components/SelectionControl/boolean-value.d.ts.map +1 -0
- package/dist/components/SelectionControl/boolean-value.js +23 -0
- package/dist/components/SelectionControl/boolean-value.js.map +1 -0
- package/dist/components/SelectionControl/index.d.ts +3 -0
- package/dist/components/SelectionControl/index.d.ts.map +1 -0
- package/dist/components/SelectionControl/index.js +9 -0
- package/dist/components/SelectionControl/index.js.map +1 -0
- package/dist/components/SelectionControl/selection-item.d.ts +5 -1
- package/dist/components/SelectionControl/selection-item.d.ts.map +1 -1
- package/dist/components/SelectionControl/selection-item.js +3 -1
- package/dist/components/SelectionControl/selection-item.js.map +1 -1
- package/dist/components/Separator/index.d.ts +2 -0
- package/dist/components/Separator/index.d.ts.map +1 -0
- package/dist/components/Separator/index.js +6 -0
- package/dist/components/Separator/index.js.map +1 -0
- package/dist/components/Separator/separator.d.ts +2 -2
- package/dist/components/Separator/separator.js +4 -3
- package/dist/components/Separator/separator.js.map +1 -1
- package/dist/components/Sheet/index.d.ts +2 -0
- package/dist/components/Sheet/index.d.ts.map +1 -0
- package/dist/components/Sheet/index.js +18 -0
- package/dist/components/Sheet/index.js.map +1 -0
- package/dist/components/Sheet/sheet.d.ts +15 -8
- package/dist/components/Sheet/sheet.d.ts.map +1 -1
- package/dist/components/Sheet/sheet.js +9 -5
- package/dist/components/Sheet/sheet.js.map +1 -1
- package/dist/components/Sidebar/index.d.ts +2 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/index.js +24 -0
- package/dist/components/Sidebar/index.js.map +1 -0
- package/dist/components/Sidebar/sidebar.d.ts +17 -11
- package/dist/components/Sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/Sidebar/sidebar.js +78 -35
- package/dist/components/Sidebar/sidebar.js.map +1 -1
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Skeleton/index.d.ts.map +1 -0
- package/dist/components/Skeleton/index.js +6 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- package/dist/components/Skeleton/skeleton.d.ts +2 -2
- package/dist/components/Skeleton/skeleton.js +4 -3
- package/dist/components/Skeleton/skeleton.js.map +1 -1
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Slider/index.js +7 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/Slider/slider.d.ts +7 -7
- package/dist/components/Slider/slider.d.ts.map +1 -1
- package/dist/components/Slider/slider.js +39 -17
- package/dist/components/Slider/slider.js.map +1 -1
- package/dist/components/Steps/index.d.ts +2 -0
- package/dist/components/Steps/index.d.ts.map +1 -0
- package/dist/components/Steps/index.js +12 -0
- package/dist/components/Steps/index.js.map +1 -0
- package/dist/components/Steps/steps.d.ts +8 -6
- package/dist/components/Steps/steps.d.ts.map +1 -1
- package/dist/components/Steps/steps.js +74 -32
- package/dist/components/Steps/steps.js.map +1 -1
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +7 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Switch/switch.d.ts +20 -18
- package/dist/components/Switch/switch.d.ts.map +1 -1
- package/dist/components/Switch/switch.js +133 -26
- package/dist/components/Switch/switch.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +10 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Tabs/tabs-inline-action-geometry.d.ts +31 -0
- package/dist/components/Tabs/tabs-inline-action-geometry.d.ts.map +1 -0
- package/dist/components/Tabs/tabs-inline-action-geometry.js +43 -0
- package/dist/components/Tabs/tabs-inline-action-geometry.js.map +1 -0
- package/dist/components/Tabs/tabs.d.ts +14 -11
- package/dist/components/Tabs/tabs.d.ts.map +1 -1
- package/dist/components/Tabs/tabs.js +184 -69
- package/dist/components/Tabs/tabs.js.map +1 -1
- package/dist/components/Tag/index.d.ts +2 -0
- package/dist/components/Tag/index.d.ts.map +1 -0
- package/dist/components/Tag/index.js +7 -0
- package/dist/components/Tag/index.js.map +1 -0
- package/dist/components/Tag/tag.d.ts +39 -23
- package/dist/components/Tag/tag.d.ts.map +1 -1
- package/dist/components/Tag/tag.js +71 -63
- package/dist/components/Tag/tag.js.map +1 -1
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea/index.js +7 -0
- package/dist/components/Textarea/index.js.map +1 -0
- package/dist/components/Textarea/textarea.d.ts +24 -17
- package/dist/components/Textarea/textarea.d.ts.map +1 -1
- package/dist/components/Textarea/textarea.js +110 -72
- package/dist/components/Textarea/textarea.js.map +1 -1
- package/dist/components/TimePicker/index.d.ts +2 -0
- package/dist/components/TimePicker/index.d.ts.map +1 -0
- package/dist/components/TimePicker/index.js +6 -0
- package/dist/components/TimePicker/index.js.map +1 -0
- package/dist/components/TimePicker/time-columns.d.ts.map +1 -1
- package/dist/components/TimePicker/time-columns.js +44 -36
- package/dist/components/TimePicker/time-columns.js.map +1 -1
- package/dist/components/TimePicker/time-picker.d.ts +8 -7
- package/dist/components/TimePicker/time-picker.d.ts.map +1 -1
- package/dist/components/TimePicker/time-picker.js +71 -53
- package/dist/components/TimePicker/time-picker.js.map +1 -1
- package/dist/components/Toast/index.d.ts +2 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +7 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toast/toast.d.ts +2 -2
- package/dist/components/Toast/toast.d.ts.map +1 -1
- package/dist/components/Toast/toast.js +82 -20
- package/dist/components/Toast/toast.js.map +1 -1
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +9 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/Tooltip/tooltip.d.ts +2 -2
- package/dist/components/Tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/tooltip.js +57 -25
- package/dist/components/Tooltip/tooltip.js.map +1 -1
- package/dist/components/TreeView/index.d.ts +2 -0
- package/dist/components/TreeView/index.d.ts.map +1 -0
- package/dist/components/TreeView/index.js +8 -0
- package/dist/components/TreeView/index.js.map +1 -0
- package/dist/components/TreeView/tree-view.d.ts +71 -14
- package/dist/components/TreeView/tree-view.d.ts.map +1 -1
- package/dist/components/TreeView/tree-view.js +313 -34
- package/dist/components/TreeView/tree-view.js.map +1 -1
- package/dist/hooks/use-controllable.d.ts.map +1 -1
- package/dist/hooks/use-controllable.js +4 -2
- package/dist/hooks/use-controllable.js.map +1 -1
- package/dist/hooks/use-is-touch-device.d.ts.map +1 -1
- package/dist/hooks/use-is-touch-device.js +3 -1
- package/dist/hooks/use-is-touch-device.js.map +1 -1
- package/dist/hooks/use-overflow-items.d.ts +10 -6
- package/dist/hooks/use-overflow-items.d.ts.map +1 -1
- package/dist/hooks/use-overflow-items.js.map +1 -1
- package/dist/hooks/use-truncated.d.ts +27 -0
- package/dist/hooks/use-truncated.d.ts.map +1 -0
- package/dist/hooks/use-truncated.js +57 -0
- package/dist/hooks/use-truncated.js.map +1 -0
- package/dist/{react-day-picker.css → index.css} +59 -0
- package/dist/index.d.ts +121 -67
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +143 -160
- package/dist/index.js.map +1 -1
- package/dist/lib/drag-visual.d.ts +2 -2
- package/dist/lib/drag-visual.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +24 -2
- package/dist/lib/utils.js.map +1 -1
- package/dist/patterns/element-anatomy/index.d.ts +3 -0
- package/dist/patterns/element-anatomy/index.d.ts.map +1 -0
- package/dist/patterns/element-anatomy/index.js +22 -0
- package/dist/patterns/element-anatomy/index.js.map +1 -0
- package/dist/patterns/element-anatomy/item-anatomy.d.ts +32 -16
- package/dist/patterns/element-anatomy/item-anatomy.d.ts.map +1 -1
- package/dist/patterns/element-anatomy/item-anatomy.js +83 -35
- package/dist/patterns/element-anatomy/item-anatomy.js.map +1 -1
- package/dist/patterns/element-anatomy/truncated-text.d.ts +27 -0
- package/dist/patterns/element-anatomy/truncated-text.d.ts.map +1 -0
- package/dist/patterns/element-anatomy/truncated-text.js +16 -0
- package/dist/patterns/element-anatomy/truncated-text.js.map +1 -0
- package/dist/patterns/header-canonical/chrome-header.d.ts +20 -4
- package/dist/patterns/header-canonical/chrome-header.d.ts.map +1 -1
- package/dist/patterns/header-canonical/chrome-header.js +4 -2
- package/dist/patterns/header-canonical/chrome-header.js.map +1 -1
- package/dist/patterns/header-canonical/index.d.ts +2 -0
- package/dist/patterns/header-canonical/index.d.ts.map +1 -0
- package/dist/patterns/header-canonical/index.js +6 -0
- package/dist/patterns/header-canonical/index.js.map +1 -0
- package/dist/patterns/horizontal-overflow/horizontal-overflow.d.ts +1 -1
- package/dist/patterns/horizontal-overflow/horizontal-overflow.js.map +1 -1
- package/dist/patterns/horizontal-overflow/index.d.ts +2 -0
- package/dist/patterns/horizontal-overflow/index.d.ts.map +1 -0
- package/dist/patterns/horizontal-overflow/index.js +14 -0
- package/dist/patterns/horizontal-overflow/index.js.map +1 -0
- package/dist/patterns/overlay-surface/index.d.ts +2 -0
- package/dist/patterns/overlay-surface/index.d.ts.map +1 -0
- package/dist/patterns/overlay-surface/index.js +8 -0
- package/dist/patterns/overlay-surface/index.js.map +1 -0
- package/dist/patterns/overlay-surface/overlay-surface.d.ts +12 -2
- package/dist/patterns/overlay-surface/overlay-surface.d.ts.map +1 -1
- package/dist/patterns/overlay-surface/overlay-surface.js +6 -2
- package/dist/patterns/overlay-surface/overlay-surface.js.map +1 -1
- package/dist/patterns/resize-handle/index.d.ts +2 -0
- package/dist/patterns/resize-handle/index.d.ts.map +1 -0
- package/dist/patterns/resize-handle/index.js +5 -0
- package/dist/patterns/resize-handle/index.js.map +1 -0
- package/dist/patterns/resize-handle/resize-handle.d.ts +9 -11
- package/dist/patterns/resize-handle/resize-handle.d.ts.map +1 -1
- package/dist/patterns/resize-handle/resize-handle.js +3 -6
- package/dist/patterns/resize-handle/resize-handle.js.map +1 -1
- package/dist/story-governance/category-matrix.d.ts +35 -0
- package/dist/story-governance/category-matrix.d.ts.map +1 -0
- package/dist/tokens/categorical-color.d.ts +60 -0
- package/dist/tokens/categorical-color.d.ts.map +1 -0
- package/dist/tokens/categorical-color.js +125 -0
- package/dist/tokens/categorical-color.js.map +1 -0
- package/dist/tokens/motion/motion.d.ts +8 -7
- package/dist/tokens/motion/motion.d.ts.map +1 -1
- package/dist/tokens/motion/motion.js +6 -6
- package/dist/tokens/motion/motion.js.map +1 -1
- package/dist/tokens/motion/overlay-motion.d.ts +19 -0
- package/dist/tokens/motion/overlay-motion.d.ts.map +1 -0
- package/dist/tokens/motion/overlay-motion.js +9 -0
- package/dist/tokens/motion/overlay-motion.js.map +1 -0
- package/dist/tokens/uiSize/icon-size.d.ts +3 -4
- package/dist/tokens/uiSize/icon-size.d.ts.map +1 -1
- package/dist/tokens/uiSize/icon-size.js +5 -0
- package/dist/tokens/uiSize/icon-size.js.map +1 -0
- 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 +169 -0
- package/ds-canonical/commands/README.md +9 -14
- package/ds-canonical/fork/AGENTS.md +110 -0
- 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 +43 -0
- 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 +23 -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 +252 -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 +203 -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 +258 -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 +57 -0
- package/ds-canonical/fork/common/closed-tool-execution.mjs +1005 -0
- package/ds-canonical/fork/common/instruction.md +110 -0
- package/ds-canonical/fork/consumer/governance-check.mjs +3163 -0
- package/ds-canonical/fork/consumer/lib/closed-tool-execution.mjs +1005 -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 +53 -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 +1005 -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 +549 -0
- package/ds-canonical/fork/consumer/managed-files/475fba657eaeb8abd88f60635f3eadab27a9d0d3114ba4fffc65f43a2a0fe6e2.blob +124 -0
- package/ds-canonical/fork/consumer/managed-files/5aeda1df235815f40dd755951f2b868d4e02035653d4536a8dde209cdc75b493.blob +268 -0
- package/ds-canonical/fork/consumer/managed-files/61c6aca6d7f04bedbf556eaa9d3043681fe48cbe0e93a8ccb1d69a7c5e23fdcf.blob +113 -0
- package/ds-canonical/fork/consumer/managed-files/63061e05969667005020166ea2ae7df3c96663f7a928e7dd3eebc1471022df56.blob +2454 -0
- package/ds-canonical/fork/consumer/managed-files/65410b66e8799a560e07b71779c186fed2a0ef50575ac44745df7a0938a9c2b4.blob +321 -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/7937321877e5c34c27dae36c0d507d21cd42fa3f46a8f11a284b8b4a52b6faa4.blob +84 -0
- package/ds-canonical/fork/consumer/managed-files/794bb911ba8ebef58ab0d44a55b9968a19d2c62bcfb310b1ee3a84166f087f21.blob +924 -0
- package/ds-canonical/fork/consumer/managed-files/7ab15a8aeca39485d7b9b57234bbc4a69e0b9e70b4a851dfe10f6447127cee78.blob +51 -0
- package/ds-canonical/fork/consumer/managed-files/7b17835d0ceb17cdcdcaf930540a3e5d0943a34a747ac43c12ca8cd485c11581.blob +44 -0
- package/ds-canonical/fork/consumer/managed-files/7eb6cc60abfdabaf6617c336058fad1454ccde08889295767bfd9b7fd153cc6e.blob +900 -0
- package/ds-canonical/fork/consumer/managed-files/81037efa5b3b9f4a875704005fb268acdc9233bb901f44902e4e37e1da92b8e3.blob +46 -0
- package/ds-canonical/fork/consumer/managed-files/884721550b56308812b20917adac7a12f36fdb4ecda6b02460a7f5a219c0c966.blob +82 -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 +36 -0
- package/ds-canonical/fork/consumer/managed-files/974521d6b8fe796ea4c58b3c78b0c2b8a1be262b97100d77aaf4cc9c7724bcab.blob +45 -0
- package/ds-canonical/fork/consumer/managed-files/9791c85388d2e2e2bd564e2550fadc3351c4c960a47ce838098afcba7544eb90.blob +973 -0
- package/ds-canonical/fork/consumer/managed-files/a448d2222133335c30e6fda5116e26a40db3283a19d62ccc0663c30d272262a7.blob +174 -0
- package/ds-canonical/fork/consumer/managed-files/ab072e7f2eca51f0e18a5e18c4b333260ee5d219a12cc6df5bb2d683f0b2734d.blob +2639 -0
- package/ds-canonical/fork/consumer/managed-files/bc44cabad181f766611dab6a8f52d81100afadd50ac59799015e8ba7bf46d9eb.blob +620 -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/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 +1696 -0
- package/ds-canonical/fork/hooks/_log-fire.sh +143 -0
- package/ds-canonical/fork/hooks/block_prototype_imports.py +241 -0
- package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +106 -0
- package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +731 -0
- package/ds-canonical/fork/hooks/check_consumer_code_quality.sh +173 -0
- package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +219 -0
- package/ds-canonical/fork/hooks/check_dynamic_tailwind_class.sh +57 -0
- package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +213 -0
- package/ds-canonical/fork/hooks/check_field_family_invariants.sh +376 -0
- package/ds-canonical/fork/hooks/check_fork_product_quality.sh +38 -0
- package/ds-canonical/fork/hooks/check_item_list_gap.sh +56 -0
- package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +160 -0
- package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +319 -0
- package/ds-canonical/fork/hooks/check_pattern_invariants.sh +339 -0
- package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +99 -0
- package/ds-canonical/fork/hooks/check_story_determinism.sh +39 -0
- package/ds-canonical/fork/hooks/check_story_invariants.sh +400 -0
- package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +241 -0
- package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +86 -0
- package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +333 -0
- package/ds-canonical/fork/hooks/lib/_hook_integrity.sh +158 -0
- package/ds-canonical/fork/hooks/lib/_micro_geometry.sh +291 -0
- package/ds-canonical/fork/hooks/lib/_provider_paths.sh +162 -0
- package/ds-canonical/fork/launchers/approval-evidence.mjs +1321 -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 +154 -0
- 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 +99 -0
- 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 +1640 -0
- package/ds-canonical/fork/launchers/provider-hook-output-transport.mjs +540 -0
- package/ds-canonical/fork/launchers/settings-hooks.json +35 -0
- package/ds-canonical/fork/manifest.json +1984 -0
- package/ds-canonical/fork/providers/claude/hook-config.json +327 -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 +23 -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 +252 -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 +203 -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 +258 -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 +23 -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 +252 -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 +203 -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 +258 -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 +123 -0
- package/ds-canonical/fork/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/fork/references/utility-registry.json +426 -0
- package/ds-canonical/fork/references/utility-registry.schema.json +409 -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 +196 -0
- package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +69 -0
- package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +242 -0
- package/ds-canonical/fork/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- 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 +23 -0
- package/ds-canonical/fork/skills/performance-audit/SKILL.md +112 -0
- package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +250 -0
- package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/skills/propose-options/SKILL.md +179 -0
- package/ds-canonical/fork/skills/prototype/SKILL.md +244 -0
- package/ds-canonical/fork/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +201 -0
- package/ds-canonical/fork/skills/ux-audit/SKILL.md +133 -0
- package/ds-canonical/fork/skills/visual-audit/SKILL.md +248 -0
- package/ds-canonical/fork/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/hooks/README.md +39 -25
- package/ds-canonical/hooks/_log-fire.sh +111 -12
- package/ds-canonical/hooks/auto_regen_ds_barrel.sh +90 -0
- package/ds-canonical/hooks/block_prototype_imports.py +156 -26
- package/ds-canonical/hooks/check_audit_post_report_validator.sh +328 -32
- package/ds-canonical/hooks/check_audit_sample_escape.sh +10 -7
- package/ds-canonical/hooks/check_benchmark_citation.sh +41 -8
- package/ds-canonical/hooks/check_canonical_propagation.sh +85 -24
- package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +106 -0
- package/ds-canonical/hooks/check_codex_brief_invariants.sh +138 -29
- package/ds-canonical/hooks/check_codex_collab_5step.sh +31 -25
- package/ds-canonical/hooks/check_consumer_app_invariants.sh +731 -0
- package/ds-canonical/hooks/check_consumer_code_quality.sh +173 -0
- package/ds-canonical/hooks/check_datatable_invariants.sh +173 -29
- package/ds-canonical/hooks/check_dim_count_drift.sh +8 -7
- package/ds-canonical/hooks/check_ds_anchor_preflight.sh +219 -0
- package/ds-canonical/hooks/check_dynamic_tailwind_class.sh +57 -0
- package/ds-canonical/hooks/check_escape_marker_abuse.sh +213 -0
- package/ds-canonical/hooks/check_field_controls_contracts.sh +37 -8
- package/ds-canonical/hooks/check_field_family_invariants.sh +195 -24
- package/ds-canonical/hooks/check_file_size_budget.sh +32 -14
- package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +111 -0
- package/ds-canonical/hooks/check_item_list_gap.sh +56 -0
- package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +160 -0
- package/ds-canonical/hooks/check_main_branch_workbench.sh +27 -68
- package/ds-canonical/hooks/check_naming_and_abstraction.sh +21 -10
- package/ds-canonical/hooks/check_opacity_token_usage.sh +238 -68
- package/ds-canonical/hooks/check_orphan_ds_css.sh +96 -0
- package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +110 -0
- package/ds-canonical/hooks/check_pattern_invariants.sh +160 -15
- package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +4 -4
- package/ds-canonical/hooks/check_pixel_quantified_audit.sh +6 -4
- package/ds-canonical/hooks/check_plugin_fork_health.sh +282 -0
- package/ds-canonical/hooks/check_propose_discipline.sh +255 -0
- package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +6 -4
- package/ds-canonical/hooks/check_propose_without_benchmark.sh +71 -0
- package/ds-canonical/hooks/check_select_all_canonical.sh +1 -1
- package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +99 -0
- package/ds-canonical/hooks/check_solo_workflow.sh +62 -168
- package/ds-canonical/hooks/check_spec_class_drift.sh +33 -19
- package/ds-canonical/hooks/check_ssot_header_declaration.sh +56 -0
- package/ds-canonical/hooks/check_story_determinism.sh +39 -0
- package/ds-canonical/hooks/check_story_invariants.sh +722 -222
- package/ds-canonical/hooks/check_storybook_addon_packaging.sh +201 -0
- package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +143 -64
- package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +241 -0
- package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +86 -0
- package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +15 -12
- package/ds-canonical/hooks/chrome_header_dispatcher.sh +105 -0
- package/ds-canonical/hooks/enforce_home_charter.sh +31 -10
- package/ds-canonical/hooks/governance_control_plane.sh +15 -0
- package/ds-canonical/hooks/inject_deploy_url_after_push.sh +333 -0
- package/ds-canonical/hooks/inject_pending_self_audit.sh +68 -21
- package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +148 -0
- package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +121 -0
- 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 +18 -10
- package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +107 -0
- 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/_micro_geometry.sh +291 -0
- package/ds-canonical/hooks/lib/_overlay_handcraft.sh +42 -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 +290 -0
- package/ds-canonical/hooks/lib/_token_hygiene.sh +55 -20
- package/ds-canonical/hooks/lib/approval-evidence.mjs +1321 -0
- package/ds-canonical/hooks/lib/audit-report-validator.mjs +122 -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_addon_subdir_ship.sh +76 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_app_story_title.sh +81 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_ds_primitive_misuse.sh +120 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_no_ds_catalog.sh +101 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_consumer_story_baseline.sh +76 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_data_table_size_num_to_meta_width.sh +68 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_fork_user_plugin_install.sh +79 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_plugin_freshness.sh +68 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_cite_required.sh +88 -0
- package/ds-canonical/hooks/{check_propose_plain_chinese.sh → retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh} +2 -2
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_storybook_addon_preset_cjs.sh +87 -0
- package/ds-canonical/hooks/{lib/_approval_re.sh → retired/_approval_re.sh.retired-2026-08-18} +6 -7
- package/ds-canonical/hooks/retired/check_container_breathing.sh +1 -1
- package/ds-canonical/hooks/retired/check_governance_compliance.sh +1 -1
- package/ds-canonical/hooks/session_start_governance_check.sh +157 -69
- 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 +472 -178
- 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 +224 -0
- package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +181 -9
- package/ds-canonical/hooks/tests/test_check_addon_subdir_ship.sh +171 -0
- package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +275 -81
- package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +292 -14
- package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +0 -0
- package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +41 -9
- package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +56 -5
- package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +198 -0
- package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +197 -81
- package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +375 -0
- package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +49 -5
- package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +140 -0
- package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +164 -0
- package/ds-canonical/hooks/tests/test_check_consumer_code_quality.sh +86 -0
- package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +417 -0
- package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +214 -0
- package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +209 -0
- package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +71 -0
- 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 +150 -0
- package/ds-canonical/hooks/tests/test_check_dynamic_tailwind_class.sh +76 -0
- package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +278 -0
- package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +108 -18
- 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 +151 -0
- package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +200 -0
- package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +178 -68
- package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +44 -0
- package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +264 -0
- 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 +151 -6
- package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +228 -0
- package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +191 -0
- package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +103 -7
- package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +132 -0
- package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +181 -0
- package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +69 -0
- package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +10 -7
- 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 +100 -0
- package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +224 -0
- package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +86 -105
- package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +35 -7
- package/ds-canonical/hooks/tests/test_check_ssot_header_declaration.sh +72 -0
- 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 +411 -0
- package/ds-canonical/hooks/tests/test_check_story_determinism.sh +39 -0
- package/ds-canonical/hooks/tests/test_check_story_invariants.sh +734 -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 +89 -0
- package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +200 -0
- package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +672 -28
- package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +182 -97
- package/ds-canonical/hooks/tests/test_check_tabs_content_chrome_body_double_gap.sh +76 -0
- package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +182 -0
- 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 +58 -4
- 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 +276 -0
- 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 +145 -22
- 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 +427 -13
- package/ds-canonical/references/README.md +19 -11
- package/ds-canonical/references/build-ui-canonicals.md +23 -6
- package/ds-canonical/references/certified-surfaces.md +46 -0
- package/ds-canonical/references/composition-fidelity.md +47 -0
- package/ds-canonical/references/cva-patterns.md +2 -2
- package/ds-canonical/references/drag-canonical.md +67 -311
- package/ds-canonical/references/failure-class-registry.json +160 -0
- package/ds-canonical/references/governance-audit-coverage.md +34 -0
- package/ds-canonical/references/item-anatomy-recipe.md +3 -3
- package/ds-canonical/references/naming-conventions.md +2 -1
- package/ds-canonical/references/principle-dim-map.json +136 -9
- package/ds-canonical/references/props-naming.md +18 -3
- package/ds-canonical/references/repository-hygiene-policy.json +143 -0
- package/ds-canonical/references/repository-hygiene.md +106 -0
- package/ds-canonical/references/runtime-evidence-retention.md +88 -0
- package/ds-canonical/references/scenario-definition.md +146 -0
- package/ds-canonical/references/spec-rules.md +1 -1
- package/ds-canonical/references/ssot-consultation.md +5 -5
- package/ds-canonical/references/ssot-index.md +11 -10
- package/ds-canonical/references/story-baseline-registry.json +55 -11
- package/ds-canonical/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/references/structural-token-retention.md +7 -10
- package/ds-canonical/references/tailwind-gotchas.md +4 -4
- package/ds-canonical/references/ui-dev-rules.md +22 -1
- package/ds-canonical/rules/README.md +15 -10
- package/ds-canonical/rules/meta-patterns.md +30 -30
- package/ds-canonical/rules/self-verify.md +22 -12
- package/ds-canonical/rules/spec-rules.md +2 -2
- package/ds-canonical/rules/story-rules.md +36 -9
- package/ds-canonical/rules/ui-development.md +23 -15
- package/ds-canonical/skills/README.md +29 -17
- package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +26 -13
- package/ds-canonical/skills/canonical-reviewer/SKILL.md +29 -0
- package/ds-canonical/skills/code-quality-audit/SKILL.md +15 -11
- package/ds-canonical/skills/codex-collab/SKILL.md +22 -235
- package/ds-canonical/skills/codex-collab/references/brief-template.md +37 -43
- package/ds-canonical/skills/codex-collab/references/transport.md +38 -57
- package/ds-canonical/skills/codify-corrections/SKILL.md +37 -36
- package/ds-canonical/skills/codify-principle/SKILL.md +35 -34
- package/ds-canonical/skills/component-quality-gate/SKILL.md +17 -17
- package/ds-canonical/skills/component-quality-gate/references/checklist.md +8 -8
- package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +47 -224
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +36 -102
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +33 -147
- package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +28 -0
- package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +15 -80
- package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +34 -0
- package/ds-canonical/skills/delivery-handoff/SKILL.md +19 -8
- package/ds-canonical/skills/design-system-audit/SKILL.md +130 -76
- package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +207 -105
- package/ds-canonical/skills/design-system-audit/references/checkpoints.md +59 -50
- package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +33 -9
- package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +51 -32
- package/ds-canonical/skills/design-system-audit/references/rule-placement.md +57 -53
- package/ds-canonical/skills/ensure-canonical/SKILL.md +37 -35
- package/ds-canonical/skills/governance-health/SKILL.md +31 -25
- 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 +23 -0
- package/ds-canonical/skills/knowledge-prune/SKILL.md +57 -114
- package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +15 -0
- package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +57 -0
- package/ds-canonical/skills/knowledge-prune/references/world-class-prune-alignment.md +7 -0
- package/ds-canonical/skills/new-component/SKILL.md +33 -25
- package/ds-canonical/skills/new-component/references/new-component-checklist.md +12 -11
- package/ds-canonical/skills/performance-audit/SKILL.md +15 -12
- package/ds-canonical/skills/product-ui-audit/SKILL.md +52 -34
- package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +10 -7
- package/ds-canonical/skills/product-ui-audit/references/report-template.md +30 -26
- package/ds-canonical/skills/propose-options/SKILL.md +23 -23
- 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/evaluation-matrix.md +2 -2
- package/ds-canonical/skills/prototype/references/ooux-template.md +1 -1
- package/ds-canonical/skills/prototype/references/proposal-template.md +5 -5
- package/ds-canonical/skills/scan-similar-bugs/SKILL.md +29 -28
- package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +26 -25
- package/ds-canonical/skills/story-writing/SKILL.md +25 -14
- package/ds-canonical/skills/story-writing/references/anatomy-standard.md +2 -2
- package/ds-canonical/skills/story-writing/references/category-templates.md +15 -15
- package/ds-canonical/skills/ux-audit/SKILL.md +13 -10
- package/ds-canonical/skills/visual-audit/SKILL.md +47 -46
- package/ds-canonical/skills/visual-audit/references/audit-architecture.md +7 -7
- package/ds-canonical/skills/visual-audit/references/visual-checklist.md +14 -14
- package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +3 -3
- package/ds-canonical/templates/_README.md +22 -0
- package/ds-canonical/templates/consumer-governance.md +82 -0
- package/ds-canonical/templates/dashboard-app.tsx +186 -0
- 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 +82 -0
- package/ds-canonical/templates/product-provider-wiring.schema.json +153 -0
- package/ds-story-manifest.json +1791 -0
- package/llms-full.txt +450 -0
- package/llms.txt +74 -0
- package/package.json +43 -10
- package/src/README.md +1 -1
- package/src/components/Accordion/accordion.anatomy.stories.tsx +496 -0
- package/src/components/Accordion/accordion.principles.stories.tsx +365 -0
- package/src/components/Accordion/accordion.spec.md +31 -5
- package/src/components/Accordion/accordion.stories.tsx +192 -0
- package/src/components/Accordion/accordion.tsx +13 -5
- package/src/components/Accordion/index.ts +5 -0
- package/src/components/AccountMenu/account-menu.anatomy.stories.tsx +117 -0
- package/src/components/AccountMenu/account-menu.principles.stories.tsx +99 -0
- package/src/components/AccountMenu/account-menu.spec.md +127 -0
- package/src/components/AccountMenu/account-menu.stories.tsx +65 -0
- package/src/components/AccountMenu/account-menu.tsx +194 -0
- package/src/components/AccountMenu/index.ts +5 -0
- package/src/components/AgentPanel/agent-fab.tsx +126 -0
- package/src/components/AgentPanel/agent-logo.tsx +491 -0
- package/src/components/AgentPanel/agent-panel.anatomy.stories.tsx +127 -0
- package/src/components/AgentPanel/agent-panel.css +59 -0
- package/src/components/AgentPanel/agent-panel.principles.stories.tsx +57 -0
- package/src/components/AgentPanel/agent-panel.spec.md +319 -0
- package/src/components/AgentPanel/agent-panel.stories.tsx +360 -0
- package/src/components/AgentPanel/agent-panel.tsx +1241 -0
- package/src/components/AgentPanel/index.ts +5 -0
- package/src/components/Alert/alert.anatomy.stories.tsx +241 -0
- package/src/components/Alert/alert.principles.stories.tsx +214 -0
- package/src/components/Alert/alert.spec.md +28 -26
- package/src/components/Alert/alert.stories.tsx +136 -0
- package/src/components/Alert/alert.tsx +19 -8
- package/src/components/Alert/index.ts +5 -0
- package/src/components/AppShell/_demo-helpers.tsx +107 -28
- package/src/components/AppShell/app-shell.anatomy.stories.tsx +185 -0
- package/src/components/AppShell/app-shell.principles.stories.tsx +140 -0
- package/src/components/AppShell/app-shell.spec.md +84 -48
- package/src/components/AppShell/app-shell.stories.tsx +445 -0
- package/src/components/AppShell/app-shell.tsx +77 -24
- package/src/components/AppShell/index.ts +5 -0
- package/src/components/AspectRatio/aspect-ratio.anatomy.stories.tsx +208 -0
- package/src/components/AspectRatio/aspect-ratio.principles.stories.tsx +303 -0
- package/src/components/AspectRatio/aspect-ratio.spec.md +24 -12
- package/src/components/AspectRatio/aspect-ratio.stories.tsx +91 -0
- package/src/components/AspectRatio/aspect-ratio.tsx +6 -3
- package/src/components/AspectRatio/index.ts +5 -0
- package/src/components/Avatar/avatar.anatomy.stories.tsx +705 -0
- package/src/components/Avatar/avatar.principles.stories.tsx +249 -0
- package/src/components/Avatar/avatar.spec.md +66 -103
- package/src/components/Avatar/avatar.stories.tsx +156 -0
- package/src/components/Avatar/avatar.tsx +85 -64
- package/src/components/Avatar/index.ts +5 -0
- package/src/components/Badge/badge.anatomy.stories.tsx +591 -0
- package/src/components/Badge/badge.principles.stories.tsx +391 -0
- package/src/components/Badge/badge.spec.md +43 -23
- package/src/components/Badge/badge.stories.tsx +82 -0
- package/src/components/Badge/badge.tsx +38 -14
- package/src/components/Badge/index.ts +5 -0
- package/src/components/Breadcrumb/breadcrumb.anatomy.stories.tsx +462 -0
- package/src/components/Breadcrumb/breadcrumb.principles.stories.tsx +353 -0
- package/src/components/Breadcrumb/breadcrumb.spec.md +55 -43
- package/src/components/Breadcrumb/breadcrumb.stories.tsx +381 -0
- package/src/components/Breadcrumb/breadcrumb.tsx +43 -86
- package/src/components/Breadcrumb/index.ts +5 -0
- package/src/components/BulkActionBar/bulk-action-bar.anatomy.stories.tsx +225 -0
- package/src/components/BulkActionBar/bulk-action-bar.principles.stories.tsx +255 -0
- package/src/components/BulkActionBar/bulk-action-bar.spec.md +64 -36
- package/src/components/BulkActionBar/bulk-action-bar.stories.tsx +124 -0
- package/src/components/BulkActionBar/bulk-action-bar.tsx +26 -18
- package/src/components/BulkActionBar/index.ts +5 -0
- package/src/components/Button/button-group.tsx +64 -21
- package/src/components/Button/button.anatomy.stories.tsx +729 -0
- package/src/components/Button/button.principles.stories.tsx +369 -0
- package/src/components/Button/button.spec.md +42 -39
- package/src/components/Button/button.stories.tsx +368 -0
- package/src/components/Button/button.tsx +109 -55
- package/src/components/Button/index.ts +6 -0
- package/src/components/Calendar/calendar.anatomy.stories.tsx +237 -0
- package/src/components/Calendar/calendar.principles.stories.tsx +152 -0
- package/src/components/Calendar/calendar.spec.md +80 -55
- package/src/components/Calendar/calendar.stories.tsx +108 -0
- package/src/components/Calendar/calendar.tsx +200 -134
- package/src/components/Calendar/index.ts +5 -0
- package/src/components/Carousel/carousel.anatomy.stories.tsx +517 -0
- package/src/components/Carousel/carousel.principles.stories.tsx +334 -0
- package/src/components/Carousel/carousel.spec.md +51 -15
- package/src/components/Carousel/carousel.stories.tsx +125 -0
- package/src/components/Carousel/carousel.tsx +139 -56
- package/src/components/Carousel/index.ts +5 -0
- package/src/components/Chart/chart.anatomy.stories.tsx +310 -0
- package/src/components/Chart/chart.principles.stories.tsx +437 -0
- package/src/components/Chart/chart.spec.md +24 -5
- package/src/components/Chart/chart.stories.tsx +263 -0
- package/src/components/Chart/chart.tsx +10 -3
- package/src/components/Chart/index.ts +5 -0
- package/src/components/Checkbox/checkbox-group.tsx +28 -16
- package/src/components/Checkbox/checkbox.anatomy.stories.tsx +614 -0
- package/src/components/Checkbox/checkbox.principles.stories.tsx +216 -0
- package/src/components/Checkbox/checkbox.spec.md +65 -42
- package/src/components/Checkbox/checkbox.stories.tsx +119 -0
- package/src/components/Checkbox/checkbox.tsx +189 -32
- package/src/components/Checkbox/index.ts +6 -0
- package/src/components/Chip/chip.anatomy.stories.tsx +442 -0
- package/src/components/Chip/chip.principles.stories.tsx +228 -0
- package/src/components/Chip/chip.spec.md +52 -40
- package/src/components/Chip/chip.stories.tsx +111 -0
- package/src/components/Chip/chip.tsx +130 -45
- package/src/components/Chip/index.ts +5 -0
- package/src/components/CircularProgress/circular-progress.anatomy.stories.tsx +177 -0
- package/src/components/CircularProgress/circular-progress.principles.stories.tsx +265 -0
- package/src/components/CircularProgress/circular-progress.spec.md +32 -32
- package/src/components/CircularProgress/circular-progress.stories.tsx +149 -0
- package/src/components/CircularProgress/circular-progress.tsx +5 -6
- package/src/components/CircularProgress/index.ts +5 -0
- package/src/components/Coachmark/coachmark-story-helpers.tsx +39 -0
- package/src/components/Coachmark/coachmark.anatomy.stories.tsx +356 -0
- package/src/components/Coachmark/coachmark.principles.stories.tsx +356 -0
- package/src/components/Coachmark/coachmark.spec.md +36 -29
- package/src/components/Coachmark/coachmark.stories.tsx +220 -0
- package/src/components/Coachmark/coachmark.tsx +36 -10
- package/src/components/Coachmark/index.ts +5 -0
- package/src/components/Combobox/combobox.anatomy.stories.tsx +926 -0
- package/src/components/Combobox/combobox.principles.stories.tsx +238 -0
- package/src/components/Combobox/combobox.spec.md +45 -16
- package/src/components/Combobox/combobox.stories.tsx +194 -0
- package/src/components/Combobox/combobox.tsx +278 -97
- package/src/components/Combobox/index.ts +5 -0
- package/src/components/Command/command.anatomy.stories.tsx +107 -0
- package/src/components/Command/command.principles.stories.tsx +86 -0
- package/src/components/Command/command.spec.md +33 -23
- package/src/components/Command/command.stories.tsx +312 -0
- package/src/components/Command/command.tsx +28 -12
- package/src/components/Command/index.ts +5 -0
- package/src/components/DataTable/active-editor-controller.ts +4 -3
- package/src/components/DataTable/cell-registry.tsx +161 -120
- package/src/components/DataTable/column-types.ts +14 -18
- package/src/components/DataTable/data-table-column-visibility-panel.tsx +28 -12
- package/src/components/DataTable/data-table-filter-group.tsx +248 -0
- package/src/components/DataTable/data-table-filter-labels.ts +100 -0
- package/src/components/DataTable/data-table-filter-panel.tsx +85 -448
- package/src/components/DataTable/data-table-filter-value-picker.tsx +254 -0
- package/src/components/DataTable/data-table-interaction-layer.tsx +26 -29
- package/src/components/DataTable/data-table-sort-manager.tsx +19 -11
- package/src/components/DataTable/data-table.anatomy.stories.tsx +522 -0
- package/src/components/DataTable/data-table.css +34 -8
- package/src/components/DataTable/data-table.principles.stories.tsx +270 -0
- package/src/components/DataTable/data-table.spec.md +186 -172
- package/src/components/DataTable/data-table.stories.tsx +2311 -0
- package/src/components/DataTable/data-table.tsx +678 -278
- package/src/components/DataTable/filter-operators.spec.md +269 -0
- package/src/components/DataTable/filter-operators.ts +1 -1
- package/src/components/DataTable/filter-tree.ts +194 -44
- package/src/components/DataTable/index.ts +8 -0
- package/src/components/DateGrid/date-grid.anatomy.stories.tsx +587 -0
- package/src/components/DateGrid/date-grid.principles.stories.tsx +344 -0
- package/src/components/DateGrid/date-grid.spec.md +46 -41
- package/src/components/DateGrid/date-grid.stories.tsx +204 -0
- package/src/components/DateGrid/date-grid.tsx +89 -28
- package/src/components/DateGrid/index.ts +5 -0
- package/src/components/DatePicker/date-picker.anatomy.stories.tsx +946 -0
- package/src/components/DatePicker/date-picker.principles.stories.tsx +205 -0
- package/src/components/DatePicker/date-picker.spec.md +61 -57
- package/src/components/DatePicker/date-picker.stories.tsx +364 -0
- package/src/components/DatePicker/date-picker.tsx +382 -198
- package/src/components/DatePicker/index.ts +5 -0
- package/src/components/DescriptionList/description-list.anatomy.stories.tsx +254 -0
- package/src/components/DescriptionList/description-list.principles.stories.tsx +309 -0
- package/src/components/DescriptionList/description-list.spec.md +35 -30
- package/src/components/DescriptionList/description-list.stories.tsx +113 -0
- package/src/components/DescriptionList/description-list.tsx +16 -14
- package/src/components/DescriptionList/index.ts +5 -0
- package/src/components/Dialog/dialog.anatomy.stories.tsx +485 -0
- package/src/components/Dialog/dialog.principles.stories.tsx +261 -0
- package/src/components/Dialog/dialog.spec.md +58 -32
- package/src/components/Dialog/dialog.stories.tsx +548 -0
- package/src/components/Dialog/dialog.tsx +81 -36
- package/src/components/Dialog/index.ts +5 -0
- package/src/components/DropdownMenu/dropdown-menu.anatomy.stories.tsx +971 -0
- package/src/components/DropdownMenu/dropdown-menu.principles.stories.tsx +341 -0
- package/src/components/DropdownMenu/dropdown-menu.spec.md +40 -22
- package/src/components/DropdownMenu/dropdown-menu.stories.tsx +276 -0
- package/src/components/DropdownMenu/dropdown-menu.tsx +153 -40
- package/src/components/DropdownMenu/index.ts +5 -0
- package/src/components/Empty/empty.anatomy.stories.tsx +275 -0
- package/src/components/Empty/empty.principles.stories.tsx +314 -0
- package/src/components/Empty/empty.spec.md +42 -42
- package/src/components/Empty/empty.stories.tsx +69 -0
- package/src/components/Empty/empty.tsx +23 -11
- package/src/components/Empty/index.ts +5 -0
- package/src/components/Field/field-context.ts +196 -4
- package/src/components/Field/field-controls.spec.md +161 -54
- package/src/components/Field/field-edit-keys.ts +66 -0
- package/src/components/Field/field-types.ts +71 -20
- package/src/components/Field/field-wrapper.tsx +139 -89
- package/src/components/Field/field.anatomy.stories.tsx +547 -0
- package/src/components/Field/field.principles.stories.tsx +255 -0
- package/src/components/Field/field.spec.md +76 -34
- package/src/components/Field/field.stories.tsx +751 -0
- package/src/components/Field/field.tsx +65 -12
- package/src/components/Field/form-validation.spec.md +60 -34
- package/src/components/Field/index.ts +6 -0
- package/src/components/Field/use-form-validation.ts +270 -0
- package/src/components/FieldControlGroup/field-control-group.anatomy.stories.tsx +119 -0
- package/src/components/FieldControlGroup/field-control-group.principles.stories.tsx +121 -0
- package/src/components/FieldControlGroup/field-control-group.spec.md +41 -19
- package/src/components/FieldControlGroup/field-control-group.stories.tsx +162 -0
- package/src/components/FieldControlGroup/field-control-group.tsx +13 -15
- package/src/components/FieldControlGroup/index.ts +5 -0
- package/src/components/FileItem/file-item.anatomy.stories.tsx +346 -0
- package/src/components/FileItem/file-item.principles.stories.tsx +245 -0
- package/src/components/FileItem/file-item.spec.md +133 -104
- package/src/components/FileItem/file-item.stories.tsx +289 -0
- package/src/components/FileItem/file-item.tsx +85 -39
- package/src/components/FileItem/index.ts +5 -0
- package/src/components/FileUpload/file-upload.anatomy.stories.tsx +446 -0
- package/src/components/FileUpload/file-upload.principles.stories.tsx +312 -0
- package/src/components/FileUpload/file-upload.spec.md +66 -24
- package/src/components/FileUpload/file-upload.stories.tsx +219 -0
- package/src/components/FileUpload/file-upload.tsx +138 -43
- package/src/components/FileUpload/index.ts +5 -0
- package/src/components/FileViewer/can-render-image.ts +15 -0
- package/src/components/FileViewer/file-viewer.anatomy.stories.tsx +1130 -0
- package/src/components/FileViewer/file-viewer.principles.stories.tsx +636 -0
- package/src/components/FileViewer/file-viewer.spec.md +70 -58
- package/src/components/FileViewer/file-viewer.stories.tsx +417 -0
- package/src/components/FileViewer/file-viewer.tsx +157 -72
- package/src/components/FileViewer/image-renderer.tsx +38 -15
- package/src/components/FileViewer/index.ts +5 -0
- package/src/components/HoverCard/hover-card.anatomy.stories.tsx +151 -0
- package/src/components/HoverCard/hover-card.principles.stories.tsx +211 -0
- package/src/components/HoverCard/hover-card.spec.md +38 -28
- package/src/components/HoverCard/hover-card.stories.tsx +304 -0
- package/src/components/HoverCard/hover-card.tsx +23 -6
- package/src/components/HoverCard/index.ts +5 -0
- package/src/components/InlineEdit/index.ts +5 -0
- package/src/components/InlineEdit/inline-edit.anatomy.stories.tsx +250 -0
- package/src/components/InlineEdit/inline-edit.principles.stories.tsx +142 -0
- package/src/components/InlineEdit/inline-edit.spec.md +186 -0
- package/src/components/InlineEdit/inline-edit.stories.tsx +261 -0
- package/src/components/InlineEdit/inline-edit.tsx +455 -0
- package/src/components/Input/index.ts +5 -0
- package/src/components/Input/input.anatomy.stories.tsx +780 -0
- package/src/components/Input/input.principles.stories.tsx +260 -0
- package/src/components/Input/input.spec.md +34 -26
- package/src/components/Input/input.stories.tsx +150 -0
- package/src/components/Input/input.tsx +102 -45
- package/src/components/LinkInput/index.ts +5 -0
- package/src/components/LinkInput/link-input.anatomy.stories.tsx +748 -0
- package/src/components/LinkInput/link-input.principles.stories.tsx +182 -0
- package/src/components/LinkInput/link-input.spec.md +25 -7
- package/src/components/LinkInput/link-input.stories.tsx +133 -0
- package/src/components/LinkInput/link-input.tsx +89 -66
- package/src/components/Menu/index.ts +5 -0
- package/src/components/Menu/menu-item.anatomy.stories.tsx +780 -0
- package/src/components/Menu/menu-item.principles.stories.tsx +81 -0
- package/src/components/Menu/menu-item.spec.md +55 -32
- package/src/components/Menu/menu-item.stories.tsx +242 -0
- package/src/components/Menu/menu-item.tsx +71 -12
- package/src/components/Notice/index.ts +5 -0
- package/src/components/Notice/notice.anatomy.stories.tsx +614 -0
- package/src/components/Notice/notice.principles.stories.tsx +102 -0
- package/src/components/Notice/notice.spec.md +39 -18
- package/src/components/Notice/notice.stories.tsx +257 -0
- package/src/components/Notice/notice.tsx +62 -16
- package/src/components/NumberInput/index.ts +5 -0
- package/src/components/NumberInput/number-input.anatomy.stories.tsx +822 -0
- package/src/components/NumberInput/number-input.principles.stories.tsx +206 -0
- package/src/components/NumberInput/number-input.spec.md +35 -16
- package/src/components/NumberInput/number-input.stories.tsx +167 -0
- package/src/components/NumberInput/number-input.tsx +65 -31
- package/src/components/OverflowIndicator/index.ts +5 -0
- package/src/components/OverflowIndicator/overflow-indicator.anatomy.stories.tsx +550 -0
- package/src/components/OverflowIndicator/overflow-indicator.principles.stories.tsx +76 -0
- package/src/components/OverflowIndicator/overflow-indicator.spec.md +36 -26
- package/src/components/OverflowIndicator/overflow-indicator.stories.tsx +222 -0
- package/src/components/OverflowIndicator/overflow-indicator.tsx +22 -7
- package/src/components/Pagination/index.ts +5 -0
- package/src/components/Pagination/pagination.anatomy.stories.tsx +144 -0
- package/src/components/Pagination/pagination.principles.stories.tsx +81 -0
- package/src/components/Pagination/pagination.spec.md +150 -0
- package/src/components/Pagination/pagination.stories.tsx +97 -0
- package/src/components/Pagination/pagination.tsx +263 -0
- package/src/components/PeoplePicker/avatar-stack-overflow.ts +1 -1
- package/src/components/PeoplePicker/index.ts +5 -0
- package/src/components/PeoplePicker/people-picker-helpers.ts +5 -5
- package/src/components/PeoplePicker/people-picker.anatomy.stories.tsx +437 -0
- package/src/components/PeoplePicker/people-picker.principles.stories.tsx +196 -0
- package/src/components/PeoplePicker/people-picker.spec.md +97 -40
- package/src/components/PeoplePicker/people-picker.stories.tsx +245 -0
- package/src/components/PeoplePicker/people-picker.tsx +225 -108
- package/src/components/PeoplePicker/person-display.tsx +83 -47
- package/src/components/Popover/index.ts +5 -0
- package/src/components/Popover/popover.anatomy.stories.tsx +282 -0
- package/src/components/Popover/popover.principles.stories.tsx +316 -0
- package/src/components/Popover/popover.spec.md +41 -31
- package/src/components/Popover/popover.stories.tsx +120 -0
- package/src/components/Popover/popover.tsx +106 -47
- package/src/components/ProfileCard/index.ts +5 -0
- package/src/components/ProfileCard/profile-card.anatomy.stories.tsx +493 -0
- package/src/components/ProfileCard/profile-card.principles.stories.tsx +225 -0
- package/src/components/ProfileCard/profile-card.spec.md +189 -0
- package/src/components/ProfileCard/profile-card.stories.tsx +57 -0
- package/src/components/{NameCard/name-card.tsx → ProfileCard/profile-card.tsx} +66 -39
- package/src/components/ProgressBar/index.ts +5 -0
- package/src/components/ProgressBar/progress-bar.anatomy.stories.tsx +441 -0
- package/src/components/ProgressBar/progress-bar.principles.stories.tsx +326 -0
- package/src/components/ProgressBar/progress-bar.spec.md +25 -21
- package/src/components/ProgressBar/progress-bar.stories.tsx +133 -0
- package/src/components/ProgressBar/progress-bar.tsx +6 -23
- package/src/components/README.md +5 -4
- package/src/components/RadioGroup/index.ts +5 -0
- package/src/components/RadioGroup/radio-group.anatomy.stories.tsx +672 -0
- package/src/components/RadioGroup/radio-group.principles.stories.tsx +163 -0
- package/src/components/RadioGroup/radio-group.spec.md +15 -9
- package/src/components/RadioGroup/radio-group.stories.tsx +204 -0
- package/src/components/RadioGroup/radio-group.tsx +219 -67
- package/src/components/Rating/index.ts +5 -0
- package/src/components/Rating/rating.anatomy.stories.tsx +498 -0
- package/src/components/Rating/rating.principles.stories.tsx +296 -0
- package/src/components/Rating/rating.spec.md +41 -29
- package/src/components/Rating/rating.stories.tsx +119 -0
- package/src/components/Rating/rating.tsx +37 -18
- package/src/components/ScrollArea/index.ts +5 -0
- package/src/components/ScrollArea/scroll-area.anatomy.stories.tsx +451 -0
- package/src/components/ScrollArea/scroll-area.principles.stories.tsx +331 -0
- package/src/components/ScrollArea/scroll-area.spec.md +24 -22
- package/src/components/ScrollArea/scroll-area.stories.tsx +247 -0
- package/src/components/ScrollArea/scroll-area.tsx +24 -7
- package/src/components/SegmentedControl/index.ts +5 -0
- package/src/components/SegmentedControl/segmented-control.anatomy.stories.tsx +295 -0
- package/src/components/SegmentedControl/segmented-control.principles.stories.tsx +284 -0
- package/src/components/SegmentedControl/segmented-control.spec.md +38 -39
- package/src/components/SegmentedControl/segmented-control.stories.tsx +37 -0
- package/src/components/SegmentedControl/segmented-control.tsx +44 -24
- package/src/components/Select/index.ts +5 -0
- package/src/components/Select/select.anatomy.stories.tsx +834 -0
- package/src/components/Select/select.principles.stories.tsx +312 -0
- package/src/components/Select/select.spec.md +99 -39
- package/src/components/Select/select.stories.tsx +273 -0
- package/src/components/Select/select.tsx +389 -97
- package/src/components/SelectMenu/index.ts +5 -0
- package/src/components/SelectMenu/select-menu.anatomy.stories.tsx +830 -0
- package/src/components/SelectMenu/select-menu.principles.stories.tsx +106 -0
- package/src/components/SelectMenu/select-menu.spec.md +51 -32
- package/src/components/SelectMenu/select-menu.stories.tsx +143 -0
- package/src/components/SelectMenu/select-menu.tsx +276 -33
- package/src/components/SelectionControl/boolean-value.tsx +39 -0
- package/src/components/SelectionControl/index.ts +6 -0
- package/src/components/SelectionControl/selection-item.anatomy.stories.tsx +580 -0
- package/src/components/SelectionControl/selection-item.principles.stories.tsx +77 -0
- package/src/components/SelectionControl/selection-item.spec.md +30 -16
- package/src/components/SelectionControl/selection-item.stories.tsx +137 -0
- package/src/components/SelectionControl/selection-item.tsx +8 -2
- package/src/components/Separator/index.ts +5 -0
- package/src/components/Separator/separator.anatomy.stories.tsx +125 -0
- package/src/components/Separator/separator.principles.stories.tsx +141 -0
- package/src/components/Separator/separator.spec.md +15 -9
- package/src/components/Separator/separator.stories.tsx +106 -0
- package/src/components/Separator/separator.tsx +2 -2
- package/src/components/Sheet/index.ts +5 -0
- package/src/components/Sheet/sheet.anatomy.stories.tsx +269 -0
- package/src/components/Sheet/sheet.principles.stories.tsx +353 -0
- package/src/components/Sheet/sheet.spec.md +16 -17
- package/src/components/Sheet/sheet.stories.tsx +172 -0
- package/src/components/Sheet/sheet.tsx +24 -14
- package/src/components/Sidebar/index.ts +5 -0
- package/src/components/Sidebar/sidebar.anatomy.stories.tsx +776 -0
- package/src/components/Sidebar/sidebar.principles.stories.tsx +507 -0
- package/src/components/Sidebar/sidebar.spec.md +65 -62
- package/src/components/Sidebar/sidebar.stories.tsx +535 -0
- package/src/components/Sidebar/sidebar.tsx +134 -57
- package/src/components/Skeleton/index.ts +5 -0
- package/src/components/Skeleton/skeleton.anatomy.stories.tsx +145 -0
- package/src/components/Skeleton/skeleton.principles.stories.tsx +234 -0
- package/src/components/Skeleton/skeleton.spec.md +15 -14
- package/src/components/Skeleton/skeleton.stories.tsx +134 -0
- package/src/components/Skeleton/skeleton.tsx +2 -2
- package/src/components/Slider/index.ts +5 -0
- package/src/components/Slider/slider.anatomy.stories.tsx +237 -0
- package/src/components/Slider/slider.principles.stories.tsx +250 -0
- package/src/components/Slider/slider.spec.md +66 -118
- package/src/components/Slider/slider.stories.tsx +115 -0
- package/src/components/Slider/slider.tsx +83 -26
- package/src/components/Steps/index.ts +5 -0
- package/src/components/Steps/steps.anatomy.stories.tsx +448 -0
- package/src/components/Steps/steps.principles.stories.tsx +300 -0
- package/src/components/Steps/steps.spec.md +91 -74
- package/src/components/Steps/steps.stories.tsx +306 -0
- package/src/components/Steps/steps.tsx +99 -37
- package/src/components/Switch/index.ts +5 -0
- package/src/components/Switch/switch.anatomy.stories.tsx +227 -0
- package/src/components/Switch/switch.principles.stories.tsx +177 -0
- package/src/components/Switch/switch.spec.md +53 -24
- package/src/components/Switch/switch.stories.tsx +95 -0
- package/src/components/Switch/switch.tsx +176 -43
- package/src/components/Tabs/index.ts +5 -0
- package/src/components/Tabs/tabs-inline-action-geometry.ts +94 -0
- package/src/components/Tabs/tabs.anatomy.stories.tsx +424 -0
- package/src/components/Tabs/tabs.principles.stories.tsx +291 -0
- package/src/components/Tabs/tabs.spec.md +58 -69
- package/src/components/Tabs/tabs.stories.tsx +257 -0
- package/src/components/Tabs/tabs.tsx +262 -82
- package/src/components/Tag/index.ts +5 -0
- package/src/components/Tag/tag.anatomy.stories.tsx +667 -0
- package/src/components/Tag/tag.principles.stories.tsx +270 -0
- package/src/components/Tag/tag.spec.md +112 -100
- package/src/components/Tag/tag.stories.tsx +88 -0
- package/src/components/Tag/tag.tsx +120 -80
- package/src/components/Textarea/index.ts +5 -0
- package/src/components/Textarea/textarea.anatomy.stories.tsx +310 -0
- package/src/components/Textarea/textarea.principles.stories.tsx +192 -0
- package/src/components/Textarea/textarea.spec.md +35 -16
- package/src/components/Textarea/textarea.stories.tsx +57 -0
- package/src/components/Textarea/textarea.tsx +154 -83
- package/src/components/TimePicker/index.ts +5 -0
- package/src/components/TimePicker/time-columns.tsx +15 -3
- package/src/components/TimePicker/time-picker.anatomy.stories.tsx +283 -0
- package/src/components/TimePicker/time-picker.principles.stories.tsx +133 -0
- package/src/components/TimePicker/time-picker.spec.md +58 -52
- package/src/components/TimePicker/time-picker.stories.tsx +193 -0
- package/src/components/TimePicker/time-picker.tsx +119 -60
- package/src/components/Toast/index.ts +5 -0
- package/src/components/Toast/toast.anatomy.stories.tsx +328 -0
- package/src/components/Toast/toast.principles.stories.tsx +216 -0
- package/src/components/Toast/toast.spec.md +26 -16
- package/src/components/Toast/toast.stories.tsx +241 -0
- package/src/components/Toast/toast.tsx +101 -23
- package/src/components/Tooltip/index.ts +5 -0
- package/src/components/Tooltip/tooltip.anatomy.stories.tsx +422 -0
- package/src/components/Tooltip/tooltip.principles.stories.tsx +204 -0
- package/src/components/Tooltip/tooltip.spec.md +37 -23
- package/src/components/Tooltip/tooltip.stories.tsx +82 -0
- package/src/components/Tooltip/tooltip.tsx +58 -12
- package/src/components/TreeView/index.ts +5 -0
- package/src/components/TreeView/tree-view.anatomy.stories.tsx +436 -0
- package/src/components/TreeView/tree-view.principles.stories.tsx +223 -0
- package/src/components/TreeView/tree-view.spec.md +103 -54
- package/src/components/TreeView/tree-view.stories.tsx +365 -0
- package/src/components/TreeView/tree-view.tsx +501 -58
- package/src/hooks/use-controllable.ts +7 -2
- package/src/hooks/use-is-touch-device.ts +8 -1
- package/src/hooks/use-overflow-items.ts +10 -6
- package/src/hooks/use-truncated.ts +111 -0
- package/src/index.ts +651 -71
- package/src/lib/drag-visual.ts +2 -2
- package/src/lib/utils.ts +21 -1
- package/src/patterns/README.md +20 -16
- package/src/patterns/action-bar/action-bar.spec.md +63 -45
- package/src/patterns/action-bar/action-bar.stories.tsx +619 -0
- package/src/patterns/element-anatomy/element-anatomy.spec.md +17 -13
- package/src/patterns/element-anatomy/index.ts +6 -0
- package/src/patterns/element-anatomy/inline-action.spec.md +33 -22
- package/src/patterns/element-anatomy/item-anatomy.spec.md +108 -79
- package/src/patterns/element-anatomy/item-anatomy.stories.tsx +1648 -0
- package/src/patterns/element-anatomy/item-anatomy.tsx +147 -56
- package/src/patterns/element-anatomy/truncated-text.spec.md +68 -0
- package/src/patterns/element-anatomy/truncated-text.tsx +61 -0
- package/src/patterns/header-canonical/chrome-header.tsx +26 -6
- package/src/patterns/header-canonical/header-canonical.css +3 -4
- package/src/patterns/header-canonical/header-canonical.spec.md +96 -42
- package/src/patterns/header-canonical/header-canonical.stories.tsx +257 -0
- package/src/patterns/header-canonical/index.ts +5 -0
- package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +36 -15
- package/src/patterns/horizontal-overflow/horizontal-overflow.stories.tsx +139 -0
- package/src/patterns/horizontal-overflow/horizontal-overflow.tsx +1 -1
- package/src/patterns/horizontal-overflow/index.ts +5 -0
- package/src/patterns/overlay-surface/index.ts +5 -0
- package/src/patterns/overlay-surface/overlay-surface.spec.md +94 -58
- package/src/patterns/overlay-surface/overlay-surface.stories.tsx +132 -0
- package/src/patterns/overlay-surface/overlay-surface.tsx +37 -18
- package/src/patterns/resize-handle/index.ts +5 -0
- package/src/patterns/resize-handle/resize-handle.spec.md +22 -13
- package/src/patterns/resize-handle/resize-handle.stories.tsx +73 -0
- package/src/patterns/resize-handle/resize-handle.tsx +13 -18
- package/src/story-governance/category-matrix.json +132 -0
- package/src/story-governance/category-matrix.ts +55 -0
- package/src/styles/base.css +99 -0
- package/src/styles/tokens.css +14 -0
- package/src/tokens/README.md +10 -5
- package/src/tokens/categorical-color.ts +164 -0
- package/src/tokens/color/color.spec.md +95 -72
- package/src/tokens/color/color.stories.tsx +403 -0
- package/src/tokens/color/primitives.css +23 -7
- package/src/tokens/color/semantic.css +75 -21
- package/src/tokens/density/density.spec.md +33 -30
- package/src/tokens/density/density.stories.tsx +254 -0
- package/src/tokens/elevation/elevation.spec.md +11 -14
- package/src/tokens/elevation/elevation.stories.tsx +99 -0
- package/src/tokens/layoutSpace/layoutSpace.css +1 -1
- package/src/tokens/layoutSpace/layoutSpace.spec.md +44 -31
- package/src/tokens/layoutSpace/layoutSpace.stories.tsx +76 -0
- package/src/tokens/motion/motion.css +49 -20
- package/src/tokens/motion/motion.spec.md +45 -21
- package/src/tokens/motion/motion.stories.tsx +196 -0
- package/src/tokens/motion/motion.ts +8 -7
- package/src/tokens/motion/overlay-motion.ts +26 -0
- package/src/tokens/opacity/opacity.spec.md +15 -20
- package/src/tokens/opacity/opacity.stories.tsx +66 -0
- package/src/tokens/orphan-tokens.spec.md +22 -11
- package/src/tokens/radius/radius.spec.md +14 -11
- package/src/tokens/radius/radius.stories.tsx +87 -0
- package/src/tokens/token-system.spec.md +241 -0
- package/src/tokens/typography/typography.css +1 -1
- package/src/tokens/typography/typography.spec.md +12 -8
- package/src/tokens/typography/typography.stories.tsx +134 -0
- package/src/tokens/uiSize/icon-size.ts +3 -4
- package/src/tokens/uiSize/uiSize.css +60 -1
- package/src/tokens/uiSize/uiSize.spec.md +61 -32
- package/src/tokens/uiSize/uiSize.stories.tsx +106 -0
- package/src/tokens/utility-registry.json +426 -0
- package/src/tokens/utility-registry.schema.json +409 -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/components/NameCard/name-card.d.ts.map +0 -1
- package/dist/components/NameCard/name-card.js.map +0 -1
- package/ds-canonical/commands/gov-status.md +0 -79
- package/ds-canonical/hooks/check_app_shell_primary_header_consistency.sh +0 -68
- package/ds-canonical/hooks/check_chrome_header_handcraft.sh +0 -70
- package/ds-canonical/hooks/check_header_with_tabs_border.sh +0 -87
- package/ds-canonical/hooks/check_tab_lg_chrome_header_equal.sh +0 -66
- package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +0 -15
- package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +0 -187
- package/ds-canonical/references/audit-coverage-vs-24-checklist.md +0 -74
- package/ds-canonical/skills/design-system-audit/references/spec-template.md +0 -66
- package/src/components/NameCard/name-card.spec.md +0 -171
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-panel.js","sources":["../../../src/components/AgentPanel/agent-panel.tsx"],"sourcesContent":["// code-quality-allow: file-size foundational composite family(9 元件一家族檔,同 Sidebar 前例)\n/**\n * AgentPanel 家族 — 智慧代理面板(9 元件;附屬資產 AgentLogo/AgentFab 另檔)。\n *\n * ── 消費的 SSOT ──\n * - 容器:右側欄=bg-surface + border-l border-divider(app-shell aside 前例);\n * 寬 --agent-panel-width(uiSize.css;可拖拉 360–640 且 ≤50vw,把手=ResizeHandle pattern,\n * 鍵盤等價=WAI-ARIA separator 同 DataTable 欄寬慣例);開合 --motion-duration-surface。\n * - 標題列:ChromeHeader(header-canonical;chrome 內控件一律 sm);品牌區=gap-2+24 標誌;\n * 標題+chevron=單一複合觸發鈕(Button text sm + endIcon,Polaris disclosure / Combobox 觸發器同構),\n * chevron=裝飾性指示(inline-action.spec.md Q1);ButtonDivider 於 gap-2 cluster(action-bar 規則 3)。\n * **固定構件恆渲染**:+ / × / 標題觸發鈕不隨 callback 有無消失(2026-09-02 根因修正)。\n * - 歷史浮層:Popover+Command+MenuItem,列組裝逐字照 select-menu.tsx 原型(外層 CommandItem 單一\n * 互動 owner、內層 MenuItem role=presentation 透明、群組 heading、CommandSeparator、Empty);\n * 行內動作=ItemSuffix hoverReveal + ItemInlineAction(懸停/鍵盤 focus-visible 浮出);思考列=CircularProgress 16。\n * - 訊息:氣泡 bg-secondary/rounded-md/8/12;附件=Chip assist 分支(chip.spec.md),相互 4;\n * 輪距 40=8+24(Button text xs)+8。\n * - 思考塊:Radix Collapsible+animate-accordion(base.css;Sidebar 同法);chevron=accordion 慣例\n * (裝飾指示、色同 Select 觸發器 chevron);微光僅標題+最新行(agent-panel.css);完成步驟 fg-secondary。\n * - 輸入盒:欄位家族內距(--field-control-py-md/--field-px/text-body;32 等高鐵律);\n * 附件列=Tag md 單列 + OverflowIndicator(+N,useOverflowIndices 量測);送出/停止=Button primary xs。\n * - 決策卡:SurfaceHeader(compact)+SurfaceFooter(overlay-surface);選項=灰底卡(--secondary、\n * rounded-md、內距 8/12、整卡可點)包 RadioGroup md(Popover all-sm 律之拍板豁免;footer 鈕 sm 守律);\n * 一題一問步進(Skip / 下一題 / 送出);N>1 才顯示「n / N」小標;淡入+下滑 --motion-duration-overlay。\n * - 改名/刪除:Dialog(header md+X;body Field+Input;footer md 鈕;刪除=primary+danger;\n * form-validation:儲存 dirty 規則、空名 blur 顯錯;Esc=Dialog 取消)。\n * - 空狀態:Empty icon slot 接 AgentLogo 招喚態。\n * 全表:agent-panel.spec.md。\n */\nimport * as React from 'react'\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\nimport {\n createLucideIcon,\n ArrowUp,\n ChevronDown,\n Copy,\n MessageSquare,\n Pencil,\n Plus,\n ThumbsDown,\n ThumbsUp,\n Trash2,\n X as XIcon,\n} from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\n/**\n * 停止實心正方:12/24 grid(= Material Symbols `stop` 480/960)→ 8px @ Button icon 16。\n * lucide Square 填滿後 20/24 = 13.3px,比 ArrowUp/Plus(14/24 線稿)視覺偏重,故自繪\n * (2026-09-02 user 抓「太巨大」;rx 1.5 ≈ Carbon 2/20、lucide 2/18 圓角比例)。\n */\nconst StopFilled = createLucideIcon('StopFilled', [\n ['rect', { x: '6', y: '6', width: '12', height: '12', rx: '1.5', fill: 'currentColor', stroke: 'none', key: 'stop' }],\n])\nimport { Button } from '@/design-system/components/Button/button'\nimport { ButtonDivider } from '@/design-system/components/Button/button-group'\nimport { ChromeHeader } from '@/design-system/patterns/header-canonical/chrome-header'\nimport {\n SurfaceHeader,\n SurfaceFooter,\n COMPACT_HEADER_SLOT,\n} from '@/design-system/patterns/overlay-surface/overlay-surface'\nimport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n} from '@/design-system/components/Popover/popover'\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from '@/design-system/components/Command/command'\nimport { MenuItem } from '@/design-system/components/Menu/menu-item'\nimport {\n ItemInlineAction,\n ItemSuffix,\n} from '@/design-system/patterns/element-anatomy/item-anatomy'\nimport { ResizeHandle } from '@/design-system/patterns/resize-handle/resize-handle'\nimport { useOverflowIndices } from '@/design-system/patterns/horizontal-overflow/horizontal-overflow'\nimport { OverflowIndicator } from '@/design-system/components/OverflowIndicator/overflow-indicator'\nimport { CircularProgress } from '@/design-system/components/CircularProgress/circular-progress'\nimport { RadioGroup, RadioGroupItem } from '@/design-system/components/RadioGroup/radio-group'\nimport { Checkbox } from '@/design-system/components/Checkbox/checkbox'\nimport { CheckboxGroup } from '@/design-system/components/Checkbox/checkbox-group'\nimport { Chip } from '@/design-system/components/Chip/chip'\nimport { Tag } from '@/design-system/components/Tag/tag'\nimport { Input } from '@/design-system/components/Input/input'\nimport { Empty } from '@/design-system/components/Empty/empty'\nimport { Field, FieldLabel, FieldError } from '@/design-system/components/Field/field'\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '@/design-system/components/Dialog/dialog'\nimport { ScrollArea } from '@/design-system/components/ScrollArea/scroll-area'\nimport { AgentLogo, type AgentLogoState } from './agent-logo'\nimport './agent-panel.css'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 1. AgentPanel(容器;可拖拉寬度)\n * ──────────────────────────────────────────────────────────────────────── */\n\n/** 拖拉寬度界限(spec「AgentPanel」節;token 鏡像:--agent-panel-width-min / -max)。 */\nconst PANEL_WIDTH_DEFAULT = 400\nconst PANEL_WIDTH_MIN = 360\nconst PANEL_WIDTH_MAX = 640\nconst PANEL_RESIZE_KEY_STEP = 16\n\nfunction clampPanelWidth(width: number) {\n const viewportCap = typeof window === 'undefined' ? PANEL_WIDTH_MAX : Math.floor(window.innerWidth / 2)\n return Math.min(Math.max(width, PANEL_WIDTH_MIN), Math.min(PANEL_WIDTH_MAX, Math.max(viewportCap, PANEL_WIDTH_MIN)))\n}\n\nexport interface AgentPanelProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 面板開合;false 時不渲染(關閉後由 AgentFab 承接入口,兩者互斥)。 */\n open?: boolean\n /** 受控寬度(px);省略=非受控,起於 defaultWidth。 */\n width?: number\n /** 非受控初始寬;預設 --agent-panel-width 400。 */\n defaultWidth?: number\n /** 拖拉/鍵盤調整結束時回報(DS 不持久化,產品自存)。 */\n onWidthChange?: (width: number) => void\n /** 可拖拉(左緣把手);預設 true。Sheet 承載時同樣可拖。 */\n resizable?: boolean\n}\n\nconst AgentPanel = React.forwardRef<HTMLDivElement, AgentPanelProps>(\n (\n {\n open = true,\n width,\n defaultWidth = PANEL_WIDTH_DEFAULT,\n onWidthChange,\n resizable = true,\n className,\n style,\n children,\n ...props\n },\n ref,\n ) => {\n const [uncontrolledWidth, setUncontrolledWidth] = React.useState(() => clampPanelWidth(defaultWidth))\n const resolvedWidth = clampPanelWidth(width ?? uncontrolledWidth)\n const dragRef = React.useRef<{ startX: number; startWidth: number } | null>(null)\n const [dragging, setDragging] = React.useState(false)\n\n const applyWidth = React.useCallback(\n (next: number, commit: boolean) => {\n const clamped = clampPanelWidth(next)\n if (width === undefined) setUncontrolledWidth(clamped)\n if (commit) onWidthChange?.(clamped)\n },\n [width, onWidthChange],\n )\n\n const onHandlePointerDown = (e: React.PointerEvent<HTMLSpanElement>) => {\n e.preventDefault()\n dragRef.current = { startX: e.clientX, startWidth: resolvedWidth }\n setDragging(true)\n const onMove = (ev: PointerEvent) => {\n const drag = dragRef.current\n if (!drag) return\n // 把手在左緣:往左拖=變寬。\n applyWidth(drag.startWidth + (drag.startX - ev.clientX), false)\n }\n const onUp = (ev: PointerEvent) => {\n const drag = dragRef.current\n dragRef.current = null\n setDragging(false)\n window.removeEventListener('pointermove', onMove)\n window.removeEventListener('pointerup', onUp)\n if (drag) applyWidth(drag.startWidth + (drag.startX - ev.clientX), true)\n }\n window.addEventListener('pointermove', onMove)\n window.addEventListener('pointerup', onUp)\n }\n\n if (!open) return null\n return (\n <div\n ref={ref}\n role=\"complementary\"\n aria-label=\"智慧代理\" // i18n-allow: DS 預設,props 展開在後可覆寫\n className={cn(\n 'relative flex h-full min-h-0 shrink-0 flex-col overflow-hidden',\n 'border-l border-divider bg-surface',\n 'animate-in fade-in-0 slide-in-from-right-4 duration-[var(--motion-duration-surface)] motion-reduce:animate-none',\n className,\n )}\n style={{ width: resolvedWidth, ...style }}\n {...props}\n >\n {resizable && (\n // 視覺/滑鼠=ResizeHandle(固定 aria-hidden);鍵盤等價=WAI-ARIA window-splitter(DataTable 欄寬同慣例)。\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"調整面板寬度\" // i18n-allow: DS 預設文案\n aria-valuenow={resolvedWidth}\n aria-valuemin={PANEL_WIDTH_MIN}\n aria-valuemax={PANEL_WIDTH_MAX}\n aria-valuetext={`${resolvedWidth}px`}\n tabIndex={0}\n onKeyDown={(e) => {\n let next: number | null = null\n if (e.key === 'ArrowLeft') next = resolvedWidth + PANEL_RESIZE_KEY_STEP\n else if (e.key === 'ArrowRight') next = resolvedWidth - PANEL_RESIZE_KEY_STEP\n else if (e.key === 'Home') next = PANEL_WIDTH_MIN\n else if (e.key === 'End') next = PANEL_WIDTH_MAX\n if (next == null) return\n e.preventDefault()\n applyWidth(next, true)\n }}\n className=\"absolute inset-y-0 left-0 z-10 w-0 focus-visible:outline-none\"\n >\n <ResizeHandle\n direction=\"horizontal\"\n position=\"start\"\n isResizing={dragging}\n onPointerDown={onHandlePointerDown}\n />\n </span>\n )}\n {children}\n </div>\n )\n },\n)\nAgentPanel.displayName = 'AgentPanel'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 2. AgentPanelHeader(標題列)+ 歷史浮層 / 改名 / 刪除\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentConversationSummary {\n id: string\n title: string\n /** 分組標題(如「今天」「過去 7 天」);同組相鄰排列。 */\n group?: string\n /** 代理仍在回覆:列首圖示原地換 CircularProgress 16,等寬等高不動版面。 */\n thinking?: boolean\n}\n\nexport interface AgentPanelHeaderProps\n extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** 目前對話標題(標題本身=歷史浮層觸發鈕)。 */\n title: string\n /** 歷史浮層搜尋 placeholder(i18n override)。 */\n historySearchPlaceholder?: string\n /** 歷史浮層無結果文案(i18n override)。 */\n historyEmptyText?: string\n /** 標誌狀態(代理思考中傳 \"think\")。 */\n logoState?: AgentLogoState\n /** 歷史對話清單;空清單=浮層顯示無結果(觸發鈕恆在)。 */\n conversations?: AgentConversationSummary[]\n /** 目前對話 id(歷史清單高亮)。 */\n activeConversationId?: string\n /** 目前對話尚無已送出訊息=本身就是新對話 → 「+ 新對話」停用。 */\n conversationEmpty?: boolean\n /** 歷史浮層初始開啟(展示/快照用;M15 OpenSnapshot)。 */\n defaultHistoryOpen?: boolean\n onSelectConversation?: (id: string) => void\n /** 改名確認(Dialog 流程由元件內建)。 */\n onRenameConversation?: (id: string, title: string) => void\n /**\n * 刪除確認(Dialog 流程由元件內建)。consumer 契約:刪的是目前對話 → 切到最近一則;\n * 全部刪光 → 面板回空狀態(spec「附:歷史浮層」)。\n */\n onDeleteConversation?: (id: string) => void\n /** 固定構件:+ 恆渲染,主流程無內建行為 → 必填。 */\n onNewConversation: () => void\n /** 固定構件:× 恆渲染,面板 open 是 consumer state → 必填。 */\n onClose: () => void\n}\n\n/** 歷史列(select-menu.tsx 原型):外層 CommandItem 單一互動 owner;內層 MenuItem 純視覺。 */\nfunction HistoryRow({\n conversation,\n selected,\n onSelect,\n onRename,\n onDelete,\n}: {\n conversation: AgentConversationSummary\n selected: boolean\n onSelect: () => void\n onRename: () => void\n onDelete: () => void\n}) {\n return (\n <CommandItem\n value={conversation.id}\n keywords={[conversation.title]}\n onSelect={onSelect}\n className={cn(\n 'group/menu-item p-0 rounded-none',\n // 選中 × 鍵盤游標疊加(select-menu.tsx 2026-08-11 拍板:滑鼠釘住、鍵盤反白深一階)。\n selected && 'bg-neutral-selected data-[selected=true]:bg-neutral-selected data-[selected=true]:not-hover:bg-neutral-selected-focus',\n )}\n >\n <MenuItem\n role=\"presentation\"\n selected={selected}\n className=\"!bg-transparent hover:!bg-transparent\"\n startContent={\n conversation.thinking ? (\n <CircularProgress size={16} aria-label=\"回覆中\" /> // i18n-allow: DS 預設\n ) : (\n <MessageSquare size={16} aria-hidden className=\"text-fg-muted\" />\n )\n }\n endContent={\n // 行內動作恆在 DOM(鍵盤 Tab 可達);懸停/focus-visible 淡入=ItemSuffix hoverReveal SSOT。\n <ItemSuffix hoverReveal hoverGroup=\"menu-item\">\n <ItemInlineAction\n action={{\n icon: Pencil,\n label: '改名', // i18n-allow: DS 預設文案(Dialog「關閉」同前例)\n onClick: (e) => {\n e?.stopPropagation()\n onRename()\n },\n }}\n />\n <ItemInlineAction\n action={{\n icon: Trash2,\n label: '刪除', // i18n-allow: DS 預設文案(Dialog「關閉」同前例)\n onClick: (e) => {\n e?.stopPropagation()\n onDelete()\n },\n }}\n />\n </ItemSuffix>\n }\n >\n {conversation.title}\n </MenuItem>\n </CommandItem>\n )\n}\n\nconst AgentPanelHeader = React.forwardRef<HTMLElement, AgentPanelHeaderProps>(\n (\n {\n title,\n logoState = 'still',\n historySearchPlaceholder = '搜尋對話', // i18n-allow: DS 預設文案,prop 可覆寫\n historyEmptyText = '沒有符合的對話', // i18n-allow: DS 預設文案,prop 可覆寫\n conversations = [],\n activeConversationId,\n conversationEmpty = false,\n defaultHistoryOpen = false,\n onSelectConversation,\n onRenameConversation,\n onDeleteConversation,\n onNewConversation,\n onClose,\n className,\n ...props\n },\n ref,\n ) => {\n const [historyOpen, setHistoryOpen] = React.useState(defaultHistoryOpen)\n const [renameTarget, setRenameTarget] = React.useState<AgentConversationSummary | null>(null)\n const [deleteTarget, setDeleteTarget] = React.useState<AgentConversationSummary | null>(null)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n /** Dialog 關閉後焦點回歷史觸發鈕(Popover 已因焦點外移關閉;WCAG 2.4.3)。 */\n const returnFocus = () => triggerRef.current?.focus({ preventScroll: true })\n\n const groups = React.useMemo(() => {\n const order: string[] = []\n const byGroup = new Map<string, AgentConversationSummary[]>()\n for (const item of conversations) {\n const key = item.group ?? ''\n if (!byGroup.has(key)) {\n byGroup.set(key, [])\n order.push(key)\n }\n byGroup.get(key)!.push(item)\n }\n return order.map((key) => ({ label: key, items: byGroup.get(key)! }))\n }, [conversations])\n\n return (\n <ChromeHeader ref={ref} className={cn('bg-surface', className)} {...props}>\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n <AgentLogo state={logoState} size={24} />\n <Popover open={historyOpen} onOpenChange={setHistoryOpen}>\n <PopoverTrigger asChild>\n {/* 標題+chevron=單一複合觸發鈕;chevron 裝飾指示(aria-hidden 由 Button endIcon 處理)。 */}\n <Button\n ref={triggerRef}\n variant=\"text\"\n size=\"sm\"\n endIcon={ChevronDown}\n aria-haspopup=\"dialog\"\n aria-expanded={historyOpen}\n className=\"min-w-0 max-w-full px-1 text-body-lg font-medium\"\n >\n <span className=\"truncate\">{title}</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n aria-label=\"歷史對話\" // i18n-allow: DS 預設文案\n className=\"w-auto min-w-60 overflow-hidden p-0\"\n >\n <Command label=\"歷史對話\" className=\"[&_[cmdk-input-wrapper]]:py-1\">\n {/* 搜尋列 40 = 32 + 8(select-menu.tsx 搜尋列同高)。 */}\n <CommandInput\n placeholder={historySearchPlaceholder}\n aria-label={historySearchPlaceholder}\n className=\"h-8 py-0\"\n />\n <CommandList aria-label=\"對話\">\n <CommandEmpty className=\"flex items-center justify-center\">\n <Empty description={historyEmptyText} className=\"py-6\" />\n </CommandEmpty>\n {groups.map(({ label, items }, gi) => (\n <React.Fragment key={label || '(ungrouped)'}>\n {gi > 0 && <CommandSeparator />}\n <CommandGroup\n className=\"p-0 py-2 [&_[cmdk-group-heading]]:p-0\"\n heading={label ? <MenuItem header>{label}</MenuItem> : undefined}\n >\n {items.map((conversation) => (\n <HistoryRow\n key={conversation.id}\n conversation={conversation}\n selected={conversation.id === activeConversationId}\n onSelect={() => {\n onSelectConversation?.(conversation.id)\n setHistoryOpen(false)\n }}\n onRename={() => setRenameTarget(conversation)}\n onDelete={() => setDeleteTarget(conversation)}\n />\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"text\"\n size=\"sm\"\n iconOnly\n startIcon={Plus}\n aria-label=\"新對話\" // i18n-allow: DS 預設文案(Dialog「關閉」同前例)\n disabled={conversationEmpty}\n onClick={onNewConversation}\n />\n <ButtonDivider />\n <Button dismiss size=\"sm\" startIcon={XIcon} aria-label=\"關閉面板\" onClick={onClose} />\n </div>\n {renameTarget && (\n <AgentRenameDialog\n conversation={renameTarget}\n onOpenChange={(next) => {\n if (!next) {\n setRenameTarget(null)\n returnFocus()\n }\n }}\n onConfirm={(nextTitle) => {\n onRenameConversation?.(renameTarget.id, nextTitle)\n setRenameTarget(null)\n returnFocus()\n }}\n />\n )}\n {deleteTarget && (\n <Dialog\n open\n onOpenChange={(next) => {\n if (!next) {\n setDeleteTarget(null)\n returnFocus()\n }\n }}\n >\n <DialogContent>\n <DialogHeader>\n <DialogTitle>刪除對話</DialogTitle>\n </DialogHeader>\n <DialogBody>\n 確定刪除「{deleteTarget.title}」?此動作立即生效且不可復原。\n </DialogBody>\n <DialogFooter>\n <Button variant=\"tertiary\" onClick={() => { setDeleteTarget(null); returnFocus() }}>\n 取消\n </Button>\n <Button\n variant=\"primary\"\n danger\n onClick={() => {\n onDeleteConversation?.(deleteTarget.id)\n setDeleteTarget(null)\n returnFocus()\n }}\n >\n 刪除\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )}\n </ChromeHeader>\n )\n },\n)\nAgentPanelHeader.displayName = 'AgentPanelHeader'\n\n/** 改名 Dialog:Field+Input 預填全選;儲存=更新類 dirty 規則;空名 blur 顯錯;Esc=Dialog 取消。 */\nfunction AgentRenameDialog({\n conversation,\n onOpenChange,\n onConfirm,\n}: {\n conversation: AgentConversationSummary\n onOpenChange: (open: boolean) => void\n onConfirm: (title: string) => void\n}) {\n const [value, setValue] = React.useState(conversation.title)\n const [touched, setTouched] = React.useState(false)\n const trimmed = value.trim()\n const dirty = trimmed !== conversation.title\n const empty = trimmed.length === 0\n const showError = touched && empty\n const commit = () => {\n setTouched(true)\n if (empty || !dirty) return\n onConfirm(trimmed)\n }\n return (\n <Dialog open onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>改名對話</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <Field required invalid={showError}>\n <FieldLabel>名稱</FieldLabel>\n <Input\n value={value}\n error={showError}\n onChange={(e) => setValue(e.target.value)}\n onFocus={(e) => e.currentTarget.select()}\n onBlur={() => setTouched(true)}\n onKeyDown={(e) => {\n // form-validation:Enter=等同 blur(觸發驗證並提交);Esc 由 Dialog 承接=取消。\n if (e.key === 'Enter') {\n e.preventDefault()\n commit()\n }\n }}\n />\n {showError && <FieldError>名稱不可空白</FieldError>}\n </Field>\n </DialogBody>\n <DialogFooter>\n <Button variant=\"tertiary\" onClick={() => onOpenChange(false)}>\n 取消\n </Button>\n <Button variant=\"primary\" disabled={!dirty} onClick={commit}>\n 儲存\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 3. AgentConversation(訊息卷軸區)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport type AgentConversationProps = React.HTMLAttributes<HTMLDivElement>\n\nconst AgentConversation = React.forwardRef<HTMLDivElement, AgentConversationProps>(\n ({ className, children, ...props }, ref) => (\n // 捲軸必用 ScrollArea(跨 OS 一致;Dialog body 同法)。\n <ScrollArea fillX className=\"min-h-0 flex-1\">\n <div\n ref={ref}\n role=\"log\"\n aria-live=\"polite\"\n className={cn(\n // 輪距 40 = 8 + 24(工具列)+ 8;工具列絕對定位於輪距內,出現不推擠。\n 'flex flex-col gap-10 p-[var(--layout-space-loose)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ScrollArea>\n ),\n)\nAgentConversation.displayName = 'AgentConversation'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 4. AgentMessage(訊息)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentAttachment {\n id: string\n label: string\n}\n\nexport interface AgentMessageProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 訊息角色:user=我方氣泡靠右;agent=無氣泡全寬。 */\n role?: 'user' | 'agent'\n /** 氣泡內文字上方的附件(送出後視覺=Chip assist 分支)。 */\n attachments?: AgentAttachment[]\n onAttachmentClick?: (attachment: AgentAttachment) => void\n /** 訊息工具列(AgentToolbar);絕對定位於輪距內。 */\n toolbar?: React.ReactNode\n}\n\nconst AgentMessage = React.forwardRef<HTMLDivElement, AgentMessageProps>(\n (\n { role = 'agent', attachments, onAttachmentClick, toolbar, className, children, ...props },\n ref,\n ) => {\n const isUser = role === 'user'\n return (\n <div\n ref={ref}\n className={cn('group/agent-message relative', isUser && 'flex justify-end', className)}\n {...props}\n >\n <div\n className={cn(\n 'text-body text-foreground',\n isUser\n ? [\n 'max-w-[85%] rounded-md bg-secondary px-3 py-2',\n 'animate-in fade-in-0 slide-in-from-bottom-2 duration-[var(--motion-duration-overlay)] motion-reduce:animate-none',\n ]\n : 'w-full [&_a]:text-primary [&_a:hover]:text-primary-hover [&_a]:underline-offset-2 [&_a:hover]:underline',\n )}\n >\n {attachments && attachments.length > 0 && (\n // chip 相互垂直/水平 4(=Combobox 內 Tag 區間距;2026-09-02 拍板)。\n <div className=\"mb-2 flex flex-wrap gap-1\">\n {attachments.map((attachment) => (\n <Chip\n key={attachment.id}\n variant=\"assist\"\n aria-label={`附件:${attachment.label}`}\n onClick={() => onAttachmentClick?.(attachment)}\n >\n {attachment.label}\n </Chip>\n ))}\n </div>\n )}\n {children}\n </div>\n {toolbar}\n </div>\n )\n },\n)\nAgentMessage.displayName = 'AgentMessage'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 5. AgentThinking(思考塊)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentThinkingProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** 進行中:標題「思考中」+微光;完成:「思考過程」靜態。 */\n thinking?: boolean\n /** 已完成的步驟(靜態,fg-secondary)。 */\n steps?: React.ReactNode[]\n /** 正在寫入的最新一行(僅此行與標題套微光)。 */\n currentStep?: React.ReactNode\n /** 開合(未受控時:回覆中自動展開、回覆完自動收合)。 */\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst AgentThinking = React.forwardRef<HTMLDivElement, AgentThinkingProps>(\n ({ thinking = false, steps, currentStep, open, onOpenChange, className, ...props }, ref) => {\n // 非受控:AI 回覆中自動展開、回覆完自動收合(拍板;三套元件庫一致慣例)。\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(thinking)\n React.useEffect(() => {\n if (open === undefined) setUncontrolledOpen(thinking)\n }, [thinking, open])\n const resolvedOpen = open ?? uncontrolledOpen\n const handleOpenChange = (next: boolean) => {\n setUncontrolledOpen(next)\n onOpenChange?.(next)\n }\n return (\n <CollapsiblePrimitive.Root\n ref={ref}\n open={resolvedOpen}\n onOpenChange={handleOpenChange}\n className={cn('text-body', className)}\n {...props}\n >\n <CollapsiblePrimitive.Trigger\n className={cn(\n 'group/agent-thinking flex cursor-pointer items-center gap-1 text-fg-secondary hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm',\n )}\n >\n <span className={cn(thinking && 'agent-shimmer')}>\n {thinking ? '思考中…' : '思考過程'}\n </span>\n {/* chevron=裝飾指示(accordion 慣例),不吃微光;色同 Select 觸發器 chevron(fg-muted)。 */}\n <ChevronDown\n size={16}\n aria-hidden\n className=\"shrink-0 text-fg-muted transition-transform duration-[var(--motion-duration-overlay)] motion-reduce:duration-0 group-data-[state=open]/agent-thinking:rotate-180\"\n />\n </CollapsiblePrimitive.Trigger>\n <CollapsiblePrimitive.Content\n className=\"overflow-hidden data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up\"\n >\n {/* 完成步驟=fg-secondary(2026-09-02 拍板;原 muted 太淺);微光行基色由 agent-panel.css 自管。 */}\n <div className=\"mt-2 flex flex-col gap-1 border-l border-divider pl-3 text-fg-secondary\">\n {steps?.map((step, index) => <div key={index}>{step}</div>)}\n {currentStep != null && (\n <div className={cn(thinking && 'agent-shimmer')}>{currentStep}</div>\n )}\n </div>\n </CollapsiblePrimitive.Content>\n </CollapsiblePrimitive.Root>\n )\n },\n)\nAgentThinking.displayName = 'AgentThinking'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 6. AgentToolbar(訊息工具列;固定 anatomy 恆渲染)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentToolbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 常駐顯示(代理最後一則);其他訊息=懸停淡入。 */\n pinned?: boolean\n onCopy?: () => void\n onLike?: () => void\n onDislike?: () => void\n}\n\nconst AgentToolbar = React.forwardRef<HTMLDivElement, AgentToolbarProps>(\n ({ pinned = false, onCopy, onLike, onDislike, className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'absolute left-0 top-full mt-2 flex items-center gap-2',\n 'transition-opacity duration-[var(--motion-duration-overlay)] motion-reduce:transition-none',\n pinned\n ? 'opacity-100'\n : 'opacity-0 group-hover/agent-message:opacity-100 focus-within:opacity-100',\n className,\n )}\n {...props}\n >\n <Button variant=\"text\" size=\"xs\" iconOnly startIcon={Copy} aria-label=\"複製\" onClick={() => onCopy?.()} />\n <ButtonDivider />\n <Button variant=\"text\" size=\"xs\" iconOnly startIcon={ThumbsUp} aria-label=\"讚\" onClick={() => onLike?.()} />\n <Button variant=\"text\" size=\"xs\" iconOnly startIcon={ThumbsDown} aria-label=\"倒讚\" onClick={() => onDislike?.()} />\n {children}\n </div>\n ),\n)\nAgentToolbar.displayName = 'AgentToolbar'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 7. AgentPromptInput(複合輸入盒;固定 anatomy 恆渲染)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentPromptAttachment {\n id: string\n label: string\n}\n\nexport interface AgentPromptInputProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSubmit'> {\n value: string\n onValueChange: (value: string) => void\n /** 送出(Enter / 送出鈕);無內建行為 → 必填。 */\n onSubmit: () => void\n /** 代理進行中:送出鈕同位換停止(實心正方),0.15s 淡切。 */\n busy?: boolean\n onStop?: () => void\n /** 輸入中附件(Tag md 恆帶 ×;超寬 +N;送出後於訊息內轉 Chip assist 視覺)。 */\n attachments?: AgentPromptAttachment[]\n /** 固定構件:每個 Tag 的 × 恆渲染 → 必填。 */\n onRemoveAttachment: (attachment: AgentPromptAttachment) => void\n /** 固定構件:工具列 + 恆渲染 → 必填。 */\n onAddAttachment: () => void\n placeholder?: string\n}\n\n/** 附件單列 + 超寬 +N(useOverflowIndices 量測;Combobox 多選 Tag 區同族)。 */\nfunction PromptAttachmentRow({\n attachments,\n onRemove,\n}: {\n attachments: AgentPromptAttachment[]\n onRemove: (attachment: AgentPromptAttachment) => void\n}) {\n const { containerRef, registerItem, overflowIndices } = useOverflowIndices<HTMLDivElement>({\n reserveTriggerWidth: 48,\n })\n const hidden = new Set(overflowIndices)\n const hiddenItems = attachments.filter((_, i) => hidden.has(i))\n return (\n // 附件列 28:Tag 相互間距 4、距內緣 4;單列不換行,溢出以 +N 收納。\n // 被藏的 Tag 留在 flow 內、排到 +N 之後(order-last)並隱形:useOverflowIndices 每次重量都拿得到\n // 真實位置(抽離 flow 會在放寬時被誤判「可見」而失去 +N,2026-09-02 實測)。\n <div ref={containerRef} className=\"flex items-center gap-1 overflow-hidden px-1 pt-1\">\n {attachments.map((attachment, index) => (\n <div\n key={attachment.id}\n ref={registerItem(index)}\n className={cn('shrink-0', hidden.has(index) && 'invisible order-last')}\n >\n <Tag size=\"md\" onRemove={() => onRemove(attachment)}>\n {attachment.label}\n </Tag>\n </div>\n ))}\n {hiddenItems.length > 0 && (\n <OverflowIndicator count={hiddenItems.length} shape=\"tag\" size=\"md\">\n {hiddenItems.map((attachment) => (\n <Tag key={attachment.id} size=\"md\" onRemove={() => onRemove(attachment)}>\n {attachment.label}\n </Tag>\n ))}\n </OverflowIndicator>\n )}\n </div>\n )\n}\n\nconst AgentPromptInput = React.forwardRef<HTMLDivElement, AgentPromptInputProps>(\n (\n {\n value,\n onValueChange,\n onSubmit,\n busy = false,\n onStop,\n attachments = [],\n onRemoveAttachment,\n onAddAttachment,\n placeholder = '輸入訊息…',\n className,\n ...props\n },\n ref,\n ) => {\n const canSubmit = value.trim().length > 0\n const submit = () => {\n if (busy || !canSubmit) return\n onSubmit()\n }\n return (\n <div\n ref={ref}\n className={cn(\n 'm-[var(--layout-space-loose)] mt-0 shrink-0 rounded-md border border-border bg-surface',\n 'focus-within:border-border-hover transition-colors duration-[var(--motion-duration-overlay)]',\n className,\n )}\n {...props}\n >\n {attachments.length > 0 && (\n <PromptAttachmentRow attachments={attachments} onRemove={onRemoveAttachment} />\n )}\n <textarea\n value={value}\n onChange={(e) => onValueChange(e.target.value)}\n onKeyDown={(e) => {\n // 按 Enter 送出、Shift+Enter 換行(拍板)。\n if (e.key === 'Enter' && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault()\n submit()\n }\n }}\n rows={1}\n placeholder={placeholder}\n aria-label=\"訊息\"\n className={cn(\n // 欄位家族內距:單行 32 等高鐵律((欄高−1lh)/2−1 + --field-px)。\n 'block w-full resize-none bg-transparent outline-none',\n 'px-[var(--field-px)] py-[var(--field-control-py-md)] text-body text-foreground',\n 'placeholder:text-fg-muted',\n 'field-sizing-content max-h-40',\n )}\n />\n <div className=\"flex h-10 items-center justify-between px-2\">\n <Button\n variant=\"text\"\n size=\"xs\"\n iconOnly\n startIcon={Plus}\n aria-label=\"新增附件\"\n onClick={onAddAttachment}\n />\n {busy ? (\n <Button\n variant=\"primary\"\n size=\"xs\"\n iconOnly\n startIcon={StopFilled}\n aria-label=\"停止生成\"\n onClick={() => onStop?.()}\n className=\"animate-in fade-in-0 duration-[var(--motion-duration-overlay)]\"\n />\n ) : (\n <Button\n variant=\"primary\"\n size=\"xs\"\n iconOnly\n startIcon={ArrowUp}\n aria-label=\"送出\"\n disabled={!canSubmit}\n onClick={submit}\n className=\"animate-in fade-in-0 duration-[var(--motion-duration-overlay)]\"\n />\n )}\n </div>\n </div>\n )\n },\n)\nAgentPromptInput.displayName = 'AgentPromptInput'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 8. AgentDecisionCard(決策卡;一題一問步進)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentDecisionOption {\n value: string\n /** 單行、≤10 字、無句尾標點、說「選了會怎樣」(產題守則 5)。 */\n label: string\n /** 一行差異描述:單句、無句號、同題比同一維度(產題守則 6)。 */\n description: string\n}\n\nexport interface AgentDecisionQuestion {\n id: string\n /** 題目=一句完整問句、以「?」結尾、句內點名決策對象(產題守則 3)。 */\n label: string\n /** 2-4 具名選項(不含「其他」;「其他」由元件必備附加,產題守則 4/7)。 */\n options: AgentDecisionOption[]\n /** 預選推薦解;省略=第一項;元件在該項 label 後加「(建議)」(產題守則 8)。 */\n defaultValue?: string\n /** 不可逆/安全/法律/稱謂類題:不預選(產題守則 8 例外);複選題恆不預選。 */\n noDefault?: boolean\n /** 答案本質可複選才開(產題守則 10):改 CheckboxGroup、不預選、值以 `\\n` 連接。 */\n multiSelect?: boolean\n}\n\nexport interface AgentDecisionCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSubmit' | 'title'> {\n /** ≤3 題;一題一問步進,N>1 時標題列顯示「n / N」。 */\n questions: AgentDecisionQuestion[]\n /** 全部作答後送出:answers[questionId] = 選項值或「其他」文字(複選以 `\\n` 連接)。 */\n onSubmit?: (answers: Record<string, string>) => void\n /** 跳過=採預設值繼續(Skip 鈕與 header × 同一行為);回傳目前預設/已選值。 */\n onSkip?: (answers: Record<string, string>) => void\n}\n\nconst OTHER_VALUE = '__agent_decision_other__'\nconst OTHER_LABEL = '其他'\nconst RECOMMENDED_SUFFIX = '(建議)'\nconst MULTI_JOIN = '\\n'\n\n/** 產題守則機械層(agent-panel.spec.md §8 ⚙ 條):DEV 只警告不阻擋,內容規則靠稽核。 */\nfunction warnDecisionRules(questions: AgentDecisionQuestion[]) {\n const warn = (msg: string) => console.warn(`[AgentDecisionCard] 產題守則:${msg}`)\n if (questions.length === 0 || questions.length > 3) warn(`題數 1–3(收到 ${questions.length})。`)\n for (const q of questions) {\n if (!/[??]$/.test(q.label.trim())) warn(`題目必是完整問句、以「?」結尾(${q.id}:「${q.label}」)。`)\n if (q.options.length < 2 || q.options.length > 4) warn(`每題 2–4 個具名選項(${q.id} 有 ${q.options.length})。`)\n for (const o of q.options) {\n if (/\\n/.test(o.label) || o.label.length > 10) warn(`選項標籤單行且 ≤10 字(${q.id}:「${o.label}」)。`)\n if (/[,,;;.。!!]$/.test(o.label)) warn(`選項標籤無句尾標點(${q.id}:「${o.label}」)。`)\n if (/\\(建議\\)|\\(建議\\)|\\(Recommended\\)/i.test(o.label)) warn(`「(建議)」由元件標,勿寫進標籤(${q.id}:「${o.label}」)。`)\n if (!o.description?.trim()) warn(`每個具名選項必附一行差異描述(${q.id}:「${o.label}」)。`)\n else if (/\\n/.test(o.description) || /[。.]$/.test(o.description.trim())) warn(`描述單句、無句號(${q.id}:「${o.label}」)。`)\n if (/^(其他|other)$/i.test(o.label.trim()) || o.value === OTHER_VALUE) warn(`「其他」由元件附加,勿自列(${q.id})。`)\n }\n if (q.multiSelect && q.defaultValue) warn(`複選題不預選(${q.id})。`)\n if (!q.multiSelect && !q.noDefault) {\n const def = q.defaultValue ?? q.options[0]?.value\n if (q.defaultValue && !q.options.some((o) => o.value === q.defaultValue)) warn(`defaultValue 必是選項之一(${q.id})。`)\n if (def !== q.options[0]?.value) warn(`推薦解必排第一(${q.id})。`)\n }\n }\n}\n\nfunction initialAnswer(q: AgentDecisionQuestion) {\n if (q.multiSelect || q.noDefault) return ''\n return q.defaultValue ?? q.options[0]?.value ?? ''\n}\n\n/** 複選值 = 已勾選 value 集合(含 OTHER_VALUE),以 `\\n` 連接存於 answers。 */\nconst splitMulti = (v: string | undefined) => (v ? v.split(MULTI_JOIN).filter(Boolean) : [])\n\nconst AgentDecisionCard = React.forwardRef<HTMLDivElement, AgentDecisionCardProps>(\n ({ questions, onSubmit, onSkip, className, ...props }, ref) => {\n const titleId = React.useId()\n const otherInputId = React.useId()\n if (import.meta.env?.DEV) warnDecisionRules(questions)\n const [step, setStep] = React.useState(0)\n const [answers, setAnswers] = React.useState<Record<string, string>>(() =>\n Object.fromEntries(questions.map((q) => [q.id, initialAnswer(q)])),\n )\n const [otherText, setOtherText] = React.useState<Record<string, string>>({})\n const resolveOne = (q: AgentDecisionQuestion) => {\n const other = (otherText[q.id] ?? '').trim()\n if (q.multiSelect) {\n return splitMulti(answers[q.id])\n .map((v) => (v === OTHER_VALUE ? other : v))\n .filter(Boolean)\n .join(MULTI_JOIN)\n }\n return answers[q.id] === OTHER_VALUE ? other : (answers[q.id] ?? '')\n }\n const resolvedAnswers = () =>\n Object.fromEntries(questions.map((q) => [q.id, resolveOne(q)])) as Record<string, string>\n const total = questions.length\n const question = questions[Math.min(step, total - 1)]\n const isLast = step >= total - 1\n const select = (value: string) => setAnswers((prev) => ({ ...prev, [question.id]: value }))\n const toggle = (value: string, checked: boolean) =>\n setAnswers((prev) => {\n const set = new Set(splitMulti(prev[question.id]))\n if (checked) set.add(value)\n else set.delete(value)\n return { ...prev, [question.id]: [...set].join(MULTI_JOIN) }\n })\n const skip = () => onSkip?.(resolvedAnswers())\n\n if (!question) return null\n const multi = Boolean(question.multiSelect)\n const selectedSet = new Set(multi ? splitMulti(answers[question.id]) : [answers[question.id]])\n const otherSelected = selectedSet.has(OTHER_VALUE)\n // 「其他」選中而文字為空 → 不得前進/送出(產題守則 7);複選一項未勾 → 亦不得前進。\n const canAdvance =\n (!otherSelected || (otherText[question.id] ?? '').trim() !== '') &&\n (!multi || selectedSet.size > 0)\n const recommendedValue =\n !multi && !question.noDefault ? (question.defaultValue ?? question.options[0]?.value) : undefined\n const optionLabel = (option: AgentDecisionOption | { value: string; label: string }) =>\n option.value === recommendedValue ? `${option.label}${RECOMMENDED_SUFFIX}` : option.label\n const allOptions = [...question.options, { value: OTHER_VALUE, label: OTHER_LABEL }]\n const renderOtherInput = () => (\n // 「其他」卡:常駐 32 高輸入格;距卡右/下各 12(卡 px 12;卡 py 8 + mb 4)。\n <div className=\"mb-1 mt-1.5 pl-6\">\n <Input\n id={otherInputId}\n value={otherText[question.id] ?? ''}\n placeholder=\"輸入其他選項\"\n aria-label=\"其他(自由輸入)\"\n onFocus={() => (multi ? toggle(OTHER_VALUE, true) : select(OTHER_VALUE))}\n onChange={(e) => setOtherText((prev) => ({ ...prev, [question.id]: e.target.value }))}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n )\n const cardClass = 'cursor-pointer rounded-md bg-secondary px-3 py-2'\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-labelledby={titleId}\n className={cn(\n // 繼承 Popover surface:rounded-lg/border/elevation-200;改寫:無下圓角、貼底。\n 'absolute inset-x-0 bottom-0 z-10 flex flex-col overflow-hidden',\n 'rounded-t-lg rounded-b-none border border-b-0 border-border bg-surface-raised',\n 'shadow-[var(--elevation-200)]',\n 'animate-in fade-in-0 slide-in-from-bottom-2 duration-[var(--motion-duration-overlay)] motion-reduce:animate-none',\n className,\n )}\n {...props}\n >\n {/* 標題列:N>1 時小標「n / N」+ 題目 + ×(跳過);改寫:header 下無分隔線。 */}\n <SurfaceHeader className={cn(COMPACT_HEADER_SLOT, 'items-start justify-between border-b-0')}>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n {total > 1 && (\n <span className=\"text-caption font-medium text-fg-secondary\">\n {step + 1} / {total}\n </span>\n )}\n <span id={titleId} className=\"text-body font-medium text-foreground\">\n {question.label}\n </span>\n </div>\n <Button dismiss size=\"sm\" startIcon={XIcon} aria-label=\"跳過\" onClick={skip} />\n </SurfaceHeader>\n {/* body:上下無內距、左右 16;選項=灰底卡 gap 8(整卡可點;拍板樣張,本地包裝不抽通用元件);捲軸必用 ScrollArea。 */}\n <ScrollArea fillX className=\"min-h-0\">\n {multi ? (\n <CheckboxGroup\n key={question.id}\n aria-labelledby={titleId}\n className=\"flex flex-col gap-2 px-[var(--layout-space-loose)]\"\n >\n {allOptions.map((option) => {\n const isOther = option.value === OTHER_VALUE\n const checked = selectedSet.has(option.value)\n return (\n <div\n key={option.value}\n data-state={checked ? 'checked' : 'unchecked'}\n className={cardClass}\n onClick={() => toggle(option.value, !checked)}\n >\n <Checkbox\n size=\"md\"\n checked={checked}\n onCheckedChange={(next) => toggle(option.value, next === true)}\n onClick={(e) => e.stopPropagation()}\n label={optionLabel(option)}\n description={isOther ? undefined : (option as AgentDecisionOption).description}\n />\n {isOther && renderOtherInput()}\n </div>\n )\n })}\n </CheckboxGroup>\n ) : (\n <RadioGroup\n key={question.id}\n value={answers[question.id] ?? ''}\n onValueChange={select}\n aria-labelledby={titleId}\n className=\"flex flex-col gap-2 px-[var(--layout-space-loose)]\"\n >\n {allOptions.map((option) => {\n const isOther = option.value === OTHER_VALUE\n const checked = selectedSet.has(option.value)\n return (\n <div\n key={option.value}\n data-state={checked ? 'checked' : 'unchecked'}\n className={cardClass}\n onClick={() => select(option.value)}\n >\n <RadioGroupItem\n value={option.value}\n size=\"md\"\n label={optionLabel(option)}\n description={isOther ? undefined : (option as AgentDecisionOption).description}\n />\n {isOther && renderOtherInput()}\n </div>\n )\n })}\n </RadioGroup>\n )}\n </ScrollArea>\n {/* footer:Skip / 下一題 / 送出(最後一題);鈕 sm 守 Popover all-sm 律;無上分隔線。 */}\n <SurfaceFooter className=\"border-t-0\">\n <Button variant=\"tertiary\" size=\"sm\" onClick={skip}>\n 跳過\n </Button>\n {isLast ? (\n <Button variant=\"primary\" size=\"sm\" disabled={!canAdvance} onClick={() => onSubmit?.(resolvedAnswers())}>\n 送出\n </Button>\n ) : (\n <Button variant=\"primary\" size=\"sm\" disabled={!canAdvance} onClick={() => setStep((s) => s + 1)}>\n 下一題\n </Button>\n )}\n </SurfaceFooter>\n </div>\n )\n },\n)\nAgentDecisionCard.displayName = 'AgentDecisionCard'\n\n/* ────────────────────────────────────────────────────────────────────────────\n * 9. AgentDecisionSummary(決策回執)\n * ──────────────────────────────────────────────────────────────────────── */\n\nexport interface AgentDecisionSummaryProps extends React.HTMLAttributes<HTMLDivElement> {\n /** [問題, 答案] 配對(靜態回執)。 */\n entries: Array<{ question: string; answer: string }>\n}\n\nconst AgentDecisionSummary = React.forwardRef<HTMLDivElement, AgentDecisionSummaryProps>(\n ({ entries, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-2 rounded-md border border-border px-3 py-2 text-body',\n className,\n )}\n {...props}\n >\n {entries.map(({ question, answer }, index) => (\n <div key={index} className=\"flex flex-col\">\n <span className=\"text-fg-secondary\">{question}</span>\n <span className=\"text-foreground\">{answer}</span>\n </div>\n ))}\n </div>\n ),\n)\nAgentDecisionSummary.displayName = 'AgentDecisionSummary'\n\nexport {\n AgentPanel,\n AgentPanelHeader,\n AgentConversation,\n AgentMessage,\n AgentThinking,\n AgentToolbar,\n AgentPromptInput,\n AgentDecisionCard,\n AgentDecisionSummary,\n PANEL_WIDTH_DEFAULT as AGENT_PANEL_WIDTH_DEFAULT,\n PANEL_WIDTH_MIN as AGENT_PANEL_WIDTH_MIN,\n PANEL_WIDTH_MAX as AGENT_PANEL_WIDTH_MAX,\n}\n"],"names":["XIcon"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/AgentPanel/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AGENT_PANEL_WIDTH_DEFAULT, AGENT_PANEL_WIDTH_MAX, AGENT_PANEL_WIDTH_MIN, AgentConversation, AgentDecisionCard, AgentDecisionSummary, AgentMessage, AgentPanel, AgentPanelHeader, AgentPromptInput, AgentThinking, AgentToolbar } from "./agent-panel.js";
|
|
2
|
+
export {
|
|
3
|
+
AGENT_PANEL_WIDTH_DEFAULT,
|
|
4
|
+
AGENT_PANEL_WIDTH_MAX,
|
|
5
|
+
AGENT_PANEL_WIDTH_MIN,
|
|
6
|
+
AgentConversation,
|
|
7
|
+
AgentDecisionCard,
|
|
8
|
+
AgentDecisionSummary,
|
|
9
|
+
AgentMessage,
|
|
10
|
+
AgentPanel,
|
|
11
|
+
AgentPanelHeader,
|
|
12
|
+
AgentPromptInput,
|
|
13
|
+
AgentThinking,
|
|
14
|
+
AgentToolbar
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -10,13 +10,18 @@ export interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, '
|
|
|
10
10
|
title: React.ReactNode;
|
|
11
11
|
description?: React.ReactNode;
|
|
12
12
|
endContent?: React.ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* 顯示關閉鈕(預設 true)。**需同時傳 `onDismiss` 才會渲染 X** — Alert 是 controlled-only
|
|
15
|
+
* (不自我移除),無 handler 的 X 是死按鈕(2026-07-05 D4;對齊 Polaris Banner / Ant Alert)。
|
|
16
|
+
* 條件判斷 SSOT 在 Notice(notice.tsx `showDismiss`),Alert 原樣 forward。
|
|
17
|
+
*/
|
|
13
18
|
dismissible?: boolean;
|
|
14
19
|
onDismiss?: () => void;
|
|
15
20
|
}
|
|
16
21
|
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
22
|
export declare const alertMeta: {
|
|
18
23
|
readonly component: "Alert";
|
|
19
|
-
readonly family:
|
|
24
|
+
readonly family: 2;
|
|
20
25
|
readonly variants: {
|
|
21
26
|
readonly neutral: {
|
|
22
27
|
readonly purpose: "中性提示(系統公告、非緊急說明);無情緒色";
|
|
@@ -35,7 +40,7 @@ export declare const alertMeta: {
|
|
|
35
40
|
};
|
|
36
41
|
};
|
|
37
42
|
readonly sizes: {};
|
|
38
|
-
readonly states: readonly ["default"
|
|
43
|
+
readonly states: readonly ["default"];
|
|
39
44
|
readonly tokens: {
|
|
40
45
|
readonly bg: readonly ["bg-error", "bg-error-subtle", "bg-info", "bg-info-subtle", "bg-muted", "bg-success", "bg-success-subtle", "bg-surface-raised", "bg-warning", "bg-warning-subtle"];
|
|
41
46
|
readonly fg: readonly ["text-foreground"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/alert.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAA;
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/alert.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAA8C,KAAK,aAAa,EAAE,MAAM,0CAA0C,CAAA;AA8CzH,QAAA,MAAM,aAAa;;8EAQjB,CAAA;AAEF,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EACzD,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC/B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAGD,QAAA,MAAM,KAAK,mFA8FV,CAAA;AAMD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBZ,CAAA;AAEV,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -5,10 +5,10 @@ import { cn } from "../../lib/utils.js";
|
|
|
5
5
|
import { useInverseTheme, SUBTLE_ICON_COLOR, Notice } from "../Notice/notice.js";
|
|
6
6
|
const SUBTLE_CONTAINER = {
|
|
7
7
|
neutral: "bg-muted border border-border",
|
|
8
|
-
info: "bg-info-subtle border border-[var(--info-
|
|
9
|
-
success: "bg-success-subtle border border-[var(--success-
|
|
10
|
-
warning: "bg-warning-subtle border border-[var(--warning-
|
|
11
|
-
error: "bg-error-subtle border border-[var(--error-
|
|
8
|
+
info: "bg-info-subtle border border-[var(--info-text)]",
|
|
9
|
+
success: "bg-success-subtle border border-[var(--success-text)]",
|
|
10
|
+
warning: "bg-warning-subtle border border-[var(--warning-text)]",
|
|
11
|
+
error: "bg-error-subtle border border-[var(--error-text)]"
|
|
12
12
|
};
|
|
13
13
|
const SOLID_HUE_BG = {
|
|
14
14
|
info: "bg-info",
|
|
@@ -39,7 +39,10 @@ const Alert = React.forwardRef(
|
|
|
39
39
|
title,
|
|
40
40
|
description,
|
|
41
41
|
endContent,
|
|
42
|
-
|
|
42
|
+
// 2026-07-05 D4:不 destructure-default(原 `= true` 會把「consumer 沒傳」materialize 成顯式
|
|
43
|
+
// true,讓 Notice 的 dev-warn 無法分辨消費端矛盾)。等效預設 true 由 Notice showDismiss
|
|
44
|
+
// `!== false` 承擔,行為不變;X 僅在同時傳 onDismiss 時渲染(SSOT 在 notice.tsx)。
|
|
45
|
+
dismissible,
|
|
43
46
|
onDismiss,
|
|
44
47
|
className,
|
|
45
48
|
...props
|
|
@@ -106,8 +109,8 @@ const Alert = React.forwardRef(
|
|
|
106
109
|
Alert.displayName = "Alert";
|
|
107
110
|
const alertMeta = {
|
|
108
111
|
component: "Alert",
|
|
109
|
-
family:
|
|
110
|
-
//
|
|
112
|
+
family: 2,
|
|
113
|
+
// List item(對齊 alert.spec.md frontmatter family: 2)
|
|
111
114
|
variants: {
|
|
112
115
|
neutral: { purpose: "中性提示(系統公告、非緊急說明);無情緒色" },
|
|
113
116
|
info: { purpose: "資訊性提示(版本更新、流程說明);藍色 hue" },
|
|
@@ -116,7 +119,8 @@ const alertMeta = {
|
|
|
116
119
|
error: { purpose: "錯誤但非阻斷(系統錯誤可重試、API 失敗摘要);aria-live=assertive" }
|
|
117
120
|
},
|
|
118
121
|
sizes: {},
|
|
119
|
-
states: ["default"
|
|
122
|
+
states: ["default"],
|
|
123
|
+
// 2026-06-11 R2:Alert 本體無互動 state(spec L183 明文無 disabled;dismiss 互動屬內部 Button),
|
|
120
124
|
tokens: {
|
|
121
125
|
bg: ["bg-error", "bg-error-subtle", "bg-info", "bg-info-subtle", "bg-muted", "bg-success", "bg-success-subtle", "bg-surface-raised", "bg-warning", "bg-warning-subtle"],
|
|
122
126
|
fg: ["text-foreground"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sources":["../../../src/components/Alert/alert.tsx"],"sourcesContent":["// @benchmark-unverified-blanket: file-level retraction per M22 (d) — claims herein not individually URL-cited; treat as unverified visual/usage rumor unless retrofit per-claim. Hook escape preserved.\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\nimport { Notice, useInverseTheme, SUBTLE_ICON_COLOR, type NoticeVariant } from '@/design-system/components/Notice/notice'\n\n/**\n * Alert — inline / fixed 通知\n *\n * ── data-theme 必須搭配 text-foreground ──\n * CSS color 從 body 繼承已解析值,data-theme 只改 --foreground 不改 color。\n * 在 theme boundary 設 text-foreground 強制 re-resolve。\n *\n * ── Appearance ──\n * subtle: 淺底色 + 四邊 1px border(色相
|
|
1
|
+
{"version":3,"file":"alert.js","sources":["../../../src/components/Alert/alert.tsx"],"sourcesContent":["// @benchmark-unverified-blanket: file-level retraction per M22 (d) — claims herein not individually URL-cited; treat as unverified visual/usage rumor unless retrofit per-claim. Hook escape preserved.\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\nimport { Notice, useInverseTheme, SUBTLE_ICON_COLOR, type NoticeVariant } from '@/design-system/components/Notice/notice'\n\n/**\n * Alert — inline / fixed 通知\n *\n * ── data-theme 必須搭配 text-foreground ──\n * CSS color 從 body 繼承已解析值,data-theme 只改 --foreground 不改 color。\n * 在 theme boundary 設 text-foreground 強制 re-resolve。\n *\n * ── Appearance ──\n * subtle: 淺底色 + 四邊 1px border(色相 text 色 = icon 同色,見下方 SUBTLE_CONTAINER 註)。不設 data-theme,跟隨頁面。\n * solid: 跟 Toast 對齊:\n * neutral → data-theme={inverse} + bg-surface-raised(同層翻轉)\n * info/success/error → bg on outer, data-theme=\"dark\" on inner\n * warning → bg on outer, data-theme=\"light\" on inner\n *\n * ── Placement ──\n * inline: rounded-md(card-level 圓角,非 overlay — 因 Alert 在頁面流內,非 floating)\n * fixed: 無圓角,full-width,無 border\n */\n\n// border 用 `--{hue}-text`(= icon 同色,2026-06-15 user 拍板「直接共用 hue-text,不開新 token」)。\n// 原借 `--{hue}-hover`(互動狀態 token)當靜態 border 是語意 smell + 跟 icon 不同色;\n// 改共用 hue-text(SUBTLE_ICON_COLOR 用的同一顆,blue-7 等)→ 0 新 token + border/icon cohesion。\nconst SUBTLE_CONTAINER: Record<NoticeVariant, string> = {\n neutral: 'bg-muted border border-border',\n info: 'bg-info-subtle border border-[var(--info-text)]',\n success: 'bg-success-subtle border border-[var(--success-text)]',\n warning: 'bg-warning-subtle border border-[var(--warning-text)]',\n error: 'bg-error-subtle border border-[var(--error-text)]',\n}\n\nconst SOLID_HUE_BG: Record<string, string> = {\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n error: 'bg-error',\n}\n\nconst SOLID_HUE_THEME: Record<string, string> = {\n info: 'dark',\n success: 'dark',\n warning: 'light',\n error: 'dark',\n}\n\nconst alertVariants = cva('w-full overflow-hidden', {\n variants: {\n placement: {\n inline: 'rounded-md',\n fixed: 'rounded-none border-none',\n },\n },\n defaultVariants: { placement: 'inline' },\n})\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>,\n VariantProps<typeof alertVariants> {\n variant?: NoticeVariant\n appearance?: 'subtle' | 'solid'\n title: React.ReactNode\n description?: React.ReactNode\n endContent?: React.ReactNode\n /**\n * 顯示關閉鈕(預設 true)。**需同時傳 `onDismiss` 才會渲染 X** — Alert 是 controlled-only\n * (不自我移除),無 handler 的 X 是死按鈕(2026-07-05 D4;對齊 Polaris Banner / Ant Alert)。\n * 條件判斷 SSOT 在 Notice(notice.tsx `showDismiss`),Alert 原樣 forward。\n */\n dismissible?: boolean\n onDismiss?: () => void\n}\n\n// code-quality-allow: long-function — foundational composite main body — 拆 sub-fn 會複雜化 local state / ref / context binding\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n variant = 'neutral',\n appearance = 'subtle',\n placement,\n title,\n description,\n endContent,\n // 2026-07-05 D4:不 destructure-default(原 `= true` 會把「consumer 沒傳」materialize 成顯式\n // true,讓 Notice 的 dev-warn 無法分辨消費端矛盾)。等效預設 true 由 Notice showDismiss\n // `!== false` 承擔,行為不變;X 僅在同時傳 onDismiss 時渲染(SSOT 在 notice.tsx)。\n dismissible,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n const inverseTheme = useInverseTheme()\n const isSolid = appearance === 'solid'\n const iconClassName = !isSolid ? SUBTLE_ICON_COLOR[variant] : undefined\n\n // ── Live region 由 wrapping consumer 擁有(WAI-ARIA + Atlassian / Polaris / Material 共識) ──\n // Alert 是 outer host —— 自己擁有 role + aria-live;Notice(inner layout)不再帶 role,\n // 避免 nested live region 造成 screen reader 重複朗讀。\n // - error / warning → role=\"alert\" + aria-live=\"assertive\"(中斷,使用者必須立刻知道)\n // - info / success / neutral → role=\"status\" + aria-live=\"polite\"(空閒朗讀,不打斷)\n const isCritical = variant === 'error' || variant === 'warning'\n const liveRole = isCritical ? 'alert' : 'status'\n const liveLevel = isCritical ? 'assertive' : 'polite'\n\n // placement=\"fixed\" 用 loose px(density-aware)讓 Alert 嵌在更大佈局內時跟周圍\n // loose-padding 元素(Toolbar / BulkActionBar / DataTable 等)左右對齊。\n // py 維持 py-3 fixed(notification banner family canonical,垂直不隨 density)。\n const noticeEl = (\n <Notice\n variant={variant}\n title={title}\n description={description}\n endContent={endContent}\n dismissible={dismissible}\n onDismiss={onDismiss}\n iconClassName={iconClassName}\n className={placement === 'fixed' ? 'px-[var(--layout-space-loose)]' : undefined}\n />\n )\n\n // ── Subtle ──\n if (!isSolid) {\n return (\n <div\n ref={ref}\n role={liveRole}\n aria-live={liveLevel}\n className={cn(alertVariants({ placement }), SUBTLE_CONTAINER[variant], className)}\n {...props}\n >\n {noticeEl}\n </div>\n )\n }\n\n // ── Solid neutral (inverse: bg + theme 同層) ──\n if (variant === 'neutral') {\n return (\n <div\n ref={ref}\n role={liveRole}\n aria-live={liveLevel}\n data-theme={inverseTheme}\n className={cn(alertVariants({ placement }), 'bg-surface-raised text-foreground', className)}\n {...props}\n >\n {noticeEl}\n </div>\n )\n }\n\n // ── Solid 有色相: bg outer + data-theme inner ──\n return (\n <div\n ref={ref}\n role={liveRole}\n aria-live={liveLevel}\n className={cn(alertVariants({ placement }), SOLID_HUE_BG[variant], className)}\n {...props}\n >\n <div data-theme={SOLID_HUE_THEME[variant]} className=\"text-foreground\">\n {noticeEl}\n </div>\n </div>\n )\n },\n)\nAlert.displayName = 'Alert'\n\n// Story auto-compile metadata — Phase 2 fill(2026-05-15)\n// Variants = NoticeVariant 5 hues(prop name `variant`,cva 內僅 placement,色相由 SUBTLE_CONTAINER / SOLID_HUE_BG map 控)\n// Sizes = none(Alert 視覺尺寸繼承 Notice primitive,不隨 size 變;見 spec「為何無 SizeMatrix」)\nexport const alertMeta = {\n component: 'Alert',\n family: 2, // List item(對齊 alert.spec.md frontmatter family: 2)\n variants: {\n neutral: { purpose: '中性提示(系統公告、非緊急說明);無情緒色' },\n info: { purpose: '資訊性提示(版本更新、流程說明);藍色 hue' },\n success: { purpose: '成功狀態的持久性宣告(綁定生效、付款完成需保留確認)' },\n warning: { purpose: '警告但非阻斷(方案到期、需更新付款方式);最高頻' },\n error: { purpose: '錯誤但非阻斷(系統錯誤可重試、API 失敗摘要);aria-live=assertive' },\n },\n sizes: {},\n states: ['default'], // 2026-06-11 R2:Alert 本體無互動 state(spec L183 明文無 disabled;dismiss 互動屬內部 Button),\n tokens: {\n bg: ['bg-error', 'bg-error-subtle', 'bg-info', 'bg-info-subtle', 'bg-muted', 'bg-success', 'bg-success-subtle', 'bg-surface-raised', 'bg-warning', 'bg-warning-subtle'],\n fg: ['text-foreground'],\n ring: [],\n },\n defaultVariant: 'neutral',\n} as const\n\nexport { Alert, alertVariants }\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Alert/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -25,10 +25,12 @@ export declare const MAIN_NAV: readonly [{
|
|
|
25
25
|
}];
|
|
26
26
|
export declare const WorkspaceBrand: () => import("react/jsx-runtime").JSX.Element;
|
|
27
27
|
export declare const UserFooter: () => import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
export declare function AcmeSidebar({ viewportInsetTop, includeWorkspaceBrand, }?: {
|
|
28
|
+
export declare function AcmeSidebar({ viewportInsetTop, includeWorkspaceBrand, includeUserFooter, }?: {
|
|
29
29
|
viewportInsetTop?: string;
|
|
30
30
|
includeWorkspaceBrand?: boolean;
|
|
31
|
+
includeUserFooter?: boolean;
|
|
31
32
|
}): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function AccountMenu(): import("react/jsx-runtime").JSX.Element;
|
|
32
34
|
export declare function GlobalHeader({ rightSlot }?: {
|
|
33
35
|
rightSlot?: React.ReactNode;
|
|
34
36
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_demo-helpers.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/_demo-helpers.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_demo-helpers.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/_demo-helpers.tsx"],"names":[],"mappings":"AAkDA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;EAOX,CAAA;AAqBV,eAAO,MAAM,cAAc,+CAQ1B,CAAA;AAOD,eAAO,MAAM,UAAU,+CAkBtB,CAAA;AAQD,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,qBAA4B,EAC5B,iBAAwB,GACzB,GAAE;IACD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAA;CACvB,2CAwDL;AA4BD,wBAAgB,WAAW,4CAY1B;AAQD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAO,2CAY/E;AASD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,qBAA4B,GAC7B,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,2CAOA"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AppShell — web service page-level layout primitive。
|
|
3
3
|
*
|
|
4
|
-
* 組合 Sidebar + ChromeHeader + Aside + main 成完整 page shell。SSOT 邊界:本
|
|
4
|
+
* 組合 Sidebar + ChromeHeader + Aside + main 成完整 page shell。SSOT 邊界:本 composite component only
|
|
5
5
|
* own slot composition + layout mode + Aside responsive mode;不 own sidebar / header /
|
|
6
6
|
* sheet 視覺(各自 spec own)。
|
|
7
7
|
*
|
|
8
8
|
* 對齊 Mantine AppShell compound API + Ant Layout slot 模式 + Material 3 standard/modal
|
|
9
9
|
* drawer canonical(per spec.md frontmatter cite)。
|
|
10
10
|
*
|
|
11
|
-
* Spec SSOT:`
|
|
11
|
+
* Spec SSOT:`components/AppShell/app-shell.spec.md`
|
|
12
12
|
*/
|
|
13
13
|
import * as React from 'react';
|
|
14
14
|
type AppShellLayout = 'primary-sidebar' | 'primary-header';
|
|
15
15
|
export interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
16
16
|
/** primary-sidebar (Linear/Notion 派) | primary-header (GitHub/Slack 派);預設 primary-sidebar */
|
|
17
17
|
layout?: AppShellLayout;
|
|
18
|
-
/** Sidebar 元素(
|
|
18
|
+
/** Sidebar 元素(應傳 Sidebar primitive,per Consumer 紀律;型別 optional 不機械強制,對齊 spec「應」措辭)*/
|
|
19
19
|
sidebar?: React.ReactNode;
|
|
20
20
|
/**
|
|
21
21
|
* Local page header(永遠 render 在 main column 頂部,當前頁 actions / breadcrumb / page-level filter)。
|
|
@@ -62,7 +62,7 @@ declare const AppShell: React.ForwardRefExoticComponent<AppShellProps & React.Re
|
|
|
62
62
|
* AppShellAside — right panel:standard inline(desktop) vs modal overlay(mobile)。
|
|
63
63
|
*
|
|
64
64
|
* Desktop(viewport ≥ 768px):
|
|
65
|
-
* - Render 直接放 layout grid 右側(asideOpen
|
|
65
|
+
* - Render 直接放 layout grid 右側(AppShell 恆 render {aside};AppShellAside 於 !asideOpen 自行 return null — 內部自決,非 via parent)
|
|
66
66
|
* - 不蓋 mask / background 可操作 / 佔 layout 寬
|
|
67
67
|
* - Vertical extent:primary-sidebar → 頂天立地 / primary-header → header 下方
|
|
68
68
|
*
|
|
@@ -72,5 +72,20 @@ declare const AppShell: React.ForwardRefExoticComponent<AppShellProps & React.Re
|
|
|
72
72
|
* - title 強制(aria-labelledby per sheet.spec.md:98)
|
|
73
73
|
*/
|
|
74
74
|
declare const AppShellAside: React.ForwardRefExoticComponent<AppShellAsideProps & React.RefAttributes<HTMLElement>>;
|
|
75
|
+
export declare const appShellMeta: {
|
|
76
|
+
readonly component: "AppShell";
|
|
77
|
+
readonly family: "composite";
|
|
78
|
+
readonly variants: {};
|
|
79
|
+
readonly sizes: {};
|
|
80
|
+
readonly states: readonly [];
|
|
81
|
+
readonly tokens: {
|
|
82
|
+
readonly bg: readonly ["bg-canvas", "bg-surface"];
|
|
83
|
+
readonly fg: readonly ["text-foreground"];
|
|
84
|
+
readonly border: readonly ["border-divider"];
|
|
85
|
+
readonly ring: readonly ["ring-primary"];
|
|
86
|
+
};
|
|
87
|
+
readonly defaultVariant: undefined;
|
|
88
|
+
readonly defaultSize: undefined;
|
|
89
|
+
};
|
|
75
90
|
export { AppShell, AppShellAside, useAppShell };
|
|
76
91
|
//# sourceMappingURL=app-shell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/app-shell.tsx"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"app-shell.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/app-shell.tsx"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAgB9B,KAAK,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAA;AAE1D,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,6FAA6F;IAC7F,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,qFAAqF;IACrF,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,iDAAiD;IACjD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,UAAU,oBAAoB;IAC5B,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAID,iBAAS,WAAW,IAAI,oBAAoB,CAI3C;AAiED,QAAA,MAAM,QAAQ,sFAiIb,CAAA;AAKD;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,aAAa,wFA6FlB,CAAA;AAQD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcf,CAAA;AAKV,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { X } from "lucide-react";
|
|
4
|
-
import { Sheet, SheetContent } from "../Sheet/sheet.js";
|
|
4
|
+
import { Sheet, SheetContent, handleSheetOpenAutoFocus, SheetTitle } from "../Sheet/sheet.js";
|
|
5
5
|
import { Button } from "../Button/button.js";
|
|
6
6
|
import { ScrollArea } from "../ScrollArea/scroll-area.js";
|
|
7
7
|
import { ChromeHeader } from "../../patterns/header-canonical/chrome-header.js";
|
|
@@ -41,7 +41,7 @@ function resolveAsideWidth(width, isXl) {
|
|
|
41
41
|
return ASIDE_WIDTH_DEFAULT;
|
|
42
42
|
}
|
|
43
43
|
function SkipToMain() {
|
|
44
|
-
return /* @__PURE__ */ jsx(
|
|
44
|
+
return /* @__PURE__ */ jsx("nav", { "aria-label": "Skip links", children: /* @__PURE__ */ jsx(
|
|
45
45
|
"a",
|
|
46
46
|
{
|
|
47
47
|
href: "#app-shell-main",
|
|
@@ -54,7 +54,7 @@ function SkipToMain() {
|
|
|
54
54
|
),
|
|
55
55
|
children: "Skip to main content"
|
|
56
56
|
}
|
|
57
|
-
);
|
|
57
|
+
) });
|
|
58
58
|
}
|
|
59
59
|
const AppShell = React.forwardRef(
|
|
60
60
|
({
|
|
@@ -134,9 +134,10 @@ const AppShell = React.forwardRef(
|
|
|
134
134
|
/* @__PURE__ */ jsx(SkipToMain, {}),
|
|
135
135
|
sidebar,
|
|
136
136
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 min-w-0 min-h-0 overflow-hidden", children: [
|
|
137
|
-
header && // Header 在 main column 內(main col sibling,非 main descendant)
|
|
138
|
-
//
|
|
139
|
-
//
|
|
137
|
+
header && // Header 在 main column 內(main col sibling,非 main descendant)。ChromeHeader 自
|
|
138
|
+
// 2026-05-20 起 render `<header>`(chrome-header.tsx);依 W3C HTML-AAM,`<div>` wrapper
|
|
139
|
+
// 不 scope out banner(只有 main/article/aside/nav/section 能)→ 仍得 implicit banner ✓
|
|
140
|
+
// (對齊 app-shell.spec.md「W3C ARIA in HTML banner rule」段)。
|
|
140
141
|
/* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: header }),
|
|
141
142
|
/* @__PURE__ */ jsx(
|
|
142
143
|
"main",
|
|
@@ -160,9 +161,10 @@ const AppShellAside = React.forwardRef(
|
|
|
160
161
|
const { asideOpen, setAsideOpen, isMobile } = useAppShell();
|
|
161
162
|
const isXl = useIsXl();
|
|
162
163
|
const resolvedWidth = resolveAsideWidth(width, isXl);
|
|
163
|
-
const
|
|
164
|
+
const asideOpenerRef = React.useRef(null);
|
|
165
|
+
const renderFrame = (titleNode) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
164
166
|
/* @__PURE__ */ jsxs(ChromeHeader, { children: [
|
|
165
|
-
|
|
167
|
+
titleNode,
|
|
166
168
|
/* @__PURE__ */ jsx(
|
|
167
169
|
Button,
|
|
168
170
|
{
|
|
@@ -181,10 +183,29 @@ const AppShellAside = React.forwardRef(
|
|
|
181
183
|
return /* @__PURE__ */ jsx(Sheet, { open: asideOpen, onOpenChange: setAsideOpen, children: /* @__PURE__ */ jsx(
|
|
182
184
|
SheetContent,
|
|
183
185
|
{
|
|
186
|
+
ref,
|
|
184
187
|
side: "right",
|
|
185
|
-
|
|
188
|
+
onOpenAutoFocus: (e) => {
|
|
189
|
+
asideOpenerRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
190
|
+
handleSheetOpenAutoFocus(e);
|
|
191
|
+
},
|
|
192
|
+
onCloseAutoFocus: (e) => {
|
|
193
|
+
var _a;
|
|
194
|
+
e.preventDefault();
|
|
195
|
+
const opener = asideOpenerRef.current;
|
|
196
|
+
asideOpenerRef.current = null;
|
|
197
|
+
if (opener == null ? void 0 : opener.isConnected) {
|
|
198
|
+
opener.focus({ preventScroll: true });
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
(_a = document.getElementById("app-shell-main")) == null ? void 0 : _a.focus({ preventScroll: true });
|
|
202
|
+
},
|
|
203
|
+
className: cn(
|
|
204
|
+
"w-[min(90vw,var(--app-shell-aside-modal-width))] flex flex-col p-0 [&>button]:hidden",
|
|
205
|
+
className
|
|
206
|
+
),
|
|
186
207
|
style: { ["--app-shell-aside-modal-width"]: `${resolvedWidth}px` },
|
|
187
|
-
children:
|
|
208
|
+
children: renderFrame(/* @__PURE__ */ jsx(SheetTitle, { className: "flex-1", children: title }))
|
|
188
209
|
}
|
|
189
210
|
) });
|
|
190
211
|
}
|
|
@@ -200,15 +221,31 @@ const AppShellAside = React.forwardRef(
|
|
|
200
221
|
className
|
|
201
222
|
),
|
|
202
223
|
style: { width: resolvedWidth },
|
|
203
|
-
children:
|
|
224
|
+
children: renderFrame(/* @__PURE__ */ jsx("h2", { className: "text-body-lg font-medium flex-1 truncate", children: title }))
|
|
204
225
|
}
|
|
205
226
|
);
|
|
206
227
|
}
|
|
207
228
|
);
|
|
208
229
|
AppShellAside.displayName = "AppShellAside";
|
|
230
|
+
const appShellMeta = {
|
|
231
|
+
component: "AppShell",
|
|
232
|
+
family: "composite",
|
|
233
|
+
variants: {},
|
|
234
|
+
sizes: {},
|
|
235
|
+
states: [],
|
|
236
|
+
tokens: {
|
|
237
|
+
bg: ["bg-canvas", "bg-surface"],
|
|
238
|
+
fg: ["text-foreground"],
|
|
239
|
+
border: ["border-divider"],
|
|
240
|
+
ring: ["ring-primary"]
|
|
241
|
+
},
|
|
242
|
+
defaultVariant: void 0,
|
|
243
|
+
defaultSize: void 0
|
|
244
|
+
};
|
|
209
245
|
export {
|
|
210
246
|
AppShell,
|
|
211
247
|
AppShellAside,
|
|
248
|
+
appShellMeta,
|
|
212
249
|
useAppShell
|
|
213
250
|
};
|
|
214
251
|
//# sourceMappingURL=app-shell.js.map
|