@arbor-education/design-system.components 0.21.1 → 0.22.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.
Files changed (121) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/component-library.md +15 -14
  3. package/dist/components/articleCard/ArticleCard.d.ts +2 -2
  4. package/dist/components/articleCard/ArticleCard.d.ts.map +1 -1
  5. package/dist/components/articleCard/ArticleCard.js +3 -3
  6. package/dist/components/articleCard/ArticleCard.js.map +1 -1
  7. package/dist/components/articleCard/ArticleCard.stories.d.ts +11 -3
  8. package/dist/components/articleCard/ArticleCard.stories.d.ts.map +1 -1
  9. package/dist/components/articleCard/ArticleCard.stories.js +16 -11
  10. package/dist/components/articleCard/ArticleCard.stories.js.map +1 -1
  11. package/dist/components/iconText/IconText.d.ts +43 -0
  12. package/dist/components/iconText/IconText.d.ts.map +1 -0
  13. package/dist/components/iconText/IconText.js +29 -0
  14. package/dist/components/iconText/IconText.js.map +1 -0
  15. package/dist/components/{icoText/IcoText.stories.d.ts → iconText/IconText.stories.d.ts} +8 -9
  16. package/dist/components/iconText/IconText.stories.d.ts.map +1 -0
  17. package/dist/components/{icoText/IcoText.stories.js → iconText/IconText.stories.js} +81 -81
  18. package/dist/components/iconText/IconText.stories.js.map +1 -0
  19. package/dist/components/iconText/IconText.test.d.ts +2 -0
  20. package/dist/components/iconText/IconText.test.d.ts.map +1 -0
  21. package/dist/components/{icoText/IcoText.test.js → iconText/IconText.test.js} +6 -6
  22. package/dist/components/iconText/IconText.test.js.map +1 -0
  23. package/dist/components/modal/Modal.d.ts +1 -0
  24. package/dist/components/modal/Modal.d.ts.map +1 -1
  25. package/dist/components/modal/Modal.js +2 -2
  26. package/dist/components/modal/Modal.js.map +1 -1
  27. package/dist/components/tag/Tag.d.ts +14 -1
  28. package/dist/components/tag/Tag.d.ts.map +1 -1
  29. package/dist/components/tag/Tag.js +9 -3
  30. package/dist/components/tag/Tag.js.map +1 -1
  31. package/dist/components/tag/Tag.stories.d.ts +1 -1
  32. package/dist/components/tag/Tag.stories.d.ts.map +1 -1
  33. package/dist/components/tag/Tag.stories.js +3 -3
  34. package/dist/components/tag/Tag.stories.js.map +1 -1
  35. package/dist/components/tag/Tag.test.js +36 -5
  36. package/dist/components/tag/Tag.test.js.map +1 -1
  37. package/dist/components/tagList/TagList.d.ts +49 -0
  38. package/dist/components/tagList/TagList.d.ts.map +1 -0
  39. package/dist/components/tagList/TagList.js +114 -0
  40. package/dist/components/tagList/TagList.js.map +1 -0
  41. package/dist/components/tagList/TagList.stories.d.ts +130 -0
  42. package/dist/components/tagList/TagList.stories.d.ts.map +1 -0
  43. package/dist/components/tagList/TagList.stories.js +443 -0
  44. package/dist/components/tagList/TagList.stories.js.map +1 -0
  45. package/dist/components/{icoText/IcoText.test.d.ts → tagList/TagList.test.d.ts} +1 -1
  46. package/dist/components/tagList/TagList.test.d.ts.map +1 -0
  47. package/dist/components/tagList/TagList.test.js +246 -0
  48. package/dist/components/tagList/TagList.test.js.map +1 -0
  49. package/dist/components/tagList/useTagListCollapsedLayout.d.ts +19 -0
  50. package/dist/components/tagList/useTagListCollapsedLayout.d.ts.map +1 -0
  51. package/dist/components/tagList/useTagListCollapsedLayout.js +48 -0
  52. package/dist/components/tagList/useTagListCollapsedLayout.js.map +1 -0
  53. package/dist/components/tagList/useVisibleTags.d.ts +18 -0
  54. package/dist/components/tagList/useVisibleTags.d.ts.map +1 -0
  55. package/dist/components/tagList/useVisibleTags.js +41 -0
  56. package/dist/components/tagList/useVisibleTags.js.map +1 -0
  57. package/dist/index.css +130 -10
  58. package/dist/index.css.map +1 -1
  59. package/dist/index.d.ts +3 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +2 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/utils/hooks/useElementWidth.d.ts +2 -0
  64. package/dist/utils/hooks/useElementWidth.d.ts.map +1 -0
  65. package/dist/utils/hooks/useElementWidth.js +30 -0
  66. package/dist/utils/hooks/useElementWidth.js.map +1 -0
  67. package/dist/utils/hooks/useMeasuredChildWidths.d.ts +8 -0
  68. package/dist/utils/hooks/useMeasuredChildWidths.d.ts.map +1 -0
  69. package/dist/utils/hooks/useMeasuredChildWidths.js +26 -0
  70. package/dist/utils/hooks/useMeasuredChildWidths.js.map +1 -0
  71. package/dist/utils/hooks/useRovingFocus.d.ts +18 -0
  72. package/dist/utils/hooks/useRovingFocus.d.ts.map +1 -0
  73. package/dist/utils/hooks/useRovingFocus.js +130 -0
  74. package/dist/utils/hooks/useRovingFocus.js.map +1 -0
  75. package/dist/utils/hooks/useRovingFocus.test.d.ts +2 -0
  76. package/dist/utils/hooks/useRovingFocus.test.d.ts.map +1 -0
  77. package/dist/utils/hooks/useRovingFocus.test.js +59 -0
  78. package/dist/utils/hooks/useRovingFocus.test.js.map +1 -0
  79. package/dist/utils/spacedWidths.d.ts +3 -0
  80. package/dist/utils/spacedWidths.d.ts.map +1 -0
  81. package/dist/utils/spacedWidths.js +28 -0
  82. package/dist/utils/spacedWidths.js.map +1 -0
  83. package/dist/utils/spacedWidths.test.d.ts +2 -0
  84. package/dist/utils/spacedWidths.test.d.ts.map +1 -0
  85. package/dist/utils/spacedWidths.test.js +17 -0
  86. package/dist/utils/spacedWidths.test.js.map +1 -0
  87. package/package.json +1 -1
  88. package/src/components/articleCard/ArticleCard.stories.tsx +17 -12
  89. package/src/components/articleCard/ArticleCard.tsx +9 -9
  90. package/src/components/{icoText/IcoText.stories.tsx → iconText/IconText.stories.tsx} +112 -112
  91. package/src/components/{icoText/IcoText.test.tsx → iconText/IconText.test.tsx} +10 -10
  92. package/src/components/{icoText/IcoText.tsx → iconText/IconText.tsx} +27 -20
  93. package/src/components/modal/Modal.tsx +5 -1
  94. package/src/components/tag/Tag.stories.tsx +4 -4
  95. package/src/components/tag/Tag.test.tsx +62 -5
  96. package/src/components/tag/Tag.tsx +61 -3
  97. package/src/components/tag/tag.scss +80 -9
  98. package/src/components/tagList/TagList.stories.tsx +564 -0
  99. package/src/components/tagList/TagList.test.tsx +342 -0
  100. package/src/components/tagList/TagList.tsx +296 -0
  101. package/src/components/tagList/tagList.scss +56 -0
  102. package/src/components/tagList/useTagListCollapsedLayout.ts +83 -0
  103. package/src/components/tagList/useVisibleTags.ts +74 -0
  104. package/src/index.scss +2 -1
  105. package/src/index.ts +3 -1
  106. package/src/tokens.scss +2 -1
  107. package/src/utils/hooks/useElementWidth.ts +39 -0
  108. package/src/utils/hooks/useMeasuredChildWidths.ts +39 -0
  109. package/src/utils/hooks/useRovingFocus.test.tsx +105 -0
  110. package/src/utils/hooks/useRovingFocus.ts +163 -0
  111. package/src/utils/spacedWidths.test.ts +20 -0
  112. package/src/utils/spacedWidths.ts +37 -0
  113. package/dist/components/icoText/IcoText.d.ts +0 -37
  114. package/dist/components/icoText/IcoText.d.ts.map +0 -1
  115. package/dist/components/icoText/IcoText.js +0 -29
  116. package/dist/components/icoText/IcoText.js.map +0 -1
  117. package/dist/components/icoText/IcoText.stories.d.ts.map +0 -1
  118. package/dist/components/icoText/IcoText.stories.js.map +0 -1
  119. package/dist/components/icoText/IcoText.test.d.ts.map +0 -1
  120. package/dist/components/icoText/IcoText.test.js.map +0 -1
  121. /package/src/components/{icoText/icoText.scss → iconText/iconText.scss} +0 -0
