@arbor-education/design-system.components 0.13.0 → 0.14.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 (232) hide show
  1. package/.agent-memory/blanche-designspert/MEMORY.md +189 -0
  2. package/.agent-memory/dorothy-fact-checker/MEMORY.md +228 -0
  3. package/.agent-memory/dorothy-fact-checker/numberinput_component.md +53 -0
  4. package/.agent-memory/dorothy-fact-checker/progress_component.md +36 -0
  5. package/.agent-memory/rose-storybookspert/MEMORY.md +105 -0
  6. package/.agent-memory/sophia-componentspert/MEMORY.md +34 -0
  7. package/{.claude/agent-memory → .agent-memory}/sophia-componentspert/components.md +170 -17
  8. package/{.claude → .gather}/agents/blanche-designspert.md +7 -2
  9. package/{.claude → .gather}/agents/dorothy-fact-checker.md +7 -2
  10. package/{.claude → .gather}/agents/rose-storybookspert.md +80 -11
  11. package/{.claude → .gather}/agents/sophia-componentspert.md +9 -4
  12. package/.gather/gather.yaml +9 -0
  13. package/{CLAUDE.md → .gather/instructions/project-overview.md} +42 -9
  14. package/{.claude → .gather}/skills/analyze-design/README.md +5 -0
  15. package/{.claude → .gather}/skills/analyze-design/SKILL.md +1 -1
  16. package/.gather/skills/analyze-design/meta.md +4 -0
  17. package/{.claude → .gather}/skills/create-page/README.md +5 -0
  18. package/{.claude → .gather}/skills/create-page/design-analysis-template.md +5 -0
  19. package/.gather/skills/create-page/meta.md +4 -0
  20. package/{.claude → .gather}/skills/create-page/page-template.scss +5 -0
  21. package/{.claude → .gather}/skills/create-page/page-template.tsx +5 -0
  22. package/{.claude → .gather}/skills/map-legacy/README.md +5 -0
  23. package/.gather/skills/map-legacy/meta.md +4 -0
  24. package/{.claude → .gather}/skills/migrate-page/README.md +5 -0
  25. package/.gather/skills/migrate-page/meta.md +4 -0
  26. package/.gather/skills/write-stories/README.md +157 -0
  27. package/.gather/skills/write-stories/SKILL.md +841 -0
  28. package/.gather/skills/write-stories/meta.md +4 -0
  29. package/.ralph/storybook-upgrade/knowledge.md +308 -0
  30. package/.ralph/storybook-upgrade/prd.json +777 -0
  31. package/.ralph/storybook-upgrade/progress.md +342 -0
  32. package/.storybook/DocsTemplate.tsx +122 -0
  33. package/.storybook/preview.ts +40 -0
  34. package/.stylelintignore +2 -0
  35. package/CHANGELOG.md +14 -0
  36. package/{.claude/component-library.md → component-library.md} +27 -10
  37. package/dist/components/articleCard/ArticleCard.d.ts +30 -0
  38. package/dist/components/articleCard/ArticleCard.d.ts.map +1 -0
  39. package/dist/components/articleCard/ArticleCard.js +24 -0
  40. package/dist/components/articleCard/ArticleCard.js.map +1 -0
  41. package/dist/components/articleCard/ArticleCard.stories.d.ts +18 -0
  42. package/dist/components/articleCard/ArticleCard.stories.d.ts.map +1 -0
  43. package/dist/components/articleCard/ArticleCard.stories.js +112 -0
  44. package/dist/components/articleCard/ArticleCard.stories.js.map +1 -0
  45. package/dist/components/articleCard/ArticleCard.test.d.ts +2 -0
  46. package/dist/components/articleCard/ArticleCard.test.d.ts.map +1 -0
  47. package/dist/components/articleCard/ArticleCard.test.js +49 -0
  48. package/dist/components/articleCard/ArticleCard.test.js.map +1 -0
  49. package/dist/components/badge/Badge.stories.d.ts +85 -6
  50. package/dist/components/badge/Badge.stories.d.ts.map +1 -1
  51. package/dist/components/badge/Badge.stories.js +626 -27
  52. package/dist/components/badge/Badge.stories.js.map +1 -1
  53. package/dist/components/banner/Banner.stories.d.ts +129 -63
  54. package/dist/components/banner/Banner.stories.d.ts.map +1 -1
  55. package/dist/components/banner/Banner.stories.js +855 -39
  56. package/dist/components/banner/Banner.stories.js.map +1 -1
  57. package/dist/components/button/Button.stories.d.ts +148 -8
  58. package/dist/components/button/Button.stories.d.ts.map +1 -1
  59. package/dist/components/button/Button.stories.js +1089 -80
  60. package/dist/components/button/Button.stories.js.map +1 -1
  61. package/dist/components/card/Card.d.ts +41 -12
  62. package/dist/components/card/Card.d.ts.map +1 -1
  63. package/dist/components/card/Card.js +46 -17
  64. package/dist/components/card/Card.js.map +1 -1
  65. package/dist/components/card/Card.stories.d.ts +9 -84
  66. package/dist/components/card/Card.stories.d.ts.map +1 -1
  67. package/dist/components/card/Card.stories.js +15 -73
  68. package/dist/components/card/Card.stories.js.map +1 -1
  69. package/dist/components/card/Card.test.js +50 -152
  70. package/dist/components/card/Card.test.js.map +1 -1
  71. package/dist/components/dot/Dot.stories.d.ts +46 -11
  72. package/dist/components/dot/Dot.stories.d.ts.map +1 -1
  73. package/dist/components/dot/Dot.stories.js +504 -15
  74. package/dist/components/dot/Dot.stories.js.map +1 -1
  75. package/dist/components/dropdown/Dropdown.stories.d.ts +89 -14
  76. package/dist/components/dropdown/Dropdown.stories.d.ts.map +1 -1
  77. package/dist/components/dropdown/Dropdown.stories.js +769 -17
  78. package/dist/components/dropdown/Dropdown.stories.js.map +1 -1
  79. package/dist/components/formField/FormField.stories.d.ts +95 -35
  80. package/dist/components/formField/FormField.stories.d.ts.map +1 -1
  81. package/dist/components/formField/FormField.stories.js +1174 -69
  82. package/dist/components/formField/FormField.stories.js.map +1 -1
  83. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts +96 -9
  84. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.d.ts.map +1 -1
  85. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js +717 -10
  86. package/dist/components/formField/inputs/checkbox/CheckboxInput.stories.js.map +1 -1
  87. package/dist/components/formField/inputs/number/NumberInput.stories.d.ts +149 -11
  88. package/dist/components/formField/inputs/number/NumberInput.stories.d.ts.map +1 -1
  89. package/dist/components/formField/inputs/number/NumberInput.stories.js +624 -10
  90. package/dist/components/formField/inputs/number/NumberInput.stories.js.map +1 -1
  91. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.d.ts +74 -1
  92. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.d.ts.map +1 -1
  93. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js +673 -44
  94. package/dist/components/formField/inputs/radio/RadioButtonInput.stories.js.map +1 -1
  95. package/dist/components/formField/inputs/text/TextInput.stories.d.ts +119 -1
  96. package/dist/components/formField/inputs/text/TextInput.stories.d.ts.map +1 -1
  97. package/dist/components/formField/inputs/text/TextInput.stories.js +549 -10
  98. package/dist/components/formField/inputs/text/TextInput.stories.js.map +1 -1
  99. package/dist/components/formField/inputs/textArea/TextArea.stories.d.ts +129 -4
  100. package/dist/components/formField/inputs/textArea/TextArea.stories.d.ts.map +1 -1
  101. package/dist/components/formField/inputs/textArea/TextArea.stories.js +577 -3
  102. package/dist/components/formField/inputs/textArea/TextArea.stories.js.map +1 -1
  103. package/dist/components/formField/inputs/time/TimeInput.d.ts +1 -1
  104. package/dist/components/formField/inputs/time/TimeInput.stories.d.ts +1 -1
  105. package/dist/components/heading/Heading.stories.d.ts +449 -50
  106. package/dist/components/heading/Heading.stories.d.ts.map +1 -1
  107. package/dist/components/heading/Heading.stories.js +536 -60
  108. package/dist/components/heading/Heading.stories.js.map +1 -1
  109. package/dist/components/icoText/IcoText.d.ts +37 -0
  110. package/dist/components/icoText/IcoText.d.ts.map +1 -0
  111. package/dist/components/icoText/IcoText.js +29 -0
  112. package/dist/components/icoText/IcoText.js.map +1 -0
  113. package/dist/components/icoText/IcoText.stories.d.ts +34 -0
  114. package/dist/components/icoText/IcoText.stories.d.ts.map +1 -0
  115. package/dist/components/icoText/IcoText.stories.js +24 -0
  116. package/dist/components/icoText/IcoText.stories.js.map +1 -0
  117. package/dist/components/icoText/IcoText.test.d.ts +2 -0
  118. package/dist/components/icoText/IcoText.test.d.ts.map +1 -0
  119. package/dist/components/icoText/IcoText.test.js +27 -0
  120. package/dist/components/icoText/IcoText.test.js.map +1 -0
  121. package/dist/components/icon/Icon.stories.d.ts +81 -10
  122. package/dist/components/icon/Icon.stories.d.ts.map +1 -1
  123. package/dist/components/icon/Icon.stories.js +979 -8
  124. package/dist/components/icon/Icon.stories.js.map +1 -1
  125. package/dist/components/kpiCard/KPICard.d.ts +13 -0
  126. package/dist/components/kpiCard/KPICard.d.ts.map +1 -0
  127. package/dist/components/kpiCard/KPICard.js +8 -0
  128. package/dist/components/kpiCard/KPICard.js.map +1 -0
  129. package/dist/components/kpiCard/KPICard.stories.d.ts +9 -0
  130. package/dist/components/kpiCard/KPICard.stories.d.ts.map +1 -0
  131. package/dist/components/kpiCard/KPICard.stories.js +18 -0
  132. package/dist/components/kpiCard/KPICard.stories.js.map +1 -0
  133. package/dist/components/kpiCard/KPICard.test.d.ts +2 -0
  134. package/dist/components/kpiCard/KPICard.test.d.ts.map +1 -0
  135. package/dist/components/kpiCard/KPICard.test.js +37 -0
  136. package/dist/components/kpiCard/KPICard.test.js.map +1 -0
  137. package/dist/components/kvpList/KVPList.d.ts +34 -0
  138. package/dist/components/kvpList/KVPList.d.ts.map +1 -0
  139. package/dist/components/kvpList/KVPList.js +20 -0
  140. package/dist/components/kvpList/KVPList.js.map +1 -0
  141. package/dist/components/kvpList/KVPList.stories.d.ts +27 -0
  142. package/dist/components/kvpList/KVPList.stories.d.ts.map +1 -0
  143. package/dist/components/kvpList/KVPList.stories.js +18 -0
  144. package/dist/components/kvpList/KVPList.stories.js.map +1 -0
  145. package/dist/components/kvpList/KVPList.test.d.ts +2 -0
  146. package/dist/components/kvpList/KVPList.test.d.ts.map +1 -0
  147. package/dist/components/kvpList/KVPList.test.js +29 -0
  148. package/dist/components/kvpList/KVPList.test.js.map +1 -0
  149. package/dist/components/pill/Pill.stories.d.ts +71 -19
  150. package/dist/components/pill/Pill.stories.d.ts.map +1 -1
  151. package/dist/components/pill/Pill.stories.js +573 -14
  152. package/dist/components/pill/Pill.stories.js.map +1 -1
  153. package/dist/components/progress/Progress.stories.d.ts +75 -298
  154. package/dist/components/progress/Progress.stories.d.ts.map +1 -1
  155. package/dist/components/progress/Progress.stories.js +449 -52
  156. package/dist/components/progress/Progress.stories.js.map +1 -1
  157. package/dist/components/separator/Separator.stories.d.ts +58 -5
  158. package/dist/components/separator/Separator.stories.d.ts.map +1 -1
  159. package/dist/components/separator/Separator.stories.js +443 -4
  160. package/dist/components/separator/Separator.stories.js.map +1 -1
  161. package/dist/components/singleUser/SingleUser.d.ts +1 -1
  162. package/dist/components/tabs/TabsItem.stories.d.ts +2 -2
  163. package/dist/components/tag/Tag.stories.d.ts +116 -5
  164. package/dist/components/tag/Tag.stories.d.ts.map +1 -1
  165. package/dist/components/tag/Tag.stories.js +581 -28
  166. package/dist/components/tag/Tag.stories.js.map +1 -1
  167. package/dist/index.css +194 -23
  168. package/dist/index.css.map +1 -1
  169. package/dist/index.d.ts +13 -4
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +12 -3
  172. package/dist/index.js.map +1 -1
  173. package/eslint.config.mts +5 -1
  174. package/package.json +3 -3
  175. package/src/components/articleCard/ArticleCard.stories.tsx +132 -0
  176. package/src/components/articleCard/ArticleCard.test.tsx +121 -0
  177. package/src/components/articleCard/ArticleCard.tsx +100 -0
  178. package/src/components/articleCard/articleCard.scss +39 -0
  179. package/src/components/badge/Badge.stories.tsx +869 -42
  180. package/src/components/banner/Banner.stories.tsx +1081 -63
  181. package/src/components/button/Button.stories.tsx +1394 -99
  182. package/src/components/card/Card.stories.tsx +35 -79
  183. package/src/components/card/Card.test.tsx +72 -190
  184. package/src/components/card/Card.tsx +117 -58
  185. package/src/components/card/card.scss +18 -31
  186. package/src/components/dot/Dot.stories.tsx +723 -32
  187. package/src/components/dropdown/Dropdown.stories.tsx +1174 -35
  188. package/src/components/formField/FormField.stories.tsx +1522 -105
  189. package/src/components/formField/inputs/checkbox/CheckboxInput.stories.tsx +1020 -15
  190. package/src/components/formField/inputs/number/NumberInput.stories.tsx +908 -15
  191. package/src/components/formField/inputs/radio/RadioButtonInput.stories.tsx +932 -51
  192. package/src/components/formField/inputs/text/TextInput.stories.tsx +773 -13
  193. package/src/components/formField/inputs/textArea/TextArea.stories.tsx +756 -8
  194. package/src/components/heading/Heading.stories.tsx +752 -120
  195. package/src/components/icoText/IcoText.stories.tsx +47 -0
  196. package/src/components/icoText/IcoText.test.tsx +41 -0
  197. package/src/components/icoText/IcoText.tsx +93 -0
  198. package/src/components/icoText/icoText.scss +34 -0
  199. package/src/components/icon/Icon.stories.tsx +1446 -12
  200. package/src/components/kpiCard/KPICard.stories.tsx +47 -0
  201. package/src/components/kpiCard/KPICard.test.tsx +60 -0
  202. package/src/components/kpiCard/KPICard.tsx +45 -0
  203. package/src/components/kpiCard/kpiCard.scss +35 -0
  204. package/src/components/kvpList/KVPList.stories.tsx +51 -0
  205. package/src/components/kvpList/KVPList.test.tsx +66 -0
  206. package/src/components/kvpList/KVPList.tsx +109 -0
  207. package/src/components/kvpList/kvpList.scss +64 -0
  208. package/src/components/pill/Pill.stories.tsx +867 -21
  209. package/src/components/progress/Progress.stories.tsx +625 -58
  210. package/src/components/separator/Separator.stories.tsx +730 -8
  211. package/src/components/separator/separator.scss +12 -3
  212. package/src/components/tag/Tag.stories.tsx +755 -53
  213. package/src/index.scss +4 -0
  214. package/src/index.ts +13 -4
  215. package/src/tokens.scss +6 -0
  216. package/tokens/json/Arbor.json +30 -0
  217. package/.claude/agent-memory/blanche-designspert/MEMORY.md +0 -64
  218. package/.claude/agent-memory/dorothy-fact-checker/MEMORY.md +0 -129
  219. package/.claude/agent-memory/rose-storybookspert/MEMORY.md +0 -29
  220. package/.claude/agent-memory/sophia-componentspert/MEMORY.md +0 -14
  221. package/.claude/design-assessment-daily-attendance-2026-04-10.md +0 -566
  222. package/.claude/figma-assessment-7154-58899.md +0 -404
  223. package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-11086-97537.md +0 -392
  224. package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-551-41974.md +0 -474
  225. package/.claude/figma-assessment-UKQfcxnT4rlHHNuiumt4o1-551-43094.md +0 -462
  226. package/.claude/figma-assessment-fcFK4CGzkz2fVyY3koX8ZE-7154-59061.md +0 -440
  227. package/.claude/migration-report-custom-report-writer-2026-02-19.md +0 -591
  228. /package/{.claude/agent-memory → .agent-memory}/blanche-designspert/token-review-patterns.md +0 -0
  229. /package/{.claude/agent-memory → .agent-memory}/rose-storybookspert/patterns.md +0 -0
  230. /package/{.claude → .gather}/skills/create-page/SKILL.md +0 -0
  231. /package/{.claude → .gather}/skills/map-legacy/SKILL.md +0 -0
  232. /package/{.claude → .gather}/skills/migrate-page/SKILL.md +0 -0
