@nationalarchives/frontend 0.1.24-prerelease → 0.1.26-prerelease

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 (213) hide show
  1. package/README.md +22 -0
  2. package/govuk-prototype-kit.config.json +4 -12
  3. package/nationalarchives/all.css +2 -2
  4. package/nationalarchives/all.css.map +1 -1
  5. package/nationalarchives/all.js +1 -1
  6. package/nationalarchives/all.js.map +1 -1
  7. package/nationalarchives/all.mjs +0 -11
  8. package/nationalarchives/components/_index.scss +8 -0
  9. package/nationalarchives/components/breadcrumbs/breadcrumbs.css +1 -1
  10. package/nationalarchives/components/breadcrumbs/breadcrumbs.css.map +1 -1
  11. package/nationalarchives/components/breadcrumbs/breadcrumbs.js +1 -1
  12. package/nationalarchives/components/breadcrumbs/breadcrumbs.js.map +1 -1
  13. package/nationalarchives/components/breadcrumbs/breadcrumbs.mjs +1 -1
  14. package/nationalarchives/components/breadcrumbs/breadcrumbs.scss +1 -1
  15. package/nationalarchives/components/breadcrumbs/breadcrumbs.stories.js +1 -1
  16. package/nationalarchives/components/button/_button-group.scss +4 -0
  17. package/nationalarchives/components/button/button.css +1 -1
  18. package/nationalarchives/components/button/button.css.map +1 -1
  19. package/nationalarchives/components/button/button.scss +89 -26
  20. package/nationalarchives/components/button/button.stories.js +52 -5
  21. package/nationalarchives/components/button/macro-options.json +18 -0
  22. package/nationalarchives/components/button/template.njk +15 -6
  23. package/nationalarchives/components/card/card.css +1 -1
  24. package/nationalarchives/components/card/card.css.map +1 -1
  25. package/nationalarchives/components/card/card.scss +7 -37
  26. package/nationalarchives/components/card/card.stories.js +6 -78
  27. package/nationalarchives/components/card/fixtures.json +17 -17
  28. package/nationalarchives/components/card/macro-options.json +41 -17
  29. package/nationalarchives/components/card/template.njk +51 -48
  30. package/nationalarchives/components/checkboxes/_index.scss +1 -0
  31. package/nationalarchives/components/checkboxes/checkboxes.css +1 -0
  32. package/nationalarchives/components/checkboxes/checkboxes.css.map +1 -0
  33. package/nationalarchives/components/checkboxes/checkboxes.scss +143 -0
  34. package/nationalarchives/components/checkboxes/checkboxes.stories.js +238 -0
  35. package/nationalarchives/components/checkboxes/fixtures.json +4 -0
  36. package/nationalarchives/components/checkboxes/macro-options.json +102 -0
  37. package/nationalarchives/components/checkboxes/macro.njk +3 -0
  38. package/nationalarchives/components/checkboxes/template.njk +35 -0
  39. package/nationalarchives/components/cookie-banner/cookie-banner.css +1 -1
  40. package/nationalarchives/components/cookie-banner/cookie-banner.css.map +1 -1
  41. package/nationalarchives/components/cookie-banner/cookie-banner.js +1 -1
  42. package/nationalarchives/components/cookie-banner/cookie-banner.js.map +1 -1
  43. package/nationalarchives/components/cookie-banner/cookie-banner.mjs +19 -16
  44. package/nationalarchives/components/cookie-banner/cookie-banner.stories.js +103 -42
  45. package/nationalarchives/components/cookie-banner/fixtures.json +54 -8
  46. package/nationalarchives/components/cookie-banner/macro-options.json +19 -1
  47. package/nationalarchives/components/cookie-banner/template.njk +1 -1
  48. package/nationalarchives/components/date-input/_index.scss +1 -0
  49. package/nationalarchives/components/date-input/date-input.css +1 -0
  50. package/nationalarchives/components/date-input/date-input.css.map +1 -0
  51. package/nationalarchives/components/date-input/date-input.scss +48 -0
  52. package/nationalarchives/components/date-input/date-input.stories.js +116 -0
  53. package/nationalarchives/components/date-input/fixtures.json +4 -0
  54. package/nationalarchives/components/date-input/macro-options.json +96 -0
  55. package/nationalarchives/components/date-input/macro.njk +3 -0
  56. package/nationalarchives/components/date-input/template.njk +45 -0
  57. package/nationalarchives/components/date-search/_index.scss +1 -0
  58. package/nationalarchives/components/date-search/date-search.css +1 -0
  59. package/nationalarchives/components/date-search/date-search.css.map +1 -0
  60. package/nationalarchives/components/date-search/date-search.scss +27 -0
  61. package/nationalarchives/components/date-search/date-search.stories.js +121 -0
  62. package/nationalarchives/components/date-search/fixtures.json +4 -0
  63. package/nationalarchives/components/date-search/macro-options.json +94 -0
  64. package/nationalarchives/components/date-search/macro.njk +3 -0
  65. package/nationalarchives/components/date-search/template.njk +27 -0
  66. package/nationalarchives/components/featured-records/featured-records.css +1 -1
  67. package/nationalarchives/components/featured-records/featured-records.css.map +1 -1
  68. package/nationalarchives/components/filters/filters.css +1 -1
  69. package/nationalarchives/components/filters/filters.css.map +1 -1
  70. package/nationalarchives/components/filters/filters.scss +0 -8
  71. package/nationalarchives/components/filters/template.njk +2 -2
  72. package/nationalarchives/components/footer/footer.css +1 -1
  73. package/nationalarchives/components/footer/footer.css.map +1 -1
  74. package/nationalarchives/components/footer/footer.scss +3 -5
  75. package/nationalarchives/components/footer/footer.stories.js +1 -1
  76. package/nationalarchives/components/footer/template.njk +13 -9
  77. package/nationalarchives/components/gallery/gallery.css +1 -1
  78. package/nationalarchives/components/gallery/gallery.css.map +1 -1
  79. package/nationalarchives/components/gallery/gallery.scss +0 -11
  80. package/nationalarchives/components/gallery/gallery.stories.js +8 -10
  81. package/nationalarchives/components/gallery/template.njk +1 -1
  82. package/nationalarchives/components/grid/grid.css +1 -1
  83. package/nationalarchives/components/grid/grid.css.map +1 -1
  84. package/nationalarchives/components/grid/grid.scss +12 -0
  85. package/nationalarchives/components/grid/grid.stories.js +12 -0
  86. package/nationalarchives/components/header/header.css +1 -1
  87. package/nationalarchives/components/header/header.css.map +1 -1
  88. package/nationalarchives/components/header/header.scss +36 -41
  89. package/nationalarchives/components/header/header.stories.js +0 -41
  90. package/nationalarchives/components/header/template.njk +3 -3
  91. package/nationalarchives/components/hero/hero.css +1 -1
  92. package/nationalarchives/components/hero/hero.css.map +1 -1
  93. package/nationalarchives/components/hero/hero.scss +3 -7
  94. package/nationalarchives/components/hero/hero.stories.js +6 -0
  95. package/nationalarchives/components/index-grid/fixtures.json +324 -1
  96. package/nationalarchives/components/index-grid/index-grid.css +1 -1
  97. package/nationalarchives/components/index-grid/index-grid.css.map +1 -1
  98. package/nationalarchives/components/index-grid/index-grid.scss +13 -10
  99. package/nationalarchives/components/index-grid/index-grid.stories.js +27 -14
  100. package/nationalarchives/components/index-grid/macro-options.json +34 -29
  101. package/nationalarchives/components/index-grid/template.njk +13 -8
  102. package/nationalarchives/components/message/message.css +1 -1
  103. package/nationalarchives/components/message/message.css.map +1 -1
  104. package/nationalarchives/components/message/message.scss +1 -6
  105. package/nationalarchives/components/message/template.njk +1 -1
  106. package/nationalarchives/components/pagination/macro-options.json +6 -0
  107. package/nationalarchives/components/pagination/pagination.css +1 -1
  108. package/nationalarchives/components/pagination/pagination.css.map +1 -1
  109. package/nationalarchives/components/pagination/pagination.scss +4 -0
  110. package/nationalarchives/components/pagination/pagination.stories.js +63 -2
  111. package/nationalarchives/components/pagination/template.njk +39 -17
  112. package/nationalarchives/components/phase-banner/phase-banner.css +1 -1
  113. package/nationalarchives/components/phase-banner/phase-banner.css.map +1 -1
  114. package/nationalarchives/components/phase-banner/phase-banner.scss +2 -3
  115. package/nationalarchives/components/picture/picture.css +1 -1
  116. package/nationalarchives/components/picture/picture.css.map +1 -1
  117. package/nationalarchives/components/picture/picture.js.map +1 -1
  118. package/nationalarchives/components/picture/picture.mjs +0 -4
  119. package/nationalarchives/components/picture/picture.scss +1 -1
  120. package/nationalarchives/components/picture/template.njk +1 -1
  121. package/nationalarchives/components/radios/_index.scss +1 -0
  122. package/nationalarchives/components/radios/fixtures.json +4 -0
  123. package/nationalarchives/components/radios/macro-options.json +102 -0
  124. package/nationalarchives/components/radios/macro.njk +3 -0
  125. package/nationalarchives/components/radios/radios.css +1 -0
  126. package/nationalarchives/components/radios/radios.css.map +1 -0
  127. package/nationalarchives/components/radios/radios.scss +131 -0
  128. package/nationalarchives/components/radios/radios.stories.js +241 -0
  129. package/nationalarchives/components/radios/template.njk +35 -0
  130. package/nationalarchives/components/search-field/_index.scss +1 -0
  131. package/nationalarchives/components/search-field/fixtures.json +4 -0
  132. package/nationalarchives/components/search-field/macro-options.json +68 -0
  133. package/nationalarchives/components/search-field/macro.njk +3 -0
  134. package/nationalarchives/components/search-field/search-field.css +1 -0
  135. package/nationalarchives/components/search-field/search-field.css.map +1 -0
  136. package/nationalarchives/components/search-field/search-field.scss +32 -0
  137. package/nationalarchives/components/search-field/search-field.stories.js +88 -0
  138. package/nationalarchives/components/search-field/template.njk +32 -0
  139. package/nationalarchives/components/select/_index.scss +1 -0
  140. package/nationalarchives/components/select/fixtures.json +4 -0
  141. package/nationalarchives/components/select/macro-options.json +114 -0
  142. package/nationalarchives/components/select/macro.njk +3 -0
  143. package/nationalarchives/components/select/select.css +1 -0
  144. package/nationalarchives/components/select/select.css.map +1 -0
  145. package/nationalarchives/components/select/select.scss +51 -0
  146. package/nationalarchives/components/select/select.stories.js +194 -0
  147. package/nationalarchives/components/select/template.njk +29 -0
  148. package/nationalarchives/components/sensitive-image/sensitive-image.css +1 -1
  149. package/nationalarchives/components/sensitive-image/sensitive-image.css.map +1 -1
  150. package/nationalarchives/components/sensitive-image/sensitive-image.stories.js +3 -0
  151. package/nationalarchives/components/sensitive-image/template.njk +1 -1
  152. package/nationalarchives/components/skip-link/skip-link.css +1 -1
  153. package/nationalarchives/components/skip-link/skip-link.css.map +1 -1
  154. package/nationalarchives/components/skip-link/skip-link.stories.js +4 -1
  155. package/nationalarchives/components/skip-link/template.njk +1 -1
  156. package/nationalarchives/components/tabs/tabs.css +1 -1
  157. package/nationalarchives/components/tabs/tabs.css.map +1 -1
  158. package/nationalarchives/components/tabs/tabs.js +1 -1
  159. package/nationalarchives/components/tabs/tabs.js.map +1 -1
  160. package/nationalarchives/components/tabs/tabs.mjs +1 -1
  161. package/nationalarchives/components/tabs/tabs.scss +11 -1
  162. package/nationalarchives/components/tabs/tabs.stories.js +6 -3
  163. package/nationalarchives/components/tabs/template.njk +1 -1
  164. package/nationalarchives/components/text-input/_index.scss +1 -0
  165. package/nationalarchives/components/text-input/fixtures.json +4 -0
  166. package/nationalarchives/components/text-input/macro-options.json +118 -0
  167. package/nationalarchives/components/text-input/macro.njk +3 -0
  168. package/nationalarchives/components/text-input/template.njk +30 -0
  169. package/nationalarchives/components/text-input/text-input.css +1 -0
  170. package/nationalarchives/components/text-input/text-input.css.map +1 -0
  171. package/nationalarchives/components/text-input/text-input.scss +44 -0
  172. package/nationalarchives/components/text-input/text-input.stories.js +188 -0
  173. package/nationalarchives/components/textarea/_index.scss +1 -0
  174. package/nationalarchives/components/textarea/fixtures.json +4 -0
  175. package/nationalarchives/components/textarea/macro-options.json +106 -0
  176. package/nationalarchives/components/textarea/macro.njk +3 -0
  177. package/nationalarchives/components/textarea/template.njk +27 -0
  178. package/nationalarchives/components/textarea/textarea.css +1 -0
  179. package/nationalarchives/components/textarea/textarea.css.map +1 -0
  180. package/nationalarchives/components/textarea/textarea.scss +45 -0
  181. package/nationalarchives/components/textarea/textarea.stories.js +127 -0
  182. package/nationalarchives/lib/cookies.mjs +172 -63
  183. package/nationalarchives/prototype-kit.css +2 -2
  184. package/nationalarchives/prototype-kit.css.map +1 -1
  185. package/nationalarchives/prototype-kit.scss +0 -8
  186. package/nationalarchives/stories/utilities/colour-schemes/colour-schemes.stories.js +449 -91
  187. package/nationalarchives/stories/utilities/forms/forms.mdx +117 -0
  188. package/nationalarchives/stories/utilities/overrides/overrides.stories.js +1 -0
  189. package/nationalarchives/stories/utilities/tables/tables.mdx +8 -0
  190. package/nationalarchives/stories/utilities/tables/tables.stories.js +45 -0
  191. package/nationalarchives/stories/utilities/typography/heading-groups.stories.js +59 -19
  192. package/nationalarchives/stories/utilities/typography/typography.stories.js +0 -6
  193. package/nationalarchives/templates/layouts/_generic.njk +1 -1
  194. package/nationalarchives/templates/layouts/_prototype-kit.njk +2 -0
  195. package/nationalarchives/tests/cookies.test.js +427 -0
  196. package/nationalarchives/tests/uuid.test.js +17 -0
  197. package/nationalarchives/tools/_colour.scss +50 -27
  198. package/nationalarchives/tools/_typography.scss +0 -1
  199. package/nationalarchives/utilities/_a11y.scss +6 -2
  200. package/nationalarchives/utilities/_colour.scss +10 -6
  201. package/nationalarchives/utilities/_debug.scss +3 -4
  202. package/nationalarchives/utilities/_forms.scss +93 -0
  203. package/nationalarchives/utilities/_index.scss +2 -0
  204. package/nationalarchives/utilities/_lists.scss +6 -1
  205. package/nationalarchives/utilities/_overrides.scss +1 -1
  206. package/nationalarchives/utilities/_tables.scss +86 -0
  207. package/nationalarchives/utilities/_typography.scss +71 -77
  208. package/nationalarchives/variables/_colour.scss +15 -10
  209. package/nationalarchives/variables/_forms.scss +2 -0
  210. package/nationalarchives/variables/_index.scss +1 -0
  211. package/nationalarchives/variables/_typography.scss +2 -2
  212. package/package.json +19 -19
  213. package/nationalarchives/stories/utilities/overrides/overrides.mdx +0 -53