@@ -1,11 +1,11 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Controls, Heading as DocHeading, Markdown, Primary as DocPrimary, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
3
- import { IcoText } from './IcoText.js';
2
+ import { Controls, Heading as DocHeading, Primary as DocPrimary, Markdown, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
3
+ import { IconText } from './IconText.js';
4
4
  // ---------------------------------------------------------------------------
5
5
  // Docs page content
6
6
  // ---------------------------------------------------------------------------
7
7
  const DESCRIPTION_INTRO = [
8
- '`IcoText` is a compound layout component that pairs an icon in a left rail with a heading and/or paragraph.',
8
+ '`IconText` is a compound layout component that pairs an icon in a left rail with a heading and/or paragraph.',
9
9
  'It is the canonical icon-plus-text primitive in this design system — used internally by `ArticleCard`',
10
10
  'and available for direct use in any context that needs an icon anchoring labelled content.',
11
11
  ].join(' ');
@@ -46,25 +46,25 @@ const USAGE_GUIDANCE = [
46
46
  '| Content inside a navigable card | [`ArticleCard`](?path=/docs/components-card-articlecard--docs) |',
47
47
  '| Icon with no text | [`Icon`](?path=/docs/components-icon--docs) directly |',
48
48
  '| Long-form prose | Semantic HTML `<p>` with a separate heading |',
49
- '| Interactive element | Wrap `IcoText` inside a `Card` or `Button` — never add `onClick` to `IcoText` itself |',
49
+ '| Interactive element | Wrap `IconText` inside a `Card` or `Button` — never add `onClick` to `IconText` itself |',
50
50
  ].join('\n');
51
51
  const DEVELOPER_NOTES = [
52
52
  '### Critical usage patterns',
53
53
  '',
54
- '**`IcoText.Icon` is automatically hoisted to the left rail** regardless of position in JSX.',
55
- 'The root inspects `children`, pulls out any `IcoText.Icon` elements into a flex-shrink-0 left column,',
54
+ '**`IconText.Icon` is automatically hoisted to the left rail** regardless of position in JSX.',
55
+ 'The root inspects `children`, pulls out any `IconText.Icon` elements into a flex-shrink-0 left column,',
56
56
  'and places all other children (Heading, Paragraph) in the content column.',
57
57
  '',
58
58
  '```tsx',
59
- '<IcoText>',
60
- ' <IcoText.Icon name="guardians" />',
61
- ' <IcoText.Heading>Year 9 Attendance</IcoText.Heading>',
62
- ' <IcoText.Paragraph>28 pupils · 94.2% this term</IcoText.Paragraph>',
63
- '</IcoText>',
59
+ '<IconText>',
60
+ ' <IconText.Icon name="guardians" />',
61
+ ' <IconText.Heading>Year 9 Attendance</IconText.Heading>',
62
+ ' <IconText.Paragraph>28 pupils · 94.2% this term</IconText.Paragraph>',
63
+ '</IconText>',
64
64
  '```',
65
65
  '',
66
- '**`IcoText.Heading` always renders as `<h4>`.** There is no `level` prop. Verify your document',
67
- 'heading hierarchy is correct before using `IcoText` as a standalone heading.',
66
+ '**`IconText.Heading` always renders as `<h4>`.** There is no `level` prop. Verify your document',
67
+ 'heading hierarchy is correct before using `IconText` as a standalone heading.',
68
68
  '',
69
69
  '**Omit `screenReaderText` for decorative icons.** The icon is rendered with `aria-hidden="true"`',
70
70
  'when `screenReaderText` is absent. The heading or surrounding text should carry the accessible meaning.',
@@ -75,16 +75,16 @@ const DEVELOPER_NOTES = [
75
75
  '',
76
76
  '- Decorative icons (no `screenReaderText`): `aria-hidden="true"` — screen readers skip them',
77
77
  '- Meaningful icons: provide `screenReaderText` so the icon has an accessible label',
78
- '- `IcoText.Heading` renders `<h4>` — verify your document heading hierarchy',
79
- '- `IcoText.Paragraph` renders `<p>` — semantically appropriate for supporting text',
78
+ '- `IconText.Heading` renders `<h4>` — verify your document heading hierarchy',
79
+ '- `IconText.Paragraph` renders `<p>` — semantically appropriate for supporting text',
80
80
  '',
81
81
  '---',
82
82
  '',
83
83
  '### TypeScript types',
84
84
  '',
85
85
  '```ts',
86
- "import { IcoText } from '@arbor-education/design-system.components';",
87
- "import type { IcoTextProps, IcoTextIconProps, IcoTextHeadingProps, IcoTextParagraphProps } from '@arbor-education/design-system.components';",
86
+ "import { IconText } from '@arbor-education/design-system.components';",
87
+ "import type { IconTextProps, IconTextIconProps, IconTextHeadingProps, IconTextParagraphProps } from '@arbor-education/design-system.components';",
88
88
  '```',
89
89
  ].join('\n');
90
90
  const RELATED_COMPONENTS = [
@@ -96,19 +96,19 @@ const PROPS_INTRO = 'The preview below is wired to the **Controls** panel — tw
96
96
  // ---------------------------------------------------------------------------
97
97
  // Custom DocsPage
98
98
  // ---------------------------------------------------------------------------
99
- function IcoTextDocsPage() {
100
- return (_jsxs(_Fragment, { children: [_jsx(Title, {}), _jsx(Subtitle, {}), _jsx(Markdown, { children: DESCRIPTION_INTRO }), _jsx(DocHeading, { children: "Interactive example" }), _jsx(Markdown, { children: PROPS_INTRO }), _jsx(DocPrimary, {}), _jsx(Controls, {}), _jsx(DocHeading, { children: "IcoText.Icon props" }), _jsx(Markdown, { children: ICON_PROPS }), _jsx(DocHeading, { children: "IcoText.Heading props" }), _jsx(Markdown, { children: HEADING_PROPS }), _jsx(DocHeading, { children: "IcoText.Paragraph props" }), _jsx(Markdown, { children: PARAGRAPH_PROPS }), _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: "" }), _jsx(Markdown, { children: RELATED_COMPONENTS })] }));
99
+ function IconTextDocsPage() {
100
+ return (_jsxs(_Fragment, { children: [_jsx(Title, {}), _jsx(Subtitle, {}), _jsx(Markdown, { children: DESCRIPTION_INTRO }), _jsx(DocHeading, { children: "Interactive example" }), _jsx(Markdown, { children: PROPS_INTRO }), _jsx(DocPrimary, {}), _jsx(Controls, {}), _jsx(DocHeading, { children: "IconText.Icon props" }), _jsx(Markdown, { children: ICON_PROPS }), _jsx(DocHeading, { children: "IconText.Heading props" }), _jsx(Markdown, { children: HEADING_PROPS }), _jsx(DocHeading, { children: "IconText.Paragraph props" }), _jsx(Markdown, { children: PARAGRAPH_PROPS }), _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: "" }), _jsx(Markdown, { children: RELATED_COMPONENTS })] }));
101
101
  }
