@scottish-government/designsystem-react 0.8.0 → 0.10.0-beta.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 (169) hide show
  1. package/.storybook/main.ts +20 -0
  2. package/.storybook/manager.ts +13 -0
  3. package/.storybook/preview-head.html +1 -0
  4. package/.storybook/preview.tsx +56 -0
  5. package/.storybook/sgdsArgTypes.ts +123 -0
  6. package/.storybook/sgdsTheme.ts +9 -0
  7. package/.storybook/vitest.setup.ts +7 -0
  8. package/@types/common/AbstractNotificationBanner.d.ts +2 -2
  9. package/@types/common/ActionLink.d.ts +1 -1
  10. package/@types/common/Icon.d.ts +1 -1
  11. package/@types/components/Accordion.d.ts +2 -3
  12. package/@types/components/Button.d.ts +5 -5
  13. package/@types/components/CategoryItem.d.ts +10 -0
  14. package/@types/components/CategoryList.d.ts +7 -0
  15. package/@types/components/Checkbox.d.ts +2 -2
  16. package/@types/components/ContentsNav.d.ts +1 -1
  17. package/@types/components/DatePicker.d.ts +1 -1
  18. package/@types/components/ErrorMessage.d.ts +1 -2
  19. package/@types/components/ErrorSummary.d.ts +1 -1
  20. package/@types/components/FileDownload.d.ts +2 -2
  21. package/@types/components/Metadata.d.ts +1 -1
  22. package/@types/components/Pagination.d.ts +1 -1
  23. package/@types/components/RadioButton.d.ts +2 -2
  24. package/@types/components/SideNavigation.d.ts +1 -1
  25. package/@types/components/SiteNavigation.d.ts +1 -1
  26. package/@types/components/SummaryList.d.ts +1 -1
  27. package/@types/components/Tabs.d.ts +3 -3
  28. package/@types/components/TextInput.d.ts +1 -1
  29. package/@types/sgds.d.ts +2 -1
  30. package/CHANGELOG.md +29 -0
  31. package/dist/common/AbstractNotificationBanner.jsx +4 -4
  32. package/dist/common/Icon.jsx +2 -2
  33. package/dist/components/Accordion/Accordion.jsx +8 -7
  34. package/dist/components/Button/Button.jsx +6 -6
  35. package/dist/components/CategoryItem/CategoryItem.jsx +35 -0
  36. package/dist/components/CategoryList/CategoryList.jsx +55 -0
  37. package/dist/components/Checkbox/Checkbox.jsx +7 -4
  38. package/dist/components/Checkbox/CheckboxGroup.jsx +5 -11
  39. package/dist/components/ContentsNav/ContentsNav.jsx +2 -2
  40. package/dist/components/DatePicker/DatePicker.jsx +1 -1
  41. package/dist/components/ErrorMessage/ErrorMessage.jsx +3 -3
  42. package/dist/components/FileDownload/FileDownload.jsx +2 -2
  43. package/dist/components/NotificationBanner/NotificationBanner.jsx +2 -2
  44. package/dist/components/PageMetadata/PageMetadata.jsx +4 -4
  45. package/dist/components/Pagination/Pagination.jsx +4 -4
  46. package/dist/components/Question/Question.jsx +1 -1
  47. package/dist/components/RadioButton/RadioButton.jsx +6 -2
  48. package/dist/components/RadioButton/RadioGroup.jsx +7 -47
  49. package/dist/components/Select/Select.jsx +1 -1
  50. package/dist/components/SideNavigation/SideNavigation.jsx +2 -2
  51. package/dist/components/SiteHeader/SiteHeader.jsx +3 -3
  52. package/dist/components/SiteNavigation/SiteNavigation.jsx +2 -2
  53. package/dist/components/SiteSearch/SiteSearch.jsx +1 -1
  54. package/dist/components/SkipLinks/SkipLinks.jsx +1 -1
  55. package/dist/components/SummaryList/SummaryList.jsx +3 -3
  56. package/dist/components/Tabs/Tabs.jsx +6 -7
  57. package/dist/components/TextInput/TextInput.jsx +5 -5
  58. package/dist/components/Textarea/Textarea.jsx +1 -1
  59. package/dist/hooks/useTracking.js +21 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/dist/utils/context.js +5 -0
  62. package/package.json +15 -4
  63. package/src/common/AbstractNotificationBanner.test.tsx +1 -1
  64. package/src/common/AbstractNotificationBanner.tsx +4 -4
  65. package/src/common/Icon.test.tsx +1 -1
  66. package/src/common/Icon.tsx +2 -2
  67. package/src/components/Accordion/Accordion.stories.tsx +111 -0
  68. package/src/components/Accordion/Accordion.test.tsx +5 -17
  69. package/src/components/Accordion/Accordion.tsx +11 -10
  70. package/src/components/AspectBox/AspectBox.stories.tsx +64 -0
  71. package/src/components/BackToTop/BackToTop.stories.tsx +36 -0
  72. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +49 -0
  73. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -1
  74. package/src/components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  75. package/src/components/Button/Button.stories.tsx +194 -0
  76. package/src/components/Button/Button.test.tsx +4 -4
  77. package/src/components/Button/Button.tsx +9 -9
  78. package/src/components/CategoryItem/CategoryItem.stories.tsx +55 -0
  79. package/src/components/CategoryItem/CategoryItem.test.tsx +93 -0
  80. package/src/components/CategoryItem/CategoryItem.tsx +56 -0
  81. package/src/components/CategoryList/CategoryList.stories.tsx +65 -0
  82. package/src/components/CategoryList/CategoryList.test.tsx +59 -0
  83. package/src/components/CategoryList/CategoryList.tsx +33 -0
  84. package/src/components/Checkbox/Checkbox.stories.tsx +85 -0
  85. package/src/components/Checkbox/Checkbox.test.tsx +2 -2
  86. package/src/components/Checkbox/Checkbox.tsx +11 -6
  87. package/src/components/Checkbox/CheckboxGroup.stories.tsx +68 -0
  88. package/src/components/Checkbox/CheckboxGroup.tsx +7 -12
  89. package/src/components/ConfirmationMessage/ConfirmationMessage.stories.tsx +38 -0
  90. package/src/components/ContentsNav/ContentsNav.stories.tsx +43 -0
  91. package/src/components/ContentsNav/ContentsNav.test.tsx +2 -2
  92. package/src/components/ContentsNav/ContentsNav.tsx +2 -2
  93. package/src/components/CookieBanner/CookieBanner.stories.tsx +33 -0
  94. package/src/components/DatePicker/DatePicker.stories.tsx +113 -0
  95. package/src/components/DatePicker/DatePicker.tsx +1 -1
  96. package/src/components/Details/Details.stories.tsx +36 -0
  97. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +19 -0
  98. package/src/components/ErrorMessage/ErrorMessage.test.tsx +3 -15
  99. package/src/components/ErrorMessage/ErrorMessage.tsx +1 -3
  100. package/src/components/ErrorSummary/ErrorSummary.stories.tsx +38 -0
  101. package/src/components/FileDownload/FileDownload.stories.tsx +75 -0
  102. package/src/components/FileDownload/FileDownload.test.tsx +1 -1
  103. package/src/components/FileDownload/FileDownload.tsx +2 -2
  104. package/src/components/HideThisPage/HideThisPage.stories.tsx +20 -0
  105. package/src/components/InsetText/InsetText.stories.tsx +21 -0
  106. package/src/components/NotificationBanner/NotificationBanner.stories.tsx +57 -0
  107. package/src/components/NotificationBanner/NotificationBanner.test.tsx +1 -1
  108. package/src/components/NotificationBanner/NotificationBanner.tsx +4 -4
  109. package/src/components/NotificationPanel/NotificationPanel.stories.tsx +32 -0
  110. package/src/components/PageHeader/PageHeader.stories.tsx +60 -0
  111. package/src/components/PageMetadata/PageMetadata.stories.tsx +58 -0
  112. package/src/components/PageMetadata/PageMetadata.test.tsx +2 -2
  113. package/src/components/PageMetadata/PageMetadata.tsx +4 -4
  114. package/src/components/Pagination/Pagination.stories.tsx +69 -0
  115. package/src/components/Pagination/Pagination.test.tsx +1 -1
  116. package/src/components/Pagination/Pagination.tsx +4 -4
  117. package/src/components/PhaseBanner/PhaseBanner.stories.tsx +38 -0
  118. package/src/components/Question/Question.stories.tsx +78 -0
  119. package/src/components/Question/Question.tsx +1 -1
  120. package/src/components/RadioButton/RadioButton.stories.tsx +67 -0
  121. package/src/components/RadioButton/RadioButton.test.tsx +2 -1
  122. package/src/components/RadioButton/RadioButton.tsx +9 -3
  123. package/src/components/RadioButton/RadioGroup.stories.tsx +77 -0
  124. package/src/components/RadioButton/RadioGroup.test.tsx +2 -2
  125. package/src/components/RadioButton/RadioGroup.tsx +8 -15
  126. package/src/components/Select/Select.stories.tsx +76 -0
  127. package/src/components/Select/Select.tsx +1 -1
  128. package/src/components/SequentialNavigation/SequentialNavigation.stories.tsx +31 -0
  129. package/src/components/SideNavigation/SideNavigation.stories.tsx +92 -0
  130. package/src/components/SideNavigation/SideNavigation.test.tsx +2 -2
  131. package/src/components/SideNavigation/SideNavigation.tsx +2 -2
  132. package/src/components/SiteFooter/SiteFooter.stories.tsx +65 -0
  133. package/src/components/SiteHeader/SiteHeader.stories.tsx +92 -0
  134. package/src/components/SiteHeader/SiteHeader.tsx +2 -7
  135. package/src/components/SiteNavigation/SiteNavigation.stories.tsx +45 -0
  136. package/src/components/SiteNavigation/SiteNavigation.test.tsx +1 -1
  137. package/src/components/SiteNavigation/SiteNavigation.tsx +2 -2
  138. package/src/components/SiteSearch/SiteSearch.stories.tsx +81 -0
  139. package/src/components/SiteSearch/SiteSearch.tsx +1 -1
  140. package/src/components/SkipLinks/SkipLinks.stories.tsx +57 -0
  141. package/src/components/SkipLinks/SkipLinks.tsx +1 -1
  142. package/src/components/SummaryCard/SummaryCard.stories.tsx +46 -0
  143. package/src/components/SummaryList/SummaryList.stories.tsx +75 -0
  144. package/src/components/SummaryList/SummaryList.test.tsx +1 -1
  145. package/src/components/SummaryList/SummaryList.tsx +3 -3
  146. package/src/components/Table/Table.stories.tsx +96 -0
  147. package/src/components/Tabs/Tabs.stories.tsx +90 -0
  148. package/src/components/Tabs/Tabs.test.tsx +6 -8
  149. package/src/components/Tabs/Tabs.tsx +8 -9
  150. package/src/components/Tag/Tag.stories.tsx +25 -0
  151. package/src/components/TaskList/TaskList.stories.tsx +129 -0
  152. package/src/components/TextInput/TextInput.stories.tsx +123 -0
  153. package/src/components/TextInput/TextInput.test.tsx +2 -2
  154. package/src/components/TextInput/TextInput.tsx +5 -5
  155. package/src/components/Textarea/Textarea.stories.tsx +71 -0
  156. package/src/components/Textarea/Textarea.tsx +1 -1
  157. package/src/components/WarningText/WarningText.stories.tsx +21 -0
  158. package/src/hooks/useTracking.test.tsx +64 -0
  159. package/src/hooks/useTracking.ts +19 -0
  160. package/src/utils/context.ts +3 -0
  161. package/static/data/autocomplete-dummy-data.json +2361 -0
  162. package/static/images/highland-cow.jpg +0 -0
  163. package/static/images/scottish-government--min.svg +11 -0
  164. package/static/images/scottish-government.svg +6 -0
  165. package/tsconfig.json +3 -2
  166. package/vite.config.ts +45 -11
  167. package/vitest-setup.ts +1 -0
  168. package/vitest.shims.d.ts +1 -0
  169. package/src/utils/slugify.ts +0 -13