@@ -0,0 +1,143 @@
1
+ @use "../../variables/forms";
2
+ @use "../../tools/colour";
3
+ @use "../../tools/media";
4
+ @use "../../utilities/a11y";
5
+ @use "../../utilities";
6
+
7
+ .tna-checkboxes {
8
+ display: flex;
9
+ flex-direction: column;
10
+ align-items: flex-start;
11
+ gap: 1rem;
12
+
13
+ &__item {
14
+ position: relative;
15
+
16
+ input {
17
+ width: 1px;
18
+ height: 1px;
19
+ margin: 0;
20
+ padding: 0;
21
+
22
+ position: absolute;
23
+ top: -1px;
24
+ left: -1px;
25
+
26
+ opacity: 0;
27
+ }
28
+
29
+ &-label {
30
+ padding-left: 3rem;
31
+
32
+ display: block;
33
+
34
+ line-height: 2rem;
35
+
36
+ cursor: pointer;
37
+
38
+ &::before,
39
+ &::after {
40
+ width: 2rem;
41
+
42
+ position: absolute;
43
+ top: 0;
44
+ left: 0;
45
+
46
+ content: "";
47
+ }
48
+
49
+ &::before {
50
+ height: 2rem;
51
+
52
+ display: block;
53
+ box-sizing: border-box;
54
+
55
+ z-index: 1;
56
+
57
+ @include colour.colour-background("input-background");
58
+
59
+ @include colour.colour-border(
60
+ "input-border",
61
+ forms.$form-field-border-width
62
+ );
63
+ }
64
+
65
+ &::after {
66
+ width: 1.25rem;
67
+ height: 0.5rem;
68
+ margin-top: -0.1875rem;
69
+
70
+ display: none;
71
+
72
+ top: 1rem;
73
+ left: 1rem;
74
+ z-index: 2;
75
+
76
+ @include colour.colour-border("input-background", 0, solid);
77
+ border-width: 0 0 forms.$checkbox-checkmark-width
78
+ forms.$checkbox-checkmark-width;
79
+
80
+ transform: translateX(-50%) translateY(-50%) rotate(-45deg);
81
+ }
82
+ }
83
+ }
84
+
85
+ &--small {
86
+ gap: 0.5rem;
87
+ }
88
+
89
+ &--small &__item {
90
+ &-label {
91
+ padding-left: 2.5rem;
92
+
93
+ line-height: 1.5rem;
94
+
95
+ &::before {
96
+ width: 1.5rem;
97
+ height: 1.5rem;
98
+ }
99
+
100
+ &::after {
101
+ width: 0.825rem;
102
+ height: 0.375rem;
103
+ margin-top: -0.125rem;
104
+
105
+ top: 0.75rem;
106
+ left: 0.75rem;
107
+ }
108
+ }
109
+ }
110
+
111
+ &--inline {
112
+ flex-flow: row wrap;
113
+ align-items: center;
114
+ gap: 1rem 2rem;
115
+
116
+ @include media.on-tiny {
117
+ flex-direction: column;
118
+ align-items: flex-start;
119
+ }
120
+ }
121
+
122
+ input:focus + &__item-label {
123
+ &::before {
124
+ @include a11y.focus-outline;
125
+ }
126
+ }
127
+
128
+ input:checked + &__item-label {
129
+ &::before {
130
+ @include colour.colour-background("input-foreground");
131
+ }
132
+
133
+ &::after {
134
+ display: block;
135
+ }
136
+ }
137
+
138
+ &--small &__item:hover &__item-label {
139
+ &::before {
140
+ box-shadow: 0 0 0 0.125rem var(--input-border);
141
+ }
142
+ }
143
+ }
@@ -0,0 +1,238 @@
1
+ import Checkboxes from "./template.njk";
2
+ import macroOptions from "./macro-options.json";
3
+
4
+ const argTypes = {
5
+ label: { control: "text" },
6
+ headingLevel: { control: { type: "number", min: 1, max: 6 } },
7
+ headingSize: { control: "inline-radio", options: ["s", "m", "l", "xl"] },
8
+ id: { control: "text" },
9
+ name: { control: "text" },
10
+ hint: { control: "text" },
11
+ error: { control: "object" },
12
+ items: { control: "object" },
13
+ small: { control: "boolean" },
14
+ inline: { control: "boolean" },
15
+ classes: { control: "text" },
16
+ attributes: { control: "object" },
17
+ };
18
+
19
+ Object.keys(argTypes).forEach((argType) => {
20
+ argTypes[argType].description = macroOptions.find(
21
+ (option) => option.name === argType,
22
+ )?.description;
23
+ });
24
+
25
+ export default {
26
+ title: "Components/Checkboxes",
27
+ argTypes,
28
+ };
29
+
30
+ const Template = ({
31
+ label,
32
+ headingLevel,
33
+ headingSize,
34
+ id,
35
+ name,
36
+ hint,
37
+ error,
38
+ items,
39
+ small,
40
+ inline,
41
+ classes,
42
+ attributes,
43
+ }) =>
44
+ Checkboxes({
45
+ params: {
46
+ label,
47
+ headingLevel,
48
+ headingSize,
49
+ id,
50
+ name,
51
+ hint,
52
+ error,
53
+ items,
54
+ small,
55
+ inline,
56
+ classes,
57
+ attributes,
58
+ },
59
+ });
60
+
61
+ export const Standard = Template.bind({});
62
+ Standard.args = {
63
+ label: "Categories",
64
+ headingLevel: 4,
65
+ headingSize: "m",
66
+ id: "categories1",
67
+ name: "categories1",
68
+ items: [
69
+ {
70
+ text: "Alpha",
71
+ value: "alpha",
72
+ },
73
+ {
74
+ text: "Beta",
75
+ value: "beta",
76
+ },
77
+ {
78
+ text: "Gamma",
79
+ value: "gamma",
80
+ },
81
+ ],
82
+ classes: "tna-checkboxes--demo",
83
+ };
84
+
85
+ export const Small = Template.bind({});
86
+ Small.args = {
87
+ label: "Categories",
88
+ headingLevel: 4,
89
+ headingSize: "m",
90
+ id: "categories2",
91
+ name: "categories2",
92
+ items: [
93
+ {
94
+ text: "Admiralty, Navy, Royal Marines, and Coastguard",
95
+ value: "ADM",
96
+ },
97
+ {
98
+ text: "Air Ministry and Royal Air Force records",
99
+ value: "AIR",
100
+ },
101
+ {
102
+ text: "Board of Trade and successors",
103
+ value: "BT",
104
+ },
105
+ {
106
+ text: "Chancery, the Wardrobe, Royal Household, Exchequer and various commissions",
107
+ value: "C",
108
+ },
109
+ {
110
+ text: "Colonial Office, Commonwealth and Foreign and Commonwealth Offices",
111
+ value: "CO",
112
+ },
113
+ {
114
+ text: "Exchequer, Office of First Fruits and Tenths, and the Court of Augmentations",
115
+ value: "E",
116
+ },
117
+ {
118
+ text: "Foreign Office",
119
+ value: "FO",
120
+ },
121
+ {
122
+ text: "Home Office",
123
+ value: "HO",
124
+ },
125
+ {
126
+ text: "Prerogative Court of Canterbury",
127
+ value: "PROB",
128
+ },
129
+ {
130
+ text: "War Office, Armed Forces, Judge Advocate General, and related bodies",
131
+ value: "WO",
132
+ },
133
+ ],
134
+ small: true,
135
+ classes: "tna-checkboxes--demo",
136
+ };
137
+
138
+ export const Preselected = Template.bind({});
139
+ Preselected.args = {
140
+ label: "Categories",
141
+ headingLevel: 4,
142
+ headingSize: "m",
143
+ id: "categories3",
144
+ name: "categories3",
145
+ items: [
146
+ {
147
+ text: "Alpha",
148
+ value: "alpha",
149
+ },
150
+ {
151
+ text: "Beta",
152
+ value: "beta",
153
+ checked: true,
154
+ },
155
+ {
156
+ text: "Gamma",
157
+ value: "gamma",
158
+ },
159
+ ],
160
+ classes: "tna-checkboxes--demo",
161
+ };
162
+
163
+ export const WithHint = Template.bind({});
164
+ WithHint.args = {
165
+ label: "Categories",
166
+ headingLevel: 4,
167
+ headingSize: "m",
168
+ id: "categories4",
169
+ name: "categories4",
170
+ hint: "Select all that apply.",
171
+ items: [
172
+ {
173
+ text: "Alpha",
174
+ value: "alpha",
175
+ },
176
+ {
177
+ text: "Beta",
178
+ value: "beta",
179
+ },
180
+ {
181
+ text: "Gamma",
182
+ value: "gamma",
183
+ },
184
+ ],
185
+ classes: "tna-checkboxes--demo",
186
+ };
187
+
188
+ export const Error = Template.bind({});
189
+ Error.args = {
190
+ label: "Categories",
191
+ headingLevel: 4,
192
+ headingSize: "m",
193
+ id: "categories5",
194
+ name: "categories5",
195
+ error: {
196
+ text: "You must select a category",
197
+ },
198
+ items: [
199
+ {
200
+ text: "Alpha",
201
+ value: "alpha",
202
+ },
203
+ {
204
+ text: "Beta",
205
+ value: "beta",
206
+ },
207
+ {
208
+ text: "Gamma",
209
+ value: "gamma",
210
+ },
211
+ ],
212
+ classes: "tna-checkboxes--demo",
213
+ };
214
+
215
+ export const Inline = Template.bind({});
216
+ Inline.args = {
217
+ label: "Categories",
218
+ headingLevel: 4,
219
+ headingSize: "xs",
220
+ id: "categories6",
221
+ name: "categories6",
222
+ items: [
223
+ {
224
+ text: "Alpha",
225
+ value: "alpha",
226
+ },
227
+ {
228
+ text: "Beta",
229
+ value: "beta",
230
+ },
231
+ {
232
+ text: "Gamma",
233
+ value: "gamma",
234
+ },
235
+ ],
236
+ inline: true,
237
+ classes: "tna-checkboxes--demo",
238
+ };
@@ -0,0 +1,4 @@
1
+ {
2
+ "component": "checkboxes",
3
+ "fixtures": []
4
+ }
@@ -0,0 +1,102 @@
1
+ [
2
+ {
3
+ "name": "label",
4
+ "type": "text",
5
+ "required": true,
6
+ "description": ""
7
+ },
8
+ {
9
+ "name": "headingLevel",
10
+ "type": "number",
11
+ "required": true,
12
+ "description": ""
13
+ },
14
+ {
15
+ "name": "headingSize",
16
+ "type": "text",
17
+ "required": false,
18
+ "description": ""
19
+ },
20
+ {
21
+ "name": "id",
22
+ "type": "text",
23
+ "required": true,
24
+ "description": ""
25
+ },
26
+ {
27
+ "name": "name",
28
+ "type": "text",
29
+ "required": true,
30
+ "description": ""
31
+ },
32
+ {
33
+ "name": "hint",
34
+ "type": "text",
35
+ "required": false,
36
+ "description": ""
37
+ },
38
+ {
39
+ "name": "error",
40
+ "type": "object",
41
+ "required": false,
42
+ "description": "",
43
+ "params": [
44
+ {
45
+ "name": "text",
46
+ "type": "text",
47
+ "required": true,
48
+ "description": ""
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "name": "items",
54
+ "type": "array",
55
+ "required": true,
56
+ "description": "",
57
+ "params": [
58
+ {
59
+ "name": "text",
60
+ "type": "text",
61
+ "required": true,
62
+ "description": ""
63
+ },
64
+ {
65
+ "name": "value",
66
+ "type": "text",
67
+ "required": true,
68
+ "description": ""
69
+ },
70
+ {
71
+ "name": "checked",
72
+ "type": "boolean",
73
+ "required": false,
74
+ "description": ""
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "name": "small",
80
+ "type": "boolean",
81
+ "required": false,
82
+ "description": ""
83
+ },
84
+ {
85
+ "name": "inline",
86
+ "type": "boolean",
87
+ "required": false,
88
+ "description": ""
89
+ },
90
+ {
91
+ "name": "classes",
92
+ "type": "string",
93
+ "required": false,
94
+ "description": "Classes to add to the checkboxes."
95
+ },
96
+ {
97
+ "name": "attributes",
98
+ "type": "object",
99
+ "required": false,
100
+ "description": "HTML attributes (for example data attributes) to add to the checkboxes."
101
+ }
102
+ ]
@@ -0,0 +1,3 @@
1
+ {% macro tnaCheckboxes(params) %}
2
+ {%- include "nationalarchives/components/checkboxes/template.njk" -%}
3
+ {% endmacro %}
@@ -0,0 +1,35 @@
1
+ {%- set containerClasses = [params.classes] if params.classes else [] -%}
2
+ {%- if params.inline -%}
3
+ {%- set containerClasses = containerClasses.concat('tna-form__group--inline') -%}
4
+ {%- endif -%}
5
+ <div class="tna-form__group{% if params.error %} tna-form__group--error{% endif %} {{ containerClasses | join(' ') }}"{% for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
6
+ <fieldset class="tna-form__fieldset"{%- if params.hint or params.error %} aria-describedby="{%- if params.hint -%}tna-form__{{ params.id }}-hint{%- endif %} {% if params.error -%}tna-form__{{ params.id }}-error{%- endif -%}"{%- endif %}>
7
+ <div class="tna-form__group-contents">
8
+ <legend class="tna-form__legend tna-form__group-contents">
9
+ <h{{ params.headingLevel }} class="tna-form__heading tna-form__heading--{{ params.headingSize or 'm' }}">
10
+ {{ params.label }}
11
+ </h{{ params.headingLevel }}>
12
+ </legend>
13
+ {%- if params.hint %}
14
+ <p id="tna-form__{{ params.id }}-hint" class="tna-form__hint">
15
+ {{ params.hint }}
16
+ </p>
17
+ {%- endif %}
18
+ {%- if params.error %}
19
+ <p id="tna-form__{{ params.id }}-error" class="tna-form__error-message">
20
+ <span class="tna-!--visually-hidden">Error:</span> {{ params.error.text }}
21
+ </p>
22
+ {%- endif %}
23
+ </div>
24
+ <div class="tna-checkboxes{% if params.small or params.inline %} tna-checkboxes--small{% endif %}{% if params.inline %} tna-checkboxes--inline{% endif %}">
25
+ {%- for item in params.items %}
26
+ <div class="tna-checkboxes__item">
27
+ <input type="checkbox" id="tna-form__{{ params.id }}-{{ item.value }}" value="{{ item.value }}" name="{{ params.name }}"{% if item.checked %} checked{% endif %}>
28
+ <label for="tna-form__{{ params.id }}-{{ item.value }}" class="tna-checkboxes__item-label">
29
+ {{ item.text }}
30
+ </label>
31
+ </div>
32
+ {%- endfor %}
33
+ </div>
34
+ </fieldset>
35
+ </div>