@arbor-education/design-system.components 0.25.0 → 0.25.2

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.
Files changed (235) hide show
  1. package/.gather/instructions/changesets.md +12 -0
  2. package/.gather/instructions/read-contributing.md +14 -0
  3. package/.storybook/DocsTemplate.tsx +3 -1
  4. package/.storybook/preview.ts +6 -2
  5. package/CHANGELOG.md +14 -0
  6. package/CONTRIBUTING.md +20 -0
  7. package/dist/components/avatarGroup/AvatarGroup.stories.d.ts.map +1 -1
  8. package/dist/components/avatarGroup/AvatarGroup.stories.js +4 -2
  9. package/dist/components/avatarGroup/AvatarGroup.stories.js.map +1 -1
  10. package/dist/components/card/Card.d.ts.map +1 -1
  11. package/dist/components/card/Card.js +2 -1
  12. package/dist/components/card/Card.js.map +1 -1
  13. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  14. package/dist/components/combobox/Combobox.js +10 -5
  15. package/dist/components/combobox/Combobox.js.map +1 -1
  16. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -1
  17. package/dist/components/combobox/Combobox.stories.js +2 -1
  18. package/dist/components/combobox/Combobox.stories.js.map +1 -1
  19. package/dist/components/combobox/Combobox.test.js +18 -9
  20. package/dist/components/combobox/Combobox.test.js.map +1 -1
  21. package/dist/components/combobox/ComboboxButtonTrigger.d.ts.map +1 -1
  22. package/dist/components/combobox/ComboboxButtonTrigger.js +3 -1
  23. package/dist/components/combobox/ComboboxButtonTrigger.js.map +1 -1
  24. package/dist/components/combobox/ComboboxListbox.d.ts.map +1 -1
  25. package/dist/components/combobox/ComboboxListbox.js +8 -4
  26. package/dist/components/combobox/ComboboxListbox.js.map +1 -1
  27. package/dist/components/combobox/buildListboxDisplayOptions.d.ts.map +1 -1
  28. package/dist/components/combobox/buildListboxDisplayOptions.js +4 -2
  29. package/dist/components/combobox/buildListboxDisplayOptions.js.map +1 -1
  30. package/dist/components/combobox/highlightLabel.d.ts.map +1 -1
  31. package/dist/components/combobox/highlightLabel.js +2 -1
  32. package/dist/components/combobox/highlightLabel.js.map +1 -1
  33. package/dist/components/combobox/useChipSelection.d.ts.map +1 -1
  34. package/dist/components/combobox/useChipSelection.js +2 -1
  35. package/dist/components/combobox/useChipSelection.js.map +1 -1
  36. package/dist/components/combobox/useComboboxListboxKeyboard.d.ts.map +1 -1
  37. package/dist/components/combobox/useComboboxListboxKeyboard.js +8 -4
  38. package/dist/components/combobox/useComboboxListboxKeyboard.js.map +1 -1
  39. package/dist/components/combobox/useComboboxPopoverBehavior.d.ts.map +1 -1
  40. package/dist/components/combobox/useComboboxPopoverBehavior.js +16 -8
  41. package/dist/components/combobox/useComboboxPopoverBehavior.js.map +1 -1
  42. package/dist/components/combobox/useComboboxState.d.ts.map +1 -1
  43. package/dist/components/combobox/useComboboxState.js +22 -11
  44. package/dist/components/combobox/useComboboxState.js.map +1 -1
  45. package/dist/components/datePicker/DatePickerCalendarHeader.d.ts.map +1 -1
  46. package/dist/components/datePicker/DatePickerCalendarHeader.js +4 -2
  47. package/dist/components/datePicker/DatePickerCalendarHeader.js.map +1 -1
  48. package/dist/components/dateTimePicker/DateTimePicker.d.ts.map +1 -1
  49. package/dist/components/dateTimePicker/DateTimePicker.js +2 -1
  50. package/dist/components/dateTimePicker/DateTimePicker.js.map +1 -1
  51. package/dist/components/dateTimePicker/DateTimePicker.test.js.map +1 -1
  52. package/dist/components/dropdown/Dropdown.stories.d.ts.map +1 -1
  53. package/dist/components/dropdown/Dropdown.stories.js +10 -5
  54. package/dist/components/dropdown/Dropdown.stories.js.map +1 -1
  55. package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
  56. package/dist/components/filterBar/FilterBar.js +4 -2
  57. package/dist/components/filterBar/FilterBar.js.map +1 -1
  58. package/dist/components/filterBar/FilterBar.stories.d.ts.map +1 -1
  59. package/dist/components/filterBar/FilterBar.stories.js +6 -3
  60. package/dist/components/filterBar/FilterBar.stories.js.map +1 -1
  61. package/dist/components/filterBar/FilterBar.test.js +6 -3
  62. package/dist/components/filterBar/FilterBar.test.js.map +1 -1
  63. package/dist/components/formField/fieldset/Fieldset.stories.d.ts.map +1 -1
  64. package/dist/components/formField/fieldset/Fieldset.stories.js.map +1 -1
  65. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts +1 -1
  66. package/dist/components/formField/inputs/radio/RadioButtonGroup.d.ts.map +1 -1
  67. package/dist/components/formField/inputs/radio/RadioButtonGroup.js +1 -1
  68. package/dist/components/formField/inputs/radio/RadioButtonGroup.js.map +1 -1
  69. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.d.ts.map +1 -1
  70. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js +2 -1
  71. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js.map +1 -1
  72. package/dist/components/formField/inputs/textArea/TextArea.stories.d.ts.map +1 -1
  73. package/dist/components/formField/inputs/textArea/TextArea.stories.js +10 -5
  74. package/dist/components/formField/inputs/textArea/TextArea.stories.js.map +1 -1
  75. package/dist/components/formField/inputs/time/TimeInput.js +3 -4
  76. package/dist/components/formField/inputs/time/TimeInput.js.map +1 -1
  77. package/dist/components/formField/inputs/time/TimeInput.test.js.map +1 -1
  78. package/dist/components/heading/Heading.stories.d.ts.map +1 -1
  79. package/dist/components/heading/Heading.stories.js.map +1 -1
  80. package/dist/components/modal/Modal.stories.d.ts.map +1 -1
  81. package/dist/components/modal/Modal.stories.js.map +1 -1
  82. package/dist/components/progress/Progress.stories.d.ts.map +1 -1
  83. package/dist/components/progress/Progress.stories.js +2 -1
  84. package/dist/components/progress/Progress.stories.js.map +1 -1
  85. package/dist/components/row/Row.d.ts +4 -4
  86. package/dist/components/row/Row.d.ts.map +1 -1
  87. package/dist/components/row/Row.stories.d.ts +3 -0
  88. package/dist/components/row/Row.stories.d.ts.map +1 -1
  89. package/dist/components/row/Row.stories.js +96 -6
  90. package/dist/components/row/Row.stories.js.map +1 -1
  91. package/dist/components/row/Row.test.js +20 -0
  92. package/dist/components/row/Row.test.js.map +1 -1
  93. package/dist/components/sidebarNav/SidebarNavItem.d.ts.map +1 -1
  94. package/dist/components/sidebarNav/SidebarNavItem.js +12 -11
  95. package/dist/components/sidebarNav/SidebarNavItem.js.map +1 -1
  96. package/dist/components/sidebarNav/SidebarNavRailItem.d.ts.map +1 -1
  97. package/dist/components/sidebarNav/SidebarNavRailItem.js +11 -10
  98. package/dist/components/sidebarNav/SidebarNavRailItem.js.map +1 -1
  99. package/dist/components/sidebarNav/useControllableBoolean.d.ts.map +1 -1
  100. package/dist/components/sidebarNav/useControllableBoolean.js +2 -1
  101. package/dist/components/sidebarNav/useControllableBoolean.js.map +1 -1
  102. package/dist/components/table/Table.d.ts.map +1 -1
  103. package/dist/components/table/Table.js +11 -1
  104. package/dist/components/table/Table.js.map +1 -1
  105. package/dist/components/table/Table.stories.d.ts.map +1 -1
  106. package/dist/components/table/Table.stories.js +6 -2
  107. package/dist/components/table/Table.stories.js.map +1 -1
  108. package/dist/components/table/Table.test.js +9 -3
  109. package/dist/components/table/Table.test.js.map +1 -1
  110. package/dist/components/table/cellRenderers/ComboboxCellRenderer.d.ts.map +1 -1
  111. package/dist/components/table/cellRenderers/ComboboxCellRenderer.js +16 -8
  112. package/dist/components/table/cellRenderers/ComboboxCellRenderer.js.map +1 -1
  113. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.d.ts.map +1 -1
  114. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js +2 -1
  115. package/dist/components/table/columnFilters/TimeFilter/TimeFilter.js.map +1 -1
  116. package/dist/components/table/tableControls/HideColumnsDropdown.d.ts.map +1 -1
  117. package/dist/components/table/tableControls/HideColumnsDropdown.js +2 -1
  118. package/dist/components/table/tableControls/HideColumnsDropdown.js.map +1 -1
  119. package/dist/components/table/tableControls/TableControls.d.ts.map +1 -1
  120. package/dist/components/table/tableControls/TableControls.js +2 -1
  121. package/dist/components/table/tableControls/TableControls.js.map +1 -1
  122. package/dist/components/tag/Tag.test.js.map +1 -1
  123. package/dist/components/tagList/TagList.d.ts.map +1 -1
  124. package/dist/components/tagList/TagList.js +8 -4
  125. package/dist/components/tagList/TagList.js.map +1 -1
  126. package/dist/components/tagList/TagList.test.js +6 -3
  127. package/dist/components/tagList/TagList.test.js.map +1 -1
  128. package/dist/components/toggleGroup/ToggleGroup.d.ts +29 -0
  129. package/dist/components/toggleGroup/ToggleGroup.d.ts.map +1 -0
  130. package/dist/components/toggleGroup/ToggleGroup.js +26 -0
  131. package/dist/components/toggleGroup/ToggleGroup.js.map +1 -0
  132. package/dist/components/toggleGroup/ToggleGroup.stories.d.ts +86 -0
  133. package/dist/components/toggleGroup/ToggleGroup.stories.d.ts.map +1 -0
  134. package/dist/components/toggleGroup/ToggleGroup.stories.js +342 -0
  135. package/dist/components/toggleGroup/ToggleGroup.stories.js.map +1 -0
  136. package/dist/components/toggleGroup/ToggleGroup.test.d.ts +2 -0
  137. package/dist/components/toggleGroup/ToggleGroup.test.d.ts.map +1 -0
  138. package/dist/components/toggleGroup/ToggleGroup.test.js +123 -0
  139. package/dist/components/toggleGroup/ToggleGroup.test.js.map +1 -0
  140. package/dist/components/toggleGroup/ToggleGroupItem.d.ts +10 -0
  141. package/dist/components/toggleGroup/ToggleGroupItem.d.ts.map +1 -0
  142. package/dist/components/toggleGroup/ToggleGroupItem.js +5 -0
  143. package/dist/components/toggleGroup/ToggleGroupItem.js.map +1 -0
  144. package/dist/components/treeRow/TreeRowSection.d.ts.map +1 -1
  145. package/dist/components/treeRow/TreeRowSection.js +2 -1
  146. package/dist/components/treeRow/TreeRowSection.js.map +1 -1
  147. package/dist/components/userDropdown/UserDropdown.stories.d.ts.map +1 -1
  148. package/dist/components/userDropdown/UserDropdown.stories.js +66 -22
  149. package/dist/components/userDropdown/UserDropdown.stories.js.map +1 -1
  150. package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.d.ts.map +1 -1
  151. package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.js +3 -1
  152. package/dist/components/userDropdown/internal/UserDropdownCollapsibleSection.js.map +1 -1
  153. package/dist/index.css +33 -0
  154. package/dist/index.css.map +1 -1
  155. package/dist/index.d.ts +1 -0
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +1 -0
  158. package/dist/index.js.map +1 -1
  159. package/dist/utils/getTextContrast.d.ts.map +1 -1
  160. package/dist/utils/getTextContrast.js +4 -2
  161. package/dist/utils/getTextContrast.js.map +1 -1
  162. package/dist/utils/hooks/useElementWidth.d.ts.map +1 -1
  163. package/dist/utils/hooks/useElementWidth.js +2 -1
  164. package/dist/utils/hooks/useElementWidth.js.map +1 -1
  165. package/dist/utils/hooks/useMeasuredChildWidths.d.ts.map +1 -1
  166. package/dist/utils/hooks/useMeasuredChildWidths.js +4 -2
  167. package/dist/utils/hooks/useMeasuredChildWidths.js.map +1 -1
  168. package/dist/utils/hooks/useRovingFocus.d.ts.map +1 -1
  169. package/dist/utils/hooks/useRovingFocus.js +8 -4
  170. package/dist/utils/hooks/useRovingFocus.js.map +1 -1
  171. package/dist/utils/spacedWidths.d.ts.map +1 -1
  172. package/dist/utils/spacedWidths.js +6 -3
  173. package/dist/utils/spacedWidths.js.map +1 -1
  174. package/eslint.config.mts +32 -1
  175. package/package.json +1 -1
  176. package/src/components/avatarGroup/AvatarGroup.stories.tsx +6 -2
  177. package/src/components/card/Card.tsx +3 -1
  178. package/src/components/combobox/Combobox.stories.tsx +3 -1
  179. package/src/components/combobox/Combobox.test.tsx +39 -11
  180. package/src/components/combobox/Combobox.tsx +15 -5
  181. package/src/components/combobox/ComboboxButtonTrigger.tsx +3 -1
  182. package/src/components/combobox/ComboboxListbox.tsx +12 -4
  183. package/src/components/combobox/buildListboxDisplayOptions.ts +6 -2
  184. package/src/components/combobox/highlightLabel.tsx +2 -1
  185. package/src/components/combobox/useChipSelection.ts +3 -1
  186. package/src/components/combobox/useComboboxListboxKeyboard.ts +12 -4
  187. package/src/components/combobox/useComboboxPopoverBehavior.ts +24 -8
  188. package/src/components/combobox/useComboboxState.ts +28 -11
  189. package/src/components/datePicker/DatePickerCalendarHeader.tsx +6 -2
  190. package/src/components/dateTimePicker/DateTimePicker.test.tsx +2 -0
  191. package/src/components/dateTimePicker/DateTimePicker.tsx +3 -1
  192. package/src/components/dropdown/Dropdown.stories.tsx +19 -8
  193. package/src/components/filterBar/FilterBar.stories.tsx +9 -3
  194. package/src/components/filterBar/FilterBar.test.tsx +9 -3
  195. package/src/components/filterBar/FilterBar.tsx +6 -2
  196. package/src/components/formField/fieldset/Fieldset.stories.tsx +18 -3
  197. package/src/components/formField/inputs/radio/RadioButtonGroup.tsx +1 -1
  198. package/src/components/formField/inputs/selectDropdown/SelectDropdown.tsx +3 -1
  199. package/src/components/formField/inputs/textArea/TextArea.stories.tsx +10 -5
  200. package/src/components/formField/inputs/time/TimeInput.test.tsx +2 -0
  201. package/src/components/formField/inputs/time/TimeInput.tsx +4 -4
  202. package/src/components/heading/Heading.stories.tsx +12 -3
  203. package/src/components/modal/Modal.stories.tsx +15 -5
  204. package/src/components/progress/Progress.stories.tsx +3 -1
  205. package/src/components/row/Row.stories.tsx +141 -6
  206. package/src/components/row/Row.test.tsx +23 -0
  207. package/src/components/row/Row.tsx +4 -4
  208. package/src/components/sidebarNav/SidebarNavItem.tsx +27 -25
  209. package/src/components/sidebarNav/SidebarNavRailItem.tsx +34 -35
  210. package/src/components/sidebarNav/useControllableBoolean.ts +3 -1
  211. package/src/components/table/Table.stories.tsx +16 -12
  212. package/src/components/table/Table.test.tsx +10 -4
  213. package/src/components/table/Table.tsx +15 -5
  214. package/src/components/table/cellRenderers/ComboboxCellRenderer.tsx +19 -8
  215. package/src/components/table/columnFilters/TimeFilter/TimeFilter.tsx +3 -1
  216. package/src/components/table/tableControls/HideColumnsDropdown.tsx +3 -1
  217. package/src/components/table/tableControls/TableControls.tsx +3 -1
  218. package/src/components/tag/Tag.test.tsx +40 -8
  219. package/src/components/tagList/TagList.test.tsx +9 -3
  220. package/src/components/tagList/TagList.tsx +12 -4
  221. package/src/components/toggleGroup/ToggleGroup.stories.tsx +429 -0
  222. package/src/components/toggleGroup/ToggleGroup.test.tsx +155 -0
  223. package/src/components/toggleGroup/ToggleGroup.tsx +74 -0
  224. package/src/components/toggleGroup/ToggleGroupItem.tsx +24 -0
  225. package/src/components/toggleGroup/toggleGroup.scss +43 -0
  226. package/src/components/treeRow/TreeRowSection.tsx +3 -1
  227. package/src/components/userDropdown/UserDropdown.stories.tsx +66 -22
  228. package/src/components/userDropdown/internal/UserDropdownCollapsibleSection.tsx +3 -1
  229. package/src/index.scss +1 -0
  230. package/src/index.ts +1 -0
  231. package/src/utils/getTextContrast.ts +6 -2
  232. package/src/utils/hooks/useElementWidth.ts +3 -1
  233. package/src/utils/hooks/useMeasuredChildWidths.ts +6 -2
  234. package/src/utils/hooks/useRovingFocus.ts +12 -4
  235. package/src/utils/spacedWidths.ts +9 -3
