@developer-overheid-nl/don-register-components 1.3.1 → 1.6.1

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 (139) hide show
  1. package/CHANGELOG.md +170 -130
  2. package/LICENSE.md +291 -291
  3. package/README.md +20 -20
  4. package/package.json +10 -6
  5. package/src/Introduction.mdx +31 -0
  6. package/src/alert/Alert.stories.tsx +57 -0
  7. package/src/alert/Alert.tsx +19 -19
  8. package/src/alert/styles.module.css +3 -3
  9. package/src/alignBox/AlignBox.stories.tsx +84 -0
  10. package/src/alignBox/AlignBox.tsx +114 -114
  11. package/src/alignBox/styles.module.css +110 -110
  12. package/src/amountLabel/AmountLabel.stories.tsx +28 -0
  13. package/src/amountLabel/AmountLabel.tsx +21 -16
  14. package/src/amountLabel/styles.module.css +11 -11
  15. package/src/analytics/PiwikPro.tsx +94 -94
  16. package/src/analytics/index.ts +1 -1
  17. package/src/article/Article.stories.tsx +53 -0
  18. package/src/article/Article.tsx +10 -10
  19. package/src/badgeList/BadgeList.tsx +34 -34
  20. package/src/badgeList/styles.module.css +37 -37
  21. package/src/block/Block.stories.tsx +58 -0
  22. package/src/block/Block.tsx +35 -35
  23. package/src/block/styles.module.css +29 -29
  24. package/src/button/Button.stories.tsx +56 -0
  25. package/src/button/Button.tsx +3 -3
  26. package/src/button/ButtonAction.stories.tsx +62 -0
  27. package/src/button/ButtonAction.tsx +51 -0
  28. package/src/cardAsLink/CardAsLink.stories.tsx +81 -0
  29. package/src/cardAsLink/CardAsLink.tsx +21 -21
  30. package/src/cardAsLink/styles.module.css +23 -23
  31. package/src/cardsList/CardsList.tsx +56 -56
  32. package/src/cardsList/styles.module.css +18 -19
  33. package/src/client.ts +7 -7
  34. package/src/container/Container.stories.tsx +21 -0
  35. package/src/container/Container.tsx +10 -10
  36. package/src/container/styles.module.css +28 -28
  37. package/src/copyButton/CopyButton.stories.tsx +41 -0
  38. package/src/copyButton/CopyButton.tsx +45 -39
  39. package/src/copyButton/styles.module.css +13 -13
  40. package/src/dataBadgeLink/DataBadgeLink.stories.tsx +137 -0
  41. package/src/dataBadgeLink/DataBadgeLink.tsx +59 -53
  42. package/src/dataBadgeLink/styles.module.css +89 -89
  43. package/src/dataSummary/DataSummary.tsx +22 -22
  44. package/src/dataSummary/DataSummaryItem.tsx +21 -21
  45. package/src/dataSummary/styles.module.css +75 -75
  46. package/src/facetFilters/FacetFilters.stories.tsx +93 -0
  47. package/src/facetFilters/FacetFilters.tsx +424 -419
  48. package/src/facetFilters/styles.module.css +3 -3
  49. package/src/fieldset/FieldSet.stories.tsx +45 -0
  50. package/src/fieldset/FieldSet.tsx +3 -3
  51. package/src/filters/Filters.stories.tsx +45 -0
  52. package/src/filters/Filters.tsx +116 -116
  53. package/src/filters/styles.module.css +26 -26
  54. package/src/footer/Footer.stories.tsx +127 -0
  55. package/src/footer/Footer.tsx +81 -76
  56. package/src/footer/styles.module.css +103 -103
  57. package/src/formFieldCheckboxGroup/FormFieldCheckboxGroup.stories.tsx +48 -0
  58. package/src/formFieldCheckboxGroup/FormFieldCheckboxGroup.tsx +16 -16
  59. package/src/formFieldCheckboxGroup/styles.module.css +5 -5
  60. package/src/formFieldCheckboxOption/FormFieldCheckboxOption.stories.tsx +61 -0
  61. package/src/formFieldCheckboxOption/FormFieldCheckboxOption.tsx +26 -26
  62. package/src/formFieldCheckboxOption/styles.module.css +22 -22
  63. package/src/formFieldLabel/FormFieldLabel.stories.tsx +21 -0
  64. package/src/formFieldLabel/FormFieldLabel.tsx +23 -23
  65. package/src/formFieldRadioGroup/FormFieldRadioGroup.stories.tsx +57 -0
  66. package/src/formFieldRadioGroup/FormFieldRadioGroup.tsx +13 -13
  67. package/src/formFieldRadioGroup/styles.module.css +5 -5
  68. package/src/formFieldRadioOption/FormFieldRadioOption.stories.tsx +48 -0
  69. package/src/formFieldRadioOption/FormFieldRadioOption.tsx +75 -75
  70. package/src/formFieldRadioOption/styles.module.css +49 -49
  71. package/src/formFieldSwitch/FormFieldSwitch.stories.tsx +61 -0
  72. package/src/formFieldSwitch/FormFieldSwitch.tsx +82 -79
  73. package/src/formFieldSwitch/styles.module.css +32 -32
  74. package/src/formFieldTextInput/FormFieldTextInput.stories.tsx +45 -0
  75. package/src/formFieldTextInput/FormFieldTextInput.tsx +3 -3
  76. package/src/grid/Grid.stories.tsx +37 -0
  77. package/src/grid/Grid.tsx +48 -0
  78. package/src/grid/styles.module.css +24 -0
  79. package/src/header/Header.stories.tsx +54 -0
  80. package/src/header/Header.tsx +137 -137
  81. package/src/header/styles.module.css +71 -71
  82. package/src/heading/Heading.stories.tsx +60 -0
  83. package/src/heading/Heading.tsx +15 -15
  84. package/src/headingGroup/HeadingGroup.stories.tsx +57 -0
  85. package/src/headingGroup/HeadingGroup.tsx +48 -48
  86. package/src/headingGroup/styles.module.css +3 -3
  87. package/src/i18n.ts +24 -25
  88. package/src/iconBadge/IconBadge.stories.tsx +46 -0
  89. package/src/iconBadge/IconBadge.tsx +35 -35
  90. package/src/iconBadge/getAppearance.ts +53 -53
  91. package/src/iconBadge/styles.module.css +19 -19
  92. package/src/iconsSprite/Icon.stories.tsx +73 -0
  93. package/src/iconsSprite/Icon.tsx +17 -17
  94. package/src/iconsSprite/IconsSprite.tsx +5 -5
  95. package/src/index.ts +117 -107
  96. package/src/infoButton/InfoButton.stories.tsx +52 -0
  97. package/src/infoButton/InfoButton.tsx +45 -45
  98. package/src/infoButton/styles.module.css +43 -43
  99. package/src/link/Link.stories.tsx +49 -0
  100. package/src/link/Link.tsx +10 -10
  101. package/src/markdown/Markdown.stories.tsx +48 -0
  102. package/src/markdown/Markdown.tsx +42 -42
  103. package/src/overlay/Overlay.stories.tsx +38 -0
  104. package/src/overlay/Overlay.tsx +18 -18
  105. package/src/overlay/styles.module.css +15 -15
  106. package/src/pagination/Pagination.stories.tsx +91 -0
  107. package/src/pagination/Pagination.tsx +267 -267
  108. package/src/pagination/styles.module.css +28 -28
  109. package/src/paragraph/Paragraph.stories.tsx +45 -0
  110. package/src/paragraph/Paragraph.tsx +24 -24
  111. package/src/paragraph/styles.module.css +6 -6
  112. package/src/pillBadge/PillBadge.examples.tsx +107 -107
  113. package/src/pillBadge/PillBadge.stories.tsx +257 -0
  114. package/src/pillBadge/PillBadge.tsx +60 -51
  115. package/src/pillBadge/styles.module.css +214 -214
  116. package/src/readOnlyTextInput/ReadOnlyTextInput.stories.tsx +49 -0
  117. package/src/readOnlyTextInput/ReadOnlyTextInput.tsx +24 -24
  118. package/src/readOnlyTextInput/styles.module.css +19 -19
  119. package/src/scoreBadge/ScoreBadge.stories.tsx +45 -0
  120. package/src/scoreBadge/ScoreBadge.tsx +135 -133
  121. package/src/search/Search.stories.tsx +65 -0
  122. package/src/search/Search.tsx +82 -82
  123. package/src/search/styles.module.css +40 -39
  124. package/src/siteLogo/ExampleLogo.stories.tsx +40 -0
  125. package/src/siteLogo/SiteLogo.stories.tsx +28 -0
  126. package/src/siteLogo/SiteLogo.tsx +24 -24
  127. package/src/sortForm/SortForm.stories.tsx +111 -0
  128. package/src/sortForm/SortForm.tsx +121 -0
  129. package/src/sortForm/styles.module.css +40 -0
  130. package/src/switch/Switch.stories.tsx +68 -0
  131. package/src/switch/Switch.tsx +152 -86
  132. package/src/switch/styles.module.css +54 -7
  133. package/src/toolTip/ToolTip.stories.tsx +131 -0
  134. package/src/toolTip/ToolTip.tsx +55 -55
  135. package/src/toolTip/styles.module.css +49 -49
  136. package/src/topNavigation/TopNavigation.stories.tsx +71 -0
  137. package/src/topNavigation/TopNavigation.tsx +67 -67
  138. package/src/topNavigation/styles.module.css +54 -54
  139. package/tsconfig.json +122 -121