102
102
  // ---------------------------------------------------------------------------
103
103
  // Meta
104
104
  // ---------------------------------------------------------------------------
105
105
  const meta = {
106
- title: 'Components/IcoText',
107
- component: IcoText,
106
+ title: 'Components/IconText',
107
+ component: IconText,
108
108
  tags: ['autodocs'],
109
109
  parameters: {
110
110
  layout: 'padded',
111
- docs: { page: IcoTextDocsPage },
111
+ docs: { page: IconTextDocsPage },
112
112
  },
113
113
  argTypes: {
114
114
  className: {
@@ -118,7 +118,7 @@ const meta = {
118
118
  },
119
119
  children: {
120
120
  control: false,
121
- description: 'Compose using `IcoText.Icon`, `IcoText.Heading`, and `IcoText.Paragraph` sub-components.',
121
+ description: 'Compose using `IconText.Icon`, `IconText.Heading`, and `IconText.Paragraph` sub-components.',
122
122
  table: { type: { summary: 'ReactNode' } },
123
123
  },
124
124
  },
@@ -137,20 +137,20 @@ const withDescription = (story, description) => ({
137
137
  // ---------------------------------------------------------------------------
138
138
  // Template components
139
139
  // ---------------------------------------------------------------------------
140
- const IconSizesTemplate = () => (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-xlarge)' }, children: [12, 16, 24].map(size => (_jsxs("div", { children: [_jsx("p", { className: "ds-text", style: { margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }, children: `size={${size}}` }), _jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "guardians", size: size }), _jsx(IcoText.Heading, { children: "Year 9 Attendance" }), _jsx(IcoText.Paragraph, { children: "28 pupils \u00B7 94.2% average this term" })] })] }, size))) }));
140
+ const IconSizesTemplate = () => (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-xlarge)' }, children: [12, 16, 24].map(size => (_jsxs("div", { children: [_jsx("p", { className: "ds-text", style: { margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }, children: `size={${size}}` }), _jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "guardians", size: size }), _jsx(IconText.Heading, { children: "Year 9 Attendance" }), _jsx(IconText.Paragraph, { children: "28 pupils \u00B7 94.2% average this term" })] })] }, size))) }));
141
141
  const IconColorsTemplate = () => (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 'var(--spacing-xlarge)' }, children: [
142
142
  { color: 'var(--color-semantic-info-600)', label: 'Info — var(--color-semantic-info-600)' },
143
143
  { color: 'var(--color-semantic-success-600)', label: 'Success — var(--color-semantic-success-600)' },
144
144
  { color: 'var(--color-semantic-warning-600)', label: 'Warning — var(--color-semantic-warning-600)' },
145
145
  { color: 'var(--color-semantic-destructive-600)', label: 'Destructive — var(--color-semantic-destructive-600)' },
146
- ].map(({ color, label }) => (_jsxs("div", { children: [_jsx("p", { className: "ds-text", style: { margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }, children: label }), _jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "triangle-alert", color: color }), _jsx(IcoText.Heading, { children: "Attendance alert" }), _jsx(IcoText.Paragraph, { children: "3 pupils below 90% this half-term" })] })] }, color))) }));
147
- const MultipleParagraphsTemplate = () => (_jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "date" }), _jsx(IcoText.Heading, { children: "Parents' evening \u2014 Tuesday 14 May" }), _jsx(IcoText.Paragraph, { children: "4:00 pm \u2013 7:00 pm \u00B7 Main Hall" }), _jsx(IcoText.Paragraph, { children: "Appointments available every 10 minutes. Please arrive 5 minutes early." })] }));
146
+ ].map(({ color, label }) => (_jsxs("div", { children: [_jsx("p", { className: "ds-text", style: { margin: '0 0 var(--spacing-small)', color: 'var(--color-grey-600)' }, children: label }), _jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "triangle-alert", color: color }), _jsx(IconText.Heading, { children: "Attendance alert" }), _jsx(IconText.Paragraph, { children: "3 pupils below 90% this half-term" })] })] }, color))) }));
147
+ const MultipleParagraphsTemplate = () => (_jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "date" }), _jsx(IconText.Heading, { children: "Parents' evening \u2014 Tuesday 14 May" }), _jsx(IconText.Paragraph, { children: "4:00 pm \u2013 7:00 pm \u00B7 Main Hall" }), _jsx(IconText.Paragraph, { children: "Appointments available every 10 minutes. Please arrive 5 minutes early." })] }));
148
148
  // ---------------------------------------------------------------------------