@@ -0,0 +1,47 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { IcoText } from './IcoText';
3
+
4
+ const meta = {
5
+ title: 'Components/IcoText',
6
+ component: IcoText,
7
+ parameters: {
8
+ docs: {
9
+ description: {
10
+ component:
11
+ 'Use `IcoText.Icon` as a direct child of `IcoText` so it is hoisted into the leading icon rail.',
12
+ },
13
+ },
14
+ },
15
+ } satisfies Meta<typeof IcoText>;
16
+
17
+ type Story = StoryObj<typeof meta>;
18
+
19
+ export const WithIconAndParagraph: Story = {
20
+ render: args => (
21
+ <IcoText {...args}>
22
+ <IcoText.Icon name="eye" />
23
+ <IcoText.Heading>Article heading</IcoText.Heading>
24
+ <IcoText.Paragraph>Supporting text for an article card layout.</IcoText.Paragraph>
25
+ </IcoText>
26
+ ),
27
+ };
28
+
29
+ export const TextOnly: Story = {
30
+ render: args => (
31
+ <IcoText {...args}>
32
+ <IcoText.Heading>Article heading</IcoText.Heading>
33
+ <IcoText.Paragraph>Supporting text with no leading icon.</IcoText.Paragraph>
34
+ </IcoText>
35
+ ),
36
+ };
37
+
38
+ export const HeadingWithIcon: Story = {
39
+ render: args => (
40
+ <IcoText {...args}>
41
+ <IcoText.Icon name="eye" />
42
+ <IcoText.Heading>Heading only</IcoText.Heading>
43
+ </IcoText>
44
+ ),
45
+ };
46
+
47
+ export default meta;
@@ -0,0 +1,41 @@
1
+ import { render, screen, within } from '@testing-library/react';
2
+ import '@testing-library/jest-dom/vitest';
3
+ import { describe, expect, test } from 'vitest';
4
+ import { IcoText } from './IcoText';
5
+
6
+ describe('IcoText', () => {
7
+ test('renders icon children before content children and keeps content in the content wrapper', () => {
8
+ const { container } = render(
9
+ <IcoText>
10
+ <IcoText.Heading>Article title</IcoText.Heading>
11
+ <IcoText.Icon name="eye" screenReaderText="Views" />
12
+ <IcoText.Paragraph>Helpful supporting copy</IcoText.Paragraph>
13
+ <span>Metadata</span>
14
+ <IcoText.Icon name="eye" screenReaderText="More views" />
15
+ </IcoText>,
16
+ );
17
+
18
+ const root = container.querySelector<HTMLDivElement>('.ds-ico-text');
19
+ const content = container.querySelector<HTMLDivElement>('.ds-ico-text__content');
20
+
21
+ if (!content) {
22
+ throw new Error('Expected IcoText content wrapper to exist');
23
+ }
24
+
25
+ const iconElements = Array.from(root?.querySelectorAll(':scope > .ds-ico-text__icon') ?? []);
26
+
27
+ expect(iconElements).toHaveLength(2);
28
+ expect(root?.lastElementChild).toBe(content);
29
+ expect(content.querySelectorAll('.ds-ico-text__icon')).toHaveLength(0);
30
+ iconElements.forEach((iconElement) => {
31
+ expect(
32
+ iconElement.compareDocumentPosition(content) & Node.DOCUMENT_POSITION_FOLLOWING,
33
+ ).not.toBe(0);
34
+ });
35
+
36
+ expect(within(content).getByRole('heading', { level: 4 })).toHaveTextContent('Article title');
37
+ expect(within(content).getByText('Helpful supporting copy')).toBeInTheDocument();
38
+ expect(within(content).getByText('Metadata')).toBeInTheDocument();
39
+ expect(screen.getAllByRole('img', { hidden: true })).toHaveLength(2);
40
+ });
41
+ });
@@ -0,0 +1,93 @@
1
+ import classNames from 'classnames';
2
+ import type { IconName } from 'Components/icon/allowedIcons';
3
+ import { Icon } from 'Components/icon/Icon';
4
+ import { Children, isValidElement } from 'react';
5
+
6
+ export type IcoTextProps = {
7
+ children?: React.ReactNode;
8
+ className?: string;
9
+ };
10
+
11
+ export type IcoTextHeadingProps = React.HTMLAttributes<HTMLHeadingElement> & {
12
+ children: React.ReactNode;
13
+ };
14
+
15
+ export type IcoTextParagraphProps = React.HTMLAttributes<HTMLParagraphElement> & {
16
+ children: React.ReactNode;
17
+ };
18
+
19
+ export type IcoTextIconProps = {
20
+ className?: string;
21
+ color?: Icon.Props['color'];
22
+ name: IconName;
23
+ screenReaderText?: string;
24
+ size?: 12 | 16 | 24;
25
+ };
26
+
27
+ const IcoTextHeading = ({
28
+ children,
29
+ className,
30
+ ...rest
31
+ }: IcoTextHeadingProps): React.JSX.Element => (
32
+ <h4 className={classNames('ds-ico-text__heading', className)} {...rest}>
33
+ {children}
34
+ </h4>
35
+ );
36
+
37
+ const IcoTextParagraph = ({
38
+ children,
39
+ className,
40
+ ...rest
41
+ }: IcoTextParagraphProps): React.JSX.Element => (
42
+ <p className={classNames('ds-ico-text__paragraph', className)} {...rest}>
43
+ {children}
44
+ </p>
45
+ );
46
+
47
+ const IcoTextIcon = ({
48
+ className,
49
+ color,
50
+ name,
51
+ screenReaderText,
52
+ size = 24,
53
+ }: IcoTextIconProps): React.JSX.Element => (
54
+ <Icon
55
+ name={name}
56
+ className={classNames('ds-ico-text__icon', className)}
57
+ color={color}
58
+ screenReaderText={screenReaderText}
59
+ size={size}
60
+ />
61
+ );
62
+
63
+ const IcoTextRoot = ({ children, className }: IcoTextProps): React.JSX.Element => {
64
+ const iconChildren: React.ReactNode[] = [];
65
+ const contentChildren: React.ReactNode[] = [];
66
+
67
+ Children.forEach(children, (child) => {
68
+ if (isValidElement(child) && child.type === IcoTextIcon) {
69
+ iconChildren.push(child);
70
+ return;
71
+ }
72
+
73
+ contentChildren.push(child);
74
+ });
75
+
76
+ return (
77
+ <div className={classNames('ds-ico-text', className)}>
78
+ {iconChildren}
79
+ <div className="ds-ico-text__content">{contentChildren}</div>
80
+ </div>
81
+ );
82
+ };
83
+
84
+ IcoTextHeading.displayName = 'IcoText.Heading';
85
+ IcoTextParagraph.displayName = 'IcoText.Paragraph';
86
+ IcoTextIcon.displayName = 'IcoText.Icon';
87
+ IcoTextRoot.displayName = 'IcoText';
88
+
89
+ export const IcoText = Object.assign(IcoTextRoot, {
90
+ Heading: IcoTextHeading,
91
+ Paragraph: IcoTextParagraph,
92
+ Icon: IcoTextIcon,
93
+ });
@@ -0,0 +1,34 @@
1
+ .ds-ico-text {
2
+ display: flex;
3
+ align-items: flex-start;
4
+ gap: var(--ico-text-spacing-gap-horizontal);
5
+ width: 100%;
6
+ }
7
+
8
+ .ds-ico-text__icon {
9
+ flex-shrink: 0;
10
+ }
11
+
12
+ .ds-ico-text__content {
13
+ display: flex;
14
+ flex: 1 1 auto;
15
+ min-width: 0;
16
+ flex-direction: column;
17
+ gap: var(--ico-text-spacing-gap-vertical);
18
+ }
19
+
20
+ .ds-ico-text__heading {
21
+ margin: 0;
22
+ font-family: var(--type-headings-h4-family);
23
+ font-size: var(--type-headings-h4-size);
24
+ font-weight: var(--type-headings-h4-weight);
25
+ line-height: var(--type-headings-h4-line-height);
26
+ }
27
+
28
+ .ds-ico-text__paragraph {
29
+ margin: 0;
30
+ font-family: var(--type-body-p-family);
31
+ font-size: var(--type-body-p-size);
32
+ font-weight: var(--type-body-p-weight);
33
+ line-height: var(--type-body-line-height);
34
+ }