@@ -1,267 +1,267 @@
1
- import clsx from "clsx";
2
- import type { ElementType, HTMLAttributes, PropsWithChildren } from "react";
3
- import { I18nextProvider, useTranslation } from "react-i18next";
4
- import i18n from "../i18n";
5
- import styles from "./styles.module.css";
6
-
7
- /** @deprecated use only boolean */
8
- type currentNumber = number;
9
- interface PageLinkProps
10
- extends Omit<
11
- HTMLAttributes<HTMLAnchorElement> & HTMLAttributes<HTMLSpanElement>,
12
- "onAbort"
13
- > {
14
- href: string;
15
- label: number | string;
16
- range?: [number, number];
17
- index: number;
18
- current: boolean | currentNumber;
19
- }
20
-
21
- interface RelativeLinkProps extends HTMLAttributes<HTMLAnchorElement> {
22
- href: string;
23
- label?: string | number;
24
- position: "prev" | "next";
25
- }
26
-
27
- interface AbsoluteLinkProps extends HTMLAttributes<HTMLAnchorElement> {
28
- href: string;
29
- label?: string | number;
30
- position: "first" | "last";
31
- }
32
-
33
- export interface PaginationProps extends HTMLAttributes<HTMLElement> {
34
- links: Array<{
35
- href: PageLinkProps["href"];
36
- label: PageLinkProps["label"];
37
- current: PageLinkProps["current"];
38
- /** Range of shown items on this page; [begin, end] */
39
- range?: PageLinkProps["range"];
40
- }>;
41
- first?:
42
- | {
43
- href: AbsoluteLinkProps["href"];
44
- label: AbsoluteLinkProps["label"];
45
- }
46
- | false;
47
- prev?:
48
- | {
49
- href: RelativeLinkProps["href"];
50
- label?: RelativeLinkProps["label"];
51
- }
52
- | false;
53
- ellipsisBefore?: boolean;
54
- current?: PageLinkProps["current"];
55
- ellipsisAfter?: boolean;
56
- next?:
57
- | {
58
- href: RelativeLinkProps["href"];
59
- label?: RelativeLinkProps["label"];
60
- }
61
- | false;
62
- last?:
63
- | {
64
- href: AbsoluteLinkProps["href"];
65
- label: AbsoluteLinkProps["label"];
66
- }
67
- | false;
68
- className?: string;
69
- }
70
-
71
- const PageLink = (props: PageLinkProps) => {
72
- const { t } = useTranslation();
73
- const { href, label, range, index, current, ...restProps } = props;
74
- const isCurrent = typeof current === "boolean" ? current : index === current;
75
- const element = !isCurrent ? "a" : "span";
76
- const hrefAttr = !isCurrent && { href };
77
- const count =
78
- (range && (range[0] === range[1] ? 1 : range[1] - range[0])) || 0;
79
-
80
- const Element = element as ElementType<
81
- HTMLAttributes<HTMLAnchorElement | HTMLSpanElement>
82
- >;
83
-
84
- return (
85
- <Element
86
- className={clsx(
87
- "utrecht-pagination__page-link",
88
- isCurrent && "utrecht-pagination__page-link--current",
89
- )}
90
- {...hrefAttr}
91
- aria-current={isCurrent}
92
- aria-label={
93
- range && t(`components.page-and-results-range`, { label, range, count })
94
- }
95
- title={range && t(`components.results-range`, { range, count })}
96
- {...restProps}
97
- >
98
- {label}
99
- </Element>
100
- );
101
- };
102
-
103
- const RelativeLink = (props: RelativeLinkProps) => {
104
- const { t } = useTranslation();
105
- const { href, label, position } = props;
106
-
107
- return (
108
- <a
109
- href={href}
110
- className={clsx(
111
- "utrecht-pagination__relative-link",
112
- `utrecht-pagination__relative-link--${position}`,
113
- )}
114
- rel={position}
115
- aria-label={t(`components.position-page`, {
116
- position,
117
- label,
118
- context: label ? "with-label" : undefined,
119
- })}
120
- title={t(`components.position-page`, {
121
- position,
122
- label,
123
- context: label ? "with-label" : undefined,
124
- })}
125
- >
126
- {t(`components.${position}`)}
127
- </a>
128
- );
129
- };
130
-
131
- const AbsoluteLink = (props: AbsoluteLinkProps) => {
132
- const { t } = useTranslation();
133
- const { href, label, position } = props;
134
-
135
- const cssPositions = {
136
- first: "prev",
137
- last: "next",
138
- };
139
-
140
- return (
141
- <a
142
- href={href}
143
- className={clsx(
144
- "utrecht-pagination__page-link",
145
- `utrecht-pagination__relative-link--${cssPositions[position]}`,
146
- )}
147
- rel={position}
148
- aria-label={t(`components.position-page`, {
149
- position,
150
- label,
151
- context: label ? "with-label" : undefined,
152
- })}
153
- title={t(`components.position-page`, { position })}
154
- >
155
- {label}
156
- </a>
157
- );
158
- };
159
-
160
- const Ellipsis = ({ position }: { position: "prev" | "next" }) => {
161
- return (
162
- <span
163
- className={clsx(
164
- styles.pagination__ellipsis,
165
- `utrecht-pagination__relative-link--${position}`,
166
- )}
167
- aria-hidden="true"
168
- >
169
- &hellip;
170
- </span>
171
- );
172
- };
173
-
174
- const Pagination = (props: PropsWithChildren<PaginationProps>) => {
175
- const { t } = useTranslation();
176
- const {
177
- links,
178
- first,
179
- prev,
180
- ellipsisBefore,
181
- ellipsisAfter,
182
- next,
183
- last,
184
- className,
185
- } = props;
186
-
187
- return (
188
- <nav
189
- className={clsx(
190
- "utrecht-pagination",
191
- "utrecht-pagination--distanced",
192
- styles.pagination,
193
- className,
194
- )}
195
- aria-label={t("components.pagination-landmark")}
196
- >
197
- {prev && (
198
- <span className="utrecht-pagination__before">
199
- <RelativeLink
200
- href={String(prev.href)}
201
- label={prev.label}
202
- position="prev"
203
- />
204
- </span>
205
- )}
206
- {first && (
207
- <span className="utrecht-pagination__before">
208
- <AbsoluteLink
209
- href={String(first.href)}
210
- label={first.label}
211
- position="first"
212
- />
213
- {ellipsisBefore && <Ellipsis position="prev" />}
214
- </span>
215
- )}
216
- {/* biome-ignore-start lint/a11y/useSemanticElements: taken from NLDS example */}
217
- <span
218
- role="group"
219
- aria-label={t("components.pages")}
220
- className="utrecht-pagination__pages"
221
- >
222
- {/* biome-ignore-end lint/a11y/useSemanticElements: taken from NLDS example */}
223
- {links &&
224
- links.length > 0 &&
225
- links.map(({ href, label, range, current }, index) => (
226
- <PageLink
227
- href={href}
228
- label={label}
229
- range={range}
230
- index={index}
231
- current={current}
232
- key={label}
233
- />
234
- ))}
235
- </span>
236
- {last && (
237
- <span className="utrecht-pagination__after">
238
- {ellipsisAfter && <Ellipsis position="next" />}
239
- <AbsoluteLink
240
- href={String(last.href)}
241
- label={last.label}
242
- position="last"
243
- />
244
- </span>
245
- )}
246
- {next && (
247
- <span className="utrecht-pagination__after">
248
- <RelativeLink
249
- href={String(next.href)}
250
- label={next.label}
251
- position="next"
252
- />
253
- </span>
254
- )}
255
- </nav>
256
- );
257
- };
258
-
259
- const TranslatedPagination = (props: PaginationProps) => {
260
- return (
261
- <I18nextProvider i18n={i18n}>
262
- <Pagination {...props} />
263
- </I18nextProvider>
264
- );
265
- };
266
-
267
- export default TranslatedPagination;
1
+ import clsx from "clsx";
2
+ import type { ElementType, HTMLAttributes, PropsWithChildren } from "react";
3
+ import { I18nextProvider, useTranslation } from "react-i18next";
4
+ import i18n from "../i18n";
5
+ import styles from "./styles.module.css";
6
+
7
+ /** @deprecated use only boolean */
8
+ type currentNumber = number;
9
+ interface PageLinkProps
10
+ extends Omit<
11
+ HTMLAttributes<HTMLAnchorElement> & HTMLAttributes<HTMLSpanElement>,
12
+ "onAbort"
13
+ > {
14
+ href: string;
15
+ label: number | string;
16
+ range?: [number, number];
17
+ index: number;
18
+ current: boolean | currentNumber;
19
+ }
20
+
21
+ interface RelativeLinkProps extends HTMLAttributes<HTMLAnchorElement> {
22
+ href: string;
23
+ label?: string | number;
24
+ position: "prev" | "next";
25
+ }
26
+
27
+ interface AbsoluteLinkProps extends HTMLAttributes<HTMLAnchorElement> {
28
+ href: string;
29
+ label?: string | number;
30
+ position: "first" | "last";
31
+ }
32
+
33
+ export interface PaginationProps extends HTMLAttributes<HTMLElement> {
34
+ links: Array<{
35
+ href: PageLinkProps["href"];
36
+ label: PageLinkProps["label"];
37
+ current: PageLinkProps["current"];
38
+ /** Range of shown items on this page; [begin, end] */
39
+ range?: PageLinkProps["range"];
40
+ }>;
41
+ first?:
42
+ | {
43
+ href: AbsoluteLinkProps["href"];
44
+ label: AbsoluteLinkProps["label"];
45
+ }
46
+ | false;
47
+ prev?:
48
+ | {
49
+ href: RelativeLinkProps["href"];
50
+ label?: RelativeLinkProps["label"];
51
+ }
52
+ | false;
53
+ ellipsisBefore?: boolean;
54
+ current?: PageLinkProps["current"];
55
+ ellipsisAfter?: boolean;
56
+ next?:
57
+ | {
58
+ href: RelativeLinkProps["href"];
59
+ label?: RelativeLinkProps["label"];
60
+ }
61
+ | false;
62
+ last?:
63
+ | {
64
+ href: AbsoluteLinkProps["href"];
65
+ label: AbsoluteLinkProps["label"];
66
+ }
67
+ | false;
68
+ className?: string;
69
+ }
70
+
71
+ const PageLink = (props: PageLinkProps) => {
72
+ const { t } = useTranslation();
73
+ const { href, label, range, index, current, ...restProps } = props;
74
+ const isCurrent = typeof current === "boolean" ? current : index === current;
75
+ const element = !isCurrent ? "a" : "span";
76
+ const hrefAttr = !isCurrent && { href };
77
+ const count =
78
+ (range && (range[0] === range[1] ? 1 : range[1] - range[0])) || 0;
79
+
80
+ const Element = element as ElementType<
81
+ HTMLAttributes<HTMLAnchorElement | HTMLSpanElement>
82
+ >;
83
+
84
+ return (
85
+ <Element
86
+ className={clsx(
87
+ "utrecht-pagination__page-link",
88
+ isCurrent && "utrecht-pagination__page-link--current",
89
+ )}
90
+ {...hrefAttr}
91
+ aria-current={isCurrent}
92
+ aria-label={
93
+ range && t(`components.page-and-results-range`, { label, range, count })
94
+ }
95
+ title={range && t(`components.results-range`, { range, count })}
96
+ {...restProps}
97
+ >
98
+ {label}
99
+ </Element>
100
+ );
101
+ };
102
+
103
+ const RelativeLink = (props: RelativeLinkProps) => {
104
+ const { t } = useTranslation();
105
+ const { href, label, position } = props;
106
+
107
+ return (
108
+ <a
109
+ href={href}
110
+ className={clsx(
111
+ "utrecht-pagination__relative-link",
112
+ `utrecht-pagination__relative-link--${position}`,
113
+ )}
114
+ rel={position}
115
+ aria-label={t(`components.position-page`, {
116
+ position,
117
+ label,
118
+ context: label ? "with-label" : undefined,
119
+ })}
120
+ title={t(`components.position-page`, {
121
+ position,
122
+ label,
123
+ context: label ? "with-label" : undefined,
124
+ })}
125
+ >
126
+ {t(`components.${position}`)}
127
+ </a>
128
+ );
129
+ };
130
+
131
+ const AbsoluteLink = (props: AbsoluteLinkProps) => {
132
+ const { t } = useTranslation();
133
+ const { href, label, position } = props;
134
+
135
+ const cssPositions = {
136
+ first: "prev",
137
+ last: "next",
138
+ };
139
+
140
+ return (
141
+ <a
142
+ href={href}
143
+ className={clsx(
144
+ "utrecht-pagination__page-link",
145
+ `utrecht-pagination__relative-link--${cssPositions[position]}`,
146
+ )}
147
+ rel={position}
148
+ aria-label={t(`components.position-page`, {
149
+ position,
150
+ label,
151
+ context: label ? "with-label" : undefined,
152
+ })}
153
+ title={t(`components.position-page`, { position })}
154
+ >
155
+ {label}
156
+ </a>
157
+ );
158
+ };
159
+
160
+ const Ellipsis = ({ position }: { position: "prev" | "next" }) => {
161
+ return (
162
+ <span
163
+ className={clsx(
164
+ styles.pagination__ellipsis,
165
+ `utrecht-pagination__relative-link--${position}`,
166
+ )}
167
+ aria-hidden="true"
168
+ >
169
+ &hellip;
170
+ </span>
171
+ );
172
+ };
173
+
174
+ const Pagination = (props: PropsWithChildren<PaginationProps>) => {
175
+ const { t } = useTranslation();
176
+ const {
177
+ links,
178
+ first,
179
+ prev,
180
+ ellipsisBefore,
181
+ ellipsisAfter,
182
+ next,
183
+ last,
184
+ className,
185
+ } = props;
186
+
187
+ return (
188
+ <nav
189
+ className={clsx(
190
+ "utrecht-pagination",
191
+ "utrecht-pagination--distanced",
192
+ styles.pagination,
193
+ className,
194
+ )}
195
+ aria-label={t("components.pagination-landmark")}
196
+ >
197
+ {prev && (
198
+ <span className="utrecht-pagination__before">
199
+ <RelativeLink
200
+ href={String(prev.href)}
201
+ label={prev.label}
202
+ position="prev"
203
+ />
204
+ </span>
205
+ )}
206
+ {first && (
207
+ <span className="utrecht-pagination__before">
208
+ <AbsoluteLink
209
+ href={String(first.href)}
210
+ label={first.label}
211
+ position="first"
212
+ />
213
+ {ellipsisBefore && <Ellipsis position="prev" />}
214
+ </span>
215
+ )}
216
+ {/* biome-ignore-start lint/a11y/useSemanticElements: taken from NLDS example */}
217
+ <span
218
+ role="group"
219
+ aria-label={t("components.pages")}
220
+ className="utrecht-pagination__pages"
221
+ >
222
+ {/* biome-ignore-end lint/a11y/useSemanticElements: taken from NLDS example */}
223
+ {links &&
224
+ links.length > 0 &&
225
+ links.map(({ href, label, range, current }, index) => (
226
+ <PageLink
227
+ href={href}
228
+ label={label}
229
+ range={range}
230
+ index={index}
231
+ current={current}
232
+ key={label}
233
+ />
234
+ ))}
235
+ </span>
236
+ {last && (
237
+ <span className="utrecht-pagination__after">
238
+ {ellipsisAfter && <Ellipsis position="next" />}
239
+ <AbsoluteLink
240
+ href={String(last.href)}
241
+ label={last.label}
242
+ position="last"
243
+ />
244
+ </span>
245
+ )}
246
+ {next && (
247
+ <span className="utrecht-pagination__after">
248
+ <RelativeLink
249
+ href={String(next.href)}
250
+ label={next.label}
251
+ position="next"
252
+ />
253
+ </span>
254
+ )}
255
+ </nav>
256
+ );
257
+ };
258
+
259
+ const TranslatedPagination = (props: PaginationProps) => {
260
+ return (
261
+ <I18nextProvider i18n={i18n}>
262
+ <Pagination {...props} />
263
+ </I18nextProvider>
264
+ );
265
+ };
266
+
267
+ export default TranslatedPagination;
@@ -1,28 +1,28 @@
1
- .pagination {
2
- text-align: center;
3
- }
4
-
5
- .pagination__ellipsis {
6
- display: inline-block;
7
- padding-block-start: var(
8
- --utrecht-pagination-relative-link-padding-block-start
9
- );
10
- padding-block-end: var(--utrecht-pagination-relative-link-padding-block-end);
11
- padding-inline-start: var(
12
- --utrecht-pagination-relative-link-padding-inline-start
13
- );
14
- padding-inline-end: var(
15
- --utrecht-pagination-relative-link-padding-inline-end
16
- );
17
- color: var(--utrecht-pagination-relative-link-color);
18
- }
19
-
20
- :global(
21
- .utrecht-pagination__page-link.utrecht-pagination__page-link--current:hover
22
- ) {
23
- color: var(--utrecht-pagination-page-link-current-color);
24
- background-color: var(
25
- --utrecht-pagination-page-link-current-background-color
26
- );
27
- border-color: var(--utrecht-pagination-page-link-current-border-color);
28
- }
1
+ .pagination {
2
+ text-align: center;
3
+ }
4
+
5
+ .pagination__ellipsis {
6
+ display: inline-block;
7
+ padding-block-start: var(
8
+ --utrecht-pagination-relative-link-padding-block-start
9
+ );
10
+ padding-block-end: var(--utrecht-pagination-relative-link-padding-block-end);
11
+ padding-inline-start: var(
12
+ --utrecht-pagination-relative-link-padding-inline-start
13
+ );
14
+ padding-inline-end: var(
15
+ --utrecht-pagination-relative-link-padding-inline-end
16
+ );
17
+ color: var(--utrecht-pagination-relative-link-color);
18
+ }
19
+
20
+ :global(
21
+ .utrecht-pagination__page-link.utrecht-pagination__page-link--current:hover
22
+ ) {
23
+ color: var(--utrecht-pagination-page-link-current-color);
24
+ background-color: var(
25
+ --utrecht-pagination-page-link-current-background-color
26
+ );
27
+ border-color: var(--utrecht-pagination-page-link-current-border-color);
28
+ }
@@ -0,0 +1,45 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import Paragraph from "./Paragraph";
3
+
4
+ /**
5
+ * Paragraph toont een alinea tekst.
6
+ *
7
+ * ## Wijzigingen tov RHC:
8
+ * - `purpose` is beperkt tot `lead` en `short`.
9
+ * - `short` heeft een eigen stijl (kleiner lettertype, linker rand),
10
+ * bijvoorbeeld voor een korte filterbeschrijving.
11
+ */
12
+ const meta = {
13
+ title: "Components/Paragraph",
14
+ component: Paragraph,
15
+ tags: ["autodocs", "remixed"],
16
+ argTypes: {
17
+ purpose: {
18
+ control: "select",
19
+ options: [undefined, "lead", "short"],
20
+ },
21
+ },
22
+ args: {
23
+ children:
24
+ "API voor het zoeken en raadplegen van adressen, panden, verblijfsobjecten en gerelateerde gegevens uit de BAG.",
25
+ },
26
+ } satisfies Meta<typeof Paragraph>;
27
+
28
+ export default meta;
29
+ type Story = StoryObj<typeof meta>;
30
+
31
+ export const Default: Story = {};
32
+
33
+ export const Lead: Story = {
34
+ args: {
35
+ purpose: "lead",
36
+ },
37
+ };
38
+
39
+ export const Short: Story = {
40
+ name: "Short (bijv. filterbeschrijving)",
41
+ args: {
42
+ purpose: "short",
43
+ children: "Filter op eigenaar of beheerder van de registratie.",
44
+ },
45
+ };
@@ -1,24 +1,24 @@
1
- import {
2
- Paragraph as RHCParagraph,
3
- type ParagraphProps as RHCParagraphProps,
4
- } from "@rijkshuisstijl-community/components-react";
5
- import clsx from "clsx";
6
- import styles from "./styles.module.css";
7
-
8
- interface ParagraphProps extends RHCParagraphProps {
9
- purpose?: "lead" | "short";
10
- }
11
-
12
- const Paragraph = (props: ParagraphProps) => {
13
- const { className, purpose } = props;
14
-
15
- return (
16
- <RHCParagraph
17
- className={clsx(className, purpose === "short" && styles.short)}
18
- purpose={purpose}
19
- {...props}
20
- />
21
- );
22
- };
23
-
24
- export default Paragraph;
1
+ import {
2
+ Paragraph as RHCParagraph,
3
+ type ParagraphProps as RHCParagraphProps,
4
+ } from "@rijkshuisstijl-community/components-react";
5
+ import clsx from "clsx";
6
+ import styles from "./styles.module.css";
7
+
8
+ export interface ParagraphProps extends RHCParagraphProps {
9
+ purpose?: "lead" | "short";
10
+ }
11
+
12
+ const Paragraph = (props: ParagraphProps) => {
13
+ const { className, purpose } = props;
14
+
15
+ return (
16
+ <RHCParagraph
17
+ className={clsx(className, purpose === "short" && styles.short)}
18
+ purpose={purpose}
19
+ {...props}
20
+ />
21
+ );
22
+ };
23
+
24
+ export default Paragraph;