149
149
  // Stories
150
150
  // ---------------------------------------------------------------------------
151
151
  export const Default = withDescription({
152
- render: () => (_jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "guardians" }), _jsx(IcoText.Heading, { children: "Year 9 Attendance" }), _jsx(IcoText.Paragraph, { children: "28 pupils \u00B7 94.2% average this term" })] })),
153
- }, 'The full canonical composition — `IcoText.Icon` in the left rail, `IcoText.Heading` and `IcoText.Paragraph` in the content column.');
152
+ render: () => (_jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "guardians" }), _jsx(IconText.Heading, { children: "Year 9 Attendance" }), _jsx(IconText.Paragraph, { children: "28 pupils \u00B7 94.2% average this term" })] })),
153
+ }, 'The full canonical composition — `IconText.Icon` in the left rail, `IconText.Heading` and `IconText.Paragraph` in the content column.');
154
154
  export const HeadingOnly = withDescription({
155
155
  parameters: {
156
156
  controls: { disable: true },
@@ -158,14 +158,14 @@ export const HeadingOnly = withDescription({
158
158
  source: {
159
159
  language: 'tsx',
160
160
  code: `
161
- import { IcoText } from '@arbor-education/design-system.components';
161
+ import { IconText } from '@arbor-education/design-system.components';
162
162
 
163
163
  function HeadingOnlyExample() {
164
164
  return (
165
- <IcoText>
166
- <IcoText.Icon name="book-open" />
167
- <IcoText.Heading>Assessment policy</IcoText.Heading>
168
- </IcoText>
165
+ <IconText>
166
+ <IconText.Icon name="book-open" />
167
+ <IconText.Heading>Assessment policy</IconText.Heading>
168
+ </IconText>
169
169
  );
170
170
  }
171
171
  export default HeadingOnlyExample;
@@ -173,7 +173,7 @@ export default HeadingOnlyExample;
173
173
  },
174
174
  },
175
175
  },
176
- render: () => (_jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "book-open" }), _jsx(IcoText.Heading, { children: "Assessment policy" })] })),
176
+ render: () => (_jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "book-open" }), _jsx(IconText.Heading, { children: "Assessment policy" })] })),
177
177
  }, 'Icon + Heading with no Paragraph — the compact pattern for short navigational labels.');
178
178
  export const WithoutIcon = withDescription({
179
179
  parameters: {
@@ -182,14 +182,14 @@ export const WithoutIcon = withDescription({
182
182
  source: {
183
183
  language: 'tsx',
184
184
  code: `
185
- import { IcoText } from '@arbor-education/design-system.components';
185
+ import { IconText } from '@arbor-education/design-system.components';
186
186
 
187
187
  function WithoutIconExample() {
188
188
  return (
189
- <IcoText>
190
- <IcoText.Heading>Behaviour report</IcoText.Heading>
191
- <IcoText.Paragraph>No incidents recorded this week. All targets met.</IcoText.Paragraph>
192
- </IcoText>
189
+ <IconText>
190
+ <IconText.Heading>Behaviour report</IconText.Heading>
191
+ <IconText.Paragraph>No incidents recorded this week. All targets met.</IconText.Paragraph>
192
+ </IconText>
193
193
  );
194
194
  }
195
195
  export default WithoutIconExample;
@@ -197,8 +197,8 @@ export default WithoutIconExample;
197
197
  },
198
198
  },
199
199
  },
200
- render: () => (_jsxs(IcoText, { children: [_jsx(IcoText.Heading, { children: "Behaviour report" }), _jsx(IcoText.Paragraph, { children: "No incidents recorded this week. All targets met." })] })),
201
- }, 'Heading + Paragraph with no icon. The left rail disappears cleanly — `IcoText.Icon` is entirely optional.');
200
+ render: () => (_jsxs(IconText, { children: [_jsx(IconText.Heading, { children: "Behaviour report" }), _jsx(IconText.Paragraph, { children: "No incidents recorded this week. All targets met." })] })),
201
+ }, 'Heading + Paragraph with no icon. The left rail disappears cleanly — `IconText.Icon` is entirely optional.');
202
202
  export const IconWithScreenReaderText = withDescription({
203
203
  parameters: {
204
204
  controls: { disable: true },
@@ -206,19 +206,19 @@ export const IconWithScreenReaderText = withDescription({
206
206
  source: {
207
207
  language: 'tsx',
208
208
  code: `
209
- import { IcoText } from '@arbor-education/design-system.components';
209
+ import { IconText } from '@arbor-education/design-system.components';
210
210
 
211
211
  function IconWithScreenReaderTextExample() {
212
212
  return (
213
- <IcoText>
214
- <IcoText.Icon
213
+ <IconText>
214
+ <IconText.Icon
215
215
  name="triangle-alert"
216
216
  color="var(--color-semantic-warning-600)"
217
217
  screenReaderText="Warning"
218
218
  />
219
- <IcoText.Heading>Attendance below target</IcoText.Heading>
220
- <IcoText.Paragraph>Alice Johnson — 78.4% this term. Intervention recommended.</IcoText.Paragraph>
221
- </IcoText>
219
+ <IconText.Heading>Attendance below target</IconText.Heading>
220
+ <IconText.Paragraph>Alice Johnson — 78.4% this term. Intervention recommended.</IconText.Paragraph>
221
+ </IconText>
222
222
  );
223
223
  }
224
224
  export default IconWithScreenReaderTextExample;
@@ -226,7 +226,7 @@ export default IconWithScreenReaderTextExample;
226
226
  },
227
227
  },
228
228
  },
229
- render: () => (_jsxs(IcoText, { children: [_jsx(IcoText.Icon, { name: "triangle-alert", color: "var(--color-semantic-warning-600)", screenReaderText: "Warning" }), _jsx(IcoText.Heading, { children: "Attendance below target" }), _jsx(IcoText.Paragraph, { children: "Alice Johnson \u2014 78.4% this term. Intervention recommended." })] })),
229
+ render: () => (_jsxs(IconText, { children: [_jsx(IconText.Icon, { name: "triangle-alert", color: "var(--color-semantic-warning-600)", screenReaderText: "Warning" }), _jsx(IconText.Heading, { children: "Attendance below target" }), _jsx(IconText.Paragraph, { children: "Alice Johnson \u2014 78.4% this term. Intervention recommended." })] })),
230
230
  }, '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".');
231
231
  export const IconSizes = withDescription({
232
232
  parameters: {
@@ -235,26 +235,26 @@ export const IconSizes = withDescription({
235
235
  source: {
236
236
  language: 'tsx',
237
237
  code: `
238
- import { IcoText } from '@arbor-education/design-system.components';
238
+ import { IconText } from '@arbor-education/design-system.components';
239
239
 
240
240
  function IconSizesExample() {
241
241
  return (
242
242
  <>
243
- <IcoText>
244
- <IcoText.Icon name="guardians" size={12} />
245
- <IcoText.Heading>size 12</IcoText.Heading>
246
- <IcoText.Paragraph>Use in very compact contexts</IcoText.Paragraph>
247
- </IcoText>
248
- <IcoText>
249
- <IcoText.Icon name="guardians" size={16} />
250
- <IcoText.Heading>size 16</IcoText.Heading>
251
- <IcoText.Paragraph>Use in moderately compact contexts</IcoText.Paragraph>
252
- </IcoText>
253
- <IcoText>
254
- <IcoText.Icon name="guardians" size={24} />
255
- <IcoText.Heading>size 24 (default)</IcoText.Heading>
256
- <IcoText.Paragraph>Standard — aligns best with h4 line-height</IcoText.Paragraph>
257
- </IcoText>
243
+ <IconText>
244
+ <IconText.Icon name="guardians" size={12} />
245
+ <IconText.Heading>size 12</IconText.Heading>
246
+ <IconText.Paragraph>Use in very compact contexts</IconText.Paragraph>
247
+ </IconText>
248
+ <IconText>
249
+ <IconText.Icon name="guardians" size={16} />
250
+ <IconText.Heading>size 16</IconText.Heading>
251
+ <IconText.Paragraph>Use in moderately compact contexts</IconText.Paragraph>
252
+ </IconText>
253
+ <IconText>
254
+ <IconText.Icon name="guardians" size={24} />
255
+ <IconText.Heading>size 24 (default)</IconText.Heading>
256
+ <IconText.Paragraph>Standard — aligns best with h4 line-height</IconText.Paragraph>
257
+ </IconText>
258
258
  </>
259
259
  );
260
260
  }
@@ -264,7 +264,7 @@ export default IconSizesExample;
264
264
  },
265
265
  },
266
266
  render: IconSizesTemplate,
267
- }, '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.');
267
+ }, '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 `IconText.Heading`\'s h4 line-height.');
268
268
  export const IconColors = withDescription({
269
269
  parameters: {
270
270
  controls: { disable: true },
@@ -272,15 +272,15 @@ export const IconColors = withDescription({
272
272
  source: {
273
273
  language: 'tsx',
274
274
  code: `
275
- import { IcoText } from '@arbor-education/design-system.components';
275
+ import { IconText } from '@arbor-education/design-system.components';
276
276
 
277
277
  function IconColorsExample() {
278
278
  return (
279
- <IcoText>
280
- <IcoText.Icon name="triangle-alert" color="var(--color-semantic-warning-600)" />
281
- <IcoText.Heading>Attendance alert</IcoText.Heading>
282
- <IcoText.Paragraph>3 pupils below 90% this half-term</IcoText.Paragraph>
283
- </IcoText>
279
+ <IconText>
280
+ <IconText.Icon name="triangle-alert" color="var(--color-semantic-warning-600)" />
281
+ <IconText.Heading>Attendance alert</IconText.Heading>
282
+ <IconText.Paragraph>3 pupils below 90% this half-term</IconText.Paragraph>
283
+ </IconText>
284
284
  );
285
285
  }
286
286
  export default IconColorsExample;
@@ -289,7 +289,7 @@ export default IconColorsExample;
289
289
  },
290
290
  },
291
291
  render: IconColorsTemplate,
292
- }, '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.');
292
+ }, 'The `color` prop on `IconText.Icon` accepts any CSS value — always use design token variables, never hardcoded hex. Semantic tokens (`--color-semantic-*`) are most appropriate for status-indicating icons.');
293
293
  export const MultipleParagraphs = withDescription({
294
294
  parameters: {
295
295
  controls: { disable: true },
@@ -297,16 +297,16 @@ export const MultipleParagraphs = withDescription({
297
297
  source: {
298
298
  language: 'tsx',
299
299
  code: `
300
- import { IcoText } from '@arbor-education/design-system.components';
300
+ import { IconText } from '@arbor-education/design-system.components';
301
301
 
302
302
  function MultipleParagraphsExample() {
303
303
  return (
304
- <IcoText>
305
- <IcoText.Icon name="calendar" />
306
- <IcoText.Heading>Parents' evening — Tuesday 14 May</IcoText.Heading>
307
- <IcoText.Paragraph>4:00 pm – 7:00 pm · Main Hall</IcoText.Paragraph>
308
- <IcoText.Paragraph>Appointments every 10 minutes. Please arrive 5 minutes early.</IcoText.Paragraph>
309
- </IcoText>
304
+ <IconText>
305
+ <IconText.Icon name="date" />
306
+ <IconText.Heading>Parents' evening — Tuesday 14 May</IconText.Heading>
307
+ <IconText.Paragraph>4:00 pm – 7:00 pm · Main Hall</IconText.Paragraph>
308
+ <IconText.Paragraph>Appointments every 10 minutes. Please arrive 5 minutes early.</IconText.Paragraph>
309
+ </IconText>
310
310
  );
311
311
  }
312
312
  export default MultipleParagraphsExample;
@@ -315,5 +315,5 @@ export default MultipleParagraphsExample;
315
315
  },
316
316
  },
317
317
  render: MultipleParagraphsTemplate,
318
- }, 'Multiple `IcoText.Paragraph` sub-components stack vertically in the content column. Use for supplementary detail lines below the primary heading.');
319
- //# sourceMappingURL=IcoText.stories.js.map
318
+ }, 'Multiple `IconText.Paragraph` sub-components stack vertically in the content column. Use for supplementary detail lines below the primary heading.');
319
+ //# sourceMappingURL=IconText.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconText.stories.js","sourceRoot":"","sources":["../../../src/components/iconText/IconText.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom/vitest';
2
+ //# sourceMappingURL=IconText.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconText.test.d.ts","sourceRoot":"","sources":["../../../src/components/iconText/IconText.test.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { render, screen, within } from '@testing-library/react';
3
2
  import '@testing-library/jest-dom/vitest';