@@ -0,0 +1,342 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { fn } from 'storybook/test';
4
+ import { Controls, Heading as DocHeading, Markdown, Primary as DocPrimary, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
5
+ import { Icon } from '../icon/Icon.js';
6
+ import { ToggleGroup } from './ToggleGroup.js';
7
+ // ---------------------------------------------------------------------------
8
+ // Docs page content
9
+ // ---------------------------------------------------------------------------
10
+ const DESCRIPTION_INTRO = [
11
+ 'ToggleGroup renders a set of mutually exclusive toggle options built on',
12
+ '[Radix UI Toggle Group](https://www.radix-ui.com/primitives/docs/components/toggle-group).',
13
+ 'Each option can carry a semantic `color` (`"red"`, `"yellow"`, or `"green"`) that applies',
14
+ 'a background and text colour from the design token palette when the item is active.',
15
+ 'It behaves as a radio group — only one option can be selected at a time.',
16
+ 'Typical use cases include attendance status pickers (Present / Late / Absent) and any',
17
+ 'single-select choice set where each option has a semantic colour meaning.',
18
+ ].join(' ');
19
+ const USAGE_GUIDANCE = [
20
+ '### When to use',
21
+ '',
22
+ '- **Categorised single-select** — when each option has a distinct semantic colour (attendance, priority, status)',
23
+ '- **Compact radio replacement** — when a traditional radio group would take too much vertical space',
24
+ '- **Immediate selection** — when choosing an option takes effect right away without a form submission',
25
+ '',
26
+ '---',
27
+ '',
28
+ '### When NOT to use',
29
+ '',
30
+ '| Situation | Use instead |',
31
+ '|---|---|',
32
+ '| Multiple options can be selected | `CheckboxGroup` |',
33
+ '| Options are part of a larger form submission | `RadioButtonGroup` — communicates deferred action |',
34
+ '| More than ~6 options | `SelectDropdown` — toggle groups become unwieldy at scale |',
35
+ ].join('\n');
36
+ const DEVELOPER_NOTES = [
37
+ '### Controlled vs uncontrolled',
38
+ '',
39
+ 'Use `defaultValue` for uncontrolled mode — the component manages its own selection state.',
40
+ 'Use `value` + `onValueChange` for controlled mode when you need to read or sync the value externally.',
41
+ '',
42
+ '**`onValueChange` receives the new value string directly**, not a React event.',
43
+ '',
44
+ '---',
45
+ '',
46
+ '### Option colour',
47
+ '',
48
+ 'The `color` prop accepts `"red"`, `"yellow"`, or `"green"` and is optional.',
49
+ 'When set, the colour is applied as background and text colour using semantic design tokens on the active item.',
50
+ 'When omitted, the primary button style is used for the selected state.',
51
+ 'Options within the same group can mix coloured and uncoloured items.',
52
+ '',
53
+ '---',
54
+ '',
55
+ '### Accessibility',
56
+ '',
57
+ '- Rendered as `role="group"` containing `role="radio"` items',
58
+ '- Keyboard navigation: `Tab` focuses the group, arrow keys move between items, `Space`/`Enter` select',
59
+ '- Each item uses its `text` value as the accessible label',
60
+ '- The `disabled` prop on the root or individual options correctly sets the `disabled` attribute',
61
+ ].join('\n');
62
+ // ---------------------------------------------------------------------------
63
+ // Docs page
64
+ // ---------------------------------------------------------------------------
65
+ function ToggleGroupDocsPage() {
66
+ return (_jsxs(_Fragment, { children: [_jsx(Title, {}), _jsx(Subtitle, {}), _jsx(Markdown, { children: DESCRIPTION_INTRO }), _jsx(DocHeading, { children: "Interactive example" }), _jsx(DocPrimary, {}), _jsx(Controls, {}), _jsx(DocHeading, { children: "Usage guidance" }), _jsx(Markdown, { children: USAGE_GUIDANCE }), _jsx(DocHeading, { children: "Developer notes" }), _jsx(Markdown, { children: DEVELOPER_NOTES }), _jsx(DocHeading, { children: "Examples" }), _jsx(Stories, { title: "" })] }));
67
+ }
68
+ // ---------------------------------------------------------------------------
69
+ // Meta
70
+ // ---------------------------------------------------------------------------
71
+ const attendanceOptions = [
72
+ { value: 'present', text: 'Present' },
73
+ { value: 'late', text: 'Late' },
74
+ { value: 'absent', text: 'Absent' },
75
+ ];
76
+ const meta = {
77
+ title: 'Components/ToggleGroup',
78
+ component: ToggleGroup,
79
+ parameters: {
80
+ layout: 'centered',
81
+ docs: {
82
+ page: ToggleGroupDocsPage,
83
+ },
84
+ },
85
+ tags: ['autodocs'],
86
+ args: {
87
+ options: attendanceOptions,
88
+ onValueChange: fn(),
89
+ },
90
+ argTypes: {
91
+ value: {
92
+ control: 'text',
93
+ description: 'The controlled selected value. Pair with `onValueChange`.',
94
+ table: { type: { summary: 'string' } },
95
+ },
96
+ defaultValue: {
97
+ control: 'text',
98
+ description: 'The initial selected value for uncontrolled usage.',
99
+ table: { type: { summary: 'string' } },
100
+ },
101
+ disabled: {
102
+ control: 'boolean',
103
+ description: 'Disables all options in the group.',
104
+ table: { type: { summary: 'boolean' }, defaultValue: { summary: 'false' } },
105
+ },
106
+ onValueChange: {
107
+ action: 'valueChange',
108
+ control: false,
109
+ description: 'Callback fired when the selection changes. Receives the new value string.',
110
+ table: { type: { summary: '(value: string) => void' } },
111
+ },
112
+ options: {
113
+ control: false,
114
+ description: 'Array of option configs. Each accepts `value`, `text`, `color` (`"red" | "yellow" | "green"`), `icon`, and `disabled`.',
115
+ table: { type: { summary: 'ToggleGroupOption[]' } },
116
+ },
117
+ },
118
+ };
119
+ export default meta;
120
+ const withDescription = (story, description) => ({
121
+ ...story,
122
+ parameters: {
123
+ ...story.parameters,
124
+ docs: { ...story.parameters?.docs, description: { story: description } },
125
+ },
126
+ });
127
+ // ---------------------------------------------------------------------------
128
+ // Stories
129
+ // ---------------------------------------------------------------------------
130
+ export const Default = withDescription({
131
+ args: {
132
+ options: attendanceOptions,
133
+ value: undefined,
134
+ onValueChange: fn(),
135
+ },
136
+ }, 'No option selected. Click an option to see the selected state.');
137
+ export const WithDefaultValue = withDescription({
138
+ args: {
139
+ options: attendanceOptions,
140
+ defaultValue: 'present',
141
+ onValueChange: undefined,
142
+ },
143
+ parameters: {
144
+ controls: { disable: true },
145
+ docs: {
146
+ source: {
147
+ language: 'tsx',
148
+ code: `
149
+ import { ToggleGroup } from '@arbor-education/design-system.components';
150
+
151
+ const options = [
152
+ { value: 'present', text: 'Present' },
153
+ { value: 'late', text: 'Late' },
154
+ { value: 'absent', text: 'Absent' },
155
+ ];
156
+
157
+ <ToggleGroup options={options} defaultValue="present" />
158
+ `.trim(),
159
+ },
160
+ },
161
+ },
162
+ }, 'Uncontrolled mode — `defaultValue` sets the initial selection and the component manages state internally.');
163
+ export const Controlled = withDescription({
164
+ render: (args) => {
165
+ const [value, setValue] = useState('present');
166
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 'var(--spacing-small)' }, children: [_jsx(ToggleGroup, { options: args.options, disabled: args.disabled, className: args.className, value: value, onValueChange: (v) => {
167
+ setValue(v);
168
+ args.onValueChange?.(v);
169
+ } }), _jsxs("p", { style: { margin: 0, fontSize: 'var(--font-size-2-13)', color: 'var(--color-grey-600)' }, children: ["Selected:", ' ', _jsx("strong", { children: value || '—' })] })] }));
170
+ },
171
+ parameters: {
172
+ controls: { disable: true },
173
+ docs: {
174
+ source: {
175
+ language: 'tsx',
176
+ code: `
177
+ import { useState } from 'react';
178
+ import { ToggleGroup } from '@arbor-education/design-system.components';
179
+
180
+ const options = [
181
+ { value: 'present', text: 'Present' },
182
+ { value: 'late', text: 'Late' },
183
+ { value: 'absent', text: 'Absent' },
184
+ ];
185
+
186
+ function AttendancePicker() {
187
+ const [status, setStatus] = useState('present');
188
+ return <ToggleGroup options={options} value={status} onValueChange={setStatus} />;
189
+ }
190
+ `.trim(),
191
+ },
192
+ },
193
+ },
194
+ }, 'Controlled mode — `value` and `onValueChange` manage selection externally. The label below reflects the current value.');
195
+ export const WithColours = withDescription({
196
+ args: {
197
+ options: [
198
+ { value: 'present', text: 'Present', color: 'green' },
199
+ { value: 'late', text: 'Late', color: 'yellow' },
200
+ { value: 'absent', text: 'Absent', color: 'red' },
201
+ ],
202
+ defaultValue: 'present',
203
+ onValueChange: undefined,
204
+ },
205
+ parameters: {
206
+ controls: { disable: true },
207
+ docs: {
208
+ source: {
209
+ language: 'tsx',
210
+ code: `
211
+ import { ToggleGroup } from '@arbor-education/design-system.components';
212
+
213
+ const options = [
214
+ { value: 'present', text: 'Present', color: 'green' },
215
+ { value: 'late', text: 'Late', color: 'yellow' },
216
+ { value: 'absent', text: 'Absent', color: 'red' },
217
+ ];
218
+
219
+ <ToggleGroup options={options} defaultValue="present" />
220
+ `.trim(),
221
+ },
222
+ },
223
+ },
224
+ }, 'Each option accepts an optional `color` prop (`"green"`, `"yellow"`, or `"red"`). The colour is applied using semantic design tokens when the item is selected.');
225
+ export const WithMixedColours = withDescription({
226
+ args: {
227
+ options: [
228
+ { value: 'present', text: 'Present', color: 'green' },
229
+ { value: 'late', text: 'Late', color: 'yellow' },
230
+ { value: 'absent', text: 'Absent', color: 'red' },
231
+ { value: 'not-required', text: 'Not required' },
232
+ ],
233
+ defaultValue: 'not-required',
234
+ onValueChange: undefined,
235
+ },
236
+ parameters: {
237
+ controls: { disable: true },
238
+ docs: {
239
+ source: {
240
+ language: 'tsx',
241
+ code: `
242
+ import { ToggleGroup } from '@arbor-education/design-system.components';
243
+
244
+ const options = [
245
+ { value: 'present', text: 'Present', color: 'green' },
246
+ { value: 'late', text: 'Late', color: 'yellow' },
247
+ { value: 'absent', text: 'Absent', color: 'red' },
248
+ { value: 'not-required', text: 'Not required' },
249
+ ];
250
+
251
+ <ToggleGroup options={options} defaultValue="not-required" />
252
+ `.trim(),
253
+ },
254
+ },
255
+ },
256
+ }, 'Options within the same group can mix coloured and uncoloured items. Uncoloured items use the primary button style when selected.');
257
+ export const WithColoursAndIcons = withDescription({
258
+ args: {
259
+ options: [
260
+ { value: 'present', text: 'Present', color: 'green', icon: _jsx(Icon, { name: "check", size: 16 }) },
261
+ { value: 'late', text: 'Late', color: 'yellow', icon: _jsx(Icon, { name: "clock-3", size: 16 }) },
262
+ { value: 'absent', text: 'Absent', color: 'red', icon: _jsx(Icon, { name: "x", size: 16 }) },
263
+ ],
264
+ defaultValue: 'present',
265
+ onValueChange: undefined,
266
+ },
267
+ parameters: {
268
+ controls: { disable: true },
269
+ docs: {
270
+ source: {
271
+ language: 'tsx',
272
+ code: `
273
+ import { Icon, ToggleGroup } from '@arbor-education/design-system.components';
274
+
275
+ const options = [
276
+ { value: 'present', text: 'Present', color: 'green', icon: <Icon name="check" size={16} /> },
277
+ { value: 'late', text: 'Late', color: 'yellow', icon: <Icon name="clock-3" size={16} /> },
278
+ { value: 'absent', text: 'Absent', color: 'red', icon: <Icon name="x" size={16} /> },
279
+ ];
280
+
281
+ <ToggleGroup options={options} defaultValue="present" />
282
+ `.trim(),
283
+ },
284
+ },
285
+ },
286
+ }, 'Options can combine a semantic colour with an icon.');
287
+ export const WithIcons = withDescription({
288
+ args: {
289
+ options: [
290
+ { value: 'present', text: 'Present', icon: _jsx(Icon, { name: "check", size: 16 }) },
291
+ { value: 'late', text: 'Late', icon: _jsx(Icon, { name: "clock-3", size: 16 }) },
292
+ { value: 'absent', text: 'Absent', icon: _jsx(Icon, { name: "x", size: 16 }) },
293
+ ],
294
+ defaultValue: 'present',
295
+ onValueChange: undefined,
296
+ },
297
+ parameters: {
298
+ controls: { disable: true },
299
+ docs: {
300
+ source: {
301
+ language: 'tsx',
302
+ code: `
303
+ import { Icon, ToggleGroup } from '@arbor-education/design-system.components';
304
+
305
+ const options = [
306
+ { value: 'present', text: 'Present', icon: <Icon name="check" size={16} /> },
307
+ { value: 'late', text: 'Late', icon: <Icon name="clock-3" size={16} /> },
308
+ { value: 'absent', text: 'Absent', icon: <Icon name="x" size={16} /> },
309
+ ];
310
+
311
+ <ToggleGroup options={options} defaultValue="present" />
312
+ `.trim(),
313
+ },
314
+ },
315
+ },
316
+ }, 'Each option can include an `icon`. The icon renders to the left of the label text.');
317
+ export const Disabled = withDescription({
318
+ args: {
319
+ options: attendanceOptions,
320
+ defaultValue: 'late',
321
+ disabled: true,
322
+ onValueChange: undefined,
323
+ },
324
+ parameters: {
325
+ controls: { disable: true },
326
+ },
327
+ }, 'The entire group can be disabled with the `disabled` prop. Use when the field exists but cannot currently be changed.');
328
+ export const PartiallyDisabled = withDescription({
329
+ args: {
330
+ options: [
331
+ { value: 'present', text: 'Present' },
332
+ { value: 'late', text: 'Late', disabled: true },
333
+ { value: 'absent', text: 'Absent' },
334
+ ],
335
+ defaultValue: 'present',
336
+ onValueChange: undefined,
337
+ },
338
+ parameters: {
339
+ controls: { disable: true },
340
+ },
341
+ }, 'Individual options can be disabled by setting `disabled: true` on the option config.');
342
+ //# sourceMappingURL=ToggleGroup.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroup.stories.js","sourceRoot":"","sources":["../../../src/components/toggleGroup/ToggleGroup.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=ToggleGroup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroup.test.d.ts","sourceRoot":"","sources":["../../../src/components/toggleGroup/ToggleGroup.test.tsx"],"names":[],"mappings":"AAGA,OAAO,kCAAkC,CAAC"}
@@ -0,0 +1,123 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { describe, expect, test, vi } from 'vitest';
3
+ import { render, screen, fireEvent } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+ import '@testing-library/jest-dom/vitest';
6
+ import { ToggleGroup } from './ToggleGroup.js';
7
+ const options = [
8
+ { value: 'present', text: 'Present', color: 'green' },
9
+ { value: 'late', text: 'Late', color: 'yellow' },
10
+ { value: 'absent', text: 'Absent', color: 'red' },
11
+ ];
12
+ describe('ToggleGroup component', () => {
13
+ test('renders all options', () => {
14
+ render(_jsx(ToggleGroup, { options: options }));
15
+ expect(screen.getByRole('group')).toBeInTheDocument();
16
+ expect(screen.getAllByRole('radio')).toHaveLength(3);
17
+ });
18
+ test('renders option text', () => {
19
+ render(_jsx(ToggleGroup, { options: options }));
20
+ expect(screen.getByText('Present')).toBeInTheDocument();
21
+ expect(screen.getByText('Late')).toBeInTheDocument();
22
+ expect(screen.getByText('Absent')).toBeInTheDocument();
23
+ });
24
+ test('applies ds-toggle-group base class', () => {
25
+ render(_jsx(ToggleGroup, { options: options }));
26
+ expect(screen.getByRole('group')).toHaveClass('ds-toggle-group');
27
+ });
28
+ test('applies additional className alongside base class', () => {
29
+ render(_jsx(ToggleGroup, { options: options, className: "custom-class" }));
30
+ const group = screen.getByRole('group');
31
+ expect(group).toHaveClass('ds-toggle-group');
32
+ expect(group).toHaveClass('custom-class');
33
+ });
34
+ test('no option is selected by default', () => {
35
+ render(_jsx(ToggleGroup, { options: options }));
36
+ screen.getAllByRole('radio').forEach((radio) => {
37
+ expect(radio).toHaveAttribute('data-state', 'off');
38
+ });
39
+ });
40
+ test('selects the option matching defaultValue in uncontrolled mode', () => {
41
+ render(_jsx(ToggleGroup, { options: options, defaultValue: "late" }));
42
+ expect(screen.getByRole('radio', { name: 'Late' })).toHaveAttribute('data-state', 'on');
43
+ expect(screen.getByRole('radio', { name: 'Present' })).toHaveAttribute('data-state', 'off');
44
+ });
45
+ test('selects the option matching value in controlled mode', () => {
46
+ render(_jsx(ToggleGroup, { options: options, value: "absent", onValueChange: vi.fn() }));
47
+ expect(screen.getByRole('radio', { name: 'Absent' })).toHaveAttribute('data-state', 'on');
48
+ });
49
+ test('calls onValueChange with the clicked option value', () => {
50
+ const handleChange = vi.fn();
51
+ render(_jsx(ToggleGroup, { options: options, value: "", onValueChange: handleChange }));
52
+ fireEvent.click(screen.getByRole('radio', { name: 'Present' }));
53
+ expect(handleChange).toHaveBeenCalledTimes(1);
54
+ expect(handleChange).toHaveBeenCalledWith('present');
55
+ });
56
+ test('applies color class for green option when selected', () => {
57
+ render(_jsx(ToggleGroup, { options: options, value: "present", onValueChange: vi.fn() }));
58
+ expect(screen.getByRole('radio', { name: 'Present' })).toHaveClass('ds-toggle-group__item--green');
59
+ });
60
+ test('applies color class for yellow option when selected', () => {
61
+ render(_jsx(ToggleGroup, { options: options, value: "late", onValueChange: vi.fn() }));
62
+ expect(screen.getByRole('radio', { name: 'Late' })).toHaveClass('ds-toggle-group__item--yellow');
63
+ });
64
+ test('applies color class for red option when selected', () => {
65
+ render(_jsx(ToggleGroup, { options: options, value: "absent", onValueChange: vi.fn() }));
66
+ expect(screen.getByRole('radio', { name: 'Absent' })).toHaveClass('ds-toggle-group__item--red');
67
+ });
68
+ test('does not apply a color class when the option is not selected', () => {
69
+ render(_jsx(ToggleGroup, { options: options, value: "absent", onValueChange: vi.fn() }));
70
+ const present = screen.getByRole('radio', { name: 'Present' });
71
+ expect(present).not.toHaveClass('ds-toggle-group__item--green');
72
+ });
73
+ test('does not apply a color class when no color is provided', () => {
74
+ const noColorOptions = [{ value: 'yes', text: 'Yes' }, { value: 'no', text: 'No' }];
75
+ render(_jsx(ToggleGroup, { options: noColorOptions, value: "yes", onValueChange: vi.fn() }));
76
+ const yes = screen.getByRole('radio', { name: 'Yes' });
77
+ expect(yes).not.toHaveClass('ds-toggle-group__item--green');
78
+ expect(yes).not.toHaveClass('ds-toggle-group__item--yellow');
79
+ expect(yes).not.toHaveClass('ds-toggle-group__item--red');
80
+ });
81
+ test('disables the whole group when disabled prop is set', () => {
82
+ render(_jsx(ToggleGroup, { options: options, disabled: true }));
83
+ screen.getAllByRole('radio').forEach((radio) => {
84
+ expect(radio).toBeDisabled();
85
+ });
86
+ });
87
+ test('disables a single option when its disabled prop is set', () => {
88
+ const mixedOptions = [
89
+ { value: 'a', text: 'A', color: 'green' },
90
+ { value: 'b', text: 'B', color: 'red', disabled: true },
91
+ ];
92
+ render(_jsx(ToggleGroup, { options: mixedOptions }));
93
+ expect(screen.getByRole('radio', { name: 'B' })).toBeDisabled();
94
+ expect(screen.getByRole('radio', { name: 'A' })).not.toBeDisabled();
95
+ });
96
+ test('does not deselect an active option when clicked again', () => {
97
+ const handleChange = vi.fn();
98
+ render(_jsx(ToggleGroup, { options: options, value: "present", onValueChange: handleChange }));
99
+ fireEvent.click(screen.getByRole('radio', { name: 'Present' }));
100
+ expect(handleChange).not.toHaveBeenCalled();
101
+ expect(screen.getByRole('radio', { name: 'Present' })).toHaveAttribute('data-state', 'on');
102
+ });
103
+ test('renders an icon when provided', () => {
104
+ const withIcon = [{ value: 'x', text: 'X', icon: _jsx("svg", { "data-testid": "test-icon" }) }];
105
+ render(_jsx(ToggleGroup, { options: withIcon }));
106
+ expect(screen.getByTestId('test-icon')).toBeInTheDocument();
107
+ });
108
+ describe('keyboard navigation', () => {
109
+ test('all items are individually reachable via Tab', async () => {
110
+ const user = userEvent.setup();
111
+ render(_jsxs("div", { children: [_jsx("button", { children: "Before" }), _jsx(ToggleGroup, { options: options, value: "late", onValueChange: vi.fn() })] }));
112
+ await user.tab();
113
+ expect(document.activeElement).toHaveTextContent('Before');
114
+ await user.tab();
115
+ expect(document.activeElement).toBe(screen.getByRole('radio', { name: 'Present' }));
116
+ await user.tab();
117
+ expect(document.activeElement).toBe(screen.getByRole('radio', { name: 'Late' }));
118
+ await user.tab();
119
+ expect(document.activeElement).toBe(screen.getByRole('radio', { name: 'Absent' }));
120
+ });
121
+ });
122
+ });
123
+ //# sourceMappingURL=ToggleGroup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroup.test.js","sourceRoot":"","sources":["../../../src/components/toggleGroup/ToggleGroup.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ToggleGroupItemProps as RadixToggleGroupItemProps } from '@radix-ui/react-toggle-group';
2
+ export type ToggleGroupItemColor = 'red' | 'yellow' | 'green';
3
+ export type ToggleGroupItemProps = {
4
+ text: string;
5
+ color?: ToggleGroupItemColor;
6
+ icon?: React.ReactNode;
7
+ isActive?: boolean;
8
+ } & RadixToggleGroupItemProps;
9
+ export declare const ToggleGroupItem: ({ text, color, icon, isActive, ...radixProps }: ToggleGroupItemProps) => import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=ToggleGroupItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroupItem.d.ts","sourceRoot":"","sources":["../../../src/components/toggleGroup/ToggleGroupItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,oBAAoB,IAAI,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAG5G,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,yBAAyB,CAAC;AAE9B,eAAO,MAAM,eAAe,GAAI,gDAAwD,oBAAoB,4CAW3G,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Item } from '@radix-ui/react-toggle-group';
3
+ import { Button } from '../button/Button.js';
4
+ export const ToggleGroupItem = ({ text, color, icon, isActive = false, ...radixProps }) => (_jsx(Item, { ...radixProps, asChild: true, children: _jsxs(Button, { className: isActive && color ? `ds-toggle-group__item--${color}` : undefined, borderless: true, variant: isActive ? 'primary' : 'secondary', children: [icon, text] }) }));
5
+ //# sourceMappingURL=ToggleGroupItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroupItem.js","sourceRoot":"","sources":["../../../src/components/toggleGroup/ToggleGroupItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAA0D,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAWlD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,UAAU,EAAwB,EAAE,EAAE,CAAC,CAC/G,KAAC,IAAI,OAAK,UAAU,EAAE,OAAO,kBAC3B,MAAC,MAAM,IACL,SAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAC5E,UAAU,QACV,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,aAE1C,IAAI,EACJ,IAAI,IACE,GACJ,CACR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRowSection.d.ts","sourceRoot":"","sources":["../../../src/components/treeRow/TreeRowSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,eAAO,MAAM,YAAY,iCAAmB,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,qDAAqD,mBAAmB,4CAkCtG,CAAC"}
1
+ {"version":3,"file":"TreeRowSection.d.ts","sourceRoot":"","sources":["../../../src/components/treeRow/TreeRowSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,eAAO,MAAM,YAAY,iCAAmB,CAAC;AAE7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,qDAAqD,mBAAmB,4CAkCtG,CAAC"}
@@ -5,8 +5,9 @@ import classNames from 'classnames';
5
5
  import { Icon } from '../icon/Icon.js';
6
6
  export const DepthContext = createContext(0);
7
7
  export function getDepthPadding(depth) {
8
- if (depth === 0)
8
+ if (depth === 0) {
9
9
  return 'var(--section-list-row-spacing-horizontal)';
10
+ }
10
11
  return `calc(var(--spacing-xxlarge, 32px) * ${depth})`;
11
12
  }
12
13
  export const TreeRowSection = ({ id: idProp, label, children, className, onClick }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRowSection.js","sourceRoot":"","sources":["../../../src/components/treeRow/TreeRowSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,4CAA4C,CAAC;IACrE,OAAO,uCAAuC,KAAK,GAAG,CAAC;AACzD,CAAC;AAUD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAuB,EAAE,EAAE;IACzG,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,MAAM,IAAI,WAAW,CAAC;IAEjC,OAAO,CACL,MAAC,SAAS,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,aAC9E,eACE,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,EAAE;oBACpE,6BAA6B,EAAE,CAAC,CAAC,OAAO;iBACzC,CAAC,EACF,KAAK,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,EAC9C,OAAO,EAAE,OAAO,aAEhB,MAAC,SAAS,CAAC,OAAO,IAChB,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,aAEzC,eAAM,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAQ,EAC3D,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAE,EAAE,GAAI,EACzE,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,SAAS,EAAC,4BAA4B,EAAC,IAAI,EAAE,EAAE,GAAI,IAC3D,EACnB,OAAO,IAAI,CACV,8BACE,KAAC,IAAI,IAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,EAAE,GAAI,EACtE,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,EAAE,GAAI,IACnE,CACJ,IACG,EACN,KAAC,SAAS,CAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,YACjD,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAG,CAAC,YAAG,QAAQ,GAAyB,GACzD,IACL,CAClB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"TreeRowSection.js","sourceRoot":"","sources":["../../../src/components/treeRow/TreeRowSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,SAAS,MAAM,2BAA2B,CAAC;AACvD,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,4CAA4C,CAAC;IACtD,CAAC;IACD,OAAO,uCAAuC,KAAK,GAAG,CAAC;AACzD,CAAC;AAUD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAuB,EAAE,EAAE;IACzG,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,MAAM,IAAI,WAAW,CAAC;IAEjC,OAAO,CACL,MAAC,SAAS,CAAC,IAAI,IAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,aAC9E,eACE,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,EAAE;oBACpE,6BAA6B,EAAE,CAAC,CAAC,OAAO;iBACzC,CAAC,EACF,KAAK,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,EAC9C,OAAO,EAAE,OAAO,aAEhB,MAAC,SAAS,CAAC,OAAO,IAChB,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,aAEzC,eAAM,SAAS,EAAC,4BAA4B,YAAE,KAAK,GAAQ,EAC3D,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,EAAC,SAAS,EAAC,0BAA0B,EAAC,IAAI,EAAE,EAAE,GAAI,EACzE,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,SAAS,EAAC,4BAA4B,EAAC,IAAI,EAAE,EAAE,GAAI,IAC3D,EACnB,OAAO,IAAI,CACV,8BACE,KAAC,IAAI,IAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,EAAE,GAAI,EACtE,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,EAAC,SAAS,EAAC,oBAAoB,EAAC,IAAI,EAAE,EAAE,GAAI,IACnE,CACJ,IACG,EACN,KAAC,SAAS,CAAC,OAAO,IAAC,SAAS,EAAC,sBAAsB,YACjD,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAG,CAAC,YAAG,QAAQ,GAAyB,GACzD,IACL,CAClB,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserDropdown.stories.d.ts","sourceRoot":"","sources":["../../../src/components/userDropdown/UserDropdown.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAInC,CAAC;AAEF,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAoB3C,eAAO,MAAM,OAAO,EAAE,KAkErB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAkBtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAiCtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAkCzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAkC1B,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"UserDropdown.stories.d.ts","sourceRoot":"","sources":["../../../src/components/userDropdown/UserDropdown.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAInC,CAAC;AAEF,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAoB3C,eAAO,MAAM,OAAO,EAAE,KAoFrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAwBtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAWrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KA2CtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAsCzB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAsC1B,CAAC;AAEF,eAAe,IAAI,CAAC"}