@nldd/design-system 0.8.76 → 0.8.78

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 (141) hide show
  1. package/custom-elements.json +1094 -186
  2. package/dist/components/actions/menu/menu.js +1 -1
  3. package/dist/components/actions/menu/menu.js.map +1 -1
  4. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  5. package/dist/components/actions/menu/menu.styles.js +1 -0
  6. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  7. package/dist/components/actions/menu/menu.template.js +1 -1
  8. package/dist/components/actions/menu/menu.template.js.map +1 -1
  9. package/dist/components/components.js +16 -14
  10. package/dist/components/content/avatar/avatar.d.ts +9 -9
  11. package/dist/components/content/avatar/avatar.d.ts.map +1 -1
  12. package/dist/components/content/avatar/avatar.js +15 -15
  13. package/dist/components/content/avatar/avatar.js.map +1 -1
  14. package/dist/components/content/code-viewer/code-viewer.styles.js +2 -2
  15. package/dist/components/content/icon/icon-registry.js +1 -1
  16. package/dist/components/content/icon/icon-registry.js.map +1 -1
  17. package/dist/components/content/image/image.styles.d.ts.map +1 -1
  18. package/dist/components/content/image/image.styles.js +4 -1
  19. package/dist/components/content/image/image.styles.js.map +1 -1
  20. package/dist/components/content/tag/tag.js +6 -6
  21. package/dist/components/content/tag/tag.js.map +1 -1
  22. package/dist/components/forms/form/form.js +1 -1
  23. package/dist/components/forms/form-actions/form-actions.d.ts +3 -3
  24. package/dist/components/forms/form-actions/form-actions.js +3 -3
  25. package/dist/components/forms/form-section/form-section.d.ts.map +1 -1
  26. package/dist/components/forms/form-section/form-section.js +11 -10
  27. package/dist/components/forms/form-section/form-section.js.map +1 -1
  28. package/dist/components/{index-DumgCqWu.js → index-BNg_kPou.js} +1 -1
  29. package/dist/components/{index-C51CBKdx.js → index-BmVf8Da6.js} +1 -1
  30. package/dist/components/{index-B04kRPqo.js → index-CU-wlUnI.js} +3142 -1752
  31. package/dist/components/{index-CGIRur7T.js → index-CcCKQ3Dj.js} +1 -1
  32. package/dist/components/{index-C6fLE8SI.js → index-D03jbAoU.js} +1 -1
  33. package/dist/components/{index-CnPUd-yq.js → index-D68oJ-Le.js} +1 -1
  34. package/dist/components/{index-Ch1zpGsx.js → index-v6dIt9IT.js} +1 -1
  35. package/dist/components/index.d.ts +2 -0
  36. package/dist/components/index.d.ts.map +1 -1
  37. package/dist/components/index.js +2 -0
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/inputs/date-field/date-field.d.ts +3 -3
  40. package/dist/components/inputs/date-field/date-field.d.ts.map +1 -1
  41. package/dist/components/inputs/date-field/date-field.i18n.js +7 -7
  42. package/dist/components/inputs/date-field/date-field.i18n.js.map +1 -1
  43. package/dist/components/inputs/date-field/date-field.js +3 -3
  44. package/dist/components/inputs/date-field/date-field.js.map +1 -1
  45. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -1
  46. package/dist/components/inputs/date-field/date-field.styles.js +31 -29
  47. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -1
  48. package/dist/components/inputs/date-picker/date-picker.d.ts +5 -5
  49. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -1
  50. package/dist/components/inputs/date-picker/date-picker.i18n.js +18 -18
  51. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -1
  52. package/dist/components/inputs/date-picker/date-picker.js +6 -6
  53. package/dist/components/inputs/date-picker/date-picker.js.map +1 -1
  54. package/dist/components/inputs/date-picker/date-picker.styles.js +1 -1
  55. package/dist/components/inputs/number-field/number-field.d.ts +1 -1
  56. package/dist/components/inputs/number-field/number-field.js +1 -1
  57. package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
  58. package/dist/components/inputs/search-field/search-field.js +9 -0
  59. package/dist/components/inputs/search-field/search-field.js.map +1 -1
  60. package/dist/components/inputs/text-editor/text-editor.markdown.js +3 -3
  61. package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -1
  62. package/dist/components/inputs/time-field/time-field.d.ts +242 -0
  63. package/dist/components/inputs/time-field/time-field.d.ts.map +1 -0
  64. package/dist/components/inputs/time-field/time-field.i18n.d.ts +8 -0
  65. package/dist/components/inputs/time-field/time-field.i18n.d.ts.map +1 -0
  66. package/dist/components/inputs/time-field/time-field.i18n.js +14 -0
  67. package/dist/components/inputs/time-field/time-field.i18n.js.map +1 -0
  68. package/dist/components/inputs/time-field/time-field.js +641 -0
  69. package/dist/components/inputs/time-field/time-field.js.map +1 -0
  70. package/dist/components/inputs/time-field/time-field.styles.d.ts +2 -0
  71. package/dist/components/inputs/time-field/time-field.styles.d.ts.map +1 -0
  72. package/dist/components/inputs/time-field/time-field.styles.js +192 -0
  73. package/dist/components/inputs/time-field/time-field.styles.js.map +1 -0
  74. package/dist/components/inputs/time-field/time-field.template.d.ts +20 -0
  75. package/dist/components/inputs/time-field/time-field.template.d.ts.map +1 -0
  76. package/dist/components/inputs/time-field/time-field.template.js +126 -0
  77. package/dist/components/inputs/time-field/time-field.template.js.map +1 -0
  78. package/dist/components/inputs/time-picker/time-picker.d.ts +135 -0
  79. package/dist/components/inputs/time-picker/time-picker.d.ts.map +1 -0
  80. package/dist/components/inputs/time-picker/time-picker.i18n.d.ts +7 -0
  81. package/dist/components/inputs/time-picker/time-picker.i18n.d.ts.map +1 -0
  82. package/dist/components/inputs/time-picker/time-picker.i18n.js +10 -0
  83. package/dist/components/inputs/time-picker/time-picker.i18n.js.map +1 -0
  84. package/dist/components/inputs/time-picker/time-picker.js +386 -0
  85. package/dist/components/inputs/time-picker/time-picker.js.map +1 -0
  86. package/dist/components/inputs/time-picker/time-picker.styles.d.ts +2 -0
  87. package/dist/components/inputs/time-picker/time-picker.styles.d.ts.map +1 -0
  88. package/dist/components/inputs/time-picker/time-picker.styles.js +183 -0
  89. package/dist/components/inputs/time-picker/time-picker.styles.js.map +1 -0
  90. package/dist/components/inputs/time-picker/time-picker.template.d.ts +4 -0
  91. package/dist/components/inputs/time-picker/time-picker.template.d.ts.map +1 -0
  92. package/dist/components/inputs/time-picker/time-picker.template.js +87 -0
  93. package/dist/components/inputs/time-picker/time-picker.template.js.map +1 -0
  94. package/dist/components/layout/box/box.styles.js +1 -1
  95. package/dist/components/layout/page/page.styles.d.ts.map +1 -1
  96. package/dist/components/layout/page/page.styles.js +6 -0
  97. package/dist/components/layout/page/page.styles.js.map +1 -1
  98. package/dist/components/layout/popover/popover.d.ts +2 -2
  99. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  100. package/dist/components/layout/popover/popover.js +75 -71
  101. package/dist/components/layout/popover/popover.js.map +1 -1
  102. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.d.ts.map +1 -1
  103. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js +14 -0
  104. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js.map +1 -1
  105. package/dist/components/layout/window/window.js +6 -6
  106. package/dist/components/layout/window/window.js.map +1 -1
  107. package/dist/components/lists-and-tables/list/list.d.ts +1 -1
  108. package/dist/components/lists-and-tables/list/list.js +1 -1
  109. package/dist/components/lists-and-tables/list/list.styles.js +1 -1
  110. package/dist/components/lists-and-tables/list-item/list-item.d.ts +1 -1
  111. package/dist/components/lists-and-tables/list-item/list-item.js +1 -1
  112. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +3 -3
  113. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +1 -1
  114. package/dist/components/status-and-feedback/banner/banner.d.ts +3 -0
  115. package/dist/components/status-and-feedback/banner/banner.d.ts.map +1 -1
  116. package/dist/components/status-and-feedback/banner/banner.i18n.js +1 -1
  117. package/dist/components/status-and-feedback/banner/banner.i18n.js.map +1 -1
  118. package/dist/components/status-and-feedback/banner/banner.js +5 -0
  119. package/dist/components/status-and-feedback/banner/banner.js.map +1 -1
  120. package/dist/components/status-and-feedback/banner/banner.styles.d.ts.map +1 -1
  121. package/dist/components/status-and-feedback/banner/banner.styles.js +27 -10
  122. package/dist/components/status-and-feedback/banner/banner.styles.js.map +1 -1
  123. package/dist/components/status-and-feedback/banner/banner.template.js +1 -1
  124. package/dist/components/status-and-feedback/banner/banner.template.js.map +1 -1
  125. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js +1 -1
  126. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js.map +1 -1
  127. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
  128. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +8 -2
  129. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
  130. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.d.ts.map +1 -1
  131. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +4 -1
  132. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
  133. package/dist/css/variables.css +4 -1
  134. package/dist/nldd.min.js +22269 -0
  135. package/dist/palettes.html +245 -0
  136. package/dist/sample-images/butterfly-1200.jpg +0 -0
  137. package/dist/sample-images/butterfly-1600.jpg +0 -0
  138. package/dist/sample-images/butterfly-480.jpg +0 -0
  139. package/dist/sample-images/butterfly-960.jpg +0 -0
  140. package/dist/types/vue.d.ts +90 -3
  141. package/package.json +16 -4
