@dsn-starter-kit/components-react 1.0.1 → 2.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.
- package/README.md +1 -1
- package/dist/ActionGroup/ActionGroup.css +62 -22
- package/dist/ActionGroup/ActionGroup.d.ts +10 -2
- package/dist/ActionGroup/ActionGroup.d.ts.map +1 -1
- package/dist/ActionGroup/ActionGroup.js +20 -2
- package/dist/ActionGroup/ActionGroup.js.map +1 -1
- package/dist/Alert/Alert.css +25 -11
- package/dist/Alert/Alert.d.ts +14 -0
- package/dist/Alert/Alert.d.ts.map +1 -1
- package/dist/Alert/Alert.js +14 -2
- package/dist/Alert/Alert.js.map +1 -1
- package/dist/BreakoutSection/BreakoutSection.css +4 -0
- package/dist/Details/Details.css +14 -0
- package/dist/DotBadge/DotBadge.css +13 -0
- package/dist/File/File.css +16 -0
- package/dist/Grid/Grid.css +2 -2
- package/dist/HeadingGroup/HeadingGroup.css +5 -0
- package/dist/HeadingGroup/HeadingGroup.d.ts +23 -0
- package/dist/HeadingGroup/HeadingGroup.d.ts.map +1 -0
- package/dist/HeadingGroup/HeadingGroup.js +12 -0
- package/dist/HeadingGroup/HeadingGroup.js.map +1 -0
- package/dist/HeadingGroup/index.d.ts +3 -0
- package/dist/HeadingGroup/index.d.ts.map +1 -0
- package/dist/HeadingGroup/index.js +2 -0
- package/dist/HeadingGroup/index.js.map +1 -0
- package/dist/Hero/Hero.css +642 -0
- package/dist/Note/Note.css +22 -14
- package/dist/Note/Note.d.ts +18 -3
- package/dist/Note/Note.d.ts.map +1 -1
- package/dist/Note/Note.js +18 -5
- package/dist/Note/Note.js.map +1 -1
- package/dist/PageBody/PageBody.css +30 -0
- package/dist/PageFooter/PageFooter.css +0 -1
- package/dist/PageHeader/PageHeader.css +13 -0
- package/dist/PreHeading/PreHeading.css +10 -0
- package/dist/PreHeading/PreHeading.d.ts +8 -0
- package/dist/PreHeading/PreHeading.d.ts.map +1 -0
- package/dist/PreHeading/PreHeading.js +9 -0
- package/dist/PreHeading/PreHeading.js.map +1 -0
- package/dist/PreHeading/index.d.ts +3 -0
- package/dist/PreHeading/index.d.ts.map +1 -0
- package/dist/PreHeading/index.js +2 -0
- package/dist/PreHeading/index.js.map +1 -0
- package/dist/ProgressBar/ProgressBar.css +14 -0
- package/dist/ProgressBar/ProgressBar.d.ts +7 -2
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +2 -2
- package/dist/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/Radio/Radio.css +36 -0
- package/dist/SearchInput/SearchInput.css +8 -0
- package/dist/Select/Select.css +8 -0
- package/dist/SkipLink/SkipLink.d.ts +1 -1
- package/dist/SkipLink/SkipLink.js +1 -1
- package/dist/Spinner/Spinner.css +17 -0
- package/dist/TableOfContents/TableOfContents.css +75 -0
- package/dist/TableOfContents/TableOfContents.d.ts +61 -0
- package/dist/TableOfContents/TableOfContents.d.ts.map +1 -0
- package/dist/TableOfContents/TableOfContents.js +32 -0
- package/dist/TableOfContents/TableOfContents.js.map +1 -0
- package/dist/TableOfContents/index.d.ts +3 -0
- package/dist/TableOfContents/index.d.ts.map +1 -0
- package/dist/TableOfContents/index.js +2 -0
- package/dist/TableOfContents/index.js.map +1 -0
- package/dist/index.css +1019 -50
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/Note/Note.css
CHANGED
|
@@ -8,34 +8,42 @@
|
|
|
8
8
|
* Visually highlighted message for supplementary or important information.
|
|
9
9
|
* Passive counterpart to Alert — no live region, read on navigation only.
|
|
10
10
|
*
|
|
11
|
+
* The icon is decorative (aria-hidden); the non-neutral variants (info,
|
|
12
|
+
* positive, negative, warning) carry a visually hidden variant label that
|
|
13
|
+
* announces the variant to screen reader users: "Informatie: " / "Succes: " /
|
|
14
|
+
* "Foutmelding: " / "Let op: ". With a heading the label is the first child of
|
|
15
|
+
* the heading; without a heading it is a standalone span before the content.
|
|
16
|
+
* Neutral has no label: that variant deliberately carries no semantic signal.
|
|
17
|
+
*
|
|
11
18
|
* Usage:
|
|
12
|
-
* <!-- Neutral (default), with icon and heading -->
|
|
19
|
+
* <!-- Neutral (default), with icon and heading — no variant label -->
|
|
13
20
|
* <div class="dsn-note">
|
|
14
21
|
* <span class="dsn-note__icon" aria-hidden="true">
|
|
15
|
-
* <svg class="dsn-icon" aria-hidden="true"><!-- info-circle --></svg>
|
|
22
|
+
* <svg class="dsn-icon dsn-icon--xl" aria-hidden="true"><!-- info-circle --></svg>
|
|
16
23
|
* </span>
|
|
17
|
-
* <
|
|
24
|
+
* <h3 class="dsn-heading dsn-heading--heading-3 dsn-note__heading">Let op</h3>
|
|
18
25
|
* <div class="dsn-note__content">
|
|
19
26
|
* <p>Aanvullende informatie over dit onderwerp.</p>
|
|
20
27
|
* </div>
|
|
21
28
|
* </div>
|
|
22
29
|
*
|
|
23
|
-
* <!-- Info variant -->
|
|
30
|
+
* <!-- Info variant, with visually hidden variant label -->
|
|
24
31
|
* <div class="dsn-note dsn-note--info">
|
|
25
32
|
* <span class="dsn-note__icon" aria-hidden="true">
|
|
26
|
-
* <svg class="dsn-icon" aria-hidden="true"><!-- info-circle --></svg>
|
|
33
|
+
* <svg class="dsn-icon dsn-icon--xl" aria-hidden="true"><!-- info-circle --></svg>
|
|
27
34
|
* </span>
|
|
28
|
-
* <
|
|
35
|
+
* <h3 class="dsn-heading dsn-heading--heading-3 dsn-note__heading"><span class="dsn-visually-hidden">Informatie: </span>Heading</h3>
|
|
29
36
|
* <div class="dsn-note__content">
|
|
30
37
|
* <p>Body content.</p>
|
|
31
38
|
* </div>
|
|
32
39
|
* </div>
|
|
33
40
|
*
|
|
34
|
-
* <!-- Without heading — icon spans both rows -->
|
|
35
|
-
* <div class="dsn-note dsn-note--no-heading">
|
|
41
|
+
* <!-- Without heading — icon spans both rows, variant label as standalone span -->
|
|
42
|
+
* <div class="dsn-note dsn-note--warning dsn-note--no-heading">
|
|
36
43
|
* <span class="dsn-note__icon" aria-hidden="true">
|
|
37
|
-
* <svg class="dsn-icon" aria-hidden="true"><!--
|
|
44
|
+
* <svg class="dsn-icon dsn-icon--xl" aria-hidden="true"><!-- alert-triangle --></svg>
|
|
38
45
|
* </span>
|
|
46
|
+
* <span class="dsn-visually-hidden">Let op: </span>
|
|
39
47
|
* <div class="dsn-note__content">
|
|
40
48
|
* <p>Aanvullende informatie.</p>
|
|
41
49
|
* </div>
|
|
@@ -46,15 +54,15 @@
|
|
|
46
54
|
* ...
|
|
47
55
|
* </aside>
|
|
48
56
|
*
|
|
49
|
-
* <!-- as="nav" — table of contents -->
|
|
57
|
+
* <!-- as="nav" — standalone navigation section (not a page table of contents: use TableOfContents) -->
|
|
50
58
|
* <nav class="dsn-note" aria-labelledby="note-heading-id">
|
|
51
59
|
* <span class="dsn-note__icon" aria-hidden="true">
|
|
52
|
-
* <svg class="dsn-icon" aria-hidden="true"><!-- info-circle --></svg>
|
|
60
|
+
* <svg class="dsn-icon dsn-icon--xl" aria-hidden="true"><!-- info-circle --></svg>
|
|
53
61
|
* </span>
|
|
54
|
-
* <
|
|
55
|
-
* <
|
|
62
|
+
* <h3 class="dsn-heading dsn-heading--heading-3 dsn-note__heading" id="note-heading-id">Related pages</h3>
|
|
63
|
+
* <div class="dsn-note__content">
|
|
56
64
|
* <ul>...</ul>
|
|
57
|
-
* </
|
|
65
|
+
* </div>
|
|
58
66
|
* </nav>
|
|
59
67
|
*/
|
|
60
68
|
|
package/dist/Note/Note.d.ts
CHANGED
|
@@ -29,6 +29,16 @@ export interface NoteProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
29
29
|
* - `ReactNode` — aangepast icoon
|
|
30
30
|
*/
|
|
31
31
|
iconStart?: React.ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Visueel verborgen tekst die de variant benoemt voor screenreadergebruikers
|
|
34
|
+
* (inclusief scheidingsteken en spatie). Komt vóór de heading, of vóór de
|
|
35
|
+
* content als er geen heading is.
|
|
36
|
+
* - `undefined` (default) — standaardtekst per variant:
|
|
37
|
+
* `''` (neutral) / `'Informatie: '` / `'Succes: '` / `'Foutmelding: '` / `'Let op: '`
|
|
38
|
+
* - `''` — geen variant-label (bijv. als de heading de variant al benoemt)
|
|
39
|
+
* - `string` — eigen tekst, bijv. voor een andere taal
|
|
40
|
+
*/
|
|
41
|
+
variantLabel?: string;
|
|
32
42
|
/**
|
|
33
43
|
* Body-content: tekst, lijst, links, etc.
|
|
34
44
|
*/
|
|
@@ -61,10 +71,10 @@ export interface NoteProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
61
71
|
* <Paragraph>Meer context.</Paragraph>
|
|
62
72
|
* </Note>
|
|
63
73
|
*
|
|
64
|
-
* // as="nav" — inhoudsopgave
|
|
65
|
-
* <Note as="nav" variant="neutral" heading="
|
|
74
|
+
* // as="nav" — eigenstandige navigatiesectie (niet voor een pagina-inhoudsopgave: gebruik TableOfContents)
|
|
75
|
+
* <Note as="nav" variant="neutral" heading="Gerelateerde pagina's" headingLevel={2}>
|
|
66
76
|
* <UnorderedList>
|
|
67
|
-
* <li><Link href="
|
|
77
|
+
* <li><Link href="/gerelateerd-1">Gerelateerde pagina 1</Link></li>
|
|
68
78
|
* </UnorderedList>
|
|
69
79
|
* </Note>
|
|
70
80
|
*
|
|
@@ -72,6 +82,11 @@ export interface NoteProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
72
82
|
* <Note variant="info" heading="Opmerking" iconStart={null}>
|
|
73
83
|
* <Paragraph>Zonder icoon.</Paragraph>
|
|
74
84
|
* </Note>
|
|
85
|
+
*
|
|
86
|
+
* // Variant-label onderdrukken (heading benoemt de variant al)
|
|
87
|
+
* <Note variant="warning" heading="Waarschuwing" variantLabel="">
|
|
88
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
89
|
+
* </Note>
|
|
75
90
|
* ```
|
|
76
91
|
*/
|
|
77
92
|
export declare const Note: React.ForwardRefExoticComponent<NoteProps & React.RefAttributes<HTMLElement>>;
|
package/dist/Note/Note.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../src/Note/Note.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAIrC,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AACd,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../src/Note/Note.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAIrC,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AACd,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAkBzD,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IAClE;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAErC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE5B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,IAAI,+EA+EhB,CAAC"}
|
package/dist/Note/Note.js
CHANGED
|
@@ -11,6 +11,13 @@ const PREFERRED_ICONS = {
|
|
|
11
11
|
negative: 'exclamation-circle',
|
|
12
12
|
warning: 'alert-triangle',
|
|
13
13
|
};
|
|
14
|
+
const VARIANT_LABELS = {
|
|
15
|
+
neutral: '',
|
|
16
|
+
info: 'Informatie: ',
|
|
17
|
+
positive: 'Succes: ',
|
|
18
|
+
negative: 'Foutmelding: ',
|
|
19
|
+
warning: 'Let op: ',
|
|
20
|
+
};
|
|
14
21
|
/**
|
|
15
22
|
* Note component
|
|
16
23
|
* Visueel uitgelicht bericht voor aanvullende of belangrijke informatie.
|
|
@@ -38,10 +45,10 @@ const PREFERRED_ICONS = {
|
|
|
38
45
|
* <Paragraph>Meer context.</Paragraph>
|
|
39
46
|
* </Note>
|
|
40
47
|
*
|
|
41
|
-
* // as="nav" — inhoudsopgave
|
|
42
|
-
* <Note as="nav" variant="neutral" heading="
|
|
48
|
+
* // as="nav" — eigenstandige navigatiesectie (niet voor een pagina-inhoudsopgave: gebruik TableOfContents)
|
|
49
|
+
* <Note as="nav" variant="neutral" heading="Gerelateerde pagina's" headingLevel={2}>
|
|
43
50
|
* <UnorderedList>
|
|
44
|
-
* <li><Link href="
|
|
51
|
+
* <li><Link href="/gerelateerd-1">Gerelateerde pagina 1</Link></li>
|
|
45
52
|
* </UnorderedList>
|
|
46
53
|
* </Note>
|
|
47
54
|
*
|
|
@@ -49,12 +56,18 @@ const PREFERRED_ICONS = {
|
|
|
49
56
|
* <Note variant="info" heading="Opmerking" iconStart={null}>
|
|
50
57
|
* <Paragraph>Zonder icoon.</Paragraph>
|
|
51
58
|
* </Note>
|
|
59
|
+
*
|
|
60
|
+
* // Variant-label onderdrukken (heading benoemt de variant al)
|
|
61
|
+
* <Note variant="warning" heading="Waarschuwing" variantLabel="">
|
|
62
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
63
|
+
* </Note>
|
|
52
64
|
* ```
|
|
53
65
|
*/
|
|
54
|
-
export const Note = React.forwardRef(({ as: As = 'div', className, variant = 'neutral', heading, headingLevel = 3, iconStart, children, ...props }, ref) => {
|
|
66
|
+
export const Note = React.forwardRef(({ as: As = 'div', className, variant = 'neutral', heading, headingLevel = 3, iconStart, variantLabel, children, ...props }, ref) => {
|
|
55
67
|
const headingId = useId();
|
|
56
68
|
const noIcon = iconStart === null;
|
|
57
69
|
const noHeading = !heading;
|
|
70
|
+
const resolvedVariantLabel = variantLabel ?? VARIANT_LABELS[variant];
|
|
58
71
|
const resolvedIcon = iconStart === undefined ? (_jsx(Icon, { name: PREFERRED_ICONS[variant], size: "xl", "aria-hidden": true })) : (iconStart);
|
|
59
72
|
const classes = classNames('dsn-note', variant !== 'neutral' && `dsn-note--${variant}`, noHeading && 'dsn-note--no-heading', className);
|
|
60
73
|
// For landmark elements with a heading, add aria-labelledby automatically
|
|
@@ -62,7 +75,7 @@ export const Note = React.forwardRef(({ as: As = 'div', className, variant = 'ne
|
|
|
62
75
|
const labelledBy = isLandmark && heading && !props['aria-label'] && !props['aria-labelledby']
|
|
63
76
|
? headingId
|
|
64
77
|
: undefined;
|
|
65
|
-
return (_jsxs(As, { ref: ref, className: classes, "aria-labelledby": labelledBy, ...props, children: [!noIcon && (_jsx("span", { className: "dsn-note__icon", "aria-hidden": true, children: resolvedIcon })), heading && (
|
|
78
|
+
return (_jsxs(As, { ref: ref, className: classes, "aria-labelledby": labelledBy, ...props, children: [!noIcon && (_jsx("span", { className: "dsn-note__icon", "aria-hidden": true, children: resolvedIcon })), heading && (_jsxs(Heading, { level: headingLevel, appearance: "heading-3", className: "dsn-note__heading", id: isLandmark ? headingId : undefined, children: [resolvedVariantLabel && (_jsx("span", { className: "dsn-visually-hidden", children: resolvedVariantLabel })), heading] })), noHeading && resolvedVariantLabel && (_jsx("span", { className: "dsn-visually-hidden", children: resolvedVariantLabel })), children && _jsx("div", { className: "dsn-note__content", children: children })] }));
|
|
66
79
|
});
|
|
67
80
|
Note.displayName = 'Note';
|
|
68
81
|
//# sourceMappingURL=Note.js.map
|
package/dist/Note/Note.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.js","sourceRoot":"","sources":["../../src/Note/Note.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,YAAY,CAAC;AAUpB,MAAM,eAAe,GAAgC;IACnD,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,gBAAgB;CAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"Note.js","sourceRoot":"","sources":["../../src/Note/Note.tsx"],"names":[],"mappings":"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"}
|
|
@@ -67,3 +67,33 @@
|
|
|
67
67
|
background-color: transparent;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
/* =============================================================================
|
|
71
|
+
Sidebar layout — Table of Contents kolom (rechts)
|
|
72
|
+
De ToC-inhoud wordt twee keer gerenderd: één keer inline (onder H1/lead,
|
|
73
|
+
zichtbaar tot 80em) en één keer als rechterkolom (zichtbaar vanaf 80em).
|
|
74
|
+
`display: none` sluit de verborgen kopie uit van de accessibility tree,
|
|
75
|
+
dus er is nooit dubbele content voor schermlezers.
|
|
76
|
+
============================================================================= */
|
|
77
|
+
|
|
78
|
+
.dsn-sidebar-layout__toc-inline {
|
|
79
|
+
display: block;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.dsn-sidebar-layout__toc {
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@media (min-width: 80em) {
|
|
87
|
+
.dsn-sidebar-layout__toc-inline {
|
|
88
|
+
display: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.dsn-sidebar-layout__toc {
|
|
92
|
+
display: block;
|
|
93
|
+
flex-shrink: 0;
|
|
94
|
+
inline-size: var(--dsn-sidebar-layout-toc-inline-size, 16rem);
|
|
95
|
+
padding-inline-start: var(--dsn-space-inline-2xl);
|
|
96
|
+
padding-block: var(--dsn-space-block-3xl);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
============================================================================= */
|
|
26
26
|
|
|
27
27
|
.dsn-page-footer {
|
|
28
|
-
--dsn-grid-margin: 0;
|
|
29
28
|
background-color: var(--dsn-page-footer-background-color);
|
|
30
29
|
border-block-start: var(--dsn-page-footer-border-block-start-width) solid
|
|
31
30
|
var(--dsn-page-footer-border-block-start-color);
|
|
@@ -78,6 +78,19 @@
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
/* =============================================================================
|
|
82
|
+
Forced colors (High Contrast mode)
|
|
83
|
+
Default variant mist op large viewport een border-block-end (navbar neemt de
|
|
84
|
+
visuele scheiding over). In forced-colors mode is die achtergrondkleur niet
|
|
85
|
+
zichtbaar, dus de border herstellen voor sectieafbakening.
|
|
86
|
+
============================================================================= */
|
|
87
|
+
|
|
88
|
+
@media (forced-colors: active) and (min-width: 64em) {
|
|
89
|
+
.dsn-page-header:not(.dsn-page-header--compact) {
|
|
90
|
+
border-block-end: var(--dsn-border-width-thick) solid transparent;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
81
94
|
/* =============================================================================
|
|
82
95
|
Masthead (large viewport) — neutrale achtergrond, logo + servicemenu + zoek
|
|
83
96
|
============================================================================= */
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
.dsn-pre-heading {
|
|
2
|
+
display: block;
|
|
3
|
+
color: var(--dsn-pre-heading-color);
|
|
4
|
+
font-family: var(--dsn-pre-heading-font-family);
|
|
5
|
+
font-size: var(--dsn-pre-heading-font-size);
|
|
6
|
+
font-weight: var(--dsn-pre-heading-font-weight);
|
|
7
|
+
line-height: var(--dsn-pre-heading-line-height);
|
|
8
|
+
margin-block-end: var(--dsn-pre-heading-margin-block-end);
|
|
9
|
+
}
|
|
10
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './PreHeading.css';
|
|
3
|
+
export interface PreHeadingProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const PreHeading: React.ForwardRefExoticComponent<PreHeadingProps & React.RefAttributes<HTMLSpanElement>>;
|
|
8
|
+
//# sourceMappingURL=PreHeading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreHeading.d.ts","sourceRoot":"","sources":["../../src/PreHeading/PreHeading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC5E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,yFAYtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { classNames } from '@dsn-starter-kit/core';
|
|
4
|
+
import './PreHeading.css';
|
|
5
|
+
export const PreHeading = React.forwardRef(({ children, className, ...props }, ref) => {
|
|
6
|
+
return (_jsx("span", { ref: ref, className: classNames('dsn-pre-heading', className), ...props, children: children }));
|
|
7
|
+
});
|
|
8
|
+
PreHeading.displayName = 'PreHeading';
|
|
9
|
+
//# sourceMappingURL=PreHeading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreHeading.js","sourceRoot":"","sources":["../../src/PreHeading/PreHeading.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,kBAAkB,CAAC;AAO1B,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,KAC/C,KAAK,YAER,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/PreHeading/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/PreHeading/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -82,6 +82,20 @@
|
|
|
82
82
|
margin-block-start: var(--dsn-progress-bar-gap-footer);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
/* Forced colors (High Contrast mode)
|
|
86
|
+
appearance: none schakelt alle browser-styling uit waardoor track en fill
|
|
87
|
+
onzichtbaar worden. appearance: auto herstelt de native progress-stijl
|
|
88
|
+
zodat de browser zijn eigen system colors toepast. */
|
|
89
|
+
@media (forced-colors: active) {
|
|
90
|
+
.dsn-progress-bar__bar {
|
|
91
|
+
appearance: auto;
|
|
92
|
+
block-size: revert;
|
|
93
|
+
border: revert;
|
|
94
|
+
border-radius: revert;
|
|
95
|
+
background-color: revert;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
85
99
|
@media (prefers-reduced-motion: reduce) {
|
|
86
100
|
.dsn-progress-bar__bar::-webkit-progress-value,
|
|
87
101
|
.dsn-progress-bar__bar::-moz-progress-bar {
|
|
@@ -3,7 +3,7 @@ import './ProgressBar.css';
|
|
|
3
3
|
export interface ProgressBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
/**
|
|
5
5
|
* Visueel verborgen label dat de voortgangsbalk beschrijft voor screenreaders.
|
|
6
|
-
* Altijd vereist — gekoppeld via
|
|
6
|
+
* Altijd vereist — gekoppeld via `<label for>` aan het `<progress>`-element.
|
|
7
7
|
*/
|
|
8
8
|
label: string;
|
|
9
9
|
/**
|
|
@@ -20,10 +20,15 @@ export interface ProgressBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
20
20
|
*/
|
|
21
21
|
description?: React.ReactNode;
|
|
22
22
|
/**
|
|
23
|
-
* ID voor het
|
|
23
|
+
* ID voor het `<progress>`-element en de bijbehorende `<label>`.
|
|
24
24
|
* Automatisch gegenereerd via useId() indien weggelaten.
|
|
25
25
|
*/
|
|
26
26
|
id?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Verbergt het zichtbare percentage-getal. Gebruik dit voor decoratief gebruik
|
|
29
|
+
* in combinatie met aria-hidden="true" op de component.
|
|
30
|
+
*/
|
|
31
|
+
hideValue?: boolean;
|
|
27
32
|
}
|
|
28
33
|
/**
|
|
29
34
|
* ProgressBar component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAErC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAErC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,WAAW,yFAqDvB,CAAC"}
|
|
@@ -26,11 +26,11 @@ import './ProgressBar.css';
|
|
|
26
26
|
* <ProgressBar label="Stap voortgang" value={3} max={7} />
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export const ProgressBar = React.forwardRef(({ className, label, value, max = 100, description, id, ...props }, ref) => {
|
|
29
|
+
export const ProgressBar = React.forwardRef(({ className, label, value, max = 100, description, hideValue, id, ...props }, ref) => {
|
|
30
30
|
const generatedId = useId();
|
|
31
31
|
const progressId = id ?? generatedId;
|
|
32
32
|
const percentage = Math.round((value / max) * 100);
|
|
33
|
-
return (_jsxs("div", { ref: ref, className: classNames('dsn-progress-bar', className), ...props, children: [_jsx("label", { className: "dsn-visually-hidden", htmlFor: progressId, children: label }), _jsx("div", { className: "dsn-progress-bar__header", children: _jsxs("p", { className: "dsn-paragraph dsn-progress-bar__percentage", "aria-hidden": "true", children: [percentage, "%"] }) }), _jsxs("progress", { id: progressId, className: "dsn-progress-bar__bar", value: value, max: max, children: [percentage, "%"] }), description && (_jsx("p", { className: "dsn-paragraph dsn-progress-bar__description", children: description }))] }));
|
|
33
|
+
return (_jsxs("div", { ref: ref, className: classNames('dsn-progress-bar', className), ...props, children: [_jsx("label", { className: "dsn-visually-hidden", htmlFor: progressId, children: label }), !hideValue && (_jsx("div", { className: "dsn-progress-bar__header", children: _jsxs("p", { className: "dsn-paragraph dsn-progress-bar__percentage", "aria-hidden": "true", children: [percentage, "%"] }) })), _jsxs("progress", { id: progressId, className: "dsn-progress-bar__bar", value: value, max: max, children: [percentage, "%"] }), description && (_jsx("p", { className: "dsn-paragraph dsn-progress-bar__description", children: description }))] }));
|
|
34
34
|
});
|
|
35
35
|
ProgressBar.displayName = 'ProgressBar';
|
|
36
36
|
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,mBAAmB,CAAC;AAsC3B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CACzC,CACE,EACE,SAAS,EACT,KAAK,EACL,KAAK,EACL,GAAG,GAAG,GAAG,EACT,WAAW,EACX,SAAS,EACT,EAAE,EACF,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,EAAE,IAAI,WAAW,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAEnD,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,KAChD,KAAK,aAET,gBAAO,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,UAAU,YACvD,KAAK,GACA,EACP,CAAC,SAAS,IAAI,CACb,cAAK,SAAS,EAAC,0BAA0B,YACvC,aACE,SAAS,EAAC,4CAA4C,iBAC1C,MAAM,aAEjB,UAAU,SACT,GACA,CACP,EACD,oBACE,EAAE,EAAE,UAAU,EACd,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,aAEP,UAAU,SACF,EACV,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,6CAA6C,YACvD,WAAW,GACV,CACL,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
|
package/dist/Radio/Radio.css
CHANGED
|
@@ -157,6 +157,42 @@
|
|
|
157
157
|
transform: scale(1);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
/* Forced colors (High Contrast mode)
|
|
161
|
+
background-color wordt genegeerd — inner circle verdwijnt tegen de control achtergrond.
|
|
162
|
+
Highlight/HighlightText zijn de system colors voor geselecteerde form controls. */
|
|
163
|
+
@media (forced-colors: active) {
|
|
164
|
+
.dsn-radio__control {
|
|
165
|
+
forced-color-adjust: none;
|
|
166
|
+
border-color: ButtonText;
|
|
167
|
+
background-color: Field;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.dsn-radio__input:checked + .dsn-radio__control {
|
|
171
|
+
border-color: Highlight;
|
|
172
|
+
background-color: Highlight;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.dsn-radio__input:checked + .dsn-radio__control .dsn-radio__inner-circle {
|
|
176
|
+
background-color: HighlightText;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.dsn-radio__input:checked:disabled + .dsn-radio__control {
|
|
180
|
+
border-color: GrayText;
|
|
181
|
+
background-color: GrayText;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.dsn-radio__input:checked:disabled
|
|
185
|
+
+ .dsn-radio__control
|
|
186
|
+
.dsn-radio__inner-circle {
|
|
187
|
+
background-color: Field;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.dsn-radio__input:disabled + .dsn-radio__control {
|
|
191
|
+
border-color: GrayText;
|
|
192
|
+
background-color: Field;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
160
196
|
/* Invalid state */
|
|
161
197
|
.dsn-radio__input--invalid + .dsn-radio__control {
|
|
162
198
|
border-width: var(--dsn-radio-invalid-border-width);
|
|
@@ -30,6 +30,14 @@
|
|
|
30
30
|
padding-inline-start: var(--dsn-search-input-padding-inline-start-with-icon);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/* Forced colors (High Contrast mode) */
|
|
34
|
+
@media (forced-colors: active) {
|
|
35
|
+
.dsn-search-input__icon {
|
|
36
|
+
forced-color-adjust: auto;
|
|
37
|
+
color: ButtonText;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
33
41
|
/* Hide browser-native clear button — will be implemented as a separate pattern */
|
|
34
42
|
.dsn-search-input::-webkit-search-cancel-button {
|
|
35
43
|
display: none;
|
package/dist/Select/Select.css
CHANGED
|
@@ -60,6 +60,14 @@
|
|
|
60
60
|
border-color: var(--dsn-text-input-invalid-border-color);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/* Forced colors (High Contrast mode) */
|
|
64
|
+
@media (forced-colors: active) {
|
|
65
|
+
.dsn-select__icon {
|
|
66
|
+
forced-color-adjust: auto;
|
|
67
|
+
color: ButtonText;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
63
71
|
/* Remove native arrow in IE/Edge */
|
|
64
72
|
.dsn-select::-ms-expand {
|
|
65
73
|
display: none;
|
|
@@ -21,7 +21,7 @@ export interface SkipLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElem
|
|
|
21
21
|
* SkipLink — toegankelijkheidskoppeling om herhalende navigatie te omzeilen.
|
|
22
22
|
*
|
|
23
23
|
* Plaatst de link als **eerste focusbaar element** in de DOM, vóór `<header>` en `<nav>`.
|
|
24
|
-
* Voldoet aan WCAG 2.
|
|
24
|
+
* Voldoet aan WCAG 2.2 succescriterium 2.4.1 (Bypass Blocks, Level A).
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```tsx
|
|
@@ -6,7 +6,7 @@ import './SkipLink.css';
|
|
|
6
6
|
* SkipLink — toegankelijkheidskoppeling om herhalende navigatie te omzeilen.
|
|
7
7
|
*
|
|
8
8
|
* Plaatst de link als **eerste focusbaar element** in de DOM, vóór `<header>` en `<nav>`.
|
|
9
|
-
* Voldoet aan WCAG 2.
|
|
9
|
+
* Voldoet aan WCAG 2.2 succescriterium 2.4.1 (Bypass Blocks, Level A).
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```tsx
|
package/dist/Spinner/Spinner.css
CHANGED
|
@@ -82,6 +82,23 @@
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
/* Forced colors (High Contrast mode)
|
|
86
|
+
SVG stroke wordt genegeerd — forced-color-adjust: auto laat de browser
|
|
87
|
+
de kleuren overnemen. Track verbergen: enkel de arc is informatief. */
|
|
88
|
+
@media (forced-colors: active) {
|
|
89
|
+
.dsn-spinner__circle {
|
|
90
|
+
forced-color-adjust: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.dsn-spinner__track {
|
|
94
|
+
stroke: transparent;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.dsn-spinner__arc {
|
|
98
|
+
stroke: CanvasText;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
85
102
|
/* prefers-reduced-motion: subtiel pulseren i.p.v. roteren */
|
|
86
103
|
@media (prefers-reduced-motion: reduce) {
|
|
87
104
|
.dsn-spinner__circle {
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableOfContents component styles for React
|
|
3
|
+
* Re-exports the base TableOfContents styles from components-html
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Table Of Contents Component
|
|
8
|
+
* Inhoudsopgave met ankerlinks naar de secties op de huidige pagina.
|
|
9
|
+
* Alleen H2-secties horen hierin opgenomen te worden.
|
|
10
|
+
*
|
|
11
|
+
* Twee appearances:
|
|
12
|
+
* - Default ("framed"): accent-1 achtergrond + linkerborder, heading als heading-3.
|
|
13
|
+
* Bedoeld voor gebruik inline in de content-flow (bijv. onder de lead paragraph).
|
|
14
|
+
* - `dsn-table-of-contents--plain`: geen kader, heading als heading-5.
|
|
15
|
+
* Bedoeld voor gebruik in een losstaande kolom naast de hoofdinhoud.
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* <!-- Framed (default) -->
|
|
19
|
+
* <nav class="dsn-table-of-contents" aria-labelledby="toc-heading">
|
|
20
|
+
* <h2 class="dsn-heading dsn-heading--heading-3 dsn-table-of-contents__heading" id="toc-heading">Op deze pagina</h2>
|
|
21
|
+
* <ul class="dsn-unordered-list">
|
|
22
|
+
* <li><a class="dsn-link" href="#sectie-1">Sectie 1</a></li>
|
|
23
|
+
* </ul>
|
|
24
|
+
* </nav>
|
|
25
|
+
*
|
|
26
|
+
* <!-- Plain -->
|
|
27
|
+
* <nav class="dsn-table-of-contents dsn-table-of-contents--plain" aria-labelledby="toc-heading-plain">
|
|
28
|
+
* <h2 class="dsn-heading dsn-heading--heading-5 dsn-table-of-contents__heading" id="toc-heading-plain">Op deze pagina</h2>
|
|
29
|
+
* <ul class="dsn-unordered-list">
|
|
30
|
+
* <li><a class="dsn-link" href="#sectie-1">Sectie 1</a></li>
|
|
31
|
+
* </ul>
|
|
32
|
+
* </nav>
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
.dsn-table-of-contents {
|
|
36
|
+
border-inline-start: var(--dsn-table-of-contents-border-inline-start-width)
|
|
37
|
+
solid var(--dsn-table-of-contents-border-inline-start-color);
|
|
38
|
+
background-color: var(--dsn-table-of-contents-background-color);
|
|
39
|
+
padding-block: var(--dsn-table-of-contents-padding-block);
|
|
40
|
+
padding-inline-start: var(--dsn-table-of-contents-padding-inline-start);
|
|
41
|
+
padding-inline-end: var(--dsn-table-of-contents-padding-inline-end);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.dsn-table-of-contents__heading {
|
|
45
|
+
margin-block-end: var(--dsn-table-of-contents-heading-gap);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* =============================================================================
|
|
49
|
+
Plain appearance — geen kader, voor gebruik in een losstaande kolom
|
|
50
|
+
============================================================================= */
|
|
51
|
+
|
|
52
|
+
.dsn-table-of-contents--plain {
|
|
53
|
+
border-inline-start: none;
|
|
54
|
+
background-color: transparent;
|
|
55
|
+
padding-block: var(--dsn-table-of-contents-plain-padding-block);
|
|
56
|
+
padding-inline-start: 0;
|
|
57
|
+
padding-inline-end: 0;
|
|
58
|
+
/* Ankerlinks: omgekeerd onderstrepingsgedrag t.o.v. de standaard Link —
|
|
59
|
+
rust zonder onderstreping, hover mét, zodat de kolom rustiger oogt. */
|
|
60
|
+
--dsn-link-text-decoration-line: var(
|
|
61
|
+
--dsn-table-of-contents-plain-link-text-decoration-line
|
|
62
|
+
);
|
|
63
|
+
--dsn-link-hover-text-decoration-line: var(
|
|
64
|
+
--dsn-table-of-contents-plain-link-hover-text-decoration-line
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.dsn-table-of-contents--plain .dsn-unordered-list > li {
|
|
69
|
+
margin-block-end: var(--dsn-table-of-contents-plain-list-gap);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.dsn-table-of-contents--plain .dsn-unordered-list > li:last-child {
|
|
73
|
+
margin-block-end: 0;
|
|
74
|
+
}
|
|
75
|
+
|