@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
|
@@ -1,47 +1,458 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import {
|
|
3
|
+
Controls,
|
|
4
|
+
Heading as DocHeading,
|
|
5
|
+
Markdown,
|
|
6
|
+
Primary as DocPrimary,
|
|
7
|
+
Stories,
|
|
8
|
+
Subtitle,
|
|
9
|
+
Title,
|
|
10
|
+
} from '@storybook/addon-docs/blocks';
|
|
2
11
|
import { IcoText } from './IcoText';
|
|
3
12
|
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Docs page content
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
const DESCRIPTION_INTRO = [
|
|
18
|
+
'`IcoText` is a compound layout component that pairs an icon in a left rail with a heading and/or paragraph.',
|
|
19
|
+
'It is the canonical icon-plus-text primitive in this design system — used internally by `ArticleCard`',
|
|
20
|
+
'and available for direct use in any context that needs an icon anchoring labelled content.',
|
|
21
|
+
].join(' ');
|
|
22
|
+
|
|
23
|
+
const ICON_PROPS = [
|
|
24
|
+
'| Prop | Type | Default | Description |',
|
|
25
|
+
'|---|---|---|---|',
|
|
26
|
+
'| `name` | `IconName` | — | **Required.** The icon identifier |',
|
|
27
|
+
'| `size` | `12 \\| 16 \\| 24` | `24` | Icon size in pixels |',
|
|
28
|
+
'| `color` | `string` | — | Icon colour — use a CSS token e.g. `var(--color-grey-600)` |',
|
|
29
|
+
'| `screenReaderText` | `string` | — | Accessible label. Omit for decorative icons (icon becomes `aria-hidden`) |',
|
|
30
|
+
'| `className` | `string` | — | Additional CSS classes |',
|
|
31
|
+
].join('\n');
|
|
32
|
+
|
|
33
|
+
const HEADING_PROPS = [
|
|
34
|
+
'| Prop | Type | Default | Description |',
|
|
35
|
+
'|---|---|---|---|',
|
|
36
|
+
'| `children` | `ReactNode` | — | **Required.** Heading text |',
|
|
37
|
+
'| `...HTMLAttributes<h4>` | | | All standard heading element attributes forwarded |',
|
|
38
|
+
].join('\n');
|
|
39
|
+
|
|
40
|
+
const PARAGRAPH_PROPS = [
|
|
41
|
+
'| Prop | Type | Default | Description |',
|
|
42
|
+
'|---|---|---|---|',
|
|
43
|
+
'| `children` | `ReactNode` | — | **Required.** Paragraph text |',
|
|
44
|
+
'| `...HTMLAttributes<p>` | | | All standard paragraph element attributes forwarded |',
|
|
45
|
+
].join('\n');
|
|
46
|
+
|
|
47
|
+
const USAGE_GUIDANCE = [
|
|
48
|
+
'### When to use',
|
|
49
|
+
'',
|
|
50
|
+
'- Pairing a meaningful icon with a short heading and/or description — attendance alerts, feature blurbs, help text',
|
|
51
|
+
'- Inside panels, list items, or cards where an icon anchors the content',
|
|
52
|
+
'- As the building block for `ArticleCard` icon-rail layouts',
|
|
53
|
+
'',
|
|
54
|
+
'---',
|
|
55
|
+
'',
|
|
56
|
+
'### When NOT to use',
|
|
57
|
+
'',
|
|
58
|
+
'| Situation | Use instead |',
|
|
59
|
+
'|---|---|',
|
|
60
|
+
'| Content inside a navigable card | [`ArticleCard`](?path=/docs/components-card-articlecard--docs) |',
|
|
61
|
+
'| Icon with no text | [`Icon`](?path=/docs/components-icon--docs) directly |',
|
|
62
|
+
'| Long-form prose | Semantic HTML `<p>` with a separate heading |',
|
|
63
|
+
'| Interactive element | Wrap `IcoText` inside a `Card` or `Button` — never add `onClick` to `IcoText` itself |',
|
|
64
|
+
].join('\n');
|
|
65
|
+
|
|
66
|
+
const DEVELOPER_NOTES = [
|
|
67
|
+
'### Critical usage patterns',
|
|
68
|
+
'',
|
|
69
|
+
'**`IcoText.Icon` is automatically hoisted to the left rail** regardless of position in JSX.',
|
|
70
|
+
'The root inspects `children`, pulls out any `IcoText.Icon` elements into a flex-shrink-0 left column,',
|
|
71
|
+
'and places all other children (Heading, Paragraph) in the content column.',
|
|
72
|
+
'',
|
|
73
|
+
'```tsx',
|
|
74
|
+
'<IcoText>',
|
|
75
|
+
' <IcoText.Icon name="guardians" />',
|
|
76
|
+
' <IcoText.Heading>Year 9 Attendance</IcoText.Heading>',
|
|
77
|
+
' <IcoText.Paragraph>28 pupils · 94.2% this term</IcoText.Paragraph>',
|
|
78
|
+
'</IcoText>',
|
|
79
|
+
'```',
|
|
80
|
+
'',
|
|
81
|
+
'**`IcoText.Heading` always renders as `<h4>`.** There is no `level` prop. Verify your document',
|
|
82
|
+
'heading hierarchy is correct before using `IcoText` as a standalone heading.',
|
|
83
|
+
'',
|
|
84
|
+
'**Omit `screenReaderText` for decorative icons.** The icon is rendered with `aria-hidden="true"`',
|
|
85
|
+
'when `screenReaderText` is absent. The heading or surrounding text should carry the accessible meaning.',
|
|
86
|
+
'',
|
|
87
|
+
'---',
|
|
88
|
+
'',
|
|
89
|
+
'### Accessibility',
|
|
90
|
+
'',
|
|
91
|
+
'- Decorative icons (no `screenReaderText`): `aria-hidden="true"` — screen readers skip them',
|
|
92
|
+
'- Meaningful icons: provide `screenReaderText` so the icon has an accessible label',
|
|
93
|
+
'- `IcoText.Heading` renders `<h4>` — verify your document heading hierarchy',
|
|
94
|
+
'- `IcoText.Paragraph` renders `<p>` — semantically appropriate for supporting text',
|
|
95
|
+
'',
|
|
96
|
+
'---',
|
|
97
|
+
'',
|
|
98
|
+
'### TypeScript types',
|
|
99
|
+
'',
|
|
100
|
+
'```ts',
|
|
101
|
+
"import { IcoText } from '@arbor-education/design-system.components';",
|
|
102
|
+
"import type { IcoTextProps, IcoTextIconProps, IcoTextHeadingProps, IcoTextParagraphProps } from '@arbor-education/design-system.components';",
|
|
103
|
+
'```',
|
|
104
|
+
].join('\n');
|
|
105
|
+
|
|
106
|
+
const RELATED_COMPONENTS = [
|
|
107
|
+
'## Related components',
|
|
108
|
+
'',
|
|
109
|
+
'[ArticleCard](?path=/docs/components-card-articlecard--docs) · [Icon](?path=/docs/components-icon--docs) · [Card](?path=/docs/components-card--docs)',
|
|
110
|
+
].join('\n');
|
|
111
|
+
|
|
112
|
+
const PROPS_INTRO = 'The preview below is wired to the **Controls** panel — tweak any prop to see the story update in real time.';
|
|
113
|
+
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Custom DocsPage
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
function IcoTextDocsPage() {
|
|
119
|
+
return (
|
|
120
|
+
<>
|
|
121
|
+
<Title />
|
|
122
|
+
<Subtitle />
|
|
123
|
+
<Markdown>{DESCRIPTION_INTRO}</Markdown>
|
|
124
|
+
<DocHeading>Interactive example</DocHeading>
|
|
125
|
+
<Markdown>{PROPS_INTRO}</Markdown>
|
|
126
|
+
<DocPrimary />
|
|
127
|
+
<Controls />
|
|
128
|
+
<DocHeading>IcoText.Icon props</DocHeading>
|
|
129
|
+
<Markdown>{ICON_PROPS}</Markdown>
|
|
130
|
+
<DocHeading>IcoText.Heading props</DocHeading>
|
|
131
|
+
<Markdown>{HEADING_PROPS}</Markdown>
|
|
132
|
+
<DocHeading>IcoText.Paragraph props</DocHeading>
|
|
133
|
+
<Markdown>{PARAGRAPH_PROPS}</Markdown>
|
|
134
|
+
<DocHeading>Usage guidance</DocHeading>
|
|
135
|
+
<Markdown>{USAGE_GUIDANCE}</Markdown>
|
|
136
|
+
<DocHeading>Developer notes</DocHeading>
|
|
137
|
+
<Markdown>{DEVELOPER_NOTES}</Markdown>
|
|
138
|
+
<DocHeading>Examples</DocHeading>
|
|
139
|
+
<Stories title="" />
|
|
140
|
+
<Markdown>{RELATED_COMPONENTS}</Markdown>
|
|
141
|
+
</>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Meta
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
|
|
4
149
|
const meta = {
|
|
5
150
|
title: 'Components/IcoText',
|
|
6
151
|
component: IcoText,
|
|
152
|
+
tags: ['autodocs'],
|
|
7
153
|
parameters: {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
154
|
+
layout: 'padded',
|
|
155
|
+
docs: { page: IcoTextDocsPage },
|
|
156
|
+
},
|
|
157
|
+
argTypes: {
|
|
158
|
+
className: {
|
|
159
|
+
control: false,
|
|
160
|
+
description: 'Additional CSS class names on the root `div.ds-ico-text` element.',
|
|
161
|
+
table: { type: { summary: 'string' } },
|
|
162
|
+
},
|
|
163
|
+
children: {
|
|
164
|
+
control: false,
|
|
165
|
+
description: 'Compose using `IcoText.Icon`, `IcoText.Heading`, and `IcoText.Paragraph` sub-components.',
|
|
166
|
+
table: { type: { summary: 'ReactNode' } },
|
|
13
167
|
},
|
|
14
168
|
},
|
|
15
169
|
} satisfies Meta<typeof IcoText>;
|
|
16
170
|
|
|
17
|
-
|
|
171
|
+
export default meta;
|
|
172
|
+
type Story = StoryObj<typeof IcoText>;
|
|
173
|
+
|
|
174
|
+
// ---------------------------------------------------------------------------
|
|
175
|
+
// Helper: attach a per-story description to docs
|
|
176
|
+
// ---------------------------------------------------------------------------
|
|
177
|
+
|
|
178
|
+
const withDescription = (story: Story, description: string): Story => ({
|
|
179
|
+
...story,
|
|
180
|
+
parameters: {
|
|
181
|
+
...story.parameters,
|
|
182
|
+
docs: { ...story.parameters?.docs, description: { story: description } },
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// ---------------------------------------------------------------------------
|
|
187
|
+
// Template components
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
|
|
190
|
+
const IconSizesTemplate = () => (
|
|
191
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--spacing-xlarge)' }}>
|
|
192
|
+
{([12, 16, 24] as const).map(size => (
|
|
193
|
+
<div key={size}>
|
|
194
|
+
<p className="ds-text" style={{ margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }}>
|
|
195
|
+
{`size={${size}}`}
|
|
196
|
+
</p>
|
|
197
|
+
<IcoText>
|
|
198
|
+
<IcoText.Icon name="guardians" size={size} />
|
|
199
|
+
<IcoText.Heading>Year 9 Attendance</IcoText.Heading>
|
|
200
|
+
<IcoText.Paragraph>28 pupils · 94.2% average this term</IcoText.Paragraph>
|
|
201
|
+
</IcoText>
|
|
202
|
+
</div>
|
|
203
|
+
))}
|
|
204
|
+
</div>
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
const IconColorsTemplate = () => (
|
|
208
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--spacing-xlarge)' }}>
|
|
209
|
+
{[
|
|
210
|
+
{ color: 'var(--color-semantic-info-600)', label: 'Info — var(--color-semantic-info-600)' },
|
|
211
|
+
{ color: 'var(--color-semantic-success-600)', label: 'Success — var(--color-semantic-success-600)' },
|
|
212
|
+
{ color: 'var(--color-semantic-warning-600)', label: 'Warning — var(--color-semantic-warning-600)' },
|
|
213
|
+
{ color: 'var(--color-semantic-destructive-600)', label: 'Destructive — var(--color-semantic-destructive-600)' },
|
|
214
|
+
].map(({ color, label }) => (
|
|
215
|
+
<div key={color}>
|
|
216
|
+
<p className="ds-text" style={{ margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }}>
|
|
217
|
+
{label}
|
|
218
|
+
</p>
|
|
219
|
+
<IcoText>
|
|
220
|
+
<IcoText.Icon name="triangle-alert" color={color} />
|
|
221
|
+
<IcoText.Heading>Attendance alert</IcoText.Heading>
|
|
222
|
+
<IcoText.Paragraph>3 pupils below 90% this half-term</IcoText.Paragraph>
|
|
223
|
+
</IcoText>
|
|
224
|
+
</div>
|
|
225
|
+
))}
|
|
226
|
+
</div>
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
const MultipleParagraphsTemplate = () => (
|
|
230
|
+
<IcoText>
|
|
231
|
+
<IcoText.Icon name="date" />
|
|
232
|
+
<IcoText.Heading>Parents' evening — Tuesday 14 May</IcoText.Heading>
|
|
233
|
+
<IcoText.Paragraph>4:00 pm – 7:00 pm · Main Hall</IcoText.Paragraph>
|
|
234
|
+
<IcoText.Paragraph>Appointments available every 10 minutes. Please arrive 5 minutes early.</IcoText.Paragraph>
|
|
235
|
+
</IcoText>
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
// ---------------------------------------------------------------------------
|
|
239
|
+
// Stories
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
|
|
242
|
+
export const Default: Story = withDescription(
|
|
243
|
+
{
|
|
244
|
+
render: () => (
|
|
245
|
+
<IcoText>
|
|
246
|
+
<IcoText.Icon name="guardians" />
|
|
247
|
+
<IcoText.Heading>Year 9 Attendance</IcoText.Heading>
|
|
248
|
+
<IcoText.Paragraph>28 pupils · 94.2% average this term</IcoText.Paragraph>
|
|
249
|
+
</IcoText>
|
|
250
|
+
),
|
|
251
|
+
},
|
|
252
|
+
'The full canonical composition — `IcoText.Icon` in the left rail, `IcoText.Heading` and `IcoText.Paragraph` in the content column.',
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
export const HeadingOnly: Story = withDescription(
|
|
256
|
+
{
|
|
257
|
+
parameters: {
|
|
258
|
+
controls: { disable: true },
|
|
259
|
+
docs: {
|
|
260
|
+
source: {
|
|
261
|
+
language: 'tsx',
|
|
262
|
+
code: `
|
|
263
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
264
|
+
|
|
265
|
+
function HeadingOnlyExample() {
|
|
266
|
+
return (
|
|
267
|
+
<IcoText>
|
|
268
|
+
<IcoText.Icon name="book-open" />
|
|
269
|
+
<IcoText.Heading>Assessment policy</IcoText.Heading>
|
|
270
|
+
</IcoText>
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
export default HeadingOnlyExample;
|
|
274
|
+
`.trim(),
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
render: () => (
|
|
279
|
+
<IcoText>
|
|
280
|
+
<IcoText.Icon name="book-open" />
|
|
281
|
+
<IcoText.Heading>Assessment policy</IcoText.Heading>
|
|
282
|
+
</IcoText>
|
|
283
|
+
),
|
|
284
|
+
},
|
|
285
|
+
'Icon + Heading with no Paragraph — the compact pattern for short navigational labels.',
|
|
286
|
+
);
|
|
18
287
|
|
|
19
|
-
export const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
288
|
+
export const WithoutIcon: Story = withDescription(
|
|
289
|
+
{
|
|
290
|
+
parameters: {
|
|
291
|
+
controls: { disable: true },
|
|
292
|
+
docs: {
|
|
293
|
+
source: {
|
|
294
|
+
language: 'tsx',
|
|
295
|
+
code: `
|
|
296
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
297
|
+
|
|
298
|
+
function WithoutIconExample() {
|
|
299
|
+
return (
|
|
300
|
+
<IcoText>
|
|
301
|
+
<IcoText.Heading>Behaviour report</IcoText.Heading>
|
|
302
|
+
<IcoText.Paragraph>No incidents recorded this week. All targets met.</IcoText.Paragraph>
|
|
25
303
|
</IcoText>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
export default WithoutIconExample;
|
|
307
|
+
`.trim(),
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
render: () => (
|
|
312
|
+
<IcoText>
|
|
313
|
+
<IcoText.Heading>Behaviour report</IcoText.Heading>
|
|
314
|
+
<IcoText.Paragraph>No incidents recorded this week. All targets met.</IcoText.Paragraph>
|
|
315
|
+
</IcoText>
|
|
316
|
+
),
|
|
317
|
+
},
|
|
318
|
+
'Heading + Paragraph with no icon. The left rail disappears cleanly — `IcoText.Icon` is entirely optional.',
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
export const IconWithScreenReaderText: Story = withDescription(
|
|
322
|
+
{
|
|
323
|
+
parameters: {
|
|
324
|
+
controls: { disable: true },
|
|
325
|
+
docs: {
|
|
326
|
+
source: {
|
|
327
|
+
language: 'tsx',
|
|
328
|
+
code: `
|
|
329
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
330
|
+
|
|
331
|
+
function IconWithScreenReaderTextExample() {
|
|
332
|
+
return (
|
|
333
|
+
<IcoText>
|
|
334
|
+
<IcoText.Icon
|
|
335
|
+
name="triangle-alert"
|
|
336
|
+
color="var(--color-semantic-warning-600)"
|
|
337
|
+
screenReaderText="Warning"
|
|
338
|
+
/>
|
|
339
|
+
<IcoText.Heading>Attendance below target</IcoText.Heading>
|
|
340
|
+
<IcoText.Paragraph>Alice Johnson — 78.4% this term. Intervention recommended.</IcoText.Paragraph>
|
|
34
341
|
</IcoText>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
export default IconWithScreenReaderTextExample;
|
|
345
|
+
`.trim(),
|
|
346
|
+
},
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
render: () => (
|
|
350
|
+
<IcoText>
|
|
351
|
+
<IcoText.Icon name="triangle-alert" color="var(--color-semantic-warning-600)" screenReaderText="Warning" />
|
|
352
|
+
<IcoText.Heading>Attendance below target</IcoText.Heading>
|
|
353
|
+
<IcoText.Paragraph>Alice Johnson — 78.4% this term. Intervention recommended.</IcoText.Paragraph>
|
|
354
|
+
</IcoText>
|
|
355
|
+
),
|
|
356
|
+
},
|
|
357
|
+
'When the icon carries meaning not conveyed by the heading text, provide `screenReaderText`. Without it the icon is `aria-hidden="true"`. Here the warning triangle conveys severity — screen readers announce "Warning, Attendance below target".',
|
|
358
|
+
);
|
|
359
|
+
|
|
360
|
+
export const IconSizes: Story = withDescription(
|
|
361
|
+
{
|
|
362
|
+
parameters: {
|
|
363
|
+
controls: { disable: true },
|
|
364
|
+
docs: {
|
|
365
|
+
source: {
|
|
366
|
+
language: 'tsx',
|
|
367
|
+
code: `
|
|
368
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
369
|
+
|
|
370
|
+
function IconSizesExample() {
|
|
371
|
+
return (
|
|
372
|
+
<>
|
|
373
|
+
<IcoText>
|
|
374
|
+
<IcoText.Icon name="guardians" size={12} />
|
|
375
|
+
<IcoText.Heading>size 12</IcoText.Heading>
|
|
376
|
+
<IcoText.Paragraph>Use in very compact contexts</IcoText.Paragraph>
|
|
377
|
+
</IcoText>
|
|
378
|
+
<IcoText>
|
|
379
|
+
<IcoText.Icon name="guardians" size={16} />
|
|
380
|
+
<IcoText.Heading>size 16</IcoText.Heading>
|
|
381
|
+
<IcoText.Paragraph>Use in moderately compact contexts</IcoText.Paragraph>
|
|
382
|
+
</IcoText>
|
|
383
|
+
<IcoText>
|
|
384
|
+
<IcoText.Icon name="guardians" size={24} />
|
|
385
|
+
<IcoText.Heading>size 24 (default)</IcoText.Heading>
|
|
386
|
+
<IcoText.Paragraph>Standard — aligns best with h4 line-height</IcoText.Paragraph>
|
|
387
|
+
</IcoText>
|
|
388
|
+
</>
|
|
389
|
+
);
|
|
390
|
+
}
|
|
391
|
+
export default IconSizesExample;
|
|
392
|
+
`.trim(),
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
render: IconSizesTemplate,
|
|
397
|
+
},
|
|
398
|
+
'All three supported icon sizes — 12, 16, and 24 (default). Use smaller sizes only in compact contexts such as table cells or dense lists. The `24` default aligns best with `IcoText.Heading`\'s h4 line-height.',
|
|
399
|
+
);
|
|
400
|
+
|
|
401
|
+
export const IconColors: Story = withDescription(
|
|
402
|
+
{
|
|
403
|
+
parameters: {
|
|
404
|
+
controls: { disable: true },
|
|
405
|
+
docs: {
|
|
406
|
+
source: {
|
|
407
|
+
language: 'tsx',
|
|
408
|
+
code: `
|
|
409
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
410
|
+
|
|
411
|
+
function IconColorsExample() {
|
|
412
|
+
return (
|
|
413
|
+
<IcoText>
|
|
414
|
+
<IcoText.Icon name="triangle-alert" color="var(--color-semantic-warning-600)" />
|
|
415
|
+
<IcoText.Heading>Attendance alert</IcoText.Heading>
|
|
416
|
+
<IcoText.Paragraph>3 pupils below 90% this half-term</IcoText.Paragraph>
|
|
43
417
|
</IcoText>
|
|
44
|
-
)
|
|
45
|
-
}
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
export default IconColorsExample;
|
|
421
|
+
`.trim(),
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
},
|
|
425
|
+
render: IconColorsTemplate,
|
|
426
|
+
},
|
|
427
|
+
'The `color` prop on `IcoText.Icon` accepts any CSS value — always use design token variables, never hardcoded hex. Semantic tokens (`--color-semantic-*`) are most appropriate for status-indicating icons.',
|
|
428
|
+
);
|
|
46
429
|
|
|
47
|
-
export
|
|
430
|
+
export const MultipleParagraphs: Story = withDescription(
|
|
431
|
+
{
|
|
432
|
+
parameters: {
|
|
433
|
+
controls: { disable: true },
|
|
434
|
+
docs: {
|
|
435
|
+
source: {
|
|
436
|
+
language: 'tsx',
|
|
437
|
+
code: `
|
|
438
|
+
import { IcoText } from '@arbor-education/design-system.components';
|
|
439
|
+
|
|
440
|
+
function MultipleParagraphsExample() {
|
|
441
|
+
return (
|
|
442
|
+
<IcoText>
|
|
443
|
+
<IcoText.Icon name="calendar" />
|
|
444
|
+
<IcoText.Heading>Parents' evening — Tuesday 14 May</IcoText.Heading>
|
|
445
|
+
<IcoText.Paragraph>4:00 pm – 7:00 pm · Main Hall</IcoText.Paragraph>
|
|
446
|
+
<IcoText.Paragraph>Appointments every 10 minutes. Please arrive 5 minutes early.</IcoText.Paragraph>
|
|
447
|
+
</IcoText>
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
export default MultipleParagraphsExample;
|
|
451
|
+
`.trim(),
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
},
|
|
455
|
+
render: MultipleParagraphsTemplate,
|
|
456
|
+
},
|
|
457
|
+
'Multiple `IcoText.Paragraph` sub-components stack vertically in the content column. Use for supplementary detail lines below the primary heading.',
|
|
458
|
+
);
|