@arbor-education/design-system.components 0.15.0 → 0.16.0
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/.gather/skills/write-stories/SKILL.md +207 -271
- package/.storybook/preview.ts +5 -0
- package/CHANGELOG.md +17 -0
- package/README.md +8 -0
- package/component-library.md +144 -13
- package/dist/components/articleCard/ArticleCard.stories.d.ts +137 -11
- package/dist/components/articleCard/ArticleCard.stories.d.ts.map +1 -1
- package/dist/components/articleCard/ArticleCard.stories.js +358 -91
- package/dist/components/articleCard/ArticleCard.stories.js.map +1 -1
- package/dist/components/avatar/Avatar.stories.d.ts +6 -6
- package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.stories.js +393 -49
- package/dist/components/avatar/Avatar.stories.js.map +1 -1
- package/dist/components/avatarGroup/AvatarGroup.stories.d.ts +9 -7
- package/dist/components/avatarGroup/AvatarGroup.stories.d.ts.map +1 -1
- package/dist/components/avatarGroup/AvatarGroup.stories.js +688 -65
- package/dist/components/avatarGroup/AvatarGroup.stories.js.map +1 -1
- package/dist/components/banner/Banner.stories.d.ts.map +1 -1
- package/dist/components/banner/Banner.stories.js +7 -3
- package/dist/components/banner/Banner.stories.js.map +1 -1
- package/dist/components/card/Card.stories.d.ts +105 -4
- package/dist/components/card/Card.stories.d.ts.map +1 -1
- package/dist/components/card/Card.stories.js +336 -18
- package/dist/components/card/Card.stories.js.map +1 -1
- package/dist/components/combobox/Combobox.stories.d.ts +134 -21
- package/dist/components/combobox/Combobox.stories.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.stories.js +676 -175
- package/dist/components/combobox/Combobox.stories.js.map +1 -1
- package/dist/components/datePicker/DatePicker.stories.d.ts +119 -27
- package/dist/components/datePicker/DatePicker.stories.d.ts.map +1 -1
- package/dist/components/datePicker/DatePicker.stories.js +575 -47
- package/dist/components/datePicker/DatePicker.stories.js.map +1 -1
- package/dist/components/dateTimePicker/DateTimePicker.stories.d.ts +155 -39
- package/dist/components/dateTimePicker/DateTimePicker.stories.d.ts.map +1 -1
- package/dist/components/dateTimePicker/DateTimePicker.stories.js +674 -103
- package/dist/components/dateTimePicker/DateTimePicker.stories.js.map +1 -1
- package/dist/components/editableText/EditableText.stories.d.ts +53 -12
- package/dist/components/editableText/EditableText.stories.d.ts.map +1 -1
- package/dist/components/editableText/EditableText.stories.js +401 -64
- package/dist/components/editableText/EditableText.stories.js.map +1 -1
- package/dist/components/formField/FormField.d.ts +4 -0
- package/dist/components/formField/FormField.d.ts.map +1 -1
- package/dist/components/formField/FormField.js +2 -1
- package/dist/components/formField/FormField.js.map +1 -1
- package/dist/components/formField/FormField.test.js +5 -0
- package/dist/components/formField/FormField.test.js.map +1 -1
- package/dist/components/formField/fieldset/Fieldset.stories.d.ts +56 -4
- package/dist/components/formField/fieldset/Fieldset.stories.d.ts.map +1 -1
- package/dist/components/formField/fieldset/Fieldset.stories.js +534 -28
- package/dist/components/formField/fieldset/Fieldset.stories.js.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts +3 -1
- package/dist/components/formField/inputs/checkbox/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.js +1 -1
- package/dist/components/formField/inputs/checkbox/CheckboxInput.js.map +1 -1
- package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.d.ts +95 -1
- package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.js +386 -9
- package/dist/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.js.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts +6 -2
- package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonGroup.js.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonInput.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js +61 -49
- package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js.map +1 -1
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.d.ts +188 -166
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js +821 -160
- package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js.map +1 -1
- package/dist/components/formField/inputs/time/TimeInput.stories.d.ts +176 -22
- package/dist/components/formField/inputs/time/TimeInput.stories.d.ts.map +1 -1
- package/dist/components/formField/inputs/time/TimeInput.stories.js +851 -92
- package/dist/components/formField/inputs/time/TimeInput.stories.js.map +1 -1
- package/dist/components/formField/label/Label.stories.d.ts +54 -5
- package/dist/components/formField/label/Label.stories.d.ts.map +1 -1
- package/dist/components/formField/label/Label.stories.js +238 -4
- package/dist/components/formField/label/Label.stories.js.map +1 -1
- package/dist/components/icoText/IcoText.stories.d.ts +32 -6
- package/dist/components/icoText/IcoText.stories.d.ts.map +1 -1
- package/dist/components/icoText/IcoText.stories.js +309 -14
- package/dist/components/icoText/IcoText.stories.js.map +1 -1
- package/dist/components/kpiCard/KPICard.stories.d.ts +100 -2
- package/dist/components/kpiCard/KPICard.stories.d.ts.map +1 -1
- package/dist/components/kpiCard/KPICard.stories.js +354 -10
- package/dist/components/kpiCard/KPICard.stories.js.map +1 -1
- package/dist/components/kvpList/KVPList.stories.d.ts +57 -4
- package/dist/components/kvpList/KVPList.stories.d.ts.map +1 -1
- package/dist/components/kvpList/KVPList.stories.js +403 -10
- package/dist/components/kvpList/KVPList.stories.js.map +1 -1
- package/dist/components/modal/Modal.stories.d.ts +113 -9
- package/dist/components/modal/Modal.stories.d.ts.map +1 -1
- package/dist/components/modal/Modal.stories.js +633 -13
- package/dist/components/modal/Modal.stories.js.map +1 -1
- package/dist/components/modal/modalManager/ModalManager.stories.d.ts +34 -10
- package/dist/components/modal/modalManager/ModalManager.stories.d.ts.map +1 -1
- package/dist/components/modal/modalManager/ModalManager.stories.js +463 -85
- package/dist/components/modal/modalManager/ModalManager.stories.js.map +1 -1
- package/dist/components/pill/Pill.d.ts.map +1 -1
- package/dist/components/pill/Pill.js +1 -1
- package/dist/components/pill/Pill.js.map +1 -1
- package/dist/components/pill/Pill.stories.d.ts.map +1 -1
- package/dist/components/pill/Pill.stories.js +11 -13
- package/dist/components/pill/Pill.stories.js.map +1 -1
- package/dist/components/row/Row.stories.d.ts +1 -2
- package/dist/components/row/Row.stories.d.ts.map +1 -1
- package/dist/components/row/Row.stories.js +360 -50
- package/dist/components/row/Row.stories.js.map +1 -1
- package/dist/components/searchBar/SearchBar.stories.d.ts +52 -4
- package/dist/components/searchBar/SearchBar.stories.d.ts.map +1 -1
- package/dist/components/searchBar/SearchBar.stories.js +428 -36
- package/dist/components/searchBar/SearchBar.stories.js.map +1 -1
- package/dist/components/section/Section.stories.d.ts +11 -41
- package/dist/components/section/Section.stories.d.ts.map +1 -1
- package/dist/components/section/Section.stories.js +494 -56
- package/dist/components/section/Section.stories.js.map +1 -1
- package/dist/components/singleUser/SingleUser.stories.d.ts +5 -4
- package/dist/components/singleUser/SingleUser.stories.d.ts.map +1 -1
- package/dist/components/singleUser/SingleUser.stories.js +303 -31
- package/dist/components/singleUser/SingleUser.stories.js.map +1 -1
- package/dist/components/slideoverManager/SlideoverManager.stories.d.ts +32 -11
- package/dist/components/slideoverManager/SlideoverManager.stories.d.ts.map +1 -1
- package/dist/components/slideoverManager/SlideoverManager.stories.js +380 -84
- package/dist/components/slideoverManager/SlideoverManager.stories.js.map +1 -1
- package/dist/components/table/DSDefaultColDef.d.ts.map +1 -1
- package/dist/components/table/DSDefaultColDef.js +4 -3
- package/dist/components/table/DSDefaultColDef.js.map +1 -1
- package/dist/components/table/Table.d.ts +6 -1
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/Table.js +8 -3
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.stories.d.ts +2 -0
- package/dist/components/table/Table.stories.d.ts.map +1 -1
- package/dist/components/table/Table.stories.js +357 -3
- package/dist/components/table/Table.stories.js.map +1 -1
- package/dist/components/table/TableFooter.stories.d.ts +49 -0
- package/dist/components/table/TableFooter.stories.d.ts.map +1 -0
- package/dist/components/table/TableFooter.stories.js +137 -0
- package/dist/components/table/TableFooter.stories.js.map +1 -0
- package/dist/components/table/TableHeader.stories.d.ts +93 -0
- package/dist/components/table/TableHeader.stories.d.ts.map +1 -0
- package/dist/components/table/TableHeader.stories.js +176 -0
- package/dist/components/table/TableHeader.stories.js.map +1 -0
- package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts +44 -0
- package/dist/components/table/cellEditors/DateCellEditor.stories.d.ts.map +1 -0
- package/dist/components/table/cellEditors/DateCellEditor.stories.js +186 -0
- package/dist/components/table/cellEditors/DateCellEditor.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts +40 -0
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js +209 -0
- package/dist/components/table/cellRenderers/BooleanCellRenderer.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts +48 -0
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js +244 -0
- package/dist/components/table/cellRenderers/ButtonCellRenderer.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.d.ts.map +1 -1
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.js +3 -1
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.js.map +1 -1
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts +64 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js +241 -0
- package/dist/components/table/cellRenderers/CheckboxCellRenderer.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts +55 -0
- package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js +245 -0
- package/dist/components/table/cellRenderers/DefaultCellRenderer.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts +67 -0
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js +221 -0
- package/dist/components/table/cellRenderers/InlineTextCellRenderer.stories.js.map +1 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts +75 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.d.ts.map +1 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js +270 -0
- package/dist/components/table/cellRenderers/SelectDropdownCellRenderer.stories.js.map +1 -0
- package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts +57 -0
- package/dist/components/table/columnFilters/BooleanFilter.stories.d.ts.map +1 -0
- package/dist/components/table/columnFilters/BooleanFilter.stories.js +198 -0
- package/dist/components/table/columnFilters/BooleanFilter.stories.js.map +1 -0
- package/dist/components/table/columnFilters/TimeFilter.stories.d.ts +58 -0
- package/dist/components/table/columnFilters/TimeFilter.stories.d.ts.map +1 -0
- package/dist/components/table/columnFilters/TimeFilter.stories.js +207 -0
- package/dist/components/table/columnFilters/TimeFilter.stories.js.map +1 -0
- package/dist/components/table/pagination/PaginationPanel.stories.d.ts +113 -0
- package/dist/components/table/pagination/PaginationPanel.stories.d.ts.map +1 -0
- package/dist/components/table/pagination/PaginationPanel.stories.js +272 -0
- package/dist/components/table/pagination/PaginationPanel.stories.js.map +1 -0
- package/dist/components/table/tableControls/TableControls.stories.d.ts +151 -0
- package/dist/components/table/tableControls/TableControls.stories.d.ts.map +1 -0
- package/dist/components/table/tableControls/TableControls.stories.js +356 -0
- package/dist/components/table/tableControls/TableControls.stories.js.map +1 -0
- package/dist/components/table/tableControls/TableSettingsDropdown.d.ts +27 -1
- package/dist/components/table/tableControls/TableSettingsDropdown.d.ts.map +1 -1
- package/dist/components/table/tableControls/TableSettingsDropdown.js +53 -26
- package/dist/components/table/tableControls/TableSettingsDropdown.js.map +1 -1
- package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts +2 -0
- package/dist/components/table/tableControls/TableSettingsDropdown.test.d.ts.map +1 -0
- package/dist/components/table/tableControls/TableSettingsDropdown.test.js +178 -0
- package/dist/components/table/tableControls/TableSettingsDropdown.test.js.map +1 -0
- package/dist/components/tabs/Tabs.stories.d.ts +22 -4
- package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.stories.js +398 -22
- package/dist/components/tabs/Tabs.stories.js.map +1 -1
- package/dist/components/tabs/TabsItem.stories.d.ts +54 -1
- package/dist/components/tabs/TabsItem.stories.d.ts.map +1 -1
- package/dist/components/tabs/TabsItem.stories.js +61 -9
- package/dist/components/tabs/TabsItem.stories.js.map +1 -1
- package/dist/components/toast/Toast.stories.d.ts +103 -10
- package/dist/components/toast/Toast.stories.d.ts.map +1 -1
- package/dist/components/toast/Toast.stories.js +409 -47
- package/dist/components/toast/Toast.stories.js.map +1 -1
- package/dist/components/toggle/Toggle.stories.d.ts +61 -46
- package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.stories.js +311 -122
- package/dist/components/toggle/Toggle.stories.js.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.d.ts +78 -6
- package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.js +413 -7
- package/dist/components/tooltip/Tooltip.stories.js.map +1 -1
- package/dist/components/tooltip/TooltipWrapper.stories.d.ts +71 -7
- package/dist/components/tooltip/TooltipWrapper.stories.d.ts.map +1 -1
- package/dist/components/tooltip/TooltipWrapper.stories.js +238 -10
- package/dist/components/tooltip/TooltipWrapper.stories.js.map +1 -1
- package/dist/index.css +8 -0
- package/dist/index.css.map +1 -1
- package/dist/utils/PopupParentContext.stories.d.ts +17 -0
- package/dist/utils/PopupParentContext.stories.d.ts.map +1 -0
- package/dist/utils/PopupParentContext.stories.js +266 -0
- package/dist/utils/PopupParentContext.stories.js.map +1 -0
- package/dist/utils/getDefaultPopupParent.d.ts.map +1 -1
- package/dist/utils/getDefaultPopupParent.js +6 -0
- package/dist/utils/getDefaultPopupParent.js.map +1 -1
- package/package.json +1 -1
- package/src/components/articleCard/ArticleCard.stories.tsx +524 -111
- package/src/components/avatar/Avatar.stories.tsx +504 -59
- package/src/components/avatarGroup/AvatarGroup.stories.tsx +977 -175
- package/src/components/banner/Banner.stories.tsx +7 -3
- package/src/components/card/Card.stories.tsx +466 -36
- package/src/components/combobox/Combobox.stories.tsx +867 -260
- package/src/components/datePicker/DatePicker.stories.tsx +777 -60
- package/src/components/dateTimePicker/DateTimePicker.stories.tsx +910 -132
- package/src/components/editableText/EditableText.stories.tsx +567 -91
- package/src/components/formField/FormField.test.tsx +6 -0
- package/src/components/formField/FormField.tsx +5 -0
- package/src/components/formField/fieldset/Fieldset.stories.tsx +761 -51
- package/src/components/formField/inputs/checkbox/CheckboxGroup.tsx +1 -1
- package/src/components/formField/inputs/checkbox/CheckboxInput.tsx +1 -1
- package/src/components/formField/inputs/colourPickerDropdown/ColourPickerDropdown.stories.tsx +504 -11
- package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +17 -4
- package/src/components/formField/inputs/radio/RadioButtonInput.stories.tsx +71 -59
- package/src/components/formField/inputs/selectDropdown/SelectDropdown.stories.tsx +1079 -168
- package/src/components/formField/inputs/time/TimeInput.stories.tsx +1140 -104
- package/src/components/formField/label/Label.stories.tsx +317 -8
- package/src/components/icoText/IcoText.stories.tsx +442 -31
- package/src/components/kpiCard/KPICard.stories.tsx +475 -30
- package/src/components/kvpList/KVPList.stories.tsx +593 -26
- package/src/components/modal/Modal.stories.tsx +963 -26
- package/src/components/modal/modalManager/ModalManager.stories.tsx +612 -454
- package/src/components/pill/Pill.stories.tsx +11 -13
- package/src/components/pill/Pill.tsx +1 -0
- package/src/components/row/Row.stories.tsx +474 -58
- package/src/components/searchBar/SearchBar.stories.tsx +570 -38
- package/src/components/section/Section.stories.tsx +723 -70
- package/src/components/singleUser/SingleUser.stories.tsx +393 -34
- package/src/components/slideoverManager/SlideoverManager.stories.tsx +572 -342
- package/src/components/table/DSDefaultColDef.ts +25 -5
- package/src/components/table/Table.stories.tsx +411 -3
- package/src/components/table/Table.tsx +9 -2
- package/src/components/table/TableFooter.stories.tsx +196 -0
- package/src/components/table/TableHeader.stories.tsx +251 -0
- package/src/components/table/cellEditors/DateCellEditor.stories.tsx +245 -0
- package/src/components/table/cellRenderers/BooleanCellRenderer.stories.tsx +278 -0
- package/src/components/table/cellRenderers/ButtonCellRenderer.stories.tsx +333 -0
- package/src/components/table/cellRenderers/CheckboxCellRenderer.stories.tsx +337 -0
- package/src/components/table/cellRenderers/CheckboxCellRenderer.tsx +5 -1
- package/src/components/table/cellRenderers/DefaultCellRenderer.stories.tsx +342 -0
- package/src/components/table/cellRenderers/InlineTextCellRenderer.stories.tsx +292 -0
- package/src/components/table/cellRenderers/SelectDropdownCellRenderer.stories.tsx +369 -0
- package/src/components/table/columnFilters/BooleanFilter.stories.tsx +268 -0
- package/src/components/table/columnFilters/TimeFilter.stories.tsx +281 -0
- package/src/components/table/pagination/PaginationPanel.stories.tsx +327 -0
- package/src/components/table/tableControls/TableControls.stories.tsx +415 -0
- package/src/components/table/tableControls/TableSettingsDropdown.test.tsx +207 -0
- package/src/components/table/tableControls/TableSettingsDropdown.tsx +103 -39
- package/src/components/tabs/Tabs.stories.tsx +540 -60
- package/src/components/tabs/TabsItem.stories.tsx +82 -8
- package/src/components/toast/Toast.stories.tsx +539 -77
- package/src/components/toggle/Toggle.stories.tsx +371 -135
- package/src/components/tooltip/Tooltip.stories.tsx +606 -15
- package/src/components/tooltip/TooltipWrapper.stories.tsx +348 -12
- package/src/docs/Contributing.mdx +241 -0
- package/src/docs/UsingComponents.mdx +93 -0
- package/src/docs/Welcome.mdx +68 -0
- package/src/global.scss +7 -0
- package/src/utils/PopupParentContext.stories.tsx +367 -0
- package/src/utils/getDefaultPopupParent.ts +6 -0
- package/.ralph/storybook-upgrade/knowledge.md +0 -308
- package/.ralph/storybook-upgrade/prd.json +0 -777
- package/.ralph/storybook-upgrade/progress.md +0 -342
- package/src/components/table/TableWIP.mdx +0 -3
package/component-library.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Auto-generated reference for AI agents (Sophia, analyze-design, etc.)
|
|
4
4
|
> Source: `src/components/` · Public API: `src/index.ts`
|
|
5
|
-
> Last updated: 2026-
|
|
5
|
+
> Last updated: 2026-05-05
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -180,27 +180,86 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
|
|
|
180
180
|
### 5. Card
|
|
181
181
|
|
|
182
182
|
**File:** `src/components/card/Card.tsx` · **Public export:** Yes
|
|
183
|
+
**Also exports:** `CardProps`, `Card.Props`, `Card.AccessibleNameProps`, `Card.InteractiveProps`, `Card.InteractionProps` types; `getCardInteractionProps` utility
|
|
183
184
|
|
|
184
|
-
**Use case:**
|
|
185
|
+
**Use case:** Surface component for grouping related content into a visually distinct container. Two modes: **static** (read-only content display) and **interactive** (clickable, `role="button"`, keyboard support, chevron→arrow icon). Foundation for `ArticleCard` and `KPICard`.
|
|
185
186
|
|
|
186
187
|
| Prop | Type | Required | Default | Description |
|
|
187
188
|
|---|---|---|---|---|
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
189
|
+
| `children` | `ReactNode` | No | — | Content rendered inside card body |
|
|
190
|
+
| `spacing` | `'default' \| 'dense'` | No | `'default'` | Padding variant. `'dense'` uses `--spacing-small` |
|
|
191
|
+
| `disabled` | `boolean` | No | `false` | Disables interactive card (no-op on static cards) |
|
|
192
|
+
| `onClick` | `(e: MouseEvent<HTMLElement>) => void` | No | — | Switches card to interactive mode |
|
|
193
|
+
| `onKeyDown` | `(e: KeyboardEvent<HTMLElement>) => void` | No | — | Additional keydown handler (interactive only) |
|
|
194
|
+
| `aria-label` | `string` | **Required on interactive cards** | — | Accessible name |
|
|
195
|
+
| `aria-labelledby` | `string` | **Required on interactive cards** | — | Alternative to `aria-label` |
|
|
196
|
+
| `className` | `string` | No | — | Additional CSS class on root `<figure>` |
|
|
197
|
+
|
|
198
|
+
**Variants:** static (no `onClick`) / interactive (`onClick` provided, renders `role="button"`) / disabled interactive
|
|
199
|
+
|
|
200
|
+
**Key features:**
|
|
201
|
+
- Renders as `<figure>`
|
|
202
|
+
- Interactive cards: `role="button"`, `tabIndex={0}`, chevron-right icon (swaps to arrow-right on hover)
|
|
203
|
+
- `aria-label` or `aria-labelledby` **required** when `onClick` provided — throws in dev, console.error in prod without one
|
|
204
|
+
- `disabled` only has effect when `onClick` is also provided; sets `aria-disabled={true}`, suppresses click/keyboard
|
|
205
|
+
- Never nest interactive elements (`Button`, `a`, `input`) inside a clickable card — WCAG 2.1 violation
|
|
206
|
+
|
|
207
|
+
> **MANIFEST CORRECTION (2026-05-05):** Card was fully rewritten. Old props `title`, `paragraph`, `icon`, `tagText`, `tagColor`, etc. are GONE. Use `ArticleCard` or `KPICard` for those use cases.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
### 5a. ArticleCard
|
|
212
|
+
|
|
213
|
+
**File:** `src/components/articleCard/ArticleCard.tsx` · **Public export:** Yes
|
|
214
|
+
**Also exports:** `ArticleCardProps` type
|
|
215
|
+
|
|
216
|
+
**Use case:** Card variant for article/content listings — combines an icon, heading, paragraph, and optional tag. Supports two modes: linked (heading wraps an `<a>`) or interactive shell (passes `onClick` through to `Card`).
|
|
217
|
+
|
|
218
|
+
| Prop | Type | Required | Default | Description |
|
|
219
|
+
|---|---|---|---|---|
|
|
220
|
+
| `title` | `ReactNode` | No | — | Card heading |
|
|
221
|
+
| `paragraph` | `ReactNode` | No | — | Descriptive text |
|
|
190
222
|
| `icon` | `IconName` | No | — | Leading icon |
|
|
191
|
-
| `iconColor` | `
|
|
223
|
+
| `iconColor` | `IcoTextIconProps['color']` | No | — | Icon color |
|
|
192
224
|
| `iconScreenReaderText` | `string` | No | — | SR text for icon |
|
|
193
|
-
| `tagText` | `string` | No | — | Tag label
|
|
225
|
+
| `tagText` | `string` | No | — | Tag label |
|
|
194
226
|
| `tagColor` | `TagColor` | No | — | Tag color |
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
227
|
+
| `disabled` | `boolean` | No | `false` | Disabled state |
|
|
228
|
+
| `href` | `string` | Mutually exclusive with `onClick` | — | **Linked mode**: heading becomes `<a href>` |
|
|
229
|
+
| `onClick` | `(e: MouseEvent<HTMLElement>) => void` | Mutually exclusive with `href` | — | **Interactive shell mode** |
|
|
230
|
+
| `aria-label` | `string` | No | — | Accessible name override |
|
|
231
|
+
| `aria-labelledby` | `string` | No | — | Alternative accessible name |
|
|
232
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
233
|
+
|
|
234
|
+
**Key features:**
|
|
235
|
+
- Wraps `Card` + `IcoText` composite
|
|
236
|
+
- Linked mode: uses `href` on heading `<a>`, card shell is non-interactive
|
|
237
|
+
- Interactive shell mode: passes `onClick`/`disabled` to `Card`
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
### 5b. KPICard
|
|
197
242
|
|
|
198
|
-
**
|
|
243
|
+
**File:** `src/components/kpiCard/KPICard.tsx` · **Public export:** Yes
|
|
244
|
+
**Also exports:** `KPICardProps` type
|
|
245
|
+
|
|
246
|
+
**Use case:** Dense KPI metric tile — label above, prominent value below with optional % suffix and optional children (e.g. a trend indicator). Uses `Card`'s `dense` spacing. Supports optional `onClick` for interactive KPI tiles.
|
|
247
|
+
|
|
248
|
+
| Prop | Type | Required | Default | Description |
|
|
249
|
+
|---|---|---|---|---|
|
|
250
|
+
| `label` | `ReactNode` | Yes | — | Metric label (e.g. "Attendance rate") |
|
|
251
|
+
| `value` | `ReactNode` | Yes | — | Metric value (e.g. `94`) |
|
|
252
|
+
| `isPercentage` | `boolean` | No | `false` | Appends `%` suffix after value |
|
|
253
|
+
| `children` | `ReactNode` | No | — | Additional content (e.g. trend indicator) |
|
|
254
|
+
| `disabled` | `boolean` | No | `false` | Disabled state (interactive only) |
|
|
255
|
+
| `onClick` | `(e: MouseEvent<HTMLElement>) => void` | No | — | Makes card interactive |
|
|
256
|
+
| `aria-label` | `string` | Required with `onClick` | — | Accessible name |
|
|
257
|
+
| `aria-labelledby` | `string` | Required with `onClick` | — | Alternative accessible name |
|
|
258
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
199
259
|
|
|
200
260
|
**Key features:**
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
- `aria-label="Card"` hardcoded — consider overriding via `...rest`
|
|
261
|
+
- Wraps `Card` with `spacing="dense"`; passes interaction props via `getCardInteractionProps`
|
|
262
|
+
- CSS: `ds-kpi-card`, `ds-kpi-card__label`, `ds-kpi-card__value`, `ds-kpi-card__suffix`
|
|
204
263
|
|
|
205
264
|
---
|
|
206
265
|
|
|
@@ -574,6 +633,74 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
|
|
|
574
633
|
|
|
575
634
|
---
|
|
576
635
|
|
|
636
|
+
### 21b. IcoText
|
|
637
|
+
|
|
638
|
+
**File:** `src/components/icoText/IcoText.tsx` · **Public export:** Yes
|
|
639
|
+
**Also exports:** `IcoTextProps`, `IcoTextHeadingProps`, `IcoTextParagraphProps`, `IcoTextIconProps` types
|
|
640
|
+
|
|
641
|
+
**Use case:** Composite layout pattern — icon on the left, heading and paragraph on the right. Used internally by `ArticleCard`. Use directly when you need an icon + text block without a card shell.
|
|
642
|
+
|
|
643
|
+
**Compound components:**
|
|
644
|
+
|
|
645
|
+
| Sub-component | Renders as | Description |
|
|
646
|
+
|---|---|---|
|
|
647
|
+
| `IcoText` (root) | `<div class="ds-ico-text">` | Container; separates icon children from content children |
|
|
648
|
+
| `IcoText.Icon` | `<Icon>` | Leading icon with `ds-ico-text__icon` class |
|
|
649
|
+
| `IcoText.Heading` | `<h4 class="ds-ico-text__heading">` | Heading text |
|
|
650
|
+
| `IcoText.Paragraph` | `<p class="ds-ico-text__paragraph">` | Body text |
|
|
651
|
+
|
|
652
|
+
**`IcoText.Icon` props:**
|
|
653
|
+
|
|
654
|
+
| Prop | Type | Required | Default | Description |
|
|
655
|
+
|---|---|---|---|---|
|
|
656
|
+
| `name` | `IconName` | Yes | — | Icon identifier |
|
|
657
|
+
| `color` | `string` | No | — | Icon color |
|
|
658
|
+
| `screenReaderText` | `string` | No | — | SR-only text for icon |
|
|
659
|
+
| `size` | `12 \| 16 \| 24` | No | `24` | Icon size |
|
|
660
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
661
|
+
|
|
662
|
+
**Key features:**
|
|
663
|
+
- Root separates `IcoText.Icon` children into a flex-left slot; all other children go into `ds-ico-text__content`
|
|
664
|
+
- `IcoText.Heading` and `IcoText.Paragraph` accept all standard HTML heading/paragraph attributes
|
|
665
|
+
|
|
666
|
+
---
|
|
667
|
+
|
|
668
|
+
### 21c. KVPList
|
|
669
|
+
|
|
670
|
+
**File:** `src/components/kvpList/KVPList.tsx` · **Public export:** Yes
|
|
671
|
+
**Also exports:** `KVPListProps`, `KVPListRowProps`, `KVPListTermProps`, `KVPListDefinitionProps` types
|
|
672
|
+
|
|
673
|
+
**Use case:** Key/value pair list for detail panels, profiles, and data summary displays. Uses semantic `<dl>`/`<dt>`/`<dd>` markup for accessibility. Supports vertical and horizontal row layouts, bold/neutral value prominence, and optional `%` suffix.
|
|
674
|
+
|
|
675
|
+
**Compound components:**
|
|
676
|
+
|
|
677
|
+
| Sub-component | Renders as | Description |
|
|
678
|
+
|---|---|---|
|
|
679
|
+
| `KVPList` (root) | `<div class="ds-kvp-list">` | Container; auto-adds `role="group"` when `aria-label`/`aria-labelledby` provided |
|
|
680
|
+
| `KVPList.Row` | `<dl class="ds-kvp-list__row">` | Single key/value row |
|
|
681
|
+
| `KVPList.Term` | `<dt class="ds-kvp-list__term">` | The key/label |
|
|
682
|
+
| `KVPList.Definition` | `<dd class="ds-kvp-list__description">` | The value |
|
|
683
|
+
|
|
684
|
+
**`KVPList.Row` props:**
|
|
685
|
+
|
|
686
|
+
| Prop | Type | Default | Description |
|
|
687
|
+
|---|---|---|---|
|
|
688
|
+
| `orientation` | `'horizontal' \| 'vertical'` | `'vertical'` | Stacking direction of term + definition |
|
|
689
|
+
|
|
690
|
+
**`KVPList.Definition` props:**
|
|
691
|
+
|
|
692
|
+
| Prop | Type | Default | Description |
|
|
693
|
+
|---|---|---|---|
|
|
694
|
+
| `isRow` | `boolean` | `false` | Adds `ds-kvp-list__description--row` modifier |
|
|
695
|
+
| `isPercentage` | `boolean` | `false` | Appends `%` suffix in `<span class="ds-kvp-list__suffix">` |
|
|
696
|
+
| `prominence` | `'neutral' \| 'strong'` | `'neutral'` | Controls text weight/color emphasis |
|
|
697
|
+
|
|
698
|
+
**Key features:**
|
|
699
|
+
- All sub-components accept `className` and standard HTML element attributes via `...rest`
|
|
700
|
+
- `KVPList` root adds `role="group"` automatically when `aria-label` or `aria-labelledby` is present
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
577
704
|
### 22. Modal
|
|
578
705
|
|
|
579
706
|
**Files:** `src/components/modal/Modal.tsx` + `src/components/modal/modalManager/ModalManager.tsx` · **Public export:** Yes (both)
|
|
@@ -1086,7 +1213,9 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
|
|
|
1086
1213
|
| `AvatarGroup` | Yes | ascending/descending; overflow count; items or children API | — |
|
|
1087
1214
|
| `Banner` | Yes | level: info/neutral/warning/destructive | CVA |
|
|
1088
1215
|
| `Button` | Yes | 7 variants; 2 sizes; icon-only; borderless; error | — |
|
|
1089
|
-
| `Card` | Yes |
|
|
1216
|
+
| `Card` | Yes | static/interactive (`onClick`)/disabled; `spacing`: default/dense | — |
|
|
1217
|
+
| `ArticleCard` | Yes | linked (`href`) or interactive shell (`onClick`); icon/title/paragraph/tag | — |
|
|
1218
|
+
| `KPICard` | Yes | label+value metric tile; `isPercentage`; optional interactive | — |
|
|
1090
1219
|
| `DatePicker` | Yes | any date-fns format; error state | Radix Popover, react-day-picker |
|
|
1091
1220
|
| `Dropdown` | Yes | compound: Trigger/Content/Item/SelectItem/Separator/Group | Radix DropdownMenu |
|
|
1092
1221
|
| `EditableText` | Yes | single-line/multiline; controlled editing | — |
|
|
@@ -1103,6 +1232,8 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
|
|
|
1103
1232
|
| `ColourPickerDropdown` | Yes | error state; controlled color | @uiw/react-color |
|
|
1104
1233
|
| `Heading` | Yes | level: 1–4 (h1–h4) | — |
|
|
1105
1234
|
| `Icon` | Yes | ~100 icons; sizes 12/16/24; custom color | lucide-react |
|
|
1235
|
+
| `IcoText` | Yes | compound: Icon/Heading/Paragraph; icon-left layout | — |
|
|
1236
|
+
| `KVPList` | Yes | compound: Row/Term/Definition; `orientation`; `prominence`; `isPercentage` | — |
|
|
1106
1237
|
| `Modal` + `ModalManager` | Yes | compound sub-components; PubSub imperative control | Radix Dialog |
|
|
1107
1238
|
| `Pill` | Yes | toggle / checkbox modes | — |
|
|
1108
1239
|
| `Progress` | Yes | value/max controlled | Radix Progress |
|
|
@@ -1,18 +1,144 @@
|
|
|
1
1
|
import type { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { ArticleCard } from './ArticleCard';
|
|
3
|
+
declare function ArticleCardDocsPage(): import("react/jsx-runtime").JSX.Element;
|
|
2
4
|
declare const meta: {
|
|
3
5
|
title: string;
|
|
4
6
|
component: (props: import("./ArticleCard").ArticleCardProps) => React.JSX.Element;
|
|
7
|
+
tags: string[];
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: string;
|
|
10
|
+
docs: {
|
|
11
|
+
page: typeof ArticleCardDocsPage;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
argTypes: {
|
|
15
|
+
title: {
|
|
16
|
+
control: "text";
|
|
17
|
+
description: string;
|
|
18
|
+
table: {
|
|
19
|
+
type: {
|
|
20
|
+
summary: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
paragraph: {
|
|
25
|
+
control: "text";
|
|
26
|
+
description: string;
|
|
27
|
+
table: {
|
|
28
|
+
type: {
|
|
29
|
+
summary: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
icon: {
|
|
34
|
+
control: {
|
|
35
|
+
type: "select";
|
|
36
|
+
};
|
|
37
|
+
options: (string | undefined)[];
|
|
38
|
+
description: string;
|
|
39
|
+
table: {
|
|
40
|
+
type: {
|
|
41
|
+
summary: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
iconColor: {
|
|
46
|
+
control: "text";
|
|
47
|
+
description: string;
|
|
48
|
+
table: {
|
|
49
|
+
type: {
|
|
50
|
+
summary: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
iconScreenReaderText: {
|
|
55
|
+
control: "text";
|
|
56
|
+
description: string;
|
|
57
|
+
table: {
|
|
58
|
+
type: {
|
|
59
|
+
summary: string;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
tagText: {
|
|
64
|
+
control: "text";
|
|
65
|
+
description: string;
|
|
66
|
+
table: {
|
|
67
|
+
type: {
|
|
68
|
+
summary: string;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
tagColor: {
|
|
73
|
+
control: {
|
|
74
|
+
type: "select";
|
|
75
|
+
};
|
|
76
|
+
options: (string | undefined)[];
|
|
77
|
+
description: string;
|
|
78
|
+
table: {
|
|
79
|
+
type: {
|
|
80
|
+
summary: string;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
disabled: {
|
|
85
|
+
control: "boolean";
|
|
86
|
+
description: string;
|
|
87
|
+
table: {
|
|
88
|
+
type: {
|
|
89
|
+
summary: string;
|
|
90
|
+
};
|
|
91
|
+
defaultValue: {
|
|
92
|
+
summary: string;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
onClick: {
|
|
97
|
+
control: false;
|
|
98
|
+
description: string;
|
|
99
|
+
table: {
|
|
100
|
+
type: {
|
|
101
|
+
summary: string;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
'aria-label': {
|
|
106
|
+
control: "text";
|
|
107
|
+
description: string;
|
|
108
|
+
table: {
|
|
109
|
+
type: {
|
|
110
|
+
summary: string;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
href: {
|
|
115
|
+
control: "text";
|
|
116
|
+
description: string;
|
|
117
|
+
table: {
|
|
118
|
+
type: {
|
|
119
|
+
summary: string;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
className: {
|
|
124
|
+
control: false;
|
|
125
|
+
description: string;
|
|
126
|
+
table: {
|
|
127
|
+
type: {
|
|
128
|
+
summary: string;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
};
|
|
5
133
|
};
|
|
6
|
-
type Story = StoryObj<typeof meta>;
|
|
7
|
-
export declare const CardWithTitleAndParagraph: Story;
|
|
8
|
-
export declare const CardWithTitleParagraphAndIcon: Story;
|
|
9
|
-
export declare const TheEverythingCard: Story;
|
|
10
|
-
export declare const CardWithTitleParagraphAndTag: Story;
|
|
11
|
-
export declare const CardWithTitleAndIcon: Story;
|
|
12
|
-
export declare const CardWithParagraph: Story;
|
|
13
|
-
export declare const ClickableDisabledCard: Story;
|
|
14
|
-
export declare const UnclickableCard: Story;
|
|
15
|
-
export declare const TextOnly: Story;
|
|
16
|
-
export declare const LinkedArticle: Story;
|
|
17
134
|
export default meta;
|
|
135
|
+
type Story = StoryObj<typeof ArticleCard>;
|
|
136
|
+
export declare const Default: Story;
|
|
137
|
+
export declare const Static: Story;
|
|
138
|
+
export declare const WithTag: Story;
|
|
139
|
+
export declare const FullComposition: Story;
|
|
140
|
+
export declare const LinkedMode: Story;
|
|
141
|
+
export declare const InteractiveShell: Story;
|
|
142
|
+
export declare const Disabled: Story;
|
|
143
|
+
export declare const LinkedDisabled: Story;
|
|
18
144
|
//# sourceMappingURL=ArticleCard.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticleCard.stories.d.ts","sourceRoot":"","sources":["../../../src/components/articleCard/ArticleCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ArticleCard.stories.d.ts","sourceRoot":"","sources":["../../../src/components/articleCard/ArticleCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAW5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiF5C,iBAAS,mBAAmB,4CAmB3B;AAMD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE0B,CAAC;AAErC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAkD1C,eAAO,MAAM,OAAO,EAAE,KAiBrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAmCpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAuCrB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KA6C7B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAyCxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAuC9B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAyCtB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KA+B5B,CAAC"}
|