3
+ import { render, screen, within } from '@testing-library/react';
4
4
  import { describe, expect, test } from 'vitest';
5
- import { IcoText } from './IcoText.js';
6
- describe('IcoText', () => {
5
+ import { IconText } from './IconText.js';
6
+ describe('IconText', () => {
7
7
  test('renders icon children before content children and keeps content in the content wrapper', () => {
8
- const { container } = render(_jsxs(IcoText, { children: [_jsx(IcoText.Heading, { children: "Article title" }), _jsx(IcoText.Icon, { name: "eye", screenReaderText: "Views" }), _jsx(IcoText.Paragraph, { children: "Helpful supporting copy" }), _jsx("span", { children: "Metadata" }), _jsx(IcoText.Icon, { name: "eye", screenReaderText: "More views" })] }));
8
+ const { container } = render(_jsxs(IconText, { children: [_jsx(IconText.Heading, { children: "Article title" }), _jsx(IconText.Icon, { name: "eye", screenReaderText: "Views" }), _jsx(IconText.Paragraph, { children: "Helpful supporting copy" }), _jsx("span", { children: "Metadata" }), _jsx(IconText.Icon, { name: "eye", screenReaderText: "More views" })] }));
9
9
  const root = container.querySelector('.ds-ico-text');
10
10
  const content = container.querySelector('.ds-ico-text__content');
11
11
  if (!content) {
12
- throw new Error('Expected IcoText content wrapper to exist');
12
+ throw new Error('Expected IconText content wrapper to exist');
13
13
  }
14
14
  const iconElements = Array.from(root?.querySelectorAll(':scope > .ds-ico-text__icon') ?? []);
15
15
  expect(iconElements).toHaveLength(2);
@@ -24,4 +24,4 @@ describe('IcoText', () => {
24
24
  expect(screen.getAllByRole('img', { hidden: true })).toHaveLength(2);
25
25
  });
26
26
  });
27
- //# sourceMappingURL=IcoText.test.js.map
27
+ //# sourceMappingURL=IconText.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconText.test.js","sourceRoot":"","sources":["../../../src/components/iconText/IconText.test.tsx"],"names":[],"mappings":";AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAClG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,MAAC,QAAQ,eACP,KAAC,QAAQ,CAAC,OAAO,gCAAiC,EAClD,KAAC,QAAQ,CAAC,IAAI,IAAC,IAAI,EAAC,KAAK,EAAC,gBAAgB,EAAC,OAAO,GAAG,EACrD,KAAC,QAAQ,CAAC,SAAS,0CAA6C,EAChE,sCAAqB,EACrB,KAAC,QAAQ,CAAC,IAAI,IAAC,IAAI,EAAC,KAAK,EAAC,gBAAgB,EAAC,YAAY,GAAG,IACjD,CACZ,CAAC;QAEF,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAiB,cAAc,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAiB,uBAAuB,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7F,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvE,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACnC,MAAM,CACJ,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAChF,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -12,6 +12,7 @@ export type ModalProps = {
12
12
  overlayClassName?: string;
13
13
  open?: boolean;
14
14
  portalTarget?: HTMLElement | null;
15
+ contentId?: string;
15
16
  children?: React.ReactNode;
16
17
  hideCloseButton?: boolean;
17
18
  closeHandler?: ModalContextValue['closeHandler'];
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,KAAK,iBAAiB,GAAG;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,YAAY,4CAAuC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,KAAK;YAAW,UAAU;;;;;;CA+BtC,CAAC;AAQF,yBAAiB,KAAK,CAAC;IACrB,KAAY,KAAK,GAAG,UAAU,CAAC;IAC/B,KAAY,WAAW,GAAG,gBAAgB,CAAC;IAC3C,KAAY,SAAS,GAAG,cAAc,CAAC;IACvC,KAAY,WAAW,GAAG,gBAAgB,CAAC;IAC3C,KAAY,gBAAgB,GAAG,WAAW,CAAC;IAC3C,KAAY,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;CAClD"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAe,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,KAAK,iBAAiB,GAAG;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,YAAY,4CAAuC,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAElC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,KAAK;YAAW,UAAU;;;;;;CAiCtC,CAAC;AAQF,yBAAiB,KAAK,CAAC;IACrB,KAAY,KAAK,GAAG,UAAU,CAAC;IAC/B,KAAY,WAAW,GAAG,gBAAgB,CAAC;IAC3C,KAAY,SAAS,GAAG,cAAc,CAAC;IACvC,KAAY,WAAW,GAAG,gBAAgB,CAAC;IAC3C,KAAY,gBAAgB,GAAG,WAAW,CAAC;IAC3C,KAAY,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;CAClD"}
@@ -10,9 +10,9 @@ import { ModalCloseButon } from './ModalCloseButton.js';
10
10
  import { ModalTitle } from './ModalTitle.js';
11
11
  export const ModalContext = createContext({});
12
12
  export const Modal = (props) => {
13
- const { className, overlayClassName, open, portalTarget, children, closeHandler, hideCloseButton = false, title, } = props;
13
+ const { className, overlayClassName, open, portalTarget, contentId, children, closeHandler, hideCloseButton = false, title, } = props;
14
14
  const overlayRef = useRef(null);
15
- return (_jsx(PopupParentContext.Provider, { value: overlayRef, children: _jsx(ModalContext.Provider, { value: { closeHandler }, children: _jsx(Dialog.Root, { open: open, children: _jsx(Dialog.Portal, { container: portalTarget, children: _jsx(Dialog.Overlay, { ref: overlayRef, className: classNames('ds-modal__overlay', overlayClassName), children: _jsxs(Dialog.Content, { className: classNames('ds-modal__container', className), children: [title && _jsx(ModalHeader, { children: _jsx(ModalTitle, { children: title }) }), children, !hideCloseButton && _jsx(ModalCloseButon, { className: "ds-modal__close-button--top-right" })] }) }) }) }) }) }));
15
+ return (_jsx(PopupParentContext.Provider, { value: overlayRef, children: _jsx(ModalContext.Provider, { value: { closeHandler }, children: _jsx(Dialog.Root, { open: open, children: _jsx(Dialog.Portal, { container: portalTarget, children: _jsx(Dialog.Overlay, { ref: overlayRef, className: classNames('ds-modal__overlay', overlayClassName), children: _jsxs(Dialog.Content, { id: contentId, className: classNames('ds-modal__container', className), children: [title && _jsx(ModalHeader, { children: _jsx(ModalTitle, { children: title }) }), children, !hideCloseButton && _jsx(ModalCloseButon, { className: "ds-modal__close-button--top-right" })] }) }) }) }) }) }));
16
16
  };
17
17
  Modal.Header = ModalHeader;
18
18
  Modal.Body = ModalBody;
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO7C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB,EAAE,CAAC,CAAC;AAajE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,EAAE;IACzC,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,eAAe,GAAG,KAAK,EACvB,KAAK,GACN,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YAC5C,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,YAAY,EAAE,YAC5C,KAAC,MAAM,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,YACrB,KAAC,MAAM,CAAC,MAAM,IAAC,SAAS,EAAE,YAAY,YACpC,KAAC,MAAM,CAAC,OAAO,IAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,YAC3F,MAAC,MAAM,CAAC,OAAO,IAAC,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,aACpE,KAAK,IAAI,KAAC,WAAW,cAAC,KAAC,UAAU,cAAE,KAAK,GAAc,GAAc,EACpE,QAAQ,EACR,CAAC,eAAe,IAAI,KAAC,eAAe,IAAC,SAAS,EAAC,mCAAmC,GAAG,IACvE,GACF,GACH,GACJ,GACQ,GACI,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AAC3B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;AACvB,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AAC3B,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC;AACpC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"Modal.js","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO7C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB,EAAE,CAAC,CAAC;AAejE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,EAAE;IACzC,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,eAAe,GAAG,KAAK,EACvB,KAAK,GACN,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YAC5C,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,YAAY,EAAE,YAC5C,KAAC,MAAM,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,YACrB,KAAC,MAAM,CAAC,MAAM,IAAC,SAAS,EAAE,YAAY,YACpC,KAAC,MAAM,CAAC,OAAO,IAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,YAE3F,MAAC,MAAM,CAAC,OAAO,IAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,aACnF,KAAK,IAAI,KAAC,WAAW,cAAC,KAAC,UAAU,cAAE,KAAK,GAAc,GAAc,EACpE,QAAQ,EACR,CAAC,eAAe,IAAI,KAAC,eAAe,IAAC,SAAS,EAAC,mCAAmC,GAAG,IACvE,GACF,GACH,GACJ,GACQ,GACI,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AAC3B,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;AACvB,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AAC3B,KAAK,CAAC,WAAW,GAAG,eAAe,CAAC;AACpC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ButtonHTMLAttributes } from 'react';
1
2
  export type TagColor = 'neutral' | 'orange' | 'blue' | 'green' | 'purple' | 'teal' | 'salmon' | 'yellow';
2
3
  export type TagProps = {
3
4
  children: React.ReactNode;
@@ -5,11 +6,23 @@ export type TagProps = {
5
6
  selected?: boolean;
6
7
  slotStart?: React.ReactNode;
7
8
  slotEnd?: React.ReactNode;
9
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
10
+ onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
11
+ onFocus?: React.FocusEventHandler<HTMLButtonElement>;
12
+ actionLabel?: string;
13
+ actionButtonTabIndex?: 0 | -1;
14
+ actionRef?: React.Ref<HTMLButtonElement>;
8
15
  onRemove?: () => void;
9
16
  removeLabel?: string;
17
+ onRemoveKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
18
+ onRemoveFocus?: React.FocusEventHandler<HTMLButtonElement>;
10
19
  removeButtonTabIndex?: 0 | -1;
20
+ removeButtonRef?: React.Ref<HTMLButtonElement>;
21
+ disabled?: boolean;
22
+ ariaControls?: string;
23
+ ariaExpanded?: ButtonHTMLAttributes<HTMLButtonElement>['aria-expanded'];
11
24
  };
12
- export declare const Tag: ({ children, color, selected, slotStart, slotEnd, onRemove, removeLabel, removeButtonTabIndex, }: TagProps) => React.JSX.Element;
25
+ export declare const Tag: ({ children, color, selected, slotStart, slotEnd, onClick, onKeyDown, onFocus, actionLabel, actionButtonTabIndex, actionRef, onRemove, removeLabel, onRemoveKeyDown, onRemoveFocus, removeButtonTabIndex, removeButtonRef, disabled, ariaControls, ariaExpanded, }: TagProps) => React.JSX.Element;
13
26
  export declare namespace Tag {
14
27
  type Color = TagColor;
15
28
  type Props = TagProps;
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/components/tag/Tag.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,SAAS,GAC5B,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,iGASjB,QAAQ,KAAG,KAAK,CAAC,GAAG,CAAC,OAyBvB,CAAC;AAEF,yBAAiB,GAAG,CAAC;IACnB,KAAY,KAAK,GAAG,QAAQ,CAAC;IAC7B,KAAY,KAAK,GAAG,QAAQ,CAAC;CAC9B"}
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/components/tag/Tag.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAC5B,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC;CACzE,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,mQAqBjB,QAAQ,KAAG,KAAK,CAAC,GAAG,CAAC,OA0DvB,CAAC;AAEF,yBAAiB,GAAG,CAAC;IACnB,KAAY,KAAK,GAAG,QAAQ,CAAC;IAC7B,KAAY,KAAK,GAAG,QAAQ,CAAC;CAC9B"}
@@ -1,12 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import classNames from 'classnames';
3
3
  import { Icon } from '../icon/Icon.js';
4
- export const Tag = ({ children, color = 'neutral', selected = false, slotStart, slotEnd, onRemove, removeLabel = 'Remove', removeButtonTabIndex = 0, }) => {
4
+ export const Tag = ({ children, color = 'neutral', selected = false, slotStart, slotEnd, onClick, onKeyDown, onFocus, actionLabel, actionButtonTabIndex = 0, actionRef, onRemove, removeLabel = 'Remove', onRemoveKeyDown, onRemoveFocus, removeButtonTabIndex = 0, removeButtonRef, disabled = false, ariaControls, ariaExpanded, }) => {
5
+ const tagContent = onClick
6
+ ? (_jsxs("button", { type: "button", className: "ds-tag__content ds-tag__action", "aria-label": actionLabel, "aria-controls": ariaControls, "aria-expanded": ariaExpanded, onClick: onClick, onKeyDown: onKeyDown, onFocus: onFocus, tabIndex: actionButtonTabIndex, ref: actionRef, disabled: disabled, children: [slotStart && _jsx("span", { className: "ds-tag__slot-start", children: slotStart }), _jsx("span", { className: "ds-tag__label", children: children }), slotEnd && _jsx("span", { className: "ds-tag__slot-end", children: slotEnd })] }))
7
+ : (_jsxs("span", { className: "ds-tag__content", children: [slotStart && _jsx("span", { className: "ds-tag__slot-start", children: slotStart }), _jsx("span", { className: "ds-tag__label", children: children }), slotEnd && _jsx("span", { className: "ds-tag__slot-end", children: slotEnd })] }));
5
8
  return (_jsxs("span", { className: classNames('ds-tag', `ds-tag--${color}`, {
6
9
  'ds-tag--selected': selected,
7
- }), children: [slotStart && _jsx("span", { className: "ds-tag__slot-start", children: slotStart }), _jsx("span", { className: "ds-tag__label", children: children }), slotEnd && _jsx("span", { className: "ds-tag__slot-end", children: slotEnd }), onRemove && (_jsx("button", { type: "button", className: "ds-tag__remove", "aria-label": removeLabel, onClick: (e) => {
10
+ 'ds-tag--interactive': Boolean(onClick),
11
+ 'ds-tag--removable': Boolean(onRemove),
12
+ 'ds-tag--disabled': disabled,
13
+ }), children: [tagContent, onRemove && (_jsx("button", { type: "button", className: "ds-tag__remove", "aria-label": removeLabel, onClick: (e) => {
8
14
  e.stopPropagation();
9
15
  onRemove();
10
- }, tabIndex: removeButtonTabIndex, children: _jsx(Icon, { name: "x", size: 12 }) }))] }));
16
+ }, onKeyDown: onRemoveKeyDown, onFocus: onRemoveFocus, tabIndex: removeButtonTabIndex, ref: removeButtonRef, disabled: disabled, children: _jsx(Icon, { name: "x", size: 12 }) }))] }));
11
17
  };
12
18
  //# sourceMappingURL=Tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/components/tag/Tag.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAsB5C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAClB,QAAQ,EACR,KAAK,GAAG,SAAS,EACjB,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,oBAAoB,GAAG,CAAC,GACf,EAAqB,EAAE;IAChC,OAAO,CACL,gBAAM,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,KAAK,EAAE,EAAE;YACxD,kBAAkB,EAAE,QAAQ;SAC7B,CAAC,aAEC,SAAS,IAAI,eAAM,SAAS,EAAC,oBAAoB,YAAE,SAAS,GAAQ,EACrE,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAQ,EAChD,OAAO,IAAI,eAAM,SAAS,EAAC,kBAAkB,YAAE,OAAO,GAAQ,EAC9D,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gBAAgB,gBACd,WAAW,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,QAAQ,EAAE,CAAC;gBACb,CAAC,EACD,QAAQ,EAAE,oBAAoB,YAE9B,KAAC,IAAI,IAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,EAAE,GAAI,GACpB,CACV,IACI,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../../src/components/tag/Tag.tsx"],"names":[],"mappings":";AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAmC5C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAClB,QAAQ,EACR,KAAK,GAAG,SAAS,EACjB,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,oBAAoB,GAAG,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,WAAW,GAAG,QAAQ,EACtB,eAAe,EACf,aAAa,EACb,oBAAoB,GAAG,CAAC,EACxB,eAAe,EACf,QAAQ,GAAG,KAAK,EAChB,YAAY,EACZ,YAAY,GACH,EAAqB,EAAE;IAChC,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,CACE,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gCAAgC,gBAC9B,WAAW,mBACR,YAAY,mBACZ,YAAY,EAC3B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,QAAQ,aAEjB,SAAS,IAAI,eAAM,SAAS,EAAC,oBAAoB,YAAE,SAAS,GAAQ,EACrE,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAQ,EAChD,OAAO,IAAI,eAAM,SAAS,EAAC,kBAAkB,YAAE,OAAO,GAAQ,IACxD,CACV;QACH,CAAC,CAAC,CACE,gBAAM,SAAS,EAAC,iBAAiB,aAC9B,SAAS,IAAI,eAAM,SAAS,EAAC,oBAAoB,YAAE,SAAS,GAAQ,EACrE,eAAM,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAQ,EAChD,OAAO,IAAI,eAAM,SAAS,EAAC,kBAAkB,YAAE,OAAO,GAAQ,IAC1D,CACR,CAAC;IAEN,OAAO,CACL,gBAAM,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,KAAK,EAAE,EAAE;YACxD,kBAAkB,EAAE,QAAQ;YAC5B,qBAAqB,EAAE,OAAO,CAAC,OAAO,CAAC;YACvC,mBAAmB,EAAE,OAAO,CAAC,QAAQ,CAAC;YACtC,kBAAkB,EAAE,QAAQ;SAC7B,CAAC,aAEC,UAAU,EACV,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gBAAgB,gBACd,WAAW,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE,CAAC;oBACpB,QAAQ,EAAE,CAAC;gBACb,CAAC,EACD,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,QAAQ,YAElB,KAAC,IAAI,IAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,EAAE,GAAI,GACpB,CACV,IACI,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -3,7 +3,7 @@ import { Tag, type TagColor } from './Tag.js';
3
3
  declare function TagDocsPage(): import("react/jsx-runtime").JSX.Element;
4
4
  declare const meta: {
5
5
  title: string;
6
- component: ({ children, color, selected, slotStart, slotEnd, onRemove, removeLabel, removeButtonTabIndex, }: import("./Tag.js").TagProps) => React.JSX.Element;
6
+ component: ({ children, color, selected, slotStart, slotEnd, onClick, onKeyDown, onFocus, actionLabel, actionButtonTabIndex, actionRef, onRemove, removeLabel, onRemoveKeyDown, onRemoveFocus, removeButtonTabIndex, removeButtonRef, disabled, ariaControls, ariaExpanded, }: import("./Tag.js").TagProps) => React.JSX.Element;
7
7
  tags: string[];
8
8
  parameters: {
9
9
  docs: {
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.stories.d.ts","sourceRoot":"","sources":["../../../src/components/tag/Tag.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAc5D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAiH9C,iBAAS,WAAW,4CAmBnB;AAwBD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHkB,CAAC;AAE7B,eAAe,IAAI,CAAC;AAIpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AAgIlC,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAuBxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAwCxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAwBtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAuBrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAuBtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAuBzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KA+B3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAwBvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAiC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAuClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAwBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAqC/B,CAAC"}
1
+ {"version":3,"file":"Tag.stories.d.ts","sourceRoot":"","sources":["../../../src/components/tag/Tag.stories.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAK5D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAiH9C,iBAAS,WAAW,4CAmBnB;AAwBD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHkB,CAAC;AAE7B,eAAe,IAAI,CAAC;AAIpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AAgIlC,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAuBxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAwCxB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAwBtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAuBrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAuBtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAuBzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KA+B3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAwBvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAiC/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAuClC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAwBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAqC/B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Controls, Heading as DocHeading, Markdown, Primary as DocPrimary, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
3
- import { useState } from 'react';
4
- import { fn } from 'storybook/test';
2
+ import { Controls, Heading as DocHeading, Primary as DocPrimary, Markdown, Stories, Subtitle, Title, } from '@storybook/addon-docs/blocks';
5
3
  import { Dot } from '../dot/Dot.js';
6
4
  import { Icon } from '../icon/Icon.js';
5
+ import { useState } from 'react';
6
+ import { fn } from 'storybook/test';
7
7
  import { Tag } from './Tag.js';
8
8
  // ---------------------------------------------------------------------------
9
9
  // Docs page content