@@ -0,0 +1,245 @@
1
+ <!DOCTYPE html>
2
+ <html lang="nl" data-scheme="light">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>NLDD Paletten</title>
7
+ <link rel="stylesheet" href="/css/settings.css">
8
+ <style>
9
+ body {
10
+ margin: 0;
11
+ padding: 2rem;
12
+ font-family: 'RijksSansVF', system-ui, sans-serif;
13
+ background: light-dark(#fff, #111);
14
+ color: light-dark(#111, #fff);
15
+ }
16
+
17
+ header {
18
+ display: flex;
19
+ align-items: baseline;
20
+ justify-content: space-between;
21
+ gap: 1rem;
22
+ max-width: 1400px;
23
+ margin: 0 auto 2rem;
24
+ }
25
+
26
+ h1 {
27
+ margin: 0;
28
+ font-size: 1.5rem;
29
+ font-weight: 600;
30
+ }
31
+
32
+ h2 {
33
+ margin: 2rem 0 0.5rem;
34
+ font-size: 1rem;
35
+ font-weight: 600;
36
+ text-transform: capitalize;
37
+ display: flex;
38
+ align-items: baseline;
39
+ gap: 0.75rem;
40
+ }
41
+
42
+ h2 small {
43
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
44
+ font-size: 0.75rem;
45
+ opacity: 0.6;
46
+ font-weight: 400;
47
+ }
48
+
49
+ main {
50
+ max-width: 1400px;
51
+ margin: 0 auto;
52
+ }
53
+
54
+ section + section h1 {
55
+ margin-top: 3rem;
56
+ }
57
+
58
+ .section-title {
59
+ margin: 2.5rem 0 0.5rem;
60
+ font-size: 0.875rem;
61
+ font-weight: 600;
62
+ text-transform: uppercase;
63
+ letter-spacing: 0.05em;
64
+ opacity: 0.6;
65
+ }
66
+
67
+ .strip {
68
+ display: grid;
69
+ grid-template-columns: repeat(25, 1fr);
70
+ gap: 2px;
71
+ border-radius: 6px;
72
+ overflow: hidden;
73
+ }
74
+
75
+ .swatch {
76
+ aspect-ratio: 1 / 2;
77
+ display: flex;
78
+ flex-direction: column;
79
+ justify-content: flex-end;
80
+ padding: 4px;
81
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
82
+ font-size: 9px;
83
+ line-height: 1;
84
+ position: relative;
85
+ }
86
+
87
+ .swatch.light-text { color: rgba(255,255,255,0.85); }
88
+ .swatch.dark-text { color: rgba(0,0,0,0.7); }
89
+
90
+ .swatch span {
91
+ text-align: center;
92
+ }
93
+
94
+ .swatch.is-ref::before {
95
+ content: '★';
96
+ position: absolute;
97
+ top: 4px;
98
+ right: 4px;
99
+ font-size: 10px;
100
+ }
101
+
102
+ button.toggle {
103
+ padding: 0.4rem 0.8rem;
104
+ border: 1px solid currentColor;
105
+ background: transparent;
106
+ color: inherit;
107
+ border-radius: 4px;
108
+ font: inherit;
109
+ font-size: 0.8rem;
110
+ cursor: pointer;
111
+ }
112
+
113
+ button.toggle:hover {
114
+ background: light-dark(#0001, #fff1);
115
+ }
116
+
117
+ footer {
118
+ max-width: 1400px;
119
+ margin: 3rem auto 0;
120
+ font-size: 0.75rem;
121
+ opacity: 0.6;
122
+ line-height: 1.5;
123
+ }
124
+
125
+ footer code {
126
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
127
+ }
128
+ </style>
129
+ </head>
130
+ <body>
131
+ <header>
132
+ <h1>NLDD Paletten</h1>
133
+ <button class="toggle" type="button" aria-label="Wissel kleurenschema">Light / Dark</button>
134
+ </header>
135
+
136
+ <main>
137
+ <div class="section-title">Functionele aliassen</div>
138
+ <div id="aliases"></div>
139
+
140
+ <div class="section-title">Descriptive paletten</div>
141
+ <div id="descriptive"></div>
142
+ </main>
143
+
144
+ <footer>
145
+ <p>★ markeert de step die het dichtst bij de oorspronkelijke referentiekleur ligt.
146
+ Step 500 = peak chroma. Plateau van mirror(ref) tot ref op volle chroma; daarbuiten taper.</p>
147
+ <p>Hex-waarden vind je in <code>src/assets/styles/palettes.generated.css</code>.</p>
148
+ </footer>
149
+
150
+ <script type="module">
151
+ const STEPS = [0, 25, 50, 75, 100, 150, 200, 250, 300, 350, 400, 450, 500,
152
+ 550, 600, 650, 700, 750, 800, 850, 900, 925, 950, 975, 1000];
153
+
154
+ const ALIASES = ['accent', 'critical', 'mark', 'neutral', 'success', 'warning'];
155
+
156
+ const DESCRIPTIVE = [
157
+ { name: 'coolgray', hex: '#64748B' },
158
+ { name: 'lintblauw', hex: '#154273' },
159
+ { name: 'donkerblauw', hex: '#01689B' },
160
+ { name: 'hemelblauw', hex: '#007BC7' },
161
+ { name: 'lichtblauw', hex: '#8FCAE7' },
162
+ { name: 'paars', hex: '#42145F' },
163
+ { name: 'violet', hex: '#A90061' },
164
+ { name: 'robijnrood', hex: '#CA005D' },
165
+ { name: 'roze', hex: '#F092CD' },
166
+ { name: 'rood', hex: '#D52B1E' },
167
+ { name: 'oranje', hex: '#E17000' },
168
+ { name: 'donkergeel', hex: '#FFB612' },
169
+ { name: 'geel', hex: '#F9E11E' },
170
+ { name: 'donkerbruin', hex: '#673327' },
171
+ { name: 'bruin', hex: '#94710A' },
172
+ { name: 'donkergroen', hex: '#275937' },
173
+ { name: 'groen', hex: '#39870C' },
174
+ { name: 'mosgroen', hex: '#777B00' },
175
+ { name: 'mintgroen', hex: '#76D2B6' },
176
+ ];
177
+
178
+ // WCAG luminance from hex
179
+ function relLum(hex) {
180
+ const c = hex.slice(1).match(/.{2}/g).map(h => {
181
+ const v = parseInt(h, 16) / 255;
182
+ return v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;
183
+ });
184
+ return 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2];
185
+ }
186
+
187
+ // Find the step whose target_lum is closest to the reference color's lum
188
+ function nearestStep(refHex) {
189
+ const lum = relLum(refHex);
190
+ const centerLum = Math.sqrt(1.05 * 0.05) - 0.05;
191
+ const logTarget = Math.log(Math.max(lum, 0.0001) + 0.05);
192
+ const logWhite = Math.log(1.05);
193
+ const logCenter = Math.log(centerLum + 0.05);
194
+ const logBlack = Math.log(0.05);
195
+
196
+ let pos;
197
+ if (logTarget >= logCenter) {
198
+ const t = (logTarget - logWhite) / (logCenter - logWhite);
199
+ pos = Math.max(0, Math.min(0.5, t * 0.5));
200
+ } else {
201
+ const t = (logTarget - logCenter) / (logBlack - logCenter);
202
+ pos = Math.max(0.5, Math.min(1.0, 0.5 + t * 0.5));
203
+ }
204
+ const target = pos * 1000;
205
+ return STEPS.reduce((a, b) =>
206
+ Math.abs(b - target) < Math.abs(a - target) ? b : a
207
+ );
208
+ }
209
+
210
+ // Decide light/dark text per swatch based on step (rough proxy for lightness in current scheme)
211
+ function textClass(step, scheme) {
212
+ // In light scheme, lower steps = lighter; in dark scheme, mirrored
213
+ const effective = scheme === 'dark' ? 1000 - step : step;
214
+ return effective < 500 ? 'dark-text' : 'light-text';
215
+ }
216
+
217
+ function renderPalette(name, refHex) {
218
+ const refStep = refHex ? nearestStep(refHex) : null;
219
+ const scheme = document.documentElement.dataset.scheme;
220
+ const swatches = STEPS.map(step => {
221
+ const cls = ['swatch', textClass(step, scheme)];
222
+ if (step === refStep) cls.push('is-ref');
223
+ return `<div class="${cls.join(' ')}" style="background:var(--primitives-color-${name}-${step})"><span>${step}</span></div>`;
224
+ }).join('');
225
+ const refLabel = refHex ? `<small>${refHex}</small>` : '';
226
+ return `<h2>${name}${refLabel}</h2><div class="strip">${swatches}</div>`;
227
+ }
228
+
229
+ function render() {
230
+ document.getElementById('aliases').innerHTML =
231
+ ALIASES.map(name => renderPalette(name)).join('');
232
+ document.getElementById('descriptive').innerHTML =
233
+ DESCRIPTIVE.map(({ name, hex }) => renderPalette(name, hex)).join('');
234
+ }
235
+
236
+ document.querySelector('button.toggle').addEventListener('click', () => {
237
+ const root = document.documentElement;
238
+ root.dataset.scheme = root.dataset.scheme === 'light' ? 'dark' : 'light';
239
+ render();
240
+ });
241
+
242
+ render();
243
+ </script>
244
+ </body>
245
+ </html>
@@ -116,6 +116,8 @@ import type { NLDDTag } from '@nldd/design-system/tag';
116
116
  import type { NLDDTextCell } from '@nldd/design-system/text-cell';
117
117
  import type { NLDDTextEditor } from '@nldd/design-system/text-editor';
118
118
  import type { NLDDTextField } from '@nldd/design-system/text-field';
119
+ import type { NLDDTimeField } from '@nldd/design-system/time-field';
120
+ import type { NLDDTimePicker } from '@nldd/design-system/time-picker';
119
121
  import type { NLDDTimelineTrackCell } from '@nldd/design-system/timeline-track-cell';
120
122
  import type { NLDDTitle } from '@nldd/design-system/title';
121
123
  import type { NLDDTitleCell } from '@nldd/design-system/title-cell';
@@ -196,7 +198,7 @@ declare module 'vue' {
196
198
  'accessibleLabel'?: NLDDAvatar['accessibleLabel'];
197
199
  /** Overschrijf translation keys; niet gezette keys vallen terug op het Nederlands */
198
200
  'translations'?: NLDDAvatar['translations'];
199
- /** True zodra de avatar zelf een control is. */
201
+ /** True once the avatar is a control itself. */
200
202
  'isInteractive'?: NLDDAvatar['isInteractive'];
201
203
  /** Initials shown when there is no image: an explicit `initials` wins, otherwise the first letter of the first and last word of `name`. */
202
204
  'resolvedInitials'?: NLDDAvatar['resolvedInitials'];
@@ -227,6 +229,8 @@ declare module 'vue' {
227
229
  type NLDDBannerProps = {
228
230
  /** Color and default icon (default: 'neutral') */
229
231
  'variant'?: NLDDBanner['variant'];
232
+ /** Banner size (default: 'md'). 'sm' tightens the padding to 8px, drops the icon to 24px and uses a smaller dismiss button — for a bar that sits between chrome and content rather than a standalone page-level notice. The typography is unchanged. */
233
+ 'size'?: NLDDBanner['size'];
230
234
  /** Icon override. Default per variant: neutral → info-circle-filled, accent → info-circle-filled, success → check-circle-filled, warning → exclamation-triangle-filled, critical → exclamation-circle-filled */
231
235
  'icon'?: NLDDBanner['icon'];
232
236
  /** Main text (heading or paragraph, depending on heading-level) */
@@ -2778,6 +2782,85 @@ declare module 'vue' {
2778
2782
  'onChange'?: (event: CustomEvent) => void;
2779
2783
  };
2780
2784
 
2785
+ type NLDDTimeFieldProps = {
2786
+ /** 'md' (standaard) | 'sm'. Wordt automatisch gezet door nldd-form-field. */
2787
+ 'size'?: NLDDTimeField['size'];
2788
+ /** De tijd als `HH:mm` (24-uurs). Leeg wanneer er geen geldige tijd staat. */
2789
+ 'value'?: NLDDTimeField['value'];
2790
+ /** Vroegst toegestane tijd als `HH:mm`. Is tevens de basis waarvandaan `step` telt. */
2791
+ 'min'?: NLDDTimeField['min'];
2792
+ /** Laatst toegestane tijd als `HH:mm`. */
2793
+ 'max'?: NLDDTimeField['max'];
2794
+ /** Minutenstap (standaard 1). Bepaalt welke tijden geldig zijn, waarop wordt afgerond en hoe ver de pijltjestoetsen verspringen. */
2795
+ 'step'?: NLDDTimeField['step'];
2796
+ /** Verbergt de picker-knop. Standaard staat die knop er wel. */
2797
+ 'no-picker'?: NLDDTimeField['noPicker'];
2798
+ /** Verbergt de picker-knop. Standaard staat die knop er wel. */
2799
+ 'noPicker'?: NLDDTimeField['noPicker'];
2800
+ /** Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field. */
2801
+ 'input-id'?: NLDDTimeField['inputId'];
2802
+ /** Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field. */
2803
+ 'inputId'?: NLDDTimeField['inputId'];
2804
+ /** Placeholdertekst. Zet hier geen formaat in; gebruik daarvoor de supporting-label van nldd-form-field. */
2805
+ 'placeholder'?: NLDDTimeField['placeholder'];
2806
+ /** Markeert het veld als ongeldig. */
2807
+ 'invalid'?: NLDDTimeField['invalid'];
2808
+ /** Markeert het veld als geldig. */
2809
+ 'valid'?: NLDDTimeField['valid'];
2810
+ /** Uitgeschakelde staat. */
2811
+ 'disabled'?: NLDDTimeField['disabled'];
2812
+ /** Alleen-lezen staat. */
2813
+ 'readonly'?: NLDDTimeField['readonly'];
2814
+ /** Verplichte staat. */
2815
+ 'required'?: NLDDTimeField['required'];
2816
+ /** Naam voor formulierverzending. */
2817
+ 'name'?: NLDDTimeField['name'];
2818
+ /** Autocomplete-hint. */
2819
+ 'autocomplete'?: NLDDTimeField['autocomplete'];
2820
+ /** Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field. */
2821
+ 'accessible-label'?: NLDDTimeField['accessibleLabel'];
2822
+ /** Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field. */
2823
+ 'accessibleLabel'?: NLDDTimeField['accessibleLabel'];
2824
+ /** Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field. */
2825
+ 'error-message-ids'?: NLDDTimeField['errorMessageIds'];
2826
+ /** Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field. */
2827
+ 'errorMessageIds'?: NLDDTimeField['errorMessageIds'];
2828
+ /** Breedte. Standaard precies breed genoeg voor een tijd plus het validatie-icoon; 'full' vult de container, of geef een eigen CSS-lengte. */
2829
+ 'width'?: NLDDTimeField['width'];
2830
+ /** Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands. */
2831
+ 'translations'?: NLDDTimeField['translations'];
2832
+ 'internals'?: NLDDTimeField['internals'];
2833
+ /** Bij elke wijziging. detail: { value } met `HH:mm`, of '' zolang er geen geldige tijd staat. */
2834
+ 'onInput'?: (event: CustomEvent) => void;
2835
+ /** Wanneer de waarde is vastgelegd: bij het verlaten van het veld, en bij het sluiten van de picker op een manier die de keuze houdt. detail: { value } met `HH:mm`, of ''. */
2836
+ 'onChange'?: (event: CustomEvent) => void;
2837
+ };
2838
+
2839
+ type NLDDTimePickerProps = {
2840
+ /** De gekozen tijd als `HH:mm` (24-uurs). */
2841
+ 'value'?: NLDDTimePicker['value'];
2842
+ /** Vroegst toegestane tijd als `HH:mm`. Is tevens de basis waarvandaan `step` telt. */
2843
+ 'min'?: NLDDTimePicker['min'];
2844
+ /** Laatst toegestane tijd als `HH:mm`. */
2845
+ 'max'?: NLDDTimePicker['max'];
2846
+ /** Minutenstap (standaard 1). Bepaalt welke minuten in de kolom staan. */
2847
+ 'step'?: NLDDTimePicker['step'];
2848
+ /** Hoogte van de kolommen in rijen (standaard 7, minimaal 3). De gekozen waarde staat altijd in het midden, dus een oneven aantal toont hele rijen en een even aantal kapt boven en onder een halve rij af. */
2849
+ 'rows'?: NLDDTimePicker['rows'];
2850
+ /** Breedte: `full` vult de container, of geef een eigen CSS-lengte. */
2851
+ 'width'?: NLDDTimePicker['width'];
2852
+ /** Toegankelijke naam van de picker. */
2853
+ 'accessible-label'?: NLDDTimePicker['accessibleLabel'];
2854
+ /** Toegankelijke naam van de picker. */
2855
+ 'accessibleLabel'?: NLDDTimePicker['accessibleLabel'];
2856
+ /** Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands. */
2857
+ 'translations'?: NLDDTimePicker['translations'];
2858
+ /** Bij elke wijziging: scrollen, de pijltjestoetsen. detail: { value } met `HH:mm`. */
2859
+ 'onInput'?: (event: CustomEvent) => void;
2860
+ /** Wanneer de keuze is bevestigd: een klik op een waarde of op de selectie, of Enter. detail: { value } met `HH:mm`. Scrollen geeft alleen `input`, want anders zou een veld dat de picker in een popover toont al vastleggen zodra je stopt met scrollen. */
2861
+ 'onChange'?: (event: CustomEvent) => void;
2862
+ };
2863
+
2781
2864
  type NLDDTimelineTrackCellProps = {
2782
2865
  /** Status van deze stap (standaard 'past'); dezelfde waarden als `nldd-step-indicator-item`. `none` tekent alleen de lijn, zonder stip */
2783
2866
  'status'?: NLDDTimelineTrackCell['status'];
@@ -3285,9 +3368,9 @@ declare module 'vue' {
3285
3368
  'nldd-keyboard-shortcut': DefineComponent<NLDDKeyboardShortcutProps>;
3286
3369
  /** Hyperlink component met twee modi: 1. **Standalone (sized)** — set `size="xs"|"sm"|"md"|"lg"` voor menu's, actiegebieden of overzichten. Vaste tekstgrootte, `display: inline-flex` met `gap` voor icon-spacing. 2. **Inline (inherit)** — laat `size` weg of zet expliciet `size="inherit"`. De link erft `font-size`, `line-height` en `font-family` van zijn omgeving. Tekst wraps natuurlijk over regels (`display: inline`). Icons werken ook hier; de natuurlijke whitespace tussen icon en tekst zorgt voor de spacing. Voor links in CMS/markdown-output (waar de `<a>` als HTML binnenkomt) blijft `<nldd-rich-text>` met raw `<a>` de aangewezen route. */
3287
3370
  'nldd-link': DefineComponent<NLDDLinkProps>;
3288
- /** A container for `nldd-list-item` elements. The `type` attribute switches the list's a11y role and behavior: - `list` (default) — `role="list"`, items `role="listitem"`. Reorderable allowed. - `tree` — `role="tree"`, items `role="treeitem"`. Branch rows put their child rows in their own `slot="children"`, which the item renders as a `role="group"`. Level, position and set size are NOT authored: the nesting represents the hierarchy, so assistive technology derives them. A branch row must carry `expanded`; the group is hidden while it is false. Visual indentation is the consumer's — repeat a spacer-cell per level. Comes with its own keyboard, see "Tree" below. - `navigation` — host `role="navigation"`, items with `selected` get `aria-current="page"` on their inner `<a>` or `<button>`. - `listbox` — an accessible, filterable listbox (combobox pattern). The list renders its OWN search input (`role="combobox"`) pinned above the options; `.list__items` becomes `role="listbox"` and items become `role="option"`. Focus stays in the input, the active option moves via `aria-activedescendant`, and filtering is consumer-managed via the `input` event (toggle `[hidden]` on items). See "Listbox" below. Selection state is consumer-managed: the list never mutates `selected` itself. In `type="listbox"` the list owns a native `<input role="combobox">` (mirroring how `nldd-combo-box` wires an input to a slotted listbox). Keyboard, handled on the input so focus never leaves it: - ArrowDown / ArrowUp — move the active option among the VISIBLE (non-`[hidden]`) options (wrap around). - Home / End — first / last visible option. - Enter — activate the active option by triggering its inner action (a link navigates, a button fires the consumer's handler). Selection stays consumer-managed. - Escape — clear the search value (and refire `input`). On every active change the input's `aria-activedescendant` is set to the active option's id and the option is scrolled into view. The active option (`_highlighted` on the item, a highlight) is distinct from `selected`. Filtering is the consumer's job: listen to `input` (`{ detail: { value } }`) and toggle `[hidden]` on items; after the visible set changes the list resets the active option to the first visible one. `reorderable` and `arrow-navigation` are ignored in listbox mode (listbox has its own keyboard). A tree is a composite widget, so it brings its own keyboard — `arrow-navigation` is implied and needn't be set: - ArrowDown / ArrowUp — move between the rows in the order they appear on screen, the rows of an open branch included. - Home / End — first / last row. - ArrowRight — opens a closed branch; on an open one it steps to its first child. - ArrowLeft — closes an open branch; on a leaf it steps out to the parent row. - Enter / Space — open and close, the same as Right and Left. Only while focus sits on the row itself: a row that is its own control, and a segmented action you tabbed into, handle both keys themselves. Opening and closing runs through the row's own disclosure control — the segmented action marked `disclosure`, or the row itself when it is a button. The list activates that control rather than writing `expanded`, so the state keeps being set in one place: the consumer's handler. A row that is a link is never activated this way, since that would navigate away. The tree is one tab stop. Focus lands on the row itself when the row has no control of its own, because that is where `treeitem` sits and it makes assistive technology announce the row rather than a button inside it. Tab then walks the controls of THAT row (a chevron beside a checkbox, say) and leaves the list after the last one. A deliberate deviation: strictly speaking a row with several controls is a `treegrid`, not a `tree`. We keep the tree semantics — level and set size are what matters here, not rows and columns — and borrow the "Tab within the row" behaviour from the grid pattern. Should a tree with real columns come up, that is when `treegrid` earns its own type. On reorder (type="list" + reorderable), the list dispatches `nldd-reorder` with `fromIndex` / `toIndex` and expects the consumer to mutate the DOM (or their data model that renders the DOM). Focus is restored to the moved item's drag handle via a single `requestAnimationFrame` — this assumes the consumer reorders **synchronously** in the event handler. Async renderers (React, Vue, …) that update the DOM on a later tick will miss the focus restore and should manage focus themselves after their render commits. */
3371
+ /** A container for `nldd-list-item` elements. The `type` attribute switches the list's a11y role and behavior: - `list` (default) — `role="list"`, items `role="listitem"`. Reorderable allowed. - `tree` — `role="tree"`, items `role="treeitem"`. Branch rows put their child rows in their own `slot="children"`, which the item renders as a `role="group"`. Level, position and set size are NOT authored: the nesting represents the hierarchy, so assistive technology derives them. A branch row must carry `expanded`; the group is hidden while it is false. Visual indentation is the consumer's — repeat a spacer-cell per level. Comes with its own keyboard, see "Tree" below. - `navigation` — host `role="navigation"`, items with `selected` get `aria-current="page"` on their inner `<a>` or `<button>`. - `listbox` — an accessible, filterable listbox (combobox pattern). The list renders its OWN search input (`role="combobox"`) pinned above the options; `.list__items` becomes `role="listbox"` and items become `role="option"`. Focus stays in the input, the active option moves via `aria-activedescendant`, and filtering is consumer-managed via the `input` event (toggle `[hidden]` on items). See "Listbox" below. Selection state is consumer-managed: the list never mutates `selected` itself. In `type="listbox"` the list owns a native `<input role="combobox">` (mirroring how `nldd-combo-box` wires an input to a slotted listbox). Keyboard, handled on the input so focus never leaves it: - ArrowDown / ArrowUp — move the active option among the VISIBLE (non-`[hidden]`) options (wrap around). - Home / End — first / last visible option. - Enter — activate the active option by triggering its inner action (a link navigates, a button fires the consumer's handler). Selection stays consumer-managed. - Escape — clear the search value (and refire `input`). On every active change the input's `aria-activedescendant` is set to the active option's id and the option is scrolled into view. The active option (`_highlighted` on the item, a highlight) is distinct from `selected`. Filtering is the consumer's job: listen to `input` (`{ detail: { value } }`) and toggle `[hidden]` on items; after the visible set changes the list resets the active option to the first visible one. `reorderable` and `arrow-navigation` are ignored in listbox mode (listbox has its own keyboard). A tree is a composite widget, so it brings its own keyboard — `arrow-navigation` is implied and needn't be set: - ArrowDown / ArrowUp — move between the rows in the order they appear on screen, the rows of an open branch included. - Home / End — first / last row. - ArrowRight — opens a closed branch; on an open one it steps to its first child. - ArrowLeft — closes an open branch; on a leaf it steps out to the parent row. - Enter / Space — open and close, the same as Right and Left. Only while focus sits on the row itself: a row that is its own control, and a segmented action you tabbed into, handle both keys themselves. Opening and closing runs through the row's own disclosure control — the segmented action marked `disclosure`, or the row itself when it is a button. The list activates that control rather than writing `expanded`, so the state keeps being set in one place: the consumer's handler. A row that is a link is never activated this way, since that would navigate away. The tree is one tab stop. Focus lands on the row itself when the row has no control of its own, because that is where `treeitem` sits and it makes assistive technology announce the row rather than a button inside it. Tab then walks the controls of THAT row (a chevron beside a checkbox, say) and leaves the list after the last one. A deliberate deviation: strictly speaking a row with several controls is a `treegrid`, not a `tree`. We keep the tree semantics — level and set size are what matters here, not rows and columns — and borrow the "Tab within the row" behavior from the grid pattern. Should a tree with real columns come up, that is when `treegrid` earns its own type. On reorder (type="list" + reorderable), the list dispatches `nldd-reorder` with `fromIndex` / `toIndex` and expects the consumer to mutate the DOM (or their data model that renders the DOM). Focus is restored to the moved item's drag handle via a single `requestAnimationFrame` — this assumes the consumer reorders **synchronously** in the event handler. Async renderers (React, Vue, …) that update the DOM on a later tick will miss the focus restore and should manage focus themselves after their render commits. */
3289
3372
  'nldd-list': DefineComponent<NLDDListProps>;
3290
- /** A row within an `nldd-list`. Renders as a link when `href` is set, as a checkbox when `checkbox` is set, as a button when `button` is set, or as a plain container otherwise. All cells and action segmented actions share one flat slot, in source order. Two rules govern every row: 1. State fills always paint the WIDENED row geometry — the row box extended by the indicator inline inset on both sides — whether or not the row is interactive. Paint never differs between a selected plain row and a selected interactive row. 2. The widened strip belongs to the ROW, never to a segment. A row with any action (its own `href`/`button`/`checkbox`, or a slotted segment) pulls itself outward (`is-interactive` host class → negative inline margin) and pads the row block back by the same amount, so content stays on the grid. A row-wide action owns that padding itself, making the whole widened box one hit area; slotted segmented actions stay in the grid, so their footprint is position-independent and tree columns line up at any depth. The divider spans the content width by default, with one exception: a row that opens with an `nldd-icon-cell` followed by a text or title cell starts the divider at that text, so the line aligns with the words rather than the icon. Leading spacers are ignored when deciding this. Mark a cell with `divider-start` and/or `divider-end` to place it yourself instead — an explicit marker replaces the derived one entirely, so `divider-start` on the icon cell restores the full-width line. Multiple markers resolve as the union: first `divider-start` through last `divider-end`. A start past the last end is an authoring error — the item DEV-warns and falls back to the full content width. A branch row can disclose its children in two ways: a dedicated `nldd-list-item-action[disclosure]` segment (only the chevron is clickable), or the row itself as the control (`button` + `expanded`, the whole row toggles). In the second case, mark the chevron's `nldd-icon-cell` with `disclosure` and the row turns it with `expanded` — the same affordance, without having to trade a clickable row for a turning chevron. `checkbox` makes the WHOLE row the control: the inner action becomes a `role="checkbox"` button carrying `aria-checked`, it toggles `checked` on activation and fires `change`. Slot a visual `nldd-checkbox` (or any glyph) before the text and mark it `aria-hidden` + non-focusable — the row already conveys role and state, and a second focusable control would double the tab stops. Do NOT nest a real `<input type="checkbox">` in the action: interactive content inside a `<button>` is invalid HTML and AT announces the button, not the checked state. A `<label>` variant is not offered for the same reason it cannot work — label-to-input association walks the DOM tree, and a slotted input is not a descendant of a label in the shadow root. When it renders as a link, `target` and `rel` are forwarded to the inner `<a>` (e.g. `target="_blank" rel="noopener noreferrer"`). With `target="_blank"` the item also injects a visually hidden "opens in new tab" announcement for assistive technology (WCAG 2.1 SC 3.2.2). The item synchronises its ARIA with its parent `nldd-list`'s `type`: - `list` parent → `role="listitem"` - `navigation` parent → `role="listitem"` + `aria-current="page"` on the inner `<a>` / `<button>` when `selected` - `listbox` parent → `role="option"` + `aria-selected` reflecting `selected`. The list points its search input's `aria-activedescendant` at the active option via `_highlighted` (separate from `selected`). */
3373
+ /** A row within an `nldd-list`. Renders as a link when `href` is set, as a checkbox when `checkbox` is set, as a button when `button` is set, or as a plain container otherwise. All cells and action segmented actions share one flat slot, in source order. Two rules govern every row: 1. State fills always paint the WIDENED row geometry — the row box extended by the indicator inline inset on both sides — whether or not the row is interactive. Paint never differs between a selected plain row and a selected interactive row. 2. The widened strip belongs to the ROW, never to a segment. A row with any action (its own `href`/`button`/`checkbox`, or a slotted segment) pulls itself outward (`is-interactive` host class → negative inline margin) and pads the row block back by the same amount, so content stays on the grid. A row-wide action owns that padding itself, making the whole widened box one hit area; slotted segmented actions stay in the grid, so their footprint is position-independent and tree columns line up at any depth. The divider spans the content width by default, with one exception: a row that opens with an `nldd-icon-cell` followed by a text or title cell starts the divider at that text, so the line aligns with the words rather than the icon. Leading spacers are ignored when deciding this. Mark a cell with `divider-start` and/or `divider-end` to place it yourself instead — an explicit marker replaces the derived one entirely, so `divider-start` on the icon cell restores the full-width line. Multiple markers resolve as the union: first `divider-start` through last `divider-end`. A start past the last end is an authoring error — the item DEV-warns and falls back to the full content width. A branch row can disclose its children in two ways: a dedicated `nldd-list-item-action[disclosure]` segment (only the chevron is clickable), or the row itself as the control (`button` + `expanded`, the whole row toggles). In the second case, mark the chevron's `nldd-icon-cell` with `disclosure` and the row turns it with `expanded` — the same affordance, without having to trade a clickable row for a turning chevron. `checkbox` makes the WHOLE row the control: the inner action becomes a `role="checkbox"` button carrying `aria-checked`, it toggles `checked` on activation and fires `change`. Slot a visual `nldd-checkbox` (or any glyph) before the text and mark it `aria-hidden` + non-focusable — the row already conveys role and state, and a second focusable control would double the tab stops. Do NOT nest a real `<input type="checkbox">` in the action: interactive content inside a `<button>` is invalid HTML and AT announces the button, not the checked state. A `<label>` variant is not offered for the same reason it cannot work — label-to-input association walks the DOM tree, and a slotted input is not a descendant of a label in the shadow root. When it renders as a link, `target` and `rel` are forwarded to the inner `<a>` (e.g. `target="_blank" rel="noopener noreferrer"`). With `target="_blank"` the item also injects a visually hidden "opens in new tab" announcement for assistive technology (WCAG 2.1 SC 3.2.2). The item synchronizes its ARIA with its parent `nldd-list`'s `type`: - `list` parent → `role="listitem"` - `navigation` parent → `role="listitem"` + `aria-current="page"` on the inner `<a>` / `<button>` when `selected` - `listbox` parent → `role="option"` + `aria-selected` reflecting `selected`. The list points its search input's `aria-activedescendant` at the active option via `_highlighted` (separate from `selected`). */
3291
3374
  'nldd-list-item': DefineComponent<NLDDListItemProps>;
3292
3375
  /** A segmented action inside an `nldd-list-item`: it groups a run of cells and makes just that run clickable. Use it when a row needs more than one action — a tree row whose chevron expands while the label toggles a checkbox, or a row that navigates with a separate button beside it. Put it in the row where its cells would go: the item has one flat slot, and a segmented action takes the place of the cells it covers. Where the divider starts or stops is marked on the cells themselves (`divider-start` / `divider-end`), not by the slot an action sits in. A row is EITHER row-level interactive (`href` / `button` / `checkbox` on the `nldd-list-item`) OR segmented (one or more of these). Both at once nests a control inside a control, which is invalid HTML; the item DEV-warns. Unlike the row-wide action this does not bleed outward: a segmented action sits between siblings, so an outward inset would overlap them. It owns its inline padding and never drops below the row's control size, so an icon-only one still meets the WCAG 2.5.8 target size — do not add spacer cells inside it for room or hit area, that doubles the space. In a `type="listbox"` list the segmented action renders as a plain container (no control, not focusable) and DEV-warns: an `option` may not contain interactive descendants. The cells render unchanged, so nothing shifts. */
3293
3376
  'nldd-list-item-action': DefineComponent<NLDDListItemActionProps>;
@@ -3394,6 +3477,10 @@ declare module 'vue' {
3394
3477
  /** A hybrid markdown editor built on CodeMirror 6 (via NLDDCodeMirrorElement): the document stays plain markdown text, but formatting is shown inline (bold is bold, headings are larger, links are colored) while the syntax markers stay visible, only dimmed — the iA Writer / Kirby approach. No WYSIWYG tree, so the data stays portable. Default `variant="simple"` is bare (no frame, no focus ring) for use inside a composition (e.g. a message field) that owns its chrome and focus; the caret is a prominent accent. `variant="input-field"` adds a framed surface + focus ring. `font` is `sans` (default, best for prose) or `mono`. Headless: there is no built-in toolbar. A consumer drives formatting via the command methods (toggleBold/toggleItalic/toggleInlineCode/toggleStrikethrough/ toggleHeading/toggleBulletList/toggleQuote/toggleLink/runCommand to toggle, and setHeading/setList for picker-style "set" semantics), reads the active formats with getState(), listens to the nldd-text-editor-state event to render toggle states, and forwards padding clicks with focusFromPoint(). Cmd/Ctrl+B/I/E/K are bound out of the box. Commands keep focus on the editor. An @-mention typeahead (mentionSource) collapses to an atomic token, and a W3C-style annotation overlay (annotations) marks ranges with a dashed underline, light tint and a count badge without touching the underlying text. */
3395
3478
  'nldd-text-editor': DefineComponent<NLDDTextEditorProps>;
3396
3479
  'nldd-text-field': DefineComponent<NLDDTextFieldProps>;
3480
+ /** Een tekstveld voor een tijd. De waarde is altijd 24-uurs `HH:mm`; dat is in het Nederlands ook de weergave, dus anders dan bij nldd-date-field valt er niets om te rekenen. Er wordt niet gemaskeerd tijdens het typen: invoer wordt royaal geaccepteerd en pas bij het verlaten van het veld genormaliseerd. Foutmeldingen horen bij nldd-form-field, niet hier. Dit veld reflecteert alleen `invalid` / `valid`, net als nldd-text-field. Wat je in de picker doet is een voorbeeld tot je hem verlaat: het veld toont de tijd meteen, maar legt hem pas vast bij het sluiten. "Klaar" en Enter houden de keuze, een klik ernaast ook zodra je iets gekozen hebt, en Annuleer en Escape zetten de oude tijd terug. Op een leeg veld openen de wielen op `min`, of anders op de huidige tijd afgerond op `step`; dat vult het veld nog niet in. */
3481
+ 'nldd-time-field': DefineComponent<NLDDTimeFieldProps>;
3482
+ /** Twee kolommen, uren en minuten, die als een wiel langs de selectie in het midden schuiven. Het component is zelfstandig bruikbaar (inline op een pagina, in een filterpaneel) en zit ook in de popover van nldd-time-field. Waarden zijn altijd 24-uurs `HH:mm`. Scrollen ís kiezen: wat in het midden tot stilstand komt, is de waarde. Met het toetsenbord bedien je de selectie, want dat is wat een wiel is: uur en minuut zijn er elk een spinbutton. De kolommen eronder staan op aria-hidden, zodat dezelfde waarden niet twee keer worden voorgelezen. */
3483
+ 'nldd-time-picker': DefineComponent<NLDDTimePickerProps>;
3397
3484
  /** A cell component for displaying timeline track indicators in lists. Shows a vertical line with a dot indicating timeline position and state. The row's block padding belongs to the cell itself (via `--context-cell-padding-block`), so the line spans the cell's own box edge to edge and consecutive steps connect without gaps. Standaard is de cel een kaal spoor: een lijn met een stip per rij, voor een tijdlijn van gebeurtenissen. Met `variant="step"` wordt de stip groot genoeg voor een cijfer of icoon en heb je een stappenlijst onder elkaar, de verticale tegenhanger van `nldd-step-indicator`. De maat hoort bij de variant en niet bij de inhoud: elke stip in een lijst is even groot, anders verspringt het spoor. */
3398
3485
  'nldd-timeline-track-cell': DefineComponent<NLDDTimelineTrackCellProps>;
3399
3486
  /** A title bar with an optional overline, title, and subtitle on the left, and a slot for actions on the right. */
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "@nldd/design-system",
3
- "version": "0.8.76",
3
+ "version": "0.8.78",
4
4
  "description": "Design System voor Nederlandse Digitale Dienst",
5
5
  "type": "module",
6
6
  "main": "dist/components/components.js",
7
7
  "module": "dist/components/components.js",
8
+ "unpkg": "dist/nldd.min.js",
9
+ "jsdelivr": "dist/nldd.min.js",
8
10
  "exports": {
9
11
  ".": "./dist/components/components.js",
12
+ "./bundle": "./dist/nldd.min.js",
10
13
  "./button": {
11
14
  "types": "./dist/components/actions/button/button.d.ts",
12
15
  "default": "./dist/components/actions/button/button.js"
@@ -179,6 +182,14 @@
179
182
  "types": "./dist/components/inputs/text-field/text-field.d.ts",
180
183
  "default": "./dist/components/inputs/text-field/text-field.js"
181
184
  },
185
+ "./time-field": {
186
+ "types": "./dist/components/inputs/time-field/time-field.d.ts",
187
+ "default": "./dist/components/inputs/time-field/time-field.js"
188
+ },
189
+ "./time-picker": {
190
+ "types": "./dist/components/inputs/time-picker/time-picker.d.ts",
191
+ "default": "./dist/components/inputs/time-picker/time-picker.js"
192
+ },
182
193
  "./toggle-button": {
183
194
  "types": "./dist/components/inputs/toggle-button/toggle-button.d.ts",
184
195
  "default": "./dist/components/inputs/toggle-button/toggle-button.js"
@@ -461,13 +472,13 @@
461
472
  "validate:styles": "node scripts/validate-css-variables.js",
462
473
  "validate:host-styles": "node scripts/validate-host-styles.js",
463
474
  "validate:component-api": "node scripts/validate-component-api.js",
464
- "build:components": "npm run clean:components && npm run build:icons && npm run build:components:modules && npm run build:components:bundle && npm run build:exports && npm run generate:cem",
475
+ "build:components": "npm run clean:components && npm run build:icons && npm run build:components:modules && npm run build:components:bundle && npm run build:components:standalone && npm run build:exports && npm run generate:cem",
465
476
  "build:icons": "node scripts/generate-icon-registry.js && node scripts/generate-logo.js",
466
477
  "build:components:modules": "tsc -p tsconfig.build.json",
467
478
  "build:components:bundle": "vite build",
468
479
  "build:exports": "node scripts/generate-exports.js",
469
480
  "clean": "rm -rf dist",
470
- "clean:components": "rm -rf dist/components",
481
+ "clean:components": "rm -rf dist/components dist/nldd.min.js",
471
482
  "prestorybook": "npm run build:icons",
472
483
  "storybook": "storybook dev -p 6006",
473
484
  "sb:start": "node scripts/storybook-manager.js start",
@@ -488,7 +499,8 @@
488
499
  "test:scripts": "node --test scripts/*.test.mjs scripts/lib/*.test.mjs",
489
500
  "pretypecheck": "npm run build:icons",
490
501
  "typecheck": "tsc --noEmit",
491
- "test:vue-types": "vue-tsc --noEmit -p type-tests/vue/tsconfig.json"
502
+ "test:vue-types": "vue-tsc --noEmit -p type-tests/vue/tsconfig.json",
503
+ "build:components:standalone": "vite build --config vite.bundle.config.ts"
492
504
  },
493
505
  "devDependencies": {
494
506
  "@commitlint/cli": "^19.6.1",