@@ -0,0 +1,65 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SiteFooter from './SiteFooter';
5
+
6
+ const meta = {
7
+ title: 'Components/Site footer',
8
+ component: SiteFooter,
9
+ argTypes: {
10
+ children: argTypes.children()
11
+ },
12
+ args: {
13
+ children: <>
14
+ <SiteFooter.Links>
15
+ <SiteFooter.Link href="#">
16
+ Privacy
17
+ </SiteFooter.Link>
18
+ <SiteFooter.Link href="#">
19
+ Cookies
20
+ </SiteFooter.Link>
21
+ <SiteFooter.Link href="#">
22
+ Accessibility
23
+ </SiteFooter.Link>
24
+ </SiteFooter.Links>
25
+ <SiteFooter.License>
26
+ <svg focusable="false" version="1.1" width="41" height="17" id="ogl-logo" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px"
27
+ viewBox="0 0 852.16 345.09">
28
+ <title>ogl</title>
29
+ <polygon className="fill" points="743.3 251.79 743.3 0.2 653.9 57.2 653.9 341.2 852.16 341.2 852.16 251.79 743.3 251.79"></polygon>
30
+ <path className="fill" d="M599.62,312.56a83.12,83.12,0,1,1,15.26-107.08l75.36-48a172.35,172.35,0,0,0-295.59,7.84A172.61,172.61,0,0,0,244.49,77.59C149.35,77.59,72,155,72,250.14s77.4,172.54,172.54,172.54A172.6,172.6,0,0,0,394.65,335a172.29,172.29,0,0,0,263.9,44.78l34.25,39.07h5.33V264H557ZM244.49,333.28a83.14,83.14,0,1,1,83.14-83.14A83.24,83.24,0,0,1,244.49,333.28Z" transform="translate(-71.95 -77.59)"/>
31
+ </svg>
32
+ <p>
33
+ All content is available under the{' '}
34
+ <a href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/">
35
+ Open Government Licence v3.0
36
+ </a>
37
+ , except for graphic assets and where otherwise stated
38
+ </p>
39
+ <p>
40
+ © Crown Copyright
41
+ </p>
42
+ </SiteFooter.License>
43
+ <SiteFooter.Org
44
+ href="https://www.gov.scot/"
45
+ title="The Scottish Government"
46
+ >
47
+ <svg xmlns="http://www.w3.org/2000/svg" width="300" height="55" viewBox="0 0 157.4 29.9">
48
+ <defs>
49
+ <path id="a" d="M0 0h157.4v29.9H0z"/>
50
+ </defs>
51
+ <path fill="#333e48" d="M154.6 20.3a4 4 0 0 0 2.8-.9l-.7-2.3c-.2.3-.7.5-1.3.5-.8 0-1.3-.7-1.3-1.6V9h2.8V6.4h-2.8V2.7h-3v3.7h-2.3V9h2.3v7.9c0 2.2 1.2 3.4 3.5 3.4m-13.9-2.6c-2.5 0-3.9-2.1-3.9-4.5s1.4-4.5 3.9-4.5 3.9 2.1 3.9 4.5-1.4 4.5-3.9 4.5m0 2.6c4.3 0 7-3.3 7-7.2 0-3.9-2.6-7.1-7-7.1-4.3 0-7 3.2-7 7.1 0 4 2.6 7.2 7 7.2m-13.6 0c2.7 0 4.3-1.2 5.2-2.4l-1.9-1.8a3.6 3.6 0 0 1-3.1 1.6c-2.5 0-4.1-1.9-4.1-4.5s1.7-4.5 4.1-4.5c1.3 0 2.4.5 3.1 1.6l1.9-1.8a6 6 0 0 0-5.2-2.4c-4.1 0-7 3-7 7.1s2.9 7.1 7 7.1m-14.6 0c3.7 0 5.7-1.8 5.7-4.3 0-5.4-8.2-3.6-8.2-6 0-1 1-1.7 2.5-1.7 1.7 0 3.2.7 4 1.6l1.2-2.1a7.7 7.7 0 0 0-5.3-1.9c-3.4 0-5.4 1.9-5.4 4.1 0 5.2 8.2 3.3 8.2 6 0 1.1-.9 1.8-2.7 1.8-1.7 0-3.6-.9-4.6-1.9l-1.4 2.1a8.2 8.2 0 0 0 6 2.3m-10.3 0a2 2 0 0 0 2-2c0-1-.9-1.9-2-1.9s-2 .9-2 1.9c0 1.1.9 2 2 2m-7.5-.3 5.5-13.6H97l-4 10.2-4-10.2h-3L91.5 20h3.2zm-16.3-2.3c-2.5 0-3.9-2.1-3.9-4.5s1.4-4.5 3.9-4.5 3.9 2.1 3.9 4.5-1.4 4.5-3.9 4.5m0 2.6c4.3 0 7-3.3 7-7.2 0-3.9-2.6-7.1-7-7.1s-7 3.2-7 7.1c0 4 2.7 7.2 7 7.2m-16.3-2.9c-2.4 0-3.9-1.7-3.9-4.3 0-2.6 1.5-4.4 3.9-4.4 1.4 0 2.8.8 3.5 1.8v5.1c-.7 1-2.2 1.8-3.5 1.8m-.6 8.1c3.3 0 7-1.3 7-6.2V6.4h-3v1.9a5.2 5.2 0 0 0-4.4-2.2c-3.5 0-6 2.6-6 7 0 4.5 2.6 7 6 7 1.8 0 3.3-.9 4.4-2.3v1.5c0 2.9-2.1 3.8-4 3.8-1.8 0-3.2-.5-4.3-1.7l-1.4 2.1c1.7 1.5 3.4 2 5.7 2"/>
52
+ <path fill="#fff" d="M1.1 0h48.5v29.9H1.1z"/>
53
+ <path fill="#0065bd" d="m7.9 1.4 17.3 10.2L42.6 1.4zm0 27.1 17.3-10.1 17.4 10.1zm-5.4-24v20.9L19.7 15zm45.7 0v20.9L30.9 15z"/>
54
+ </svg>
55
+ </SiteFooter.Org>
56
+ </>
57
+ }
58
+ } satisfies Meta<typeof SiteFooter>;
59
+
60
+ export default meta;
61
+ type Story = StoryObj<typeof meta>;
62
+
63
+ export const Default: Story = {
64
+
65
+ };
@@ -0,0 +1,92 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SiteHeader from './SiteHeader';
5
+ import SiteSearch from '../SiteSearch/SiteSearch';
6
+ import SiteNavigation from '../SiteNavigation/SiteNavigation';
7
+ import PhaseBanner from '../PhaseBanner/PhaseBanner';
8
+
9
+ const meta = {
10
+ title: 'Components/Site header',
11
+ component: SiteHeader,
12
+ argTypes: {
13
+ children: argTypes.children()
14
+ },
15
+ args: {
16
+ children: [
17
+ <SiteHeader.Brand
18
+ homeUrl="/"
19
+ siteTitle="Design System React"
20
+ >
21
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 206.7 30.7">
22
+ <title>The Scottish Government</title>
23
+ <path fill="#fff" d="M0 0h46.8v28.9H0z"/>
24
+ <path fill="#0065bd" d="m6.5 1.3 16.8 9.9 16.8-9.9zm0 26.2 16.8-9.8 16.8 9.8zM1.3 4.3v20.3L18 14.5zm44.2 0v20.3L28.8 14.5z"/>
25
+ <path fill="#858b91" d="M202.7 26.1c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-15.3 0v-1.1c.6.8 1.6 1.3 2.6 1.3 2.1 0 3.6-1.6 3.6-4.2s-1.5-4.2-3.6-4.2c-1 0-1.9.5-2.6 1.3v-4.2h-1.8v11.2h1.8zm0-2.4v-3.2c.4-.6 1.3-1.1 2.1-1.1 1.4 0 2.3 1.1 2.3 2.7s-.9 2.7-2.3 2.7c-.9 0-1.7-.5-2.1-1.1m-4.5 2.6c.8 0 1.3-.2 1.7-.5l-.4-1.3c-.1.2-.5.3-.8.3-.5 0-.8-.4-.8-1v-8.8h-1.8v9.3c0 1.3.8 2 2.1 2m-6.6-4.1h-4l2-5.3 2 5.3zm3.6 3.9-4.4-11.2h-2.4l-4.4 11.2h2.2l.8-2.2h5.1l.8 2.2h2.3zm-11.9-4.8h-4v1.5h4v-1.5zm-5.7 4.8v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3v-4.2h-1.8v11.2h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-17.5-1.3c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.5 0v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1.1h-1.8v8.1h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5h1.8zm-16.5.2c2.2 0 3.4-1.1 3.4-2.5 0-3.2-4.9-2.1-4.9-3.6 0-.6.6-1 1.5-1 1 0 1.9.4 2.4 1l.7-1.2a4.8 4.8 0 0 0-3.1-1.1c-2 0-3.2 1.1-3.2 2.4 0 3.1 4.9 2 4.9 3.6 0 .6-.6 1.1-1.6 1.1a4 4 0 0 1-2.7-1.1l-.8 1.3c.7.7 2 1.1 3.4 1.1m-8.8-1.5c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-10 .2c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1v-4.2h1.6v-1.5H111v-2.2h-1.8v2.2H108v1.5h1.3v4.7c0 1.3.7 2 2.1 2m-4.8 0c.8 0 1.3-.2 1.7-.5l-.4-1.3c-.1.2-.5.3-.8.3-.5 0-.8-.4-.8-1v-8.8h-1.8v9.3c0 1.3.7 2 2.1 2m-8-1.5c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25a3 3 0 0 1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.6 0v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3v-4.2h-1.8v11.2h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-13.1-1.5c-1.4 0-2.3-1-2.3-2.6s.9-2.6 2.3-2.6c.8 0 1.7.5 2.1 1.1v3a3 3 0 0 1-2.1 1.1m-.4 4.8c2 0 4.1-.8 4.1-3.7v-7.7h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.5-3.6 4.1 0 2.7 1.5 4.1 3.6 4.1a3 3 0 0 0 2.6-1.4V27c0 1.7-1.2 2.3-2.4 2.3-1.1 0-1.9-.3-2.6-1l-.8 1.3c1.1.8 2.2 1.1 3.5 1.1m-9.2-4.6c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.5-8.1h-1.8v8.1h1.8v-8.1zm-.9-1c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-.6 0-1.1.5-1.1 1.1 0 .7.5 1.1 1.1 1.1M57 21.5h-2.7V18H57c1.1 0 1.9.7 1.9 1.8 0 1-.8 1.7-1.9 1.7m4 5.9L58.2 23c1.4-.2 2.7-1.3 2.7-3.3 0-2.1-1.5-3.5-3.7-3.5h-4.9v11.2h2v-4.2h2l2.5 4.2H61z"/>
26
+ <path fill="#333e48" d="M205.1 12.8c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6h-1.6V2.3H203v2.2h-1.3V6h1.3v4.7c0 1.4.7 2.1 2.1 2.1m-4.7-.2V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1h-1.8v8.1h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5.1h1.8zm-10.5-4.7h-4.5c.1-1 .8-2.1 2.3-2.1 1.5 0 2.1 1.2 2.2 2.1m-2.2 4.9c1.3 0 2.5-.4 3.3-1.2l-.8-1.2c-.6.6-1.5.9-2.3.9-1.5 0-2.4-1-2.6-2.2h6.2v-.4c0-2.5-1.5-4.4-4-4.4a4 4 0 0 0-4.1 4.2c.1 2.6 1.9 4.3 4.3 4.3m-5.9-.2V6.8c0-1.6-.9-2.4-2.3-2.4-1.2 0-2.3.8-2.7 1.5-.3-.9-1-1.5-2.2-1.5-1.2 0-2.3.8-2.6 1.3V4.6h-1.8v8.1h1.8V7c.4-.5 1.1-1.1 1.9-1.1 1 0 1.3.6 1.3 1.5v5.3h1.8V7c.4-.5 1.1-1.1 1.9-1.1 1 0 1.3.6 1.3 1.5v5.3h1.6zm-13.9 0V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1h-1.8v8.1h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5.1h1.8zm-11.1 0V7.1c.4-.6 1.3-1.1 2.1-1.1h.5V4.4c-1 0-2 .6-2.6 1.4V4.6H155v8.1h1.8zm-5.1-4.7h-4.5c.1-1 .8-2.1 2.3-2.1 1.5 0 2.1 1.2 2.2 2.1m-2.2 4.9c1.3 0 2.5-.4 3.3-1.2l-.8-1.2c-.6.6-1.5.9-2.3.9-1.5 0-2.4-1-2.6-2.2h6.2v-.4c0-2.5-1.5-4.4-4-4.4a4 4 0 0 0-4.1 4.2c.1 2.6 1.9 4.3 4.3 4.3m-7.8-.2 3.3-8.1h-1.9l-2.4 6.1-2.4-6.1h-1.9l3.3 8.1h2zm-9.7-1.3c-1.5 0-2.3-1.3-2.3-2.7 0-1.4.8-2.7 2.3-2.7 1.5 0 2.3 1.3 2.3 2.7 0 1.4-.8 2.7-2.3 2.7m0 1.5c2.6 0 4.1-1.9 4.1-4.2 0-2.3-1.6-4.2-4.1-4.2s-4.1 1.9-4.1 4.2a4 4 0 0 0 4.1 4.2m-10.7 0c3.5 0 5.6-2.4 5.6-6.2h-6.1v1.7h4a3.2 3.2 0 0 1-3.3 2.7c-2.2 0-3.8-1.7-3.8-4 0-2.4 1.6-4 3.8-4 1.2 0 2.3.7 2.9 1.5l1.6-.9a5.2 5.2 0 0 0-4.5-2.3 5.7 5.7 0 0 0-5.9 5.8c0 3.5 2.7 5.7 5.7 5.7m-11.5-.2V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3V1.5h-1.8v11.2h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-12.2.2c2.2 0 3.4-1.1 3.4-2.5 0-3.2-4.9-2.1-4.9-3.6 0-.6.6-1 1.5-1 1 0 1.9.4 2.4 1l.7-1.2a4.8 4.8 0 0 0-3.1-1.1c-2 0-3.2 1.1-3.2 2.4 0 3.1 4.9 2 4.9 3.6 0 .6-.6 1.1-1.6 1.1a4 4 0 0 1-2.7-1.1l-.8 1.3c.8.7 2 1.1 3.4 1.1m-5-8.2h-1.8v8.1h1.8V4.6zm-.9-1c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1M88 12.8c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6h-1.6V2.3h-1.8v2.2h-1.3V6h1.3v4.7c.1 1.4.8 2.1 2.2 2.1m-5.6 0c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6H82V2.3h-1.8v2.2h-1.3V6h1.3v4.7c.1 1.4.8 2.1 2.2 2.1m-8.3-1.5c-1.5 0-2.3-1.3-2.3-2.7 0-1.4.8-2.7 2.3-2.7 1.5 0 2.3 1.3 2.3 2.7 0 1.4-.8 2.7-2.3 2.7m0 1.5c2.6 0 4.1-1.9 4.1-4.2 0-2.3-1.6-4.2-4.1-4.2-2.6 0-4.1 1.9-4.1 4.2a4 4 0 0 0 4.1 4.2m-8.1 0c1.6 0 2.5-.7 3.1-1.4L68 10.3c-.5.6-1.1 1-1.9 1-1.5 0-2.4-1.1-2.4-2.7s1-2.7 2.4-2.7c.8 0 1.4.3 1.9.9l1.2-1.1c-.6-.7-1.6-1.3-3.2-1.3a4.1 4.1 0 0 0-4.2 4.2c.1 2.4 1.8 4.2 4.2 4.2m-9.7 0c3 0 4.3-1.6 4.3-3.5 0-4.1-6.5-2.9-6.5-4.9.1-.8.8-1.4 1.9-1.4 1.2 0 2.4.4 3.2 1.3l1.1-1.5c-1-1-2.4-1.6-4.2-1.6-2.5 0-4.1 1.4-4.1 3.3 0 4.1 6.5 2.6 6.5 5 0 .8-.6 1.5-2.2 1.5s-2.8-.7-3.5-1.6l-1.1 1.5a6 6 0 0 0 4.6 1.9"/>
27
+ </svg>
28
+ </SiteHeader.Brand>,
29
+ <SiteHeader.Navigation>
30
+ <SiteNavigation>
31
+ <SiteNavigation.Item href="#about">
32
+ About
33
+ </SiteNavigation.Item>
34
+ <SiteNavigation.Item href="#get-started">
35
+ Get started
36
+ </SiteNavigation.Item>
37
+ <SiteNavigation.Item href="#styles">
38
+ Styles
39
+ </SiteNavigation.Item>
40
+ <SiteNavigation.Item
41
+ isCurrent
42
+ href="#components"
43
+ >
44
+ Components
45
+ </SiteNavigation.Item>
46
+ <SiteNavigation.Item href="#patterns">
47
+ Patterns
48
+ </SiteNavigation.Item>
49
+ <SiteNavigation.Item href="#guidance">
50
+ Guidance
51
+ </SiteNavigation.Item>
52
+ </SiteNavigation>
53
+ </SiteHeader.Navigation>,
54
+ <SiteHeader.Search>
55
+ <SiteSearch id="site-header-search" />
56
+ </SiteHeader.Search>,
57
+ <SiteHeader.Phase>
58
+ <PhaseBanner phaseName="Beta">
59
+ This is a new service. Your{' '}
60
+ <a href="#feedback">
61
+ feedback
62
+ </a>
63
+ {' '}will help us to improve it.
64
+ </PhaseBanner>
65
+ </SiteHeader.Phase>
66
+ ]
67
+ }
68
+ } satisfies Meta<typeof SiteHeader>;
69
+
70
+ export default meta;
71
+ type Story = StoryObj<typeof meta>;
72
+
73
+ export const Default: Story = {
74
+
75
+ };
76
+
77
+ export const BrandOnly: Story = {
78
+ args: {
79
+ children: <SiteHeader.Brand
80
+ homeUrl="/"
81
+ siteTitle="Design System React"
82
+ >
83
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 206.7 30.7">
84
+ <title>The Scottish Government</title>
85
+ <path fill="#fff" d="M0 0h46.8v28.9H0z"/>
86
+ <path fill="#0065bd" d="m6.5 1.3 16.8 9.9 16.8-9.9zm0 26.2 16.8-9.8 16.8 9.8zM1.3 4.3v20.3L18 14.5zm44.2 0v20.3L28.8 14.5z"/>
87
+ <path fill="#858b91" d="M202.7 26.1c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-15.3 0v-1.1c.6.8 1.6 1.3 2.6 1.3 2.1 0 3.6-1.6 3.6-4.2s-1.5-4.2-3.6-4.2c-1 0-1.9.5-2.6 1.3v-4.2h-1.8v11.2h1.8zm0-2.4v-3.2c.4-.6 1.3-1.1 2.1-1.1 1.4 0 2.3 1.1 2.3 2.7s-.9 2.7-2.3 2.7c-.9 0-1.7-.5-2.1-1.1m-4.5 2.6c.8 0 1.3-.2 1.7-.5l-.4-1.3c-.1.2-.5.3-.8.3-.5 0-.8-.4-.8-1v-8.8h-1.8v9.3c0 1.3.8 2 2.1 2m-6.6-4.1h-4l2-5.3 2 5.3zm3.6 3.9-4.4-11.2h-2.4l-4.4 11.2h2.2l.8-2.2h5.1l.8 2.2h2.3zm-11.9-4.8h-4v1.5h4v-1.5zm-5.7 4.8v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3v-4.2h-1.8v11.2h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-17.5-1.3c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.5 0v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1.1h-1.8v8.1h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5h1.8zm-16.5.2c2.2 0 3.4-1.1 3.4-2.5 0-3.2-4.9-2.1-4.9-3.6 0-.6.6-1 1.5-1 1 0 1.9.4 2.4 1l.7-1.2a4.8 4.8 0 0 0-3.1-1.1c-2 0-3.2 1.1-3.2 2.4 0 3.1 4.9 2 4.9 3.6 0 .6-.6 1.1-1.6 1.1a4 4 0 0 1-2.7-1.1l-.8 1.3c.7.7 2 1.1 3.4 1.1m-8.8-1.5c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-10 .2c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1v-4.2h1.6v-1.5H111v-2.2h-1.8v2.2H108v1.5h1.3v4.7c0 1.3.7 2 2.1 2m-4.8 0c.8 0 1.3-.2 1.7-.5l-.4-1.3c-.1.2-.5.3-.8.3-.5 0-.8-.4-.8-1v-8.8h-1.8v9.3c0 1.3.7 2 2.1 2m-8-1.5c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25a3 3 0 0 1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.6 0v-5.7c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3v-4.2h-1.8v11.2h1.8v-5.7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-13.1-1.5c-1.4 0-2.3-1-2.3-2.6s.9-2.6 2.3-2.6c.8 0 1.7.5 2.1 1.1v3a3 3 0 0 1-2.1 1.1m-.4 4.8c2 0 4.1-.8 4.1-3.7v-7.7h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.5-3.6 4.1 0 2.7 1.5 4.1 3.6 4.1a3 3 0 0 0 2.6-1.4V27c0 1.7-1.2 2.3-2.4 2.3-1.1 0-1.9-.3-2.6-1l-.8 1.3c1.1.8 2.2 1.1 3.5 1.1m-9.2-4.6c-1.4 0-2.3-1.1-2.3-2.7s.9-2.7 2.3-2.7c.8 0 1.7.5 2.1 1.1V25c-.4.6-1.3 1.1-2.1 1.1m3.8 1.3v-8.1h-1.8v1.1a3.2 3.2 0 0 0-2.6-1.3c-2.1 0-3.6 1.6-3.6 4.2 0 2.7 1.5 4.2 3.6 4.2 1.1 0 2-.5 2.6-1.3v1.1h1.8zm-9.5-8.1h-1.8v8.1h1.8v-8.1zm-.9-1c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-.6 0-1.1.5-1.1 1.1 0 .7.5 1.1 1.1 1.1M57 21.5h-2.7V18H57c1.1 0 1.9.7 1.9 1.8 0 1-.8 1.7-1.9 1.7m4 5.9L58.2 23c1.4-.2 2.7-1.3 2.7-3.3 0-2.1-1.5-3.5-3.7-3.5h-4.9v11.2h2v-4.2h2l2.5 4.2H61z"/>
88
+ <path fill="#333e48" d="M205.1 12.8c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6h-1.6V2.3H203v2.2h-1.3V6h1.3v4.7c0 1.4.7 2.1 2.1 2.1m-4.7-.2V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1h-1.8v8.1h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5.1h1.8zm-10.5-4.7h-4.5c.1-1 .8-2.1 2.3-2.1 1.5 0 2.1 1.2 2.2 2.1m-2.2 4.9c1.3 0 2.5-.4 3.3-1.2l-.8-1.2c-.6.6-1.5.9-2.3.9-1.5 0-2.4-1-2.6-2.2h6.2v-.4c0-2.5-1.5-4.4-4-4.4a4 4 0 0 0-4.1 4.2c.1 2.6 1.9 4.3 4.3 4.3m-5.9-.2V6.8c0-1.6-.9-2.4-2.3-2.4-1.2 0-2.3.8-2.7 1.5-.3-.9-1-1.5-2.2-1.5-1.2 0-2.3.8-2.6 1.3V4.6h-1.8v8.1h1.8V7c.4-.5 1.1-1.1 1.9-1.1 1 0 1.3.6 1.3 1.5v5.3h1.8V7c.4-.5 1.1-1.1 1.9-1.1 1 0 1.3.6 1.3 1.5v5.3h1.6zm-13.9 0V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.9 1.3v-1h-1.8v8.1h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.7v5.1h1.8zm-11.1 0V7.1c.4-.6 1.3-1.1 2.1-1.1h.5V4.4c-1 0-2 .6-2.6 1.4V4.6H155v8.1h1.8zm-5.1-4.7h-4.5c.1-1 .8-2.1 2.3-2.1 1.5 0 2.1 1.2 2.2 2.1m-2.2 4.9c1.3 0 2.5-.4 3.3-1.2l-.8-1.2c-.6.6-1.5.9-2.3.9-1.5 0-2.4-1-2.6-2.2h6.2v-.4c0-2.5-1.5-4.4-4-4.4a4 4 0 0 0-4.1 4.2c.1 2.6 1.9 4.3 4.3 4.3m-7.8-.2 3.3-8.1h-1.9l-2.4 6.1-2.4-6.1h-1.9l3.3 8.1h2zm-9.7-1.3c-1.5 0-2.3-1.3-2.3-2.7 0-1.4.8-2.7 2.3-2.7 1.5 0 2.3 1.3 2.3 2.7 0 1.4-.8 2.7-2.3 2.7m0 1.5c2.6 0 4.1-1.9 4.1-4.2 0-2.3-1.6-4.2-4.1-4.2s-4.1 1.9-4.1 4.2a4 4 0 0 0 4.1 4.2m-10.7 0c3.5 0 5.6-2.4 5.6-6.2h-6.1v1.7h4a3.2 3.2 0 0 1-3.3 2.7c-2.2 0-3.8-1.7-3.8-4 0-2.4 1.6-4 3.8-4 1.2 0 2.3.7 2.9 1.5l1.6-.9a5.2 5.2 0 0 0-4.5-2.3 5.7 5.7 0 0 0-5.9 5.8c0 3.5 2.7 5.7 5.7 5.7m-11.5-.2V6.9c0-1.7-.9-2.6-2.6-2.6-1.3 0-2.3.7-2.8 1.3V1.5h-1.8v11.2h1.8V7c.4-.5 1.2-1.1 2.1-1.1 1 0 1.6.4 1.6 1.6v5.1h1.7zm-12.2.2c2.2 0 3.4-1.1 3.4-2.5 0-3.2-4.9-2.1-4.9-3.6 0-.6.6-1 1.5-1 1 0 1.9.4 2.4 1l.7-1.2a4.8 4.8 0 0 0-3.1-1.1c-2 0-3.2 1.1-3.2 2.4 0 3.1 4.9 2 4.9 3.6 0 .6-.6 1.1-1.6 1.1a4 4 0 0 1-2.7-1.1l-.8 1.3c.8.7 2 1.1 3.4 1.1m-5-8.2h-1.8v8.1h1.8V4.6zm-.9-1c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1M88 12.8c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6h-1.6V2.3h-1.8v2.2h-1.3V6h1.3v4.7c.1 1.4.8 2.1 2.2 2.1m-5.6 0c.8 0 1.3-.2 1.6-.5l-.4-1.3c-.1.2-.4.3-.8.3-.5 0-.8-.4-.8-1V6.1h1.6V4.6H82V2.3h-1.8v2.2h-1.3V6h1.3v4.7c.1 1.4.8 2.1 2.2 2.1m-8.3-1.5c-1.5 0-2.3-1.3-2.3-2.7 0-1.4.8-2.7 2.3-2.7 1.5 0 2.3 1.3 2.3 2.7 0 1.4-.8 2.7-2.3 2.7m0 1.5c2.6 0 4.1-1.9 4.1-4.2 0-2.3-1.6-4.2-4.1-4.2-2.6 0-4.1 1.9-4.1 4.2a4 4 0 0 0 4.1 4.2m-8.1 0c1.6 0 2.5-.7 3.1-1.4L68 10.3c-.5.6-1.1 1-1.9 1-1.5 0-2.4-1.1-2.4-2.7s1-2.7 2.4-2.7c.8 0 1.4.3 1.9.9l1.2-1.1c-.6-.7-1.6-1.3-3.2-1.3a4.1 4.1 0 0 0-4.2 4.2c.1 2.4 1.8 4.2 4.2 4.2m-9.7 0c3 0 4.3-1.6 4.3-3.5 0-4.1-6.5-2.9-6.5-4.9.1-.8.8-1.4 1.9-1.4 1.2 0 2.4.4 3.2 1.3l1.1-1.5c-1-1-2.4-1.6-4.2-1.6-2.5 0-4.1 1.4-4.1 3.3 0 4.1 6.5 2.6 6.5 5 0 .8-.6 1.5-2.2 1.5s-2.8-.7-3.5-1.6l-1.1 1.5a6 6 0 0 0 4.6 1.9"/>
89
+ </svg>
90
+ </SiteHeader.Brand>
91
+ }
92
+ };
@@ -56,11 +56,6 @@ const Search = ({
56
56
 
57
57
  const SiteHeader = ({
58
58
  children,
59
- logo = {},
60
- navigationItems,
61
- phaseBanner,
62
- siteSearch,
63
- siteTitle,
64
59
  ...props
65
60
  }: SGDS.Component.SiteHeader) => {
66
61
  const mobileMenuRef = useRef(null);
@@ -108,8 +103,8 @@ const SiteHeader = ({
108
103
  <div className="ds_site-header__controls">
109
104
  <label aria-controls="mobile-navigation" className="ds_site-header__control js-toggle-menu" htmlFor="menu">
110
105
  <span className="ds_site-header__control-text">Menu</span>
111
- <Icon fill className="ds_site-header__control-icon" icon="Menu" aria-hidden="true" />
112
- <Icon fill className="ds_site-header__control-icon ds_site-header__control-icon--active-icon" icon="Close" aria-hidden="true" />
106
+ <Icon isFilled className="ds_site-header__control-icon" icon="Menu" aria-hidden="true" />
107
+ <Icon isFilled className="ds_site-header__control-icon ds_site-header__control-icon--active-icon" icon="Close" aria-hidden="true" />
113
108
  </label>
114
109
  </div>
115
110
 
@@ -0,0 +1,45 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SiteNavigation from './SiteNavigation';
5
+
6
+ const meta = {
7
+ title: 'Components/Site navigation',
8
+ component: SiteNavigation,
9
+ argTypes: {
10
+ linkComponent: argTypes.linkComponent(),
11
+ children: argTypes.children()
12
+ },
13
+ args: {
14
+ children: <>
15
+ <SiteNavigation.Item href="#about">
16
+ About
17
+ </SiteNavigation.Item>
18
+ <SiteNavigation.Item href="#get-started">
19
+ Get started
20
+ </SiteNavigation.Item>
21
+ <SiteNavigation.Item href="#styles">
22
+ Styles
23
+ </SiteNavigation.Item>
24
+ <SiteNavigation.Item
25
+ isCurrent
26
+ href="#components"
27
+ >
28
+ Components
29
+ </SiteNavigation.Item>
30
+ <SiteNavigation.Item href="#patterns">
31
+ Patterns
32
+ </SiteNavigation.Item>
33
+ <SiteNavigation.Item href="#guidance">
34
+ Guidance
35
+ </SiteNavigation.Item>
36
+ </>
37
+ }
38
+ } satisfies Meta<typeof SiteNavigation>;
39
+
40
+ export default meta;
41
+ type Story = StoryObj<typeof meta>;
42
+
43
+ export const Default: Story = {
44
+
45
+ };
@@ -64,7 +64,7 @@ test('site navigation link with custom element', () => {
64
64
 
65
65
  test('highlights current item', () => {
66
66
  render(
67
- <SiteNavigation.Item href={LINK_HREF} current>{LINK_TEXT}</SiteNavigation.Item>
67
+ <SiteNavigation.Item href={LINK_HREF} isCurrent>{LINK_TEXT}</SiteNavigation.Item>
68
68
  );
69
69
 
70
70
  const link = screen.getByRole('link');
@@ -1,13 +1,13 @@
1
1
  const Item = ({
2
2
  children,
3
- current = false,
3
+ isCurrent = false,
4
4
  href,
5
5
  linkComponent
6
6
  }: SGDS.Component.SiteNavigation.Item) => {
7
7
  const classNames = ['ds_site-navigation__link'];
8
8
  let ariaCurrent: React.AriaAttributes["aria-current"];
9
9
 
10
- if (current) {
10
+ if (isCurrent) {
11
11
  classNames.push('ds_current');
12
12
  ariaCurrent = 'page';
13
13
  }
@@ -0,0 +1,81 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SiteSearch from './SiteSearch';
5
+
6
+ type AutocompleteResponseObject = {
7
+ key: string,
8
+ displayText: string,
9
+ weight: string,
10
+ type: string,
11
+ category: string
12
+ }
13
+
14
+ const suggestionMappingFunction = function (request: XMLHttpRequest) {
15
+ const responseObj = JSON.parse(request.response).map((item: string) => ({
16
+ key: '',
17
+ displayText: item,
18
+ weight: '',
19
+ type: '',
20
+ category: ''
21
+ }));
22
+ const siteSearchElement = document.getElementById('site-search') as HTMLInputElement;
23
+ const filteredResults = responseObj.filter((item: AutocompleteResponseObject) => (item.displayText.toLowerCase().indexOf(siteSearchElement.value.toLowerCase()) > -1));
24
+ return filteredResults.slice(0,6);
25
+ }
26
+
27
+ const meta = {
28
+ title: 'Components/Site search',
29
+ component: SiteSearch,
30
+ argTypes: {
31
+ action: {
32
+ description: 'The value of the search form\'s action atttribute',
33
+ type: 'string'
34
+ },
35
+ autocompleteEndpoint: {
36
+ description: 'The endpoint used by the autocomplete',
37
+ type: 'string'
38
+ },
39
+ autocompleteSuggestionMappingFunction: {
40
+ control: false,
41
+ description: 'A JavaScript function that maps the results from the endpoint into the expected format',
42
+ type: 'function'
43
+ },
44
+ id: argTypes.id(),
45
+ method: {
46
+ description: 'The form method to use',
47
+ options: ['GET', 'POST'],
48
+ control: { type: 'radio' },
49
+ type: 'string'
50
+ },
51
+ minLength: {
52
+ description: 'The number of characters that need to be entered before requests are sent to the autocomplete endpoint',
53
+ type: 'number'
54
+ },
55
+ name: {
56
+ description: '',
57
+ type: 'string'
58
+ },
59
+ placeholder: {
60
+ description: '',
61
+ type: 'string'
62
+ }
63
+ },
64
+ args: {
65
+ id: 'site-search'
66
+ }
67
+ } satisfies Meta<typeof SiteSearch>;
68
+
69
+ export default meta;
70
+ type Story = StoryObj<typeof meta>;
71
+
72
+ export const Default: Story = {
73
+
74
+ };
75
+
76
+ export const Autocomplete: Story = {
77
+ args: {
78
+ autocompleteEndpoint: 'static/data/autocomplete-dummy-data.json?',
79
+ autocompleteSuggestionMappingFunction: suggestionMappingFunction
80
+ }
81
+ }
@@ -81,7 +81,7 @@ const SiteSearch = function ({
81
81
  type="search"
82
82
  />
83
83
 
84
- <Button type="submit" icon="Search" iconOnly>Search</Button>
84
+ <Button type="submit" icon="Search" isIconOnly>Search</Button>
85
85
 
86
86
  {hasAutocomplete && (
87
87
  <div id="autocomplete-suggestions" className="ds_autocomplete__suggestions">
@@ -0,0 +1,57 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SkipLinks from './SkipLinks';
5
+
6
+ const meta = {
7
+ title: 'Components/Skip links',
8
+ component: SkipLinks,
9
+ argTypes: {
10
+ mainContentId: {
11
+ description: 'The id attribute of the ‘main content’ element to link to',
12
+ type: 'string'
13
+ },
14
+ mainLinkText: {
15
+ description: 'The text to use for the ‘main content’ link',
16
+ type: 'string'
17
+ },
18
+ isStatic: {
19
+ control: 'boolean',
20
+ description: 'Use the ‘static’ display variant'
21
+ },
22
+ children: argTypes.children()
23
+ },
24
+ args: {
25
+
26
+ }
27
+ } satisfies Meta<typeof SkipLinks>;
28
+
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = {
33
+
34
+ };
35
+
36
+ export const MultipleLinks: Story = {
37
+ args: {
38
+ children: <>
39
+ <SkipLinks.Link fragmentId="my-main-content">
40
+ Skip to main content
41
+ </SkipLinks.Link>
42
+ <SkipLinks.Link fragmentId="other-important-content">
43
+ Other important content
44
+ </SkipLinks.Link>
45
+ </>
46
+ }
47
+ };
48
+
49
+ export const Static: Story = {
50
+ args: {
51
+ isStatic: true,
52
+ children:
53
+ <SkipLinks.Link fragmentId="search-results">
54
+ Skip to search results
55
+ </SkipLinks.Link>
56
+ }
57
+ };
@@ -34,7 +34,7 @@ const SkipLinks = ({
34
34
  };
35
35
 
36
36
  SkipLinks.displayName = 'SkipLinks';
37
- Link.displayName = 'SkipLink';
37
+ Link.displayName = 'SkipLinks.Link';
38
38
  SkipLinks.Link = Link;
39
39
 
40
40
  export default SkipLinks;
@@ -0,0 +1,46 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SummaryCard from './SummaryCard';
5
+ import SummaryList from '../SummaryList/SummaryList';
6
+
7
+ const meta = {
8
+ title: 'Components/Summary card',
9
+ component: SummaryCard,
10
+ argTypes: {
11
+ headingLevel: argTypes.headingLevel(),
12
+ children: argTypes.children()
13
+ },
14
+ args: {
15
+ children: [
16
+ <SummaryCard.Action key="foo" href="#foo">
17
+ Change
18
+ </SummaryCard.Action>,
19
+ <SummaryCard.Action key="bar" onclick={() => alert('click')}>
20
+ Delete
21
+ </SummaryCard.Action>,
22
+ <SummaryList key="baz">
23
+ <SummaryList.Item title="Phone number">
24
+ <SummaryList.Value>
25
+ 0123 456 7890
26
+ </SummaryList.Value>
27
+ </SummaryList.Item>
28
+ <SummaryList.Item title="Address">
29
+ <SummaryList.Value>
30
+ Victoria Quay<br />
31
+ Edinburgh<br />
32
+ EH6 6QQ
33
+ </SummaryList.Value>
34
+ </SummaryList.Item>
35
+ </SummaryList>
36
+ ],
37
+ title: 'Joe Bloggs'
38
+ }
39
+ } satisfies Meta<typeof SummaryCard>;
40
+
41
+ export default meta;
42
+ type Story = StoryObj<typeof meta>;
43
+
44
+ export const Default: Story = {
45
+
46
+ };
@@ -0,0 +1,75 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import argTypes from '../../../.storybook/sgdsArgTypes';
3
+
4
+ import SummaryList from './SummaryList';
5
+
6
+ const meta = {
7
+ title: 'Components/Summary list',
8
+ component: SummaryList,
9
+ argTypes: {
10
+ isBorderless: argTypes.noBorder(),
11
+ children: argTypes.children()
12
+ },
13
+ args: {
14
+ children: <>
15
+ <SummaryList.Item title="Name">
16
+ <SummaryList.Value>
17
+ Jane Smith
18
+ </SummaryList.Value>
19
+ <SummaryList.Action href="#foo">
20
+ Change
21
+ </SummaryList.Action>
22
+ <SummaryList.Action onclick={function w(){}}>
23
+ Delete
24
+ </SummaryList.Action>
25
+ </SummaryList.Item>
26
+ <SummaryList.Item title="Date of birth">
27
+ <SummaryList.Value>
28
+ 13 April 2001
29
+ </SummaryList.Value>
30
+ <SummaryList.Action href="#bar">
31
+ Change
32
+ </SummaryList.Action>
33
+ </SummaryList.Item>
34
+ <SummaryList.Item title="Address">
35
+ <SummaryList.Value>
36
+ Scottish Government<br />
37
+ St Andrew's House<br />
38
+ Regent Road<br />
39
+ Edinburgh<br />
40
+ EH1 3DG
41
+ </SummaryList.Value>
42
+ <SummaryList.Action href="#baz">
43
+ Change
44
+ </SummaryList.Action>
45
+ </SummaryList.Item>
46
+ <SummaryList.Item title="Contact details">
47
+ <SummaryList.Value name="Email">
48
+ email@gov.scot
49
+ </SummaryList.Value>
50
+ <SummaryList.Value name="Telephone">
51
+ 0123 456 7890
52
+ </SummaryList.Value>
53
+ <SummaryList.Action href="foo">
54
+ Change
55
+ </SummaryList.Action>
56
+ <SummaryList.Action onclick={function w(){}}>
57
+ Delete
58
+ </SummaryList.Action>
59
+ </SummaryList.Item>
60
+ </>
61
+ }
62
+ } satisfies Meta<typeof SummaryList>;
63
+
64
+ export default meta;
65
+ type Story = StoryObj<typeof meta>;
66
+
67
+ export const Default: Story = {
68
+
69
+ };
70
+
71
+ export const NoBorder: Story = {
72
+ args: {
73
+ isBorderless: true
74
+ }
75
+ };
@@ -33,7 +33,7 @@ test('summary list renders correctly', () => {
33
33
 
34
34
  test('summary list without border', () => {
35
35
  render(
36
- <SummaryList noBorder/>
36
+ <SummaryList isBorderless/>
37
37
  );
38
38
 
39
39
  const summaryList = screen.getAllByRole('list')[0];
@@ -73,14 +73,14 @@ const Value = ({
73
73
  const SummaryList = ({
74
74
  children,
75
75
  className,
76
- noBorder,
76
+ isBorderless,
77
77
  ...props
78
78
  }: SGDS.Component.SummaryList) => {
79
79
  return (
80
80
  <ol
81
81
  className={[
82
82
  'ds_summary-list',
83
- noBorder && 'ds_summary-list--no-border',
83
+ isBorderless && 'ds_summary-list--no-border',
84
84
  className
85
85
  ].join(' ')}
86
86
  {...props}
@@ -98,6 +98,6 @@ SummaryList.Value = Value;
98
98
  SummaryList.displayName = 'SummaryList';
99
99
  SummaryList.Action.displayName = 'SummaryList.Action';
100
100
  Item.displayName = 'SummaryList.Item';
101
- Value.displayName = 'SumaryList.Value';
101
+ Value.displayName = 'SummaryList.Value';
102
102
 
103
103
  export default SummaryList;