whitehall-ui 1.0.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 (122) hide show
  1. package/README.md +108 -0
  2. package/dist/chunk-2QKZ6DPC.js +27 -0
  3. package/dist/chunk-3INCIYDO.js +213 -0
  4. package/dist/chunk-3YIKJK6M.js +181 -0
  5. package/dist/chunk-4MXR4WNS.js +17 -0
  6. package/dist/chunk-5AKGRLG2.js +190 -0
  7. package/dist/chunk-5H55YDJS.js +69 -0
  8. package/dist/chunk-5PIQJ22R.js +106 -0
  9. package/dist/chunk-5TI2WXYU.js +64 -0
  10. package/dist/chunk-5XNKIBMP.js +21 -0
  11. package/dist/chunk-6VXVJERU.js +38 -0
  12. package/dist/chunk-72PH2FMG.js +180 -0
  13. package/dist/chunk-7ZCZQN5N.js +71 -0
  14. package/dist/chunk-AO6HPG4R.js +50 -0
  15. package/dist/chunk-CEPBVMFU.js +34 -0
  16. package/dist/chunk-G6T44BDV.js +75 -0
  17. package/dist/chunk-GUZIKVAE.js +119 -0
  18. package/dist/chunk-JESMK3XK.js +105 -0
  19. package/dist/chunk-JFZN5XP6.js +88 -0
  20. package/dist/chunk-KD4LPFIZ.js +67 -0
  21. package/dist/chunk-KWAC6IEK.js +95 -0
  22. package/dist/chunk-LRNZYPC2.js +107 -0
  23. package/dist/chunk-M6CLPMRP.js +227 -0
  24. package/dist/chunk-N67H5OUQ.js +51 -0
  25. package/dist/chunk-NRXTKHI2.js +169 -0
  26. package/dist/chunk-OP35ZJ4X.js +46 -0
  27. package/dist/chunk-P4GCF5FQ.js +62 -0
  28. package/dist/chunk-PGZHPAT5.js +183 -0
  29. package/dist/chunk-QTSEOPVX.js +94 -0
  30. package/dist/chunk-RPV43YDC.js +93 -0
  31. package/dist/chunk-SK27BMU5.js +140 -0
  32. package/dist/chunk-TXGBUZB4.js +44 -0
  33. package/dist/chunk-UWQFFFTB.js +136 -0
  34. package/dist/chunk-VB6V3PHD.js +67 -0
  35. package/dist/chunk-VQOCX44T.js +41 -0
  36. package/dist/chunk-WONVZ7WK.js +29 -0
  37. package/dist/chunk-WPPWPEFV.js +150 -0
  38. package/dist/chunk-XQOYWPKV.js +48 -0
  39. package/dist/chunk-YAKI4SI7.js +205 -0
  40. package/dist/chunk-YCLGXX3R.js +68 -0
  41. package/dist/index.d.ts +50 -0
  42. package/dist/index.js +39 -0
  43. package/dist/lib/utils.d.ts +5 -0
  44. package/dist/lib/utils.js +1 -0
  45. package/dist/ui/accordion.d.ts +27 -0
  46. package/dist/ui/accordion.js +2 -0
  47. package/dist/ui/back-link.d.ts +9 -0
  48. package/dist/ui/back-link.js +2 -0
  49. package/dist/ui/breadcrumbs.d.ts +22 -0
  50. package/dist/ui/breadcrumbs.js +2 -0
  51. package/dist/ui/button.d.ts +17 -0
  52. package/dist/ui/button.js +2 -0
  53. package/dist/ui/character-count.d.ts +27 -0
  54. package/dist/ui/character-count.js +3 -0
  55. package/dist/ui/checkboxes.d.ts +30 -0
  56. package/dist/ui/checkboxes.js +2 -0
  57. package/dist/ui/cookie-banner.d.ts +24 -0
  58. package/dist/ui/cookie-banner.js +2 -0
  59. package/dist/ui/date-input.d.ts +21 -0
  60. package/dist/ui/date-input.js +2 -0
  61. package/dist/ui/details.d.ts +20 -0
  62. package/dist/ui/details.js +2 -0
  63. package/dist/ui/error-message.d.ts +9 -0
  64. package/dist/ui/error-message.js +2 -0
  65. package/dist/ui/error-summary.d.ts +15 -0
  66. package/dist/ui/error-summary.js +2 -0
  67. package/dist/ui/exit-this-page.d.ts +14 -0
  68. package/dist/ui/exit-this-page.js +3 -0
  69. package/dist/ui/fieldset.d.ts +22 -0
  70. package/dist/ui/fieldset.js +2 -0
  71. package/dist/ui/file-upload.d.ts +19 -0
  72. package/dist/ui/file-upload.js +2 -0
  73. package/dist/ui/footer.d.ts +61 -0
  74. package/dist/ui/footer.js +2 -0
  75. package/dist/ui/generic-header.d.ts +22 -0
  76. package/dist/ui/generic-header.js +2 -0
  77. package/dist/ui/header.d.ts +39 -0
  78. package/dist/ui/header.js +2 -0
  79. package/dist/ui/hint.d.ts +8 -0
  80. package/dist/ui/hint.js +2 -0
  81. package/dist/ui/inset-text.d.ts +8 -0
  82. package/dist/ui/inset-text.js +2 -0
  83. package/dist/ui/label.d.ts +18 -0
  84. package/dist/ui/label.js +2 -0
  85. package/dist/ui/link.d.ts +16 -0
  86. package/dist/ui/link.js +2 -0
  87. package/dist/ui/notification-banner.d.ts +29 -0
  88. package/dist/ui/notification-banner.js +2 -0
  89. package/dist/ui/pagination.d.ts +45 -0
  90. package/dist/ui/pagination.js +2 -0
  91. package/dist/ui/panel.d.ts +16 -0
  92. package/dist/ui/panel.js +2 -0
  93. package/dist/ui/password-input.d.ts +16 -0
  94. package/dist/ui/password-input.js +4 -0
  95. package/dist/ui/phase-banner.d.ts +20 -0
  96. package/dist/ui/phase-banner.js +2 -0
  97. package/dist/ui/radios.d.ts +25 -0
  98. package/dist/ui/radios.js +2 -0
  99. package/dist/ui/select.d.ts +36 -0
  100. package/dist/ui/select.js +2 -0
  101. package/dist/ui/service-navigation.d.ts +30 -0
  102. package/dist/ui/service-navigation.js +2 -0
  103. package/dist/ui/skip-link.d.ts +8 -0
  104. package/dist/ui/skip-link.js +2 -0
  105. package/dist/ui/summary-list.d.ts +49 -0
  106. package/dist/ui/summary-list.js +2 -0
  107. package/dist/ui/table.d.ts +40 -0
  108. package/dist/ui/table.js +2 -0
  109. package/dist/ui/tabs.d.ts +25 -0
  110. package/dist/ui/tabs.js +2 -0
  111. package/dist/ui/tag.d.ts +15 -0
  112. package/dist/ui/tag.js +2 -0
  113. package/dist/ui/task-list.d.ts +30 -0
  114. package/dist/ui/task-list.js +2 -0
  115. package/dist/ui/text-input.d.ts +18 -0
  116. package/dist/ui/text-input.js +2 -0
  117. package/dist/ui/textarea.d.ts +14 -0
  118. package/dist/ui/textarea.js +2 -0
  119. package/dist/ui/warning-text.d.ts +9 -0
  120. package/dist/ui/warning-text.js +2 -0
  121. package/package.json +263 -0
  122. package/registry/default/theme/govuk-tokens.css +434 -0
package/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # Whitehall-UI
2
+
3
+ GOV.UK Design System component library for **React 19** + **Tailwind CSS 4**.
4
+
5
+ Distributed two ways:
6
+
7
+ - **npm package** — install `whitehall-ui` and import components.
8
+ - **shadcn registry** — copy component source straight into your project with the shadcn CLI.
9
+
10
+ **Live Storybook & full component list:** https://dawidmakos.github.io/whitehall-ui/
11
+
12
+ ---
13
+
14
+ ## Requirements
15
+
16
+ These are peer dependencies — install them in your app:
17
+
18
+ ```bash
19
+ npm install react@^19 react-dom@^19 tailwindcss@^4 @base-ui/react
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Option A — npm package
25
+
26
+ ### 1. Install
27
+
28
+ ```bash
29
+ npm install whitehall-ui
30
+ ```
31
+
32
+ ### 2. Load the theme tokens
33
+
34
+ Import the GOV.UK design tokens in your CSS entry point, **after** Tailwind:
35
+
36
+ ```css
37
+ @import 'tailwindcss';
38
+ @import 'whitehall-ui/tokens.css';
39
+ ```
40
+
41
+ ### 3. Use a component
42
+
43
+ Import from the package root:
44
+
45
+ ```tsx
46
+ import { Button, TextInput, Label } from 'whitehall-ui';
47
+
48
+ export function Example() {
49
+ return (
50
+ <form>
51
+ <Label htmlFor='name'>Full name</Label>
52
+ <TextInput id='name' name='name' />
53
+ <Button>Continue</Button>
54
+ </form>
55
+ );
56
+ }
57
+ ```
58
+
59
+ Per-component subpath imports also work (better tree-shaking):
60
+
61
+ ```tsx
62
+ import { Button } from 'whitehall-ui/button';
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Option B — shadcn registry
68
+
69
+ Copy the component source into your own codebase (fully editable, no runtime dependency on the package).
70
+
71
+ ### 1. Add the theme tokens (once)
72
+
73
+ ```bash
74
+ npx shadcn@latest add https://dawidmakos.github.io/whitehall-ui/r/govuk-tokens.json
75
+ ```
76
+
77
+ ### 2. Add components
78
+
79
+ ```bash
80
+ npx shadcn@latest add https://dawidmakos.github.io/whitehall-ui/r/button.json
81
+ npx shadcn@latest add https://dawidmakos.github.io/whitehall-ui/r/text-input.json
82
+ ```
83
+
84
+ Swap `button` / `text-input` for any component name below. The CLI resolves each component's dependencies (e.g. the `cn` util) automatically.
85
+
86
+ ### 3. Use it
87
+
88
+ ```tsx
89
+ import { Button } from '@/components/ui/button';
90
+
91
+ export function Example() {
92
+ return <Button>Continue</Button>;
93
+ }
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Available components
99
+
100
+ `accordion` · `back-link` · `breadcrumbs` · `button` · `character-count` · `checkboxes` · `cookie-banner` · `date-input` · `details` · `error-message` · `error-summary` · `exit-this-page` · `fieldset` · `file-upload` · `footer` · `generic-header` · `header` · `hint` · `inset-text` · `label` · `link` · `notification-banner` · `pagination` · `panel` · `password-input` · `phase-banner` · `radios` · `select` · `service-navigation` · `skip-link` · `summary-list` · `table` · `tabs` · `tag` · `task-list` · `text-input` · `textarea` · `warning-text`
101
+
102
+ See the [Storybook](https://dawidmakos.github.io/whitehall-ui/) for props and live examples.
103
+
104
+ ---
105
+
106
+ ## License
107
+
108
+ MIT
@@ -0,0 +1,27 @@
1
+ import { cn } from './chunk-WONVZ7WK.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ var SkipLink = ({
5
+ className,
6
+ ref,
7
+ children = "Skip to main content",
8
+ href = "#main-content",
9
+ ...props
10
+ }) => /* @__PURE__ */ jsx(
11
+ "a",
12
+ {
13
+ ref,
14
+ href,
15
+ className: cn(
16
+ "govuk-skip-link",
17
+ "font-govuk text-govuk-header leading-tight",
18
+ "block py-govuk-2 px-govuk-3",
19
+ "text-govuk-black no-underline",
20
+ className
21
+ ),
22
+ ...props,
23
+ children
24
+ }
25
+ );
26
+
27
+ export { SkipLink };
@@ -0,0 +1,213 @@
1
+ import { cn } from './chunk-WONVZ7WK.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ var SummaryList = ({
5
+ className,
6
+ noBorder,
7
+ ref,
8
+ children,
9
+ ...props
10
+ }) => /* @__PURE__ */ jsx(
11
+ "dl",
12
+ {
13
+ ref,
14
+ className: cn(
15
+ "font-govuk text-govuk-body text-govuk-black",
16
+ "m-0 mb-govuk-6",
17
+ "sm:table sm:w-full sm:table-fixed sm:border-collapse",
18
+ noBorder && "[&_div]:border-0 sm:[&_dt]:pb-2.75 sm:[&_dd]:pb-2.75",
19
+ className
20
+ ),
21
+ ...props,
22
+ children
23
+ }
24
+ );
25
+ var SummaryListRow = ({
26
+ className,
27
+ noBorder,
28
+ noActions,
29
+ ref,
30
+ children,
31
+ ...props
32
+ }) => /* @__PURE__ */ jsx(
33
+ "div",
34
+ {
35
+ ref,
36
+ className: cn(
37
+ "border-b border-govuk-mid-grey",
38
+ "max-sm:mb-govuk-3",
39
+ "sm:table-row",
40
+ noBorder && "border-0 sm:[&>dt]:pb-2.75 sm:[&>dd]:pb-2.75",
41
+ noActions && 'sm:after:content-[""] sm:after:table-cell sm:after:w-[20%]',
42
+ className
43
+ ),
44
+ ...props,
45
+ children
46
+ }
47
+ );
48
+ var SummaryListKey = ({
49
+ className,
50
+ ref,
51
+ children,
52
+ ...props
53
+ }) => /* @__PURE__ */ jsx(
54
+ "dt",
55
+ {
56
+ ref,
57
+ className: cn(
58
+ "m-0 mb-govuk-1 font-bold",
59
+ "wrap-break-word",
60
+ "sm:table-cell sm:pt-govuk-2 sm:pr-govuk-4 sm:pb-govuk-2 sm:align-top sm:w-[30%]",
61
+ className
62
+ ),
63
+ ...props,
64
+ children
65
+ }
66
+ );
67
+ var SummaryListValue = ({
68
+ className,
69
+ ref,
70
+ children,
71
+ ...props
72
+ }) => /* @__PURE__ */ jsx(
73
+ "dd",
74
+ {
75
+ ref,
76
+ className: cn(
77
+ "m-0 max-sm:mb-govuk-3",
78
+ "wrap-break-word",
79
+ "sm:table-cell sm:pt-govuk-2 sm:pr-govuk-4 sm:pb-govuk-2 sm:align-top",
80
+ className
81
+ ),
82
+ ...props,
83
+ children
84
+ }
85
+ );
86
+ var SummaryListActions = ({
87
+ className,
88
+ ref,
89
+ children,
90
+ ...props
91
+ }) => /* @__PURE__ */ jsx(
92
+ "dd",
93
+ {
94
+ ref,
95
+ className: cn(
96
+ "m-0 mb-govuk-3",
97
+ "sm:table-cell sm:pt-govuk-2 sm:pb-govuk-2 sm:w-[20%] sm:text-right sm:align-top",
98
+ className
99
+ ),
100
+ ...props,
101
+ children
102
+ }
103
+ );
104
+ var SummaryListCard = ({
105
+ className,
106
+ ref,
107
+ children,
108
+ ...props
109
+ }) => /* @__PURE__ */ jsx(
110
+ "div",
111
+ {
112
+ ref,
113
+ className: cn("mb-govuk-6 border border-govuk-mid-grey", className),
114
+ ...props,
115
+ children
116
+ }
117
+ );
118
+ var SummaryListCardTitle = ({
119
+ className,
120
+ ref,
121
+ children,
122
+ ...props
123
+ }) => /* @__PURE__ */ jsx(
124
+ "h2",
125
+ {
126
+ ref,
127
+ className: cn(
128
+ "font-govuk text-govuk-body font-bold text-govuk-black",
129
+ "m-0 mr-govuk-4 mb-govuk-1",
130
+ className
131
+ ),
132
+ ...props,
133
+ children
134
+ }
135
+ );
136
+ var SummaryListCardHeader = ({
137
+ className,
138
+ ref,
139
+ children,
140
+ ...props
141
+ }) => /* @__PURE__ */ jsx(
142
+ "div",
143
+ {
144
+ ref,
145
+ className: cn(
146
+ "p-govuk-3 sm:px-govuk-4",
147
+ "border-b border-transparent bg-govuk-light-grey",
148
+ "sm:flex sm:flex-nowrap sm:justify-between",
149
+ className
150
+ ),
151
+ ...props,
152
+ children
153
+ }
154
+ );
155
+ var SummaryListCardActions = ({
156
+ className,
157
+ ref,
158
+ children,
159
+ ...props
160
+ }) => /* @__PURE__ */ jsx(
161
+ "ul",
162
+ {
163
+ ref,
164
+ className: cn(
165
+ "font-govuk text-govuk-body font-bold",
166
+ "m-0 my-govuk-1 p-0 list-none",
167
+ "flex flex-wrap gap-y-govuk-2",
168
+ "sm:justify-end sm:text-right",
169
+ className
170
+ ),
171
+ ...props,
172
+ children
173
+ }
174
+ );
175
+ var SummaryListCardAction = ({
176
+ className,
177
+ ref,
178
+ children,
179
+ ...props
180
+ }) => /* @__PURE__ */ jsx(
181
+ "li",
182
+ {
183
+ ref,
184
+ className: cn(
185
+ "inline",
186
+ "max-sm:mr-govuk-2 max-sm:pr-govuk-2 max-sm:border-r max-sm:border-govuk-mid-grey max-sm:last:mr-0 max-sm:last:pr-0 max-sm:last:border-0",
187
+ "sm:ml-govuk-2 sm:pl-govuk-2 sm:first:ml-0 sm:first:pl-0 sm:first:border-0 sm:not-first:border-l sm:not-first:border-govuk-mid-grey",
188
+ className
189
+ ),
190
+ ...props,
191
+ children
192
+ }
193
+ );
194
+ var SummaryListCardContent = ({
195
+ className,
196
+ ref,
197
+ children,
198
+ ...props
199
+ }) => /* @__PURE__ */ jsx(
200
+ "div",
201
+ {
202
+ ref,
203
+ className: cn(
204
+ "pt-govuk-3 px-govuk-3 sm:px-govuk-4 sm:pb-govuk-3",
205
+ "[&_dl]:mb-0 [&_dl_div:last-of-type]:mb-0 [&_dl_div:last-of-type]:border-b-0",
206
+ className
207
+ ),
208
+ ...props,
209
+ children
210
+ }
211
+ );
212
+
213
+ export { SummaryList, SummaryListActions, SummaryListCard, SummaryListCardAction, SummaryListCardActions, SummaryListCardContent, SummaryListCardHeader, SummaryListCardTitle, SummaryListKey, SummaryListRow, SummaryListValue };
@@ -0,0 +1,181 @@
1
+ import { cn } from './chunk-WONVZ7WK.js';
2
+ import { useState, useId } from 'react';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+
5
+ var serviceNavigationLinkStyles = [
6
+ "font-govuk cursor-pointer",
7
+ "no-underline hover:underline",
8
+ "hover:govuk-link-underline hover:govuk-link-underline-hover",
9
+ "focus:govuk-link-focus"
10
+ ];
11
+ var itemStyles = [
12
+ "relative my-govuk-2",
13
+ "sm:my-0 sm:inline-block sm:py-govuk-3",
14
+ "sm:not-last:mr-govuk-6"
15
+ ];
16
+ var ServiceNavigation = ({
17
+ className,
18
+ ref,
19
+ children,
20
+ ...props
21
+ }) => /* @__PURE__ */ jsx(
22
+ "section",
23
+ {
24
+ ref,
25
+ "aria-label": props["aria-label"] ?? "Service information",
26
+ className: cn(
27
+ "font-govuk text-govuk-body text-govuk-black",
28
+ "border-b border-b-govuk-mid-grey",
29
+ "bg-govuk-light-grey",
30
+ className
31
+ ),
32
+ ...props,
33
+ children
34
+ }
35
+ );
36
+ var ServiceNavigationContainer = ({
37
+ className,
38
+ ref,
39
+ children,
40
+ ...props
41
+ }) => /* @__PURE__ */ jsx(
42
+ "div",
43
+ {
44
+ ref,
45
+ className: cn(
46
+ "max-w-240 mx-auto px-govuk-3",
47
+ "flex flex-col items-start",
48
+ "sm:flex-row sm:flex-wrap",
49
+ className
50
+ ),
51
+ ...props,
52
+ children
53
+ }
54
+ );
55
+ var ServiceNavigationServiceName = ({
56
+ className,
57
+ ref,
58
+ children,
59
+ ...props
60
+ }) => /* @__PURE__ */ jsx(
61
+ "a",
62
+ {
63
+ ref,
64
+ className: cn(
65
+ itemStyles,
66
+ "font-bold",
67
+ "text-govuk-black visited:text-govuk-black hover:text-govuk-black",
68
+ serviceNavigationLinkStyles,
69
+ className
70
+ ),
71
+ ...props,
72
+ children
73
+ }
74
+ );
75
+ var ServiceNavigationNav = ({
76
+ className,
77
+ ref,
78
+ children,
79
+ menuButtonText = "Menu",
80
+ ...props
81
+ }) => {
82
+ const [menuOpen, setMenuOpen] = useState(false);
83
+ const listId = useId();
84
+ return /* @__PURE__ */ jsxs(
85
+ "nav",
86
+ {
87
+ ref,
88
+ "aria-label": props["aria-label"] ?? menuButtonText,
89
+ className: cn("max-sm:w-full sm:grow", className),
90
+ ...props,
91
+ children: [
92
+ /* @__PURE__ */ jsxs(
93
+ "button",
94
+ {
95
+ type: "button",
96
+ className: cn(
97
+ "sm:hidden inline-flex items-center gap-govuk-1",
98
+ "my-govuk-2 p-0",
99
+ "font-govuk text-govuk-body font-bold",
100
+ "bg-transparent border-0 text-govuk-brand cursor-pointer",
101
+ "hover:underline focus:govuk-link-focus"
102
+ ),
103
+ onClick: () => setMenuOpen((prev) => !prev),
104
+ "aria-expanded": menuOpen,
105
+ "aria-controls": listId,
106
+ children: [
107
+ menuButtonText,
108
+ /* @__PURE__ */ jsx(
109
+ "svg",
110
+ {
111
+ viewBox: "0 0 10 6",
112
+ width: "10",
113
+ height: "6",
114
+ fill: "currentColor",
115
+ "aria-hidden": "true",
116
+ className: cn("transition-transform", menuOpen && "rotate-180"),
117
+ children: /* @__PURE__ */ jsx("path", { d: "M0 0l5 6 5-6z" })
118
+ }
119
+ )
120
+ ]
121
+ }
122
+ ),
123
+ /* @__PURE__ */ jsx(
124
+ "ul",
125
+ {
126
+ id: listId,
127
+ className: cn(
128
+ "list-none m-0 mb-govuk-3 p-0",
129
+ "sm:flex sm:flex-wrap sm:mb-0",
130
+ menuOpen ? "max-sm:block" : "max-sm:hidden"
131
+ ),
132
+ children
133
+ }
134
+ )
135
+ ]
136
+ }
137
+ );
138
+ };
139
+ var ServiceNavigationItem = ({
140
+ className,
141
+ active,
142
+ ref,
143
+ children,
144
+ ...props
145
+ }) => /* @__PURE__ */ jsx(
146
+ "li",
147
+ {
148
+ ref,
149
+ className: cn(
150
+ itemStyles,
151
+ "border-govuk-brand",
152
+ active && [
153
+ "max-sm:-ml-govuk-3 max-sm:pl-govuk-2 max-sm:border-l-govuk-standard",
154
+ "sm:border-b-govuk-standard sm:pb-govuk-2"
155
+ ],
156
+ className
157
+ ),
158
+ ...props,
159
+ children
160
+ }
161
+ );
162
+ var ServiceNavigationLink = ({
163
+ className,
164
+ ref,
165
+ children,
166
+ ...props
167
+ }) => /* @__PURE__ */ jsx(
168
+ "a",
169
+ {
170
+ ref,
171
+ className: cn(
172
+ "text-govuk-brand visited:text-govuk-brand hover:text-govuk-brand-hover",
173
+ serviceNavigationLinkStyles,
174
+ className
175
+ ),
176
+ ...props,
177
+ children
178
+ }
179
+ );
180
+
181
+ export { ServiceNavigation, ServiceNavigationContainer, ServiceNavigationItem, ServiceNavigationLink, ServiceNavigationNav, ServiceNavigationServiceName };
@@ -0,0 +1,17 @@
1
+ import { cn } from './chunk-WONVZ7WK.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ var Hint = ({ className, ref, ...props }) => /* @__PURE__ */ jsx(
5
+ "div",
6
+ {
7
+ ref,
8
+ className: cn(
9
+ "font-govuk text-govuk-body text-govuk-dark-grey",
10
+ "mb-govuk-3",
11
+ className
12
+ ),
13
+ ...props
14
+ }
15
+ );
16
+
17
+ export { Hint };