@nldd/design-system 0.8.69 → 0.8.71

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 (639) hide show
  1. package/README.md +12 -5
  2. package/custom-elements.json +31949 -0
  3. package/dist/assets/styles/style-resets.d.ts +1 -1
  4. package/dist/assets/styles/style-resets.js +1 -1
  5. package/dist/components/actions/button/button.d.ts +12 -5
  6. package/dist/components/actions/button/button.d.ts.map +1 -1
  7. package/dist/components/actions/button/button.i18n.d.ts +1 -1
  8. package/dist/components/actions/button/button.i18n.js +1 -1
  9. package/dist/components/actions/button/button.i18n.js.map +1 -1
  10. package/dist/components/actions/button/button.js +21 -4
  11. package/dist/components/actions/button/button.js.map +1 -1
  12. package/dist/components/actions/button/button.styles.d.ts.map +1 -1
  13. package/dist/components/actions/button/button.styles.js +14 -3
  14. package/dist/components/actions/button/button.styles.js.map +1 -1
  15. package/dist/components/actions/button/button.template.js +1 -1
  16. package/dist/components/actions/button/button.template.js.map +1 -1
  17. package/dist/components/actions/button-bar/button-bar.d.ts.map +1 -1
  18. package/dist/components/actions/button-bar/button-bar.js +6 -0
  19. package/dist/components/actions/button-bar/button-bar.js.map +1 -1
  20. package/dist/components/actions/icon-button/icon-button.d.ts +26 -37
  21. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  22. package/dist/components/actions/icon-button/icon-button.i18n.d.ts +1 -1
  23. package/dist/components/actions/icon-button/icon-button.i18n.js +1 -1
  24. package/dist/components/actions/icon-button/icon-button.i18n.js.map +1 -1
  25. package/dist/components/actions/icon-button/icon-button.js +25 -36
  26. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  27. package/dist/components/actions/icon-button/icon-button.styles.d.ts.map +1 -1
  28. package/dist/components/actions/icon-button/icon-button.styles.js +2 -1
  29. package/dist/components/actions/icon-button/icon-button.styles.js.map +1 -1
  30. package/dist/components/actions/icon-button/icon-button.template.js +1 -1
  31. package/dist/components/actions/icon-button/icon-button.template.js.map +1 -1
  32. package/dist/components/actions/menu/menu.d.ts +47 -52
  33. package/dist/components/actions/menu/menu.d.ts.map +1 -1
  34. package/dist/components/actions/menu/menu.js +55 -54
  35. package/dist/components/actions/menu/menu.js.map +1 -1
  36. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  37. package/dist/components/actions/menu/menu.styles.js +8 -1
  38. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  39. package/dist/components/actions/menu/menu.template.js +1 -1
  40. package/dist/components/actions/menu/menu.template.js.map +1 -1
  41. package/dist/components/actions/toolbar/toolbar.d.ts +14 -4
  42. package/dist/components/actions/toolbar/toolbar.d.ts.map +1 -1
  43. package/dist/components/actions/toolbar/toolbar.js +34 -11
  44. package/dist/components/actions/toolbar/toolbar.js.map +1 -1
  45. package/dist/components/actions/toolbar/toolbar.styles.js +3 -3
  46. package/dist/components/components.js +88 -82
  47. package/dist/components/content/avatar/avatar.d.ts +44 -12
  48. package/dist/components/content/avatar/avatar.d.ts.map +1 -1
  49. package/dist/components/content/avatar/avatar.i18n.d.ts +5 -0
  50. package/dist/components/content/avatar/avatar.i18n.d.ts.map +1 -0
  51. package/dist/components/content/avatar/avatar.i18n.js +4 -0
  52. package/dist/components/content/avatar/avatar.i18n.js.map +1 -0
  53. package/dist/components/content/avatar/avatar.js +87 -13
  54. package/dist/components/content/avatar/avatar.js.map +1 -1
  55. package/dist/components/content/avatar/avatar.styles.d.ts.map +1 -1
  56. package/dist/components/content/avatar/avatar.styles.js +46 -10
  57. package/dist/components/content/avatar/avatar.styles.js.map +1 -1
  58. package/dist/components/content/avatar/avatar.template.d.ts +2 -1
  59. package/dist/components/content/avatar/avatar.template.d.ts.map +1 -1
  60. package/dist/components/content/avatar/avatar.template.js +53 -23
  61. package/dist/components/content/avatar/avatar.template.js.map +1 -1
  62. package/dist/components/content/byline/byline.d.ts +6 -6
  63. package/dist/components/content/byline/byline.js +6 -6
  64. package/dist/components/content/code-viewer/code-viewer.d.ts.map +1 -1
  65. package/dist/components/content/code-viewer/code-viewer.js +4 -2
  66. package/dist/components/content/code-viewer/code-viewer.js.map +1 -1
  67. package/dist/components/content/code-viewer/code-viewer.styles.d.ts.map +1 -1
  68. package/dist/components/content/code-viewer/code-viewer.styles.js +5 -4
  69. package/dist/components/content/code-viewer/code-viewer.styles.js.map +1 -1
  70. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  71. package/dist/components/content/icon/icon-aliases.js +36 -5
  72. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  73. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  74. package/dist/components/content/icon/icon-registry.js +42 -6
  75. package/dist/components/content/icon/icon-registry.js.map +1 -1
  76. package/dist/components/content/icon/icon.d.ts +14 -16
  77. package/dist/components/content/icon/icon.d.ts.map +1 -1
  78. package/dist/components/content/icon/icon.js +13 -15
  79. package/dist/components/content/icon/icon.js.map +1 -1
  80. package/dist/components/content/icon/icon.styles.d.ts.map +1 -1
  81. package/dist/components/content/icon/icon.styles.js +7 -4
  82. package/dist/components/content/icon/icon.styles.js.map +1 -1
  83. package/dist/components/content/image/image.d.ts +11 -9
  84. package/dist/components/content/image/image.d.ts.map +1 -1
  85. package/dist/components/content/image/image.js +11 -9
  86. package/dist/components/content/image/image.js.map +1 -1
  87. package/dist/components/content/image/image.styles.js +2 -2
  88. package/dist/components/content/image/image.template.js +2 -2
  89. package/dist/components/content/image/image.template.js.map +1 -1
  90. package/dist/components/content/image/lqip-encoder-element.d.ts.map +1 -1
  91. package/dist/components/content/image/lqip-encoder-element.js +1 -0
  92. package/dist/components/content/image/lqip-encoder-element.js.map +1 -1
  93. package/dist/components/content/image/lqip-encoder.js +1 -1
  94. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.d.ts +4 -0
  95. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.d.ts.map +1 -1
  96. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js +4 -0
  97. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  98. package/dist/components/content/keyboard-shortcut/keyboard-shortcut.styles.js +2 -2
  99. package/dist/components/content/rich-text/rich-text.d.ts +4 -4
  100. package/dist/components/content/rich-text/rich-text.js +4 -4
  101. package/dist/components/content/token/token.d.ts +7 -7
  102. package/dist/components/content/token/token.js +7 -7
  103. package/dist/components/content/token/token.styles.d.ts.map +1 -1
  104. package/dist/components/content/token/token.styles.js +1 -0
  105. package/dist/components/content/token/token.styles.js.map +1 -1
  106. package/dist/components/content/tooltip/tooltip.d.ts +4 -14
  107. package/dist/components/content/tooltip/tooltip.d.ts.map +1 -1
  108. package/dist/components/content/tooltip/tooltip.js +4 -14
  109. package/dist/components/content/tooltip/tooltip.js.map +1 -1
  110. package/dist/components/forms/form/form.d.ts +10 -19
  111. package/dist/components/forms/form/form.d.ts.map +1 -1
  112. package/dist/components/forms/form/form.js +10 -19
  113. package/dist/components/forms/form/form.js.map +1 -1
  114. package/dist/components/forms/form-actions/form-actions.d.ts +2 -6
  115. package/dist/components/forms/form-actions/form-actions.d.ts.map +1 -1
  116. package/dist/components/forms/form-actions/form-actions.js +2 -6
  117. package/dist/components/forms/form-actions/form-actions.js.map +1 -1
  118. package/dist/components/forms/form-field/form-field.d.ts +7 -14
  119. package/dist/components/forms/form-field/form-field.d.ts.map +1 -1
  120. package/dist/components/forms/form-field/form-field.js +7 -14
  121. package/dist/components/forms/form-field/form-field.js.map +1 -1
  122. package/dist/components/forms/form-field/form-field.styles.d.ts.map +1 -1
  123. package/dist/components/forms/form-field/form-field.styles.js +15 -2
  124. package/dist/components/forms/form-field/form-field.styles.js.map +1 -1
  125. package/dist/components/forms/form-section/form-section.d.ts +2 -3
  126. package/dist/components/forms/form-section/form-section.d.ts.map +1 -1
  127. package/dist/components/forms/form-section/form-section.js +2 -3
  128. package/dist/components/forms/form-section/form-section.js.map +1 -1
  129. package/dist/components/{index-Bf4pa5Bp.js → index-CDK46KLh.js} +1 -1
  130. package/dist/components/{index-CXC-Objp.js → index-CbaaFM8N.js} +1 -1
  131. package/dist/components/{index-DZo3DrGQ.js → index-DRtuMofR.js} +1 -1
  132. package/dist/components/{index-BfOpap4b.js → index-DuvuHfMi.js} +1 -1
  133. package/dist/components/{index-CfvgUB5p.js → index-DzJola_U.js} +1 -1
  134. package/dist/components/{index-DB-i084x.js → index-n8evy8Za.js} +1 -1
  135. package/dist/components/{index-VwuVCCal.js → index-t08wCuGl.js} +11121 -7148
  136. package/dist/components/index.d.ts +5 -0
  137. package/dist/components/index.d.ts.map +1 -1
  138. package/dist/components/index.js +5 -0
  139. package/dist/components/index.js.map +1 -1
  140. package/dist/components/inputs/checkbox/checkbox.d.ts +11 -11
  141. package/dist/components/inputs/checkbox/checkbox.d.ts.map +1 -1
  142. package/dist/components/inputs/checkbox/checkbox.js +11 -15
  143. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  144. package/dist/components/inputs/checkbox/checkbox.styles.d.ts.map +1 -1
  145. package/dist/components/inputs/checkbox/checkbox.styles.js +2 -1
  146. package/dist/components/inputs/checkbox/checkbox.styles.js.map +1 -1
  147. package/dist/components/inputs/checkbox-field/checkbox-field.d.ts +20 -6
  148. package/dist/components/inputs/checkbox-field/checkbox-field.d.ts.map +1 -1
  149. package/dist/components/inputs/checkbox-field/checkbox-field.js +29 -7
  150. package/dist/components/inputs/checkbox-field/checkbox-field.js.map +1 -1
  151. package/dist/components/inputs/code-editor/code-editor.d.ts +19 -18
  152. package/dist/components/inputs/code-editor/code-editor.d.ts.map +1 -1
  153. package/dist/components/inputs/code-editor/code-editor.js +23 -23
  154. package/dist/components/inputs/code-editor/code-editor.js.map +1 -1
  155. package/dist/components/inputs/code-editor/code-editor.styles.js +2 -2
  156. package/dist/components/inputs/combo-box/combo-box.d.ts +26 -29
  157. package/dist/components/inputs/combo-box/combo-box.d.ts.map +1 -1
  158. package/dist/components/inputs/combo-box/combo-box.js +74 -39
  159. package/dist/components/inputs/combo-box/combo-box.js.map +1 -1
  160. package/dist/components/inputs/combo-box/combo-box.styles.js +7 -7
  161. package/dist/components/inputs/date-field/date-field.d.ts +227 -0
  162. package/dist/components/inputs/date-field/date-field.d.ts.map +1 -0
  163. package/dist/components/inputs/date-field/date-field.i18n.d.ts +11 -0
  164. package/dist/components/inputs/date-field/date-field.i18n.d.ts.map +1 -0
  165. package/dist/components/inputs/date-field/date-field.i18n.js +17 -0
  166. package/dist/components/inputs/date-field/date-field.i18n.js.map +1 -0
  167. package/dist/components/inputs/date-field/date-field.js +586 -0
  168. package/dist/components/inputs/date-field/date-field.js.map +1 -0
  169. package/dist/components/inputs/date-field/date-field.styles.d.ts +2 -0
  170. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -0
  171. package/dist/components/inputs/date-field/date-field.styles.js +246 -0
  172. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -0
  173. package/dist/components/inputs/date-field/date-field.template.d.ts +17 -0
  174. package/dist/components/inputs/date-field/date-field.template.d.ts.map +1 -0
  175. package/dist/components/inputs/date-field/date-field.template.js +141 -0
  176. package/dist/components/inputs/date-field/date-field.template.js.map +1 -0
  177. package/dist/components/inputs/date-picker/date-picker.d.ts +271 -0
  178. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -0
  179. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts +64 -0
  180. package/dist/components/inputs/date-picker/date-picker.i18n.d.ts.map +1 -0
  181. package/dist/components/inputs/date-picker/date-picker.i18n.js +81 -0
  182. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -0
  183. package/dist/components/inputs/date-picker/date-picker.js +768 -0
  184. package/dist/components/inputs/date-picker/date-picker.js.map +1 -0
  185. package/dist/components/inputs/date-picker/date-picker.styles.d.ts +2 -0
  186. package/dist/components/inputs/date-picker/date-picker.styles.d.ts.map +1 -0
  187. package/dist/components/inputs/date-picker/date-picker.styles.js +345 -0
  188. package/dist/components/inputs/date-picker/date-picker.styles.js.map +1 -0
  189. package/dist/components/inputs/date-picker/date-picker.template.d.ts +8 -0
  190. package/dist/components/inputs/date-picker/date-picker.template.d.ts.map +1 -0
  191. package/dist/components/inputs/date-picker/date-picker.template.js +223 -0
  192. package/dist/components/inputs/date-picker/date-picker.template.js.map +1 -0
  193. package/dist/components/inputs/dropdown/dropdown.d.ts +4 -4
  194. package/dist/components/inputs/dropdown/dropdown.js +4 -4
  195. package/dist/components/inputs/dropdown/dropdown.styles.d.ts.map +1 -1
  196. package/dist/components/inputs/dropdown/dropdown.styles.js +1 -0
  197. package/dist/components/inputs/dropdown/dropdown.styles.js.map +1 -1
  198. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts +22 -21
  199. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.d.ts.map +1 -1
  200. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js +24 -26
  201. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.js.map +1 -1
  202. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js +5 -5
  203. package/dist/components/inputs/number-field/number-field.d.ts +17 -20
  204. package/dist/components/inputs/number-field/number-field.d.ts.map +1 -1
  205. package/dist/components/inputs/number-field/number-field.js +20 -23
  206. package/dist/components/inputs/number-field/number-field.js.map +1 -1
  207. package/dist/components/inputs/number-field/number-field.styles.js +4 -4
  208. package/dist/components/inputs/password-field/password-field.d.ts +25 -23
  209. package/dist/components/inputs/password-field/password-field.d.ts.map +1 -1
  210. package/dist/components/inputs/password-field/password-field.js +27 -28
  211. package/dist/components/inputs/password-field/password-field.js.map +1 -1
  212. package/dist/components/inputs/password-field/password-field.styles.js +7 -7
  213. package/dist/components/inputs/radio-button/radio-button.d.ts +11 -8
  214. package/dist/components/inputs/radio-button/radio-button.d.ts.map +1 -1
  215. package/dist/components/inputs/radio-button/radio-button.js +10 -12
  216. package/dist/components/inputs/radio-button/radio-button.js.map +1 -1
  217. package/dist/components/inputs/radio-button/radio-button.styles.d.ts.map +1 -1
  218. package/dist/components/inputs/radio-button/radio-button.styles.js +3 -2
  219. package/dist/components/inputs/radio-button/radio-button.styles.js.map +1 -1
  220. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts +25 -5
  221. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts.map +1 -1
  222. package/dist/components/inputs/radio-button-field/radio-button-field.js +33 -6
  223. package/dist/components/inputs/radio-button-field/radio-button-field.js.map +1 -1
  224. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts +3 -2
  225. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts.map +1 -1
  226. package/dist/components/inputs/radio-button-group/radio-button-group.js +17 -9
  227. package/dist/components/inputs/radio-button-group/radio-button-group.js.map +1 -1
  228. package/dist/components/inputs/search-field/search-field.d.ts +15 -17
  229. package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
  230. package/dist/components/inputs/search-field/search-field.js +19 -22
  231. package/dist/components/inputs/search-field/search-field.js.map +1 -1
  232. package/dist/components/inputs/search-field/search-field.styles.js +5 -5
  233. package/dist/components/inputs/segmented-control/segmented-control.d.ts +31 -24
  234. package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
  235. package/dist/components/inputs/segmented-control/segmented-control.js +52 -53
  236. package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
  237. package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
  238. package/dist/components/inputs/segmented-control/segmented-control.styles.js +5 -4
  239. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  240. package/dist/components/inputs/stepper/stepper.d.ts +14 -13
  241. package/dist/components/inputs/stepper/stepper.d.ts.map +1 -1
  242. package/dist/components/inputs/stepper/stepper.js +13 -17
  243. package/dist/components/inputs/stepper/stepper.js.map +1 -1
  244. package/dist/components/inputs/stepper/stepper.styles.d.ts.map +1 -1
  245. package/dist/components/inputs/stepper/stepper.styles.js +1 -0
  246. package/dist/components/inputs/stepper/stepper.styles.js.map +1 -1
  247. package/dist/components/inputs/switch/switch.d.ts +12 -11
  248. package/dist/components/inputs/switch/switch.d.ts.map +1 -1
  249. package/dist/components/inputs/switch/switch.js +13 -16
  250. package/dist/components/inputs/switch/switch.js.map +1 -1
  251. package/dist/components/inputs/switch/switch.styles.d.ts.map +1 -1
  252. package/dist/components/inputs/switch/switch.styles.js +7 -6
  253. package/dist/components/inputs/switch/switch.styles.js.map +1 -1
  254. package/dist/components/inputs/switch-field/switch-field.d.ts +4 -4
  255. package/dist/components/inputs/switch-field/switch-field.js +4 -4
  256. package/dist/components/inputs/text-editor/text-editor.caret.d.ts +1 -1
  257. package/dist/components/inputs/text-editor/text-editor.caret.js +1 -1
  258. package/dist/components/inputs/text-editor/text-editor.commands.js +1 -1
  259. package/dist/components/inputs/text-editor/text-editor.d.ts +21 -21
  260. package/dist/components/inputs/text-editor/text-editor.d.ts.map +1 -1
  261. package/dist/components/inputs/text-editor/text-editor.js +27 -27
  262. package/dist/components/inputs/text-editor/text-editor.js.map +1 -1
  263. package/dist/components/inputs/text-editor/text-editor.links.js +4 -4
  264. package/dist/components/inputs/text-editor/text-editor.markdown.js +7 -7
  265. package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -1
  266. package/dist/components/inputs/text-editor/text-editor.ordered-list.js +1 -1
  267. package/dist/components/inputs/text-editor/text-editor.styles.js +14 -14
  268. package/dist/components/inputs/text-field/text-field.d.ts +20 -18
  269. package/dist/components/inputs/text-field/text-field.d.ts.map +1 -1
  270. package/dist/components/inputs/text-field/text-field.js +22 -23
  271. package/dist/components/inputs/text-field/text-field.js.map +1 -1
  272. package/dist/components/inputs/text-field/text-field.styles.js +3 -3
  273. package/dist/components/inputs/toggle-button/toggle-button.d.ts +14 -13
  274. package/dist/components/inputs/toggle-button/toggle-button.d.ts.map +1 -1
  275. package/dist/components/inputs/toggle-button/toggle-button.js +18 -18
  276. package/dist/components/inputs/toggle-button/toggle-button.js.map +1 -1
  277. package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
  278. package/dist/components/inputs/toggle-button/toggle-button.styles.js +1 -0
  279. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  280. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts +7 -7
  281. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts.map +1 -1
  282. package/dist/components/inputs/toggle-button-group/toggle-button-group.js +25 -17
  283. package/dist/components/inputs/toggle-button-group/toggle-button-group.js.map +1 -1
  284. package/dist/components/inputs/token-field/token-field.d.ts +24 -29
  285. package/dist/components/inputs/token-field/token-field.d.ts.map +1 -1
  286. package/dist/components/inputs/token-field/token-field.i18n.d.ts +1 -1
  287. package/dist/components/inputs/token-field/token-field.i18n.js +1 -1
  288. package/dist/components/inputs/token-field/token-field.i18n.js.map +1 -1
  289. package/dist/components/inputs/token-field/token-field.js +35 -39
  290. package/dist/components/inputs/token-field/token-field.js.map +1 -1
  291. package/dist/components/inputs/token-field/token-field.styles.js +4 -4
  292. package/dist/components/inputs/token-field/token-field.template.js +1 -1
  293. package/dist/components/inputs/token-field/token-field.template.js.map +1 -1
  294. package/dist/components/layout/app-view/app-view.d.ts +16 -4
  295. package/dist/components/layout/app-view/app-view.d.ts.map +1 -1
  296. package/dist/components/layout/app-view/app-view.js +18 -13
  297. package/dist/components/layout/app-view/app-view.js.map +1 -1
  298. package/dist/components/layout/box/box.d.ts +1 -1
  299. package/dist/components/layout/box/box.js +1 -1
  300. package/dist/components/layout/box/box.styles.d.ts.map +1 -1
  301. package/dist/components/layout/box/box.styles.js +8 -18
  302. package/dist/components/layout/box/box.styles.js.map +1 -1
  303. package/dist/components/layout/card/card.d.ts +26 -9
  304. package/dist/components/layout/card/card.d.ts.map +1 -1
  305. package/dist/components/layout/card/card.i18n.d.ts +1 -1
  306. package/dist/components/layout/card/card.i18n.js +1 -1
  307. package/dist/components/layout/card/card.i18n.js.map +1 -1
  308. package/dist/components/layout/card/card.js +51 -14
  309. package/dist/components/layout/card/card.js.map +1 -1
  310. package/dist/components/layout/card/card.styles.d.ts.map +1 -1
  311. package/dist/components/layout/card/card.styles.js +41 -4
  312. package/dist/components/layout/card/card.styles.js.map +1 -1
  313. package/dist/components/layout/card/card.template.d.ts.map +1 -1
  314. package/dist/components/layout/card/card.template.js +14 -6
  315. package/dist/components/layout/card/card.template.js.map +1 -1
  316. package/dist/components/layout/collection/collection.d.ts +3 -10
  317. package/dist/components/layout/collection/collection.d.ts.map +1 -1
  318. package/dist/components/layout/collection/collection.js +3 -10
  319. package/dist/components/layout/collection/collection.js.map +1 -1
  320. package/dist/components/layout/collection/collection.styles.d.ts.map +1 -1
  321. package/dist/components/layout/collection/collection.styles.js +21 -3
  322. package/dist/components/layout/collection/collection.styles.js.map +1 -1
  323. package/dist/components/layout/container/container.d.ts +47 -24
  324. package/dist/components/layout/container/container.d.ts.map +1 -1
  325. package/dist/components/layout/container/container.js +47 -24
  326. package/dist/components/layout/container/container.js.map +1 -1
  327. package/dist/components/layout/page/page.d.ts +1 -1
  328. package/dist/components/layout/page/page.js +2 -2
  329. package/dist/components/layout/page-footer/page-footer.d.ts +10 -12
  330. package/dist/components/layout/page-footer/page-footer.d.ts.map +1 -1
  331. package/dist/components/layout/page-footer/page-footer.js +11 -13
  332. package/dist/components/layout/page-footer/page-footer.js.map +1 -1
  333. package/dist/components/layout/page-footer/page-footer.styles.d.ts.map +1 -1
  334. package/dist/components/layout/page-footer/page-footer.styles.js +8 -1
  335. package/dist/components/layout/page-footer/page-footer.styles.js.map +1 -1
  336. package/dist/components/layout/page-footer/page-footer.template.js +1 -1
  337. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.d.ts +1 -3
  338. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.d.ts.map +1 -1
  339. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.js +1 -3
  340. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.js.map +1 -1
  341. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.d.ts +1 -3
  342. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.d.ts.map +1 -1
  343. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.js +1 -3
  344. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.js.map +1 -1
  345. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.d.ts +1 -3
  346. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.d.ts.map +1 -1
  347. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.js +1 -3
  348. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.js.map +1 -1
  349. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.d.ts +20 -18
  350. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.d.ts.map +1 -1
  351. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.js +26 -20
  352. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.js.map +1 -1
  353. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.styles.d.ts.map +1 -1
  354. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.styles.js +20 -2
  355. package/dist/components/layout/page-sections/sidebar-section/sidebar-section.styles.js.map +1 -1
  356. package/dist/components/layout/page-sections/simple-section/simple-section.d.ts +1 -3
  357. package/dist/components/layout/page-sections/simple-section/simple-section.d.ts.map +1 -1
  358. package/dist/components/layout/page-sections/simple-section/simple-section.js +1 -3
  359. package/dist/components/layout/page-sections/simple-section/simple-section.js.map +1 -1
  360. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.d.ts +1 -3
  361. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.d.ts.map +1 -1
  362. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.js +1 -3
  363. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.js.map +1 -1
  364. package/dist/components/layout/popover/popover.d.ts +34 -46
  365. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  366. package/dist/components/layout/popover/popover.js +99 -51
  367. package/dist/components/layout/popover/popover.js.map +1 -1
  368. package/dist/components/layout/sheet/sheet.d.ts +20 -16
  369. package/dist/components/layout/sheet/sheet.d.ts.map +1 -1
  370. package/dist/components/layout/sheet/sheet.js +62 -27
  371. package/dist/components/layout/sheet/sheet.js.map +1 -1
  372. package/dist/components/layout/sheet/sheet.styles.d.ts.map +1 -1
  373. package/dist/components/layout/sheet/sheet.styles.js +6 -1
  374. package/dist/components/layout/sheet/sheet.styles.js.map +1 -1
  375. package/dist/components/layout/sheet/sheet.template.d.ts.map +1 -1
  376. package/dist/components/layout/sheet/sheet.template.js +1 -0
  377. package/dist/components/layout/sheet/sheet.template.js.map +1 -1
  378. package/dist/components/layout/split-views/bar-split-view/bar-split-view.d.ts +4 -4
  379. package/dist/components/layout/split-views/bar-split-view/bar-split-view.js +4 -4
  380. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.d.ts +17 -17
  381. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.js +17 -17
  382. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts +1 -0
  383. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts.map +1 -1
  384. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js +5 -0
  385. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js.map +1 -1
  386. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.d.ts.map +1 -1
  387. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.js +27 -0
  388. package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.styles.js.map +1 -1
  389. package/dist/components/layout/split-views/split-view-pane/split-view-pane.d.ts +2 -2
  390. package/dist/components/layout/split-views/split-view-pane/split-view-pane.js +2 -2
  391. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.d.ts +2 -0
  392. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.d.ts.map +1 -1
  393. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.js +3 -0
  394. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.js.map +1 -1
  395. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.d.ts.map +1 -1
  396. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.js +24 -0
  397. package/dist/components/layout/split-views/stacked-split-view/stacked-split-view.styles.js.map +1 -1
  398. package/dist/components/layout/window/window.d.ts +34 -19
  399. package/dist/components/layout/window/window.d.ts.map +1 -1
  400. package/dist/components/layout/window/window.js +76 -29
  401. package/dist/components/layout/window/window.js.map +1 -1
  402. package/dist/components/layout/window/window.styles.d.ts.map +1 -1
  403. package/dist/components/layout/window/window.styles.js +5 -1
  404. package/dist/components/layout/window/window.styles.js.map +1 -1
  405. package/dist/components/layout/window/window.template.d.ts.map +1 -1
  406. package/dist/components/layout/window/window.template.js +2 -0
  407. package/dist/components/layout/window/window.template.js.map +1 -1
  408. package/dist/components/lists-and-tables/cells/cell/cell.styles.d.ts.map +1 -1
  409. package/dist/components/lists-and-tables/cells/cell/cell.styles.js +1 -0
  410. package/dist/components/lists-and-tables/cells/cell/cell.styles.js.map +1 -1
  411. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.d.ts.map +1 -1
  412. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js +1 -0
  413. package/dist/components/lists-and-tables/cells/description-cell/description-cell.styles.js.map +1 -1
  414. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.d.ts +2 -1
  415. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.d.ts.map +1 -1
  416. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.i18n.d.ts +1 -1
  417. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.i18n.js +1 -1
  418. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.i18n.js.map +1 -1
  419. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js +3 -2
  420. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.js.map +1 -1
  421. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.d.ts.map +1 -1
  422. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js +1 -0
  423. package/dist/components/lists-and-tables/cells/drag-handle-cell/drag-handle-cell.styles.js.map +1 -1
  424. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.d.ts.map +1 -1
  425. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js +1 -0
  426. package/dist/components/lists-and-tables/cells/icon-cell/icon-cell.styles.js.map +1 -1
  427. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.d.ts.map +1 -1
  428. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js +1 -0
  429. package/dist/components/lists-and-tables/cells/text-cell/text-cell.styles.js.map +1 -1
  430. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts +43 -9
  431. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.d.ts.map +1 -1
  432. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js +69 -9
  433. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.js.map +1 -1
  434. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.d.ts.map +1 -1
  435. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js +96 -43
  436. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.styles.js.map +1 -1
  437. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.template.d.ts.map +1 -1
  438. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.template.js +19 -7
  439. package/dist/components/lists-and-tables/cells/timeline-track-cell/timeline-track-cell.template.js.map +1 -1
  440. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.d.ts.map +1 -1
  441. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js +1 -0
  442. package/dist/components/lists-and-tables/cells/title-cell/title-cell.styles.js.map +1 -1
  443. package/dist/components/lists-and-tables/list/list.d.ts +89 -29
  444. package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
  445. package/dist/components/lists-and-tables/list/list.i18n.d.ts +4 -4
  446. package/dist/components/lists-and-tables/list/list.i18n.js +4 -4
  447. package/dist/components/lists-and-tables/list/list.i18n.js.map +1 -1
  448. package/dist/components/lists-and-tables/list/list.js +214 -68
  449. package/dist/components/lists-and-tables/list/list.js.map +1 -1
  450. package/dist/components/lists-and-tables/list/list.styles.d.ts.map +1 -1
  451. package/dist/components/lists-and-tables/list/list.styles.js +29 -22
  452. package/dist/components/lists-and-tables/list/list.styles.js.map +1 -1
  453. package/dist/components/lists-and-tables/list/list.template.d.ts.map +1 -1
  454. package/dist/components/lists-and-tables/list/list.template.js +4 -3
  455. package/dist/components/lists-and-tables/list/list.template.js.map +1 -1
  456. package/dist/components/lists-and-tables/list-item/list-item.d.ts +198 -17
  457. package/dist/components/lists-and-tables/list-item/list-item.d.ts.map +1 -1
  458. package/dist/components/lists-and-tables/list-item/list-item.i18n.d.ts +1 -1
  459. package/dist/components/lists-and-tables/list-item/list-item.i18n.js +1 -1
  460. package/dist/components/lists-and-tables/list-item/list-item.i18n.js.map +1 -1
  461. package/dist/components/lists-and-tables/list-item/list-item.js +476 -44
  462. package/dist/components/lists-and-tables/list-item/list-item.js.map +1 -1
  463. package/dist/components/lists-and-tables/list-item/list-item.styles.d.ts.map +1 -1
  464. package/dist/components/lists-and-tables/list-item/list-item.styles.js +133 -101
  465. package/dist/components/lists-and-tables/list-item/list-item.styles.js.map +1 -1
  466. package/dist/components/lists-and-tables/list-item/list-item.template.d.ts +1 -1
  467. package/dist/components/lists-and-tables/list-item/list-item.template.d.ts.map +1 -1
  468. package/dist/components/lists-and-tables/list-item/list-item.template.js +51 -24
  469. package/dist/components/lists-and-tables/list-item/list-item.template.js.map +1 -1
  470. package/dist/components/lists-and-tables/list-item-action/list-item-action.d.ts +108 -0
  471. package/dist/components/lists-and-tables/list-item-action/list-item-action.d.ts.map +1 -0
  472. package/dist/components/lists-and-tables/list-item-action/list-item-action.js +228 -0
  473. package/dist/components/lists-and-tables/list-item-action/list-item-action.js.map +1 -0
  474. package/dist/components/lists-and-tables/list-item-action/list-item-action.styles.d.ts +2 -0
  475. package/dist/components/lists-and-tables/list-item-action/list-item-action.styles.d.ts.map +1 -0
  476. package/dist/components/lists-and-tables/list-item-action/list-item-action.styles.js +145 -0
  477. package/dist/components/lists-and-tables/list-item-action/list-item-action.styles.js.map +1 -0
  478. package/dist/components/lists-and-tables/list-item-action/list-item-action.template.d.ts +3 -0
  479. package/dist/components/lists-and-tables/list-item-action/list-item-action.template.d.ts.map +1 -0
  480. package/dist/components/lists-and-tables/list-item-action/list-item-action.template.js +35 -0
  481. package/dist/components/lists-and-tables/list-item-action/list-item-action.template.js.map +1 -0
  482. package/dist/components/lists-and-tables/table/table.styles.d.ts.map +1 -1
  483. package/dist/components/lists-and-tables/table/table.styles.js +4 -2
  484. package/dist/components/lists-and-tables/table/table.styles.js.map +1 -1
  485. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +5 -7
  486. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  487. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +5 -7
  488. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  489. package/dist/components/navigation/breadcrumbs/breadcrumbs.template.js +1 -1
  490. package/dist/components/navigation/document-tab-bar/document-tab-bar.d.ts +15 -16
  491. package/dist/components/navigation/document-tab-bar/document-tab-bar.d.ts.map +1 -1
  492. package/dist/components/navigation/document-tab-bar/document-tab-bar.i18n.d.ts +1 -1
  493. package/dist/components/navigation/document-tab-bar/document-tab-bar.i18n.js +1 -1
  494. package/dist/components/navigation/document-tab-bar/document-tab-bar.i18n.js.map +1 -1
  495. package/dist/components/navigation/document-tab-bar/document-tab-bar.js +14 -15
  496. package/dist/components/navigation/document-tab-bar/document-tab-bar.js.map +1 -1
  497. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.d.ts.map +1 -1
  498. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +1 -0
  499. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  500. package/dist/components/navigation/link/link.d.ts +2 -2
  501. package/dist/components/navigation/link/link.i18n.d.ts +1 -1
  502. package/dist/components/navigation/link/link.i18n.js +1 -1
  503. package/dist/components/navigation/link/link.i18n.js.map +1 -1
  504. package/dist/components/navigation/link/link.template.js +1 -1
  505. package/dist/components/navigation/link/link.template.js.map +1 -1
  506. package/dist/components/navigation/menu-bar/menu-bar.styles.d.ts.map +1 -1
  507. package/dist/components/navigation/menu-bar/menu-bar.styles.js +1 -0
  508. package/dist/components/navigation/menu-bar/menu-bar.styles.js.map +1 -1
  509. package/dist/components/navigation/menu-bar-item/menu-bar-item.d.ts +2 -1
  510. package/dist/components/navigation/menu-bar-item/menu-bar-item.d.ts.map +1 -1
  511. package/dist/components/navigation/menu-bar-item/menu-bar-item.js +2 -1
  512. package/dist/components/navigation/menu-bar-item/menu-bar-item.js.map +1 -1
  513. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.d.ts.map +1 -1
  514. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js +1 -0
  515. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js.map +1 -1
  516. package/dist/components/navigation/pagination/pagination.d.ts +1 -0
  517. package/dist/components/navigation/pagination/pagination.d.ts.map +1 -1
  518. package/dist/components/navigation/pagination/pagination.i18n.d.ts +1 -1
  519. package/dist/components/navigation/pagination/pagination.i18n.js +1 -1
  520. package/dist/components/navigation/pagination/pagination.i18n.js.map +1 -1
  521. package/dist/components/navigation/pagination/pagination.js +1 -0
  522. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  523. package/dist/components/navigation/pagination/pagination.styles.d.ts.map +1 -1
  524. package/dist/components/navigation/pagination/pagination.styles.js +6 -5
  525. package/dist/components/navigation/pagination/pagination.styles.js.map +1 -1
  526. package/dist/components/navigation/pagination/pagination.template.js +1 -1
  527. package/dist/components/navigation/pagination/pagination.template.js.map +1 -1
  528. package/dist/components/navigation/tab-bar/tab-bar.d.ts +11 -9
  529. package/dist/components/navigation/tab-bar/tab-bar.d.ts.map +1 -1
  530. package/dist/components/navigation/tab-bar/tab-bar.js +11 -9
  531. package/dist/components/navigation/tab-bar/tab-bar.js.map +1 -1
  532. package/dist/components/navigation/tab-bar/tab-bar.styles.d.ts.map +1 -1
  533. package/dist/components/navigation/tab-bar/tab-bar.styles.js +8 -7
  534. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  535. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.d.ts +22 -0
  536. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.d.ts.map +1 -1
  537. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js +22 -1
  538. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.js.map +1 -1
  539. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.d.ts.map +1 -1
  540. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +9 -4
  541. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js.map +1 -1
  542. package/dist/components/navigation/top-title-bar/top-title-bar.d.ts +11 -1
  543. package/dist/components/navigation/top-title-bar/top-title-bar.d.ts.map +1 -1
  544. package/dist/components/navigation/top-title-bar/top-title-bar.js +29 -4
  545. package/dist/components/navigation/top-title-bar/top-title-bar.js.map +1 -1
  546. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.d.ts +3 -3
  547. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.i18n.d.ts +1 -1
  548. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.i18n.js +1 -1
  549. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.i18n.js.map +1 -1
  550. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js +4 -4
  551. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.js.map +1 -1
  552. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +6 -6
  553. package/dist/components/status-and-feedback/badge/badge.d.ts +2 -2
  554. package/dist/components/status-and-feedback/badge/badge.i18n.d.ts +1 -1
  555. package/dist/components/status-and-feedback/badge/badge.i18n.js +1 -1
  556. package/dist/components/status-and-feedback/badge/badge.i18n.js.map +1 -1
  557. package/dist/components/status-and-feedback/badge/badge.js +1 -1
  558. package/dist/components/status-and-feedback/badge/badge.js.map +1 -1
  559. package/dist/components/status-and-feedback/banner/banner.d.ts +9 -9
  560. package/dist/components/status-and-feedback/banner/banner.js +9 -9
  561. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.d.ts +6 -6
  562. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.js +6 -6
  563. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts +7 -7
  564. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.d.ts.map +1 -1
  565. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js +10 -8
  566. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.js.map +1 -1
  567. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.d.ts.map +1 -1
  568. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js +17 -1
  569. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.styles.js.map +1 -1
  570. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.d.ts +22 -8
  571. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.d.ts.map +1 -1
  572. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.js +63 -27
  573. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.js.map +1 -1
  574. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.d.ts.map +1 -1
  575. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js +1 -0
  576. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js.map +1 -1
  577. package/dist/components/status-and-feedback/progress-bar/progress-bar.d.ts +13 -13
  578. package/dist/components/status-and-feedback/progress-bar/progress-bar.i18n.d.ts +2 -2
  579. package/dist/components/status-and-feedback/progress-bar/progress-bar.i18n.js +2 -2
  580. package/dist/components/status-and-feedback/progress-bar/progress-bar.i18n.js.map +1 -1
  581. package/dist/components/status-and-feedback/progress-bar/progress-bar.js +14 -14
  582. package/dist/components/status-and-feedback/progress-bar/progress-bar.js.map +1 -1
  583. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +1 -1
  584. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js +1 -1
  585. package/dist/components/status-and-feedback/progress-bar/progress-bar.template.js.map +1 -1
  586. package/dist/components/status-and-feedback/progress-circle/progress-circle.d.ts +15 -15
  587. package/dist/components/status-and-feedback/progress-circle/progress-circle.i18n.d.ts +2 -2
  588. package/dist/components/status-and-feedback/progress-circle/progress-circle.i18n.js +2 -2
  589. package/dist/components/status-and-feedback/progress-circle/progress-circle.i18n.js.map +1 -1
  590. package/dist/components/status-and-feedback/progress-circle/progress-circle.js +20 -20
  591. package/dist/components/status-and-feedback/progress-circle/progress-circle.js.map +1 -1
  592. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +3 -3
  593. package/dist/components/status-and-feedback/progress-circle/progress-circle.template.js +4 -4
  594. package/dist/components/status-and-feedback/progress-circle/progress-circle.template.js.map +1 -1
  595. package/dist/components/status-and-feedback/status-bar/status-bar.d.ts +4 -4
  596. package/dist/components/status-and-feedback/status-bar/status-bar.js +4 -4
  597. package/dist/components/status-and-feedback/step-indicator/step-indicator.d.ts +124 -0
  598. package/dist/components/status-and-feedback/step-indicator/step-indicator.d.ts.map +1 -0
  599. package/dist/components/status-and-feedback/step-indicator/step-indicator.i18n.d.ts +9 -0
  600. package/dist/components/status-and-feedback/step-indicator/step-indicator.i18n.d.ts.map +1 -0
  601. package/dist/components/status-and-feedback/step-indicator/step-indicator.i18n.js +8 -0
  602. package/dist/components/status-and-feedback/step-indicator/step-indicator.i18n.js.map +1 -0
  603. package/dist/components/status-and-feedback/step-indicator/step-indicator.js +210 -0
  604. package/dist/components/status-and-feedback/step-indicator/step-indicator.js.map +1 -0
  605. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.d.ts +3 -0
  606. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.d.ts.map +1 -0
  607. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js +294 -0
  608. package/dist/components/status-and-feedback/step-indicator/step-indicator.styles.js.map +1 -0
  609. package/dist/components/status-and-feedback/step-indicator/step-indicator.template.d.ts +5 -0
  610. package/dist/components/status-and-feedback/step-indicator/step-indicator.template.d.ts.map +1 -0
  611. package/dist/components/status-and-feedback/step-indicator/step-indicator.template.js +69 -0
  612. package/dist/components/status-and-feedback/step-indicator/step-indicator.template.js.map +1 -0
  613. package/dist/css/form.css +16 -7
  614. package/dist/css/settings.css +68 -73
  615. package/dist/types/vue.d.ts +3421 -0
  616. package/dist/utilities/autofocus.d.ts +19 -0
  617. package/dist/utilities/autofocus.d.ts.map +1 -0
  618. package/dist/utilities/autofocus.js +35 -0
  619. package/dist/utilities/autofocus.js.map +1 -0
  620. package/dist/utilities/codemirror/theme.js +2 -2
  621. package/dist/utilities/codemirror/theme.js.map +1 -1
  622. package/dist/utilities/color-scheme-repaint.d.ts +2 -2
  623. package/dist/utilities/color-scheme-repaint.js +2 -2
  624. package/dist/utilities/form-associated-mixin.d.ts +33 -0
  625. package/dist/utilities/form-associated-mixin.d.ts.map +1 -0
  626. package/dist/utilities/form-associated-mixin.js +52 -0
  627. package/dist/utilities/form-associated-mixin.js.map +1 -0
  628. package/dist/utilities/input-modality.d.ts +3 -1
  629. package/dist/utilities/input-modality.d.ts.map +1 -1
  630. package/dist/utilities/input-modality.js +12 -1
  631. package/dist/utilities/input-modality.js.map +1 -1
  632. package/dist/utilities/page-section-mixin.d.ts +1 -1
  633. package/dist/utilities/page-section-mixin.js +2 -2
  634. package/dist/utilities/popup-anchor-controller.d.ts +2 -2
  635. package/dist/utilities/resolve-date-bound.d.ts +21 -0
  636. package/dist/utilities/resolve-date-bound.d.ts.map +1 -0
  637. package/dist/utilities/resolve-date-bound.js +75 -0
  638. package/dist/utilities/resolve-date-bound.js.map +1 -0
  639. package/package.json +39 -7
@@ -0,0 +1,3421 @@
1
+ // Generated by scripts/generate-vue-types.js. Do not edit.
2
+ //
3
+ // Declares every nldd-* element for Vue's template type-checking. Import it once
4
+ // in your project (for example in env.d.ts):
5
+ //
6
+ // import '@nldd/design-system/vue';
7
+ //
8
+ // Every attribute is available both as written in markup (week-numbers) and in
9
+ // the form Vue normalizes it to (weekNumbers). Events are the prop Vue derives
10
+ // from @change, so onChange.
11
+
12
+ import type { DefineComponent } from 'vue';
13
+ import type { NLDDActivityIndicator } from '@nldd/design-system/activity-indicator';
14
+ import type { NLDDAppView } from '@nldd/design-system/app-view';
15
+ import type { NLDDAvatar } from '@nldd/design-system/avatar';
16
+ import type { NLDDBadge } from '@nldd/design-system/badge';
17
+ import type { NLDDBanner } from '@nldd/design-system/banner';
18
+ import type { NLDDBarSplitView } from '@nldd/design-system/bar-split-view';
19
+ import type { NLDDBlockquote } from '@nldd/design-system/blockquote';
20
+ import type { NLDDBox } from '@nldd/design-system/box';
21
+ import type { NLDDBreadcrumbs } from '@nldd/design-system/breadcrumbs';
22
+ import type { NLDDBreadcrumbsItem } from '@nldd/design-system/breadcrumbs';
23
+ import type { NLDDButton } from '@nldd/design-system/button';
24
+ import type { NLDDButtonBar } from '@nldd/design-system/button-bar';
25
+ import type { anonymous_0 } from '@nldd/design-system/button-bar';
26
+ import type { NLDDButtonGroup } from '@nldd/design-system/button-group';
27
+ import type { NLDDByline } from '@nldd/design-system/byline';
28
+ import type { NLDDCard } from '@nldd/design-system/card';
29
+ import type { NLDDCell } from '@nldd/design-system/cell';
30
+ import type { NLDDCheckbox } from '@nldd/design-system/checkbox';
31
+ import type { NLDDCheckboxField } from '@nldd/design-system/checkbox-field';
32
+ import type { NLDDCodeEditor } from '@nldd/design-system/code-editor';
33
+ import type { NLDDCodeViewer } from '@nldd/design-system/code-viewer';
34
+ import type { NLDDCollection } from '@nldd/design-system/collection';
35
+ import type { NLDDComboBox } from '@nldd/design-system/combo-box';
36
+ import type { NLDDContainer } from '@nldd/design-system/container';
37
+ import type { NLDDDateField } from '@nldd/design-system/date-field';
38
+ import type { NLDDDatePicker } from '@nldd/design-system/date-picker';
39
+ import type { NLDDDescriptionCell } from '@nldd/design-system/description-cell';
40
+ import type { NLDDDivider } from '@nldd/design-system/divider';
41
+ import type { NLDDDocumentTabBar } from '@nldd/design-system/document-tab-bar';
42
+ import type { NLDDDocumentTabBarItem } from '@nldd/design-system/document-tab-bar';
43
+ import type { NLDDDragHandleCell } from '@nldd/design-system/drag-handle-cell';
44
+ import type { NLDDDropdown } from '@nldd/design-system/dropdown';
45
+ import type { NLDDForm } from '@nldd/design-system/form';
46
+ import type { NLDDFormActions } from '@nldd/design-system/form-actions';
47
+ import type { NLDDFormField } from '@nldd/design-system/form-field';
48
+ import type { NLDDFormFieldErrorText } from '@nldd/design-system/form-field';
49
+ import type { NLDDFormFieldHelpText } from '@nldd/design-system/form-field';
50
+ import type { NLDDFormSection } from '@nldd/design-system/form-section';
51
+ import type { NLDDFullBleedSection } from '@nldd/design-system/full-bleed-section';
52
+ import type { NLDDHero } from '@nldd/design-system/hero';
53
+ import type { NLDDIcon } from '@nldd/design-system/icon';
54
+ import type { NLDDIconButton } from '@nldd/design-system/icon-button';
55
+ import type { NLDDIconCell } from '@nldd/design-system/icon-cell';
56
+ import type { NLDDImage } from '@nldd/design-system/image';
57
+ import type { NLDDInlineDialog } from '@nldd/design-system/inline-dialog';
58
+ import type { NLDDJustInTimeEducation } from '@nldd/design-system/just-in-time-education';
59
+ import type { NLDDKeyboardShortcut } from '@nldd/design-system/keyboard-shortcut';
60
+ import type { NLDDLink } from '@nldd/design-system/link';
61
+ import type { NLDDList } from '@nldd/design-system/list';
62
+ import type { NLDDListItem } from '@nldd/design-system/list-item';
63
+ import type { NLDDListItemAction } from '@nldd/design-system/list-item-action';
64
+ import type { NLDDMenu } from '@nldd/design-system/menu';
65
+ import type { NLDDMenuBar } from '@nldd/design-system/menu-bar';
66
+ import type { NLDDMenuBarItem } from '@nldd/design-system/menu-bar-item';
67
+ import type { NLDDMenuDivider } from '@nldd/design-system/menu';
68
+ import type { NLDDMenuGroup } from '@nldd/design-system/menu';
69
+ import type { NLDDMenuItem } from '@nldd/design-system/menu';
70
+ import type { NLDDModalDialog } from '@nldd/design-system/modal-dialog';
71
+ import type { NLDDMultiLineTextField } from '@nldd/design-system/multi-line-text-field';
72
+ import type { NLDDNavigationSplitView } from '@nldd/design-system/navigation-split-view';
73
+ import type { NLDDNumberField } from '@nldd/design-system/number-field';
74
+ import type { NLDDOneHalfOneHalfSection } from '@nldd/design-system/one-half-one-half-section';
75
+ import type { NLDDOneThirdTwoThirdsSection } from '@nldd/design-system/one-third-two-thirds-section';
76
+ import type { NLDDPage } from '@nldd/design-system/page';
77
+ import type { NLDDPageFooter } from '@nldd/design-system/page-footer';
78
+ import type { NLDDPageFooterLegalBar } from '@nldd/design-system/page-footer';
79
+ import type { NLDDPageFooterLegalBarItem } from '@nldd/design-system/page-footer';
80
+ import type { NLDDPagination } from '@nldd/design-system/pagination';
81
+ import type { NLDDPasswordField } from '@nldd/design-system/password-field';
82
+ import type { NLDDPopover } from '@nldd/design-system/popover';
83
+ import type { NLDDProgressBar } from '@nldd/design-system/progress-bar';
84
+ import type { NLDDProgressBarSegmentIndicator } from '@nldd/design-system/progress-bar';
85
+ import type { NLDDProgressCircle } from '@nldd/design-system/progress-circle';
86
+ import type { NLDDProgressCircleSegmentIndicator } from '@nldd/design-system/progress-circle';
87
+ import type { NLDDRadioButton } from '@nldd/design-system/radio-button';
88
+ import type { NLDDRadioButtonField } from '@nldd/design-system/radio-button-field';
89
+ import type { NLDDRadioButtonGroup } from '@nldd/design-system/radio-button-group';
90
+ import type { NLDDRichText } from '@nldd/design-system/rich-text';
91
+ import type { NLDDSearchField } from '@nldd/design-system/search-field';
92
+ import type { NLDDSegmentedControl } from '@nldd/design-system/segmented-control';
93
+ import type { NLDDSegmentedControlItem } from '@nldd/design-system/segmented-control';
94
+ import type { NLDDSheet } from '@nldd/design-system/sheet';
95
+ import type { NLDDSideBySideSplitView } from '@nldd/design-system/side-by-side-split-view';
96
+ import type { NLDDSidebarSection } from '@nldd/design-system/sidebar-section';
97
+ import type { NLDDSimpleSection } from '@nldd/design-system/simple-section';
98
+ import type { NLDDSkipLink } from '@nldd/design-system/skip-link';
99
+ import type { NLDDSpacer } from '@nldd/design-system/spacer';
100
+ import type { NLDDSpacerCell } from '@nldd/design-system/spacer-cell';
101
+ import type { NLDDSplitButton } from '@nldd/design-system/split-button';
102
+ import type { NLDDSplitViewDivider } from '@nldd/design-system/split-view-divider';
103
+ import type { NLDDSplitViewPane } from '@nldd/design-system/split-view-pane';
104
+ import type { NLDDStackedSplitView } from '@nldd/design-system/stacked-split-view';
105
+ import type { NLDDStatusBar } from '@nldd/design-system/status-bar';
106
+ import type { NLDDStepIndicator } from '@nldd/design-system/step-indicator';
107
+ import type { NLDDStepIndicatorItem } from '@nldd/design-system/step-indicator';
108
+ import type { NLDDStepper } from '@nldd/design-system/stepper';
109
+ import type { NLDDSwitch } from '@nldd/design-system/switch';
110
+ import type { NLDDSwitchField } from '@nldd/design-system/switch-field';
111
+ import type { NLDDTabBar } from '@nldd/design-system/tab-bar';
112
+ import type { NLDDTabBarItem } from '@nldd/design-system/tab-bar';
113
+ import type { NLDDTable } from '@nldd/design-system/table';
114
+ import type { NLDDTableRow } from '@nldd/design-system/table';
115
+ import type { NLDDTag } from '@nldd/design-system/tag';
116
+ import type { NLDDTextCell } from '@nldd/design-system/text-cell';
117
+ import type { NLDDTextEditor } from '@nldd/design-system/text-editor';
118
+ import type { NLDDTextField } from '@nldd/design-system/text-field';
119
+ import type { NLDDTimelineTrackCell } from '@nldd/design-system/timeline-track-cell';
120
+ import type { NLDDTitle } from '@nldd/design-system/title';
121
+ import type { NLDDTitleCell } from '@nldd/design-system/title-cell';
122
+ import type { NLDDToggleButton } from '@nldd/design-system/toggle-button';
123
+ import type { NLDDToggleButtonGroup } from '@nldd/design-system/toggle-button-group';
124
+ import type { NLDDToken } from '@nldd/design-system/token';
125
+ import type { NLDDTokenField } from '@nldd/design-system/token-field';
126
+ import type { NLDDToolbar } from '@nldd/design-system/toolbar';
127
+ import type { NLDDToolbarItem } from '@nldd/design-system/toolbar';
128
+ import type { NLDDToolbarTitle } from '@nldd/design-system/toolbar';
129
+ import type { NLDDTooltip } from '@nldd/design-system/tooltip';
130
+ import type { NLDDTopNavigationBar } from '@nldd/design-system/top-navigation-bar';
131
+ import type { NLDDTopTitleBar } from '@nldd/design-system/top-title-bar';
132
+ import type { NLDDTwoThirdsOneThirdSection } from '@nldd/design-system/two-thirds-one-third-section';
133
+ import type { NLDDWindow } from '@nldd/design-system/window';
134
+
135
+ declare module 'vue' {
136
+ type NLDDActivityIndicatorProps = {
137
+ /** Circle diameter on the icon scale: 16,20,24,28,32,40,44,48,56,64,80,96 (default '32') */
138
+ 'size'?: NLDDActivityIndicator['size'];
139
+ /** Show the label under the indicator (default false; the label still feeds the accessible name) */
140
+ 'show-text'?: NLDDActivityIndicator['showText'];
141
+ /** Show the label under the indicator (default false; the label still feeds the accessible name) */
142
+ 'showText'?: NLDDActivityIndicator['showText'];
143
+ /** Label text. Falls back to the translated "Laden" when unset. */
144
+ 'text'?: NLDDActivityIndicator['text'];
145
+ /** 'default' waits 1000ms before showing (anti-flash); 'instant' shows immediately (the fade-in still plays). Default 'default'. */
146
+ 'timing'?: NLDDActivityIndicator['timing'];
147
+ /** Mark the loader as finished while keeping the element mounted; clears aria-busy and hides the indicator. */
148
+ 'complete'?: NLDDActivityIndicator['complete'];
149
+ /** Overlay mode dims and blurs the wrapped content with a frosted backdrop by default; set this to show only the indicator panel without dimming. No effect in standalone mode. */
150
+ 'no-backdrop'?: NLDDActivityIndicator['noBackdrop'];
151
+ /** Overlay mode dims and blurs the wrapped content with a frosted backdrop by default; set this to show only the indicator panel without dimming. No effect in standalone mode. */
152
+ 'noBackdrop'?: NLDDActivityIndicator['noBackdrop'];
153
+ /** Override translation keys; unset keys fall back to Dutch */
154
+ 'translations'?: NLDDActivityIndicator['translations'];
155
+ };
156
+
157
+ type NLDDAppViewProps = {
158
+ /** Background color (cascades to descendants) */
159
+ 'background'?: NLDDAppView['background'];
160
+ };
161
+
162
+ type NLDDAvatarProps = {
163
+ /** Afbeeldingsbron; valt bij een laadfout terug op initialen/icoon */
164
+ 'src'?: NLDDAvatar['src'];
165
+ /** Responsive source set voor de afbeelding (het component zet zelf `sizes`) */
166
+ 'srcset'?: NLDDAvatar['srcset'];
167
+ /** Naam van de persoon/organisatie; levert de afgeleide initialen en het toegankelijke label */
168
+ 'name'?: NLDDAvatar['name'];
169
+ /** Expliciete initialen, max 3 tekens (overschrijft de afleiding uit `name`; ook voor organisatie-acroniemen) */
170
+ 'initials'?: NLDDAvatar['initials'];
171
+ /** Overschrijft het type-afhankelijke terugval-icoon */
172
+ 'icon'?: NLDDAvatar['icon'];
173
+ /** `person` (cirkel, person-icoon) of `organization` (afgerond, building-icoon); standaard `person` */
174
+ 'type'?: NLDDAvatar['type'];
175
+ /** `default` (neutrale vulling) of `inherit` (vulling in de content-kleur: de `--context-content-color`-channel, of `currentColor` als die niet gezet is; tekst in de contrastkleur, zodat de avatar een icoon in bijvoorbeeld een knop kan vervangen); standaard `default` */
176
+ 'color'?: NLDDAvatar['color'];
177
+ /** `full` (standaard) schaalt mee met de container, net als nldd-icon; of een vaste maat in px (spacer-uitgelijnd: 16, 20, 24, 28, 32, 40, 44, 48, 56, 64, 80, 96). Leeg gedraagt zich als `full`. De initialen en het icoon schalen mee */
178
+ 'size'?: NLDDAvatar['size'];
179
+ /** Krimpt de zichtbare schijf naar 5/6 van de host, gecentreerd, zodat de avatar optisch uitlijnt met een icoon op hetzelfde grid (een icoon-glyph heeft ingebouwde marge) */
180
+ 'icon-aligned'?: NLDDAvatar['iconAligned'];
181
+ /** Krimpt de zichtbare schijf naar 5/6 van de host, gecentreerd, zodat de avatar optisch uitlijnt met een icoon op hetzelfde grid (een icoon-glyph heeft ingebouwde marge) */
182
+ 'iconAligned'?: NLDDAvatar['iconAligned'];
183
+ /** Verbergt de avatar voor hulpsoftware (gebruik wanneer de naam er al als tekst naast staat) */
184
+ 'decorative'?: NLDDAvatar['decorative'];
185
+ /** Maakt de avatar een link naar deze URL; de schijf zelf wordt de link, dus klikgebied en focusring volgen de vorm */
186
+ 'href'?: NLDDAvatar['href'];
187
+ /** Maakt de avatar een knop; genegeerd wanneer `href` is gezet */
188
+ 'button'?: NLDDAvatar['button'];
189
+ /** Link target voor href (bijv. '_blank'); vult rel aan en meldt "Opent in nieuw tabblad" */
190
+ 'target'?: NLDDAvatar['target'];
191
+ /** Link rel voor href; standaard 'noopener noreferrer' bij target='_blank' */
192
+ 'rel'?: NLDDAvatar['rel'];
193
+ /** Naam van de link of knop; zonder deze wordt `name` gebruikt */
194
+ 'accessible-label'?: NLDDAvatar['accessibleLabel'];
195
+ /** Naam van de link of knop; zonder deze wordt `name` gebruikt */
196
+ 'accessibleLabel'?: NLDDAvatar['accessibleLabel'];
197
+ /** Overschrijf translation keys; niet gezette keys vallen terug op het Nederlands */
198
+ 'translations'?: NLDDAvatar['translations'];
199
+ /** True zodra de avatar zelf een control is. */
200
+ 'isInteractive'?: NLDDAvatar['isInteractive'];
201
+ /** Initials shown when there is no image: an explicit `initials` wins, otherwise the first letter of the first and last word of `name`. */
202
+ 'resolvedInitials'?: NLDDAvatar['resolvedInitials'];
203
+ /** Fallback icon when there is neither image nor initials. */
204
+ 'resolvedIcon'?: NLDDAvatar['resolvedIcon'];
205
+ };
206
+
207
+ type NLDDBadgeProps = {
208
+ /** Semantisch ('critical' | 'accent' | 'neutral' | 'warning' | 'success') of een Rijkskleur ('lintblauw' | 'hemelblauw' | 'oranje' | …). Default: 'critical' */
209
+ 'color'?: NLDDBadge['color'];
210
+ /** Grootte: 'sm' | 'md' (default: 'md') */
211
+ 'size'?: NLDDBadge['size'];
212
+ /** Tekst (heeft voorrang op number) */
213
+ 'text'?: NLDDBadge['text'];
214
+ /** Numerieke waarde. Wordt beknopt als meer dan max */
215
+ 'number'?: NLDDBadge['number'];
216
+ /** Maximum waarde boven welke number wordt getoond als "{max}+" (default: 99) */
217
+ 'max'?: NLDDBadge['max'];
218
+ /** Icoon naam. Icon-only wordt als vierkant gerenderd; met text/number komt het icoon links. */
219
+ 'icon'?: NLDDBadge['icon'];
220
+ /** Toegankelijk label voor screenreaders. Fallback naar text/number; anders naar i18n default ("Notificatie"). */
221
+ 'accessible-label'?: NLDDBadge['accessibleLabel'];
222
+ /** Toegankelijk label voor screenreaders. Fallback naar text/number; anders naar i18n default ("Notificatie"). */
223
+ 'accessibleLabel'?: NLDDBadge['accessibleLabel'];
224
+ 'translations'?: NLDDBadge['translations'];
225
+ };
226
+
227
+ type NLDDBannerProps = {
228
+ /** Color and default icon (default: 'neutral') */
229
+ 'variant'?: NLDDBanner['variant'];
230
+ /** 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
+ 'icon'?: NLDDBanner['icon'];
232
+ /** Main text (heading or paragraph, depending on heading-level) */
233
+ 'text'?: NLDDBanner['text'];
234
+ /** Supporting text below the heading */
235
+ 'supporting-text'?: NLDDBanner['supportingText'];
236
+ /** Supporting text below the heading */
237
+ 'supportingText'?: NLDDBanner['supportingText'];
238
+ /** Renders text as h1–h6; absent renders a p */
239
+ 'heading-level'?: NLDDBanner['headingLevel'];
240
+ /** Renders text as h1–h6; absent renders a p */
241
+ 'headingLevel'?: NLDDBanner['headingLevel'];
242
+ /** Show a close button in the top-right; emits `dismiss` when clicked */
243
+ 'dismissible'?: NLDDBanner['dismissible'];
244
+ /** Override translation keys; unset keys fall back to Dutch */
245
+ 'translations'?: NLDDBanner['translations'];
246
+ /** Fired when the dismiss button is clicked. The consumer is responsible for removing/hiding the banner. */
247
+ 'onDismiss'?: (event: CustomEvent) => void;
248
+ };
249
+
250
+ type NLDDBarSplitViewProps = {
251
+ /** Background color variant (default: inherit) */
252
+ 'background'?: NLDDBarSplitView['background'];
253
+ };
254
+
255
+ type NLDDBlockquoteProps = {
256
+ /** URL van de bron (wordt doorgegeven aan het <blockquote> element) */
257
+ 'cite'?: NLDDBlockquote['cite'];
258
+ };
259
+
260
+ type NLDDBoxProps = {
261
+ /** Surface fill. - `tinted` (default): for a box on a plain page bg. - `base`: for a box sitting on an already-tinted parent (the border ring gets +2 palette steps so it still reads against a card-on-card). */
262
+ 'background'?: NLDDBox['background'];
263
+ };
264
+
265
+ type NLDDBreadcrumbsProps = {
266
+ /** Override the nav's aria-label. Defaults to the i18n value (NL: "Kruimelpad"). */
267
+ 'accessible-label'?: NLDDBreadcrumbs['accessibleLabel'];
268
+ /** Override the nav's aria-label. Defaults to the i18n value (NL: "Kruimelpad"). */
269
+ 'accessibleLabel'?: NLDDBreadcrumbs['accessibleLabel'];
270
+ /** Override translation keys; unset keys fall back to the Dutch default. */
271
+ 'translations'?: NLDDBreadcrumbs['translations'];
272
+ };
273
+
274
+ type NLDDBreadcrumbsItemProps = {
275
+ /** Link target. Ignored when `current` is set. */
276
+ 'href'?: NLDDBreadcrumbsItem['href'];
277
+ /** Marks this item as the current page (renders as plain text + `aria-current="page"`). Typical use is on the last item. */
278
+ 'current'?: NLDDBreadcrumbsItem['current'];
279
+ /** Item label. Falls back to the default slot. */
280
+ 'text'?: NLDDBreadcrumbsItem['text'];
281
+ };
282
+
283
+ type NLDDButtonProps = {
284
+ /** Button variant: 'primary' | 'secondary' | 'destructive' | 'accent-filled' | 'accent-transparent' | 'neutral-tinted' | 'neutral-base' | 'neutral-transparent' | 'critical-tinted' | 'critical-transparent' | 'inherit-filled' | 'inherit-tinted'. De inherit-varianten leiden hun kleuren af van currentColor, voor knoppen op gekleurde vlakken; inherit-filled gebruikt de vlakkleur (--context-parent-background-color) als labelkleur met een wit/zwart-contrastflip als fallback. */
285
+ 'variant'?: NLDDButton['variant'];
286
+ /** Button size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md'). 'lg' uses larger text and 24px start/end icons. */
287
+ 'size'?: NLDDButton['size'];
288
+ /** Horizontal alignment of the button content: 'left' | 'center' | 'right' (default: unset, centered). Most visible with width="full" or a fixed width. */
289
+ 'horizontal-alignment'?: NLDDButton['horizontalAlignment'];
290
+ /** Horizontal alignment of the button content: 'left' | 'center' | 'right' (default: unset, centered). Most visible with width="full" or a fixed width. */
291
+ 'horizontalAlignment'?: NLDDButton['horizontalAlignment'];
292
+ /** Width mode: 'full' (stretches to container) or any CSS length (e.g. '240px') */
293
+ 'width'?: NLDDButton['width'];
294
+ /** Caps the width at this CSS length (e.g. '320px'). Combines with `width="full"`: the button follows its container up to the cap. A label that doesn't fit is truncated with an ellipsis — a cap only means something if the content respects it. */
295
+ 'max-width'?: NLDDButton['maxWidth'];
296
+ /** Caps the width at this CSS length (e.g. '320px'). Combines with `width="full"`: the button follows its container up to the cap. A label that doesn't fit is truncated with an ellipsis — a cap only means something if the content respects it. */
297
+ 'maxWidth'?: NLDDButton['maxWidth'];
298
+ /** Whether the button has a icon to indicate it opens a menu or popover */
299
+ 'expandable'?: NLDDButton['expandable'];
300
+ /** Whether the popover/menu controlled by this button is currently open. Forwarded as aria-expanded on the inner button; toggles the is-expanded visual state. */
301
+ 'expanded'?: NLDDButton['expanded'];
302
+ /** Type of popup container this button opens: 'menu' | 'listbox' | 'dialog' | 'tree' | 'grid'. Sets aria-haspopup on the inner button and forces aria-expanded to always be present (true/false) so screen readers know the popup state. */
303
+ 'popup-type'?: NLDDButton['popupType'];
304
+ /** Type of popup container this button opens: 'menu' | 'listbox' | 'dialog' | 'tree' | 'grid'. Sets aria-haspopup on the inner button and forces aria-expanded to always be present (true/false) so screen readers know the popup state. */
305
+ 'popupType'?: NLDDButton['popupType'];
306
+ /** Button type for form submission: 'button' | 'submit' | 'reset' (ignored when href is set) */
307
+ 'type'?: NLDDButton['type'];
308
+ /** ID of a popover element this button invokes; forwarded to the inner button. Use the popoverTargetElement property instead when the popover lives in another tree. */
309
+ 'popovertarget'?: NLDDButton['popovertarget'];
310
+ /** Loading state (default: false). Shows an activity indicator over the visually hidden content, sets aria-busy on the inner control and blocks activation, without dropping the button from the tab order (unlike disabled). The content stays laid out, so the button keeps its width. */
311
+ 'loading'?: NLDDButton['loading'];
312
+ /** Disabled state */
313
+ 'disabled'?: NLDDButton['disabled'];
314
+ /** Button text */
315
+ 'text'?: NLDDButton['text'];
316
+ /** Supporting text shown below the text (md/lg) or after it (sm/xs), in a secondary color. Part of the accessible name (unless `accessible-label` is set, which replaces the whole accessible name). */
317
+ 'supporting-text'?: NLDDButton['supportingText'];
318
+ /** Supporting text shown below the text (md/lg) or after it (sm/xs), in a secondary color. Part of the accessible name (unless `accessible-label` is set, which replaces the whole accessible name). */
319
+ 'supportingText'?: NLDDButton['supportingText'];
320
+ /** When true, truncates overflowing text with an ellipsis instead of letting it wrap. Requires the button (or an ancestor) to constrain the width. */
321
+ 'single-line'?: NLDDButton['singleLine'];
322
+ /** When true, truncates overflowing text with an ellipsis instead of letting it wrap. Requires the button (or an ancestor) to constrain the width. */
323
+ 'singleLine'?: NLDDButton['singleLine'];
324
+ /** Removes the per-variant highlight border (e.g. when nldd-button-bar draws a single group border instead). */
325
+ 'no-highlight-border'?: NLDDButton['noHighlightBorder'];
326
+ /** Removes the per-variant highlight border (e.g. when nldd-button-bar draws a single group border instead). */
327
+ 'noHighlightBorder'?: NLDDButton['noHighlightBorder'];
328
+ /** Icon name for the start icon (before text) */
329
+ 'start-icon'?: NLDDButton['startIcon'];
330
+ /** Icon name for the start icon (before text) */
331
+ 'startIcon'?: NLDDButton['startIcon'];
332
+ /** Icon name for the end icon (after text) */
333
+ 'end-icon'?: NLDDButton['endIcon'];
334
+ /** Icon name for the end icon (after text) */
335
+ 'endIcon'?: NLDDButton['endIcon'];
336
+ /** Accessible label for the button, overrides text for screen readers */
337
+ 'accessible-label'?: NLDDButton['accessibleLabel'];
338
+ /** Accessible label for the button, overrides text for screen readers */
339
+ 'accessibleLabel'?: NLDDButton['accessibleLabel'];
340
+ /** When set, renders an <a> element instead of <button> */
341
+ 'href'?: NLDDButton['href'];
342
+ /** Link target (e.g. '_blank'); only used when href is set. With '_blank' the button adds a visually hidden "opens in new tab" announcement for screen readers (WCAG 2.1 SC 3.2.2). */
343
+ 'target'?: NLDDButton['target'];
344
+ /** Link rel attribute; defaults to 'noopener noreferrer' when target is '_blank' */
345
+ 'rel'?: NLDDButton['rel'];
346
+ /** Override translation keys (e.g. the "opens in new tab" announcement); unset keys fall back to Dutch. */
347
+ 'translations'?: NLDDButton['translations'];
348
+ /** Direct element reference to the popover this button invokes — IDL-only counterpart to `popovertarget` that works across shadow boundaries. Use this when the popover lives in a different tree (e.g. an `nldd-menu` reparented to `<body>`) so the browser still recognizes this button as the popover's invoker and excludes it from the popover light-dismiss algorithm. Set programmatically; not reflected to an HTML attribute (the attribute form is `popovertarget`, ID-based). */
349
+ 'popoverTargetElement'?: NLDDButton['popoverTargetElement'];
350
+ /** Action the browser performs when the button is clicked, mirroring the standard `popovertargetaction` attribute. Defaults to `'toggle'`. Use `'show'` when a separate handler owns the close path (e.g. the consumer toggles the popover programmatically) so the browser's default action doesn't double-fire. */
351
+ 'popoverTargetAction'?: NLDDButton['popoverTargetAction'];
352
+ /** When button is clicked (not fired when disabled) */
353
+ 'onClick'?: (event: CustomEvent) => void;
354
+ };
355
+
356
+ type NLDDButtonBarProps = {
357
+ /** Bar size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md'). At 'lg', icon-button children stack their label below the icon (mobile action-bar style). */
358
+ 'size'?: NLDDButtonBar['size'];
359
+ /** Button variant (default: 'neutral-tinted') */
360
+ 'variant'?: NLDDButtonBar['variant'];
361
+ /** Disabled state */
362
+ 'disabled'?: NLDDButtonBar['disabled'];
363
+ };
364
+
365
+ type anonymous_0Props = {
366
+ };
367
+
368
+ type NLDDButtonGroupProps = {
369
+ /** Button group size: 'sm' | 'md' (default: 'md') */
370
+ 'size'?: NLDDButtonGroup['size'];
371
+ /** Layout direction: 'horizontal' | 'vertical' (default: 'vertical') */
372
+ 'orientation'?: NLDDButtonGroup['orientation'];
373
+ };
374
+
375
+ type NLDDBylineProps = {
376
+ /** Naamregel (bijv. "Jan Jansen en Piet Pietersen"); fallback wanneer de text-slot leeg is */
377
+ 'text'?: NLDDByline['text'];
378
+ /** Ondersteunende tekst onder de naamregel (bijv. rol of datum); fallback wanneer de supporting-text-slot leeg is */
379
+ 'supporting-text'?: NLDDByline['supportingText'];
380
+ /** Ondersteunende tekst onder de naamregel (bijv. rol of datum); fallback wanneer de supporting-text-slot leeg is */
381
+ 'supportingText'?: NLDDByline['supportingText'];
382
+ /** Bron van één avatar (alternatief voor de avatars-slot); genegeerd zodra de avatars-slot gevuld is */
383
+ 'avatar-src'?: NLDDByline['avatarSrc'];
384
+ /** Bron van één avatar (alternatief voor de avatars-slot); genegeerd zodra de avatars-slot gevuld is */
385
+ 'avatarSrc'?: NLDDByline['avatarSrc'];
386
+ /** Responsive source set voor de avatar-src-afbeelding */
387
+ 'avatar-srcset'?: NLDDByline['avatarSrcset'];
388
+ /** Responsive source set voor de avatar-src-afbeelding */
389
+ 'avatarSrcset'?: NLDDByline['avatarSrcset'];
390
+ /** Alt-tekst voor de avatar-src-afbeelding; leeg = decoratief */
391
+ 'avatar-alt'?: NLDDByline['avatarAlt'];
392
+ /** Alt-tekst voor de avatar-src-afbeelding; leeg = decoratief */
393
+ 'avatarAlt'?: NLDDByline['avatarAlt'];
394
+ };
395
+
396
+ type NLDDCardProps = {
397
+ /** Toegankelijke naam van de kaart; bij `href`/`button` benoemt deze de link of knop, anders de kaart-region */
398
+ 'accessible-label'?: NLDDCard['accessibleLabel'];
399
+ /** Toegankelijke naam van de kaart; bij `href`/`button` benoemt deze de link of knop, anders de kaart-region */
400
+ 'accessibleLabel'?: NLDDCard['accessibleLabel'];
401
+ /** Maakt de hele kaart een link naar deze URL (leeg = geen link) */
402
+ 'href'?: NLDDCard['href'];
403
+ /** Maakt de hele kaart een knop; genegeerd wanneer `href` is gezet */
404
+ 'button'?: NLDDCard['button'];
405
+ /** Link target voor href (bijv. '_blank'); stelt rel automatisch bij en voegt bij '_blank' een "Opent in nieuw tabblad"-melding toe */
406
+ 'target'?: NLDDCard['target'];
407
+ /** Link rel voor href; standaard 'noopener noreferrer' bij target='_blank' */
408
+ 'rel'?: NLDDCard['rel'];
409
+ /** Overschrijf vertaalsleutels (bijv. de "Opent in nieuw tabblad"-melding) */
410
+ 'translations'?: NLDDCard['translations'];
411
+ };
412
+
413
+ type NLDDCellProps = {
414
+ /** 'full' | 'fit-content' | CSS length (e.g. '120px', '10rem'). Default: 'fit-content' */
415
+ 'width'?: NLDDCell['width'];
416
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
417
+ 'min-width'?: NLDDCell['minWidth'];
418
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
419
+ 'minWidth'?: NLDDCell['minWidth'];
420
+ /** Maximum width as CSS length (e.g. '200px', '20rem') */
421
+ 'max-width'?: NLDDCell['maxWidth'];
422
+ /** Maximum width as CSS length (e.g. '200px', '20rem') */
423
+ 'maxWidth'?: NLDDCell['maxWidth'];
424
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
425
+ 'min-height'?: NLDDCell['minHeight'];
426
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
427
+ 'minHeight'?: NLDDCell['minHeight'];
428
+ /** Vertical alignment of slotted content (default: 'center') */
429
+ 'vertical-alignment'?: NLDDCell['verticalAlignment'];
430
+ /** Vertical alignment of slotted content (default: 'center') */
431
+ 'verticalAlignment'?: NLDDCell['verticalAlignment'];
432
+ /** Horizontal alignment of slotted content (default: 'left') */
433
+ 'horizontal-alignment'?: NLDDCell['horizontalAlignment'];
434
+ /** Horizontal alignment of slotted content (default: 'left') */
435
+ 'horizontalAlignment'?: NLDDCell['horizontalAlignment'];
436
+ 'hide-below'?: NLDDCell['hideBelow'];
437
+ 'hideBelow'?: NLDDCell['hideBelow'];
438
+ 'hide-above'?: NLDDCell['hideAbove'];
439
+ 'hideAbove'?: NLDDCell['hideAbove'];
440
+ };
441
+
442
+ type NLDDCheckboxProps = {
443
+ /** Checked state */
444
+ 'checked'?: NLDDCheckbox['checked'];
445
+ /** Disabled state */
446
+ 'disabled'?: NLDDCheckbox['disabled'];
447
+ /** Indeterminate state (takes precedence over checked visually) */
448
+ 'indeterminate'?: NLDDCheckbox['indeterminate'];
449
+ /** Value for form submission */
450
+ 'value'?: NLDDCheckbox['value'];
451
+ /** Name for form submission */
452
+ 'name'?: NLDDCheckbox['name'];
453
+ /** Accessible label forwarded as aria-label to the native input. Note: aria-labelledby is not supported as IDREF resolution cannot cross shadow DOM boundaries. */
454
+ 'accessible-label'?: NLDDCheckbox['accessibleLabel'];
455
+ /** Accessible label forwarded as aria-label to the native input. Note: aria-labelledby is not supported as IDREF resolution cannot cross shadow DOM boundaries. */
456
+ 'accessibleLabel'?: NLDDCheckbox['accessibleLabel'];
457
+ 'internals'?: NLDDCheckbox['internals'];
458
+ /** Fired when the checkbox state changes; detail: { checked: boolean, value: string } */
459
+ 'onChange'?: (event: CustomEvent) => void;
460
+ };
461
+
462
+ type NLDDCheckboxFieldProps = {
463
+ /** Checked state */
464
+ 'checked'?: NLDDCheckboxField['checked'];
465
+ /** Indeterminate state */
466
+ 'indeterminate'?: NLDDCheckboxField['indeterminate'];
467
+ /** Disabled state */
468
+ 'disabled'?: NLDDCheckboxField['disabled'];
469
+ /** Value for form submission */
470
+ 'value'?: NLDDCheckboxField['value'];
471
+ /** Name for form submission */
472
+ 'name'?: NLDDCheckboxField['name'];
473
+ /** Label text for the checkbox */
474
+ 'label'?: NLDDCheckboxField['label'];
475
+ 'internals'?: NLDDCheckboxField['internals'];
476
+ /** When checked state changes; detail: { checked: boolean, value: string } */
477
+ 'onChange'?: (event: CustomEvent) => void;
478
+ };
479
+
480
+ type NLDDCodeEditorProps = {
481
+ /** Editor content */
482
+ 'value'?: NLDDCodeEditor['value'];
483
+ /** Sets the id on the editable element. Set automatically by nldd-form-field. */
484
+ 'input-id'?: NLDDCodeEditor['inputId'];
485
+ /** Sets the id on the editable element. Set automatically by nldd-form-field. */
486
+ 'inputId'?: NLDDCodeEditor['inputId'];
487
+ /** Placeholder text shown while empty */
488
+ 'placeholder'?: NLDDCodeEditor['placeholder'];
489
+ /** Disabled state */
490
+ 'disabled'?: NLDDCodeEditor['disabled'];
491
+ /** Field name for form submission */
492
+ 'name'?: NLDDCodeEditor['name'];
493
+ /** Readonly state (focusable and selectable, not editable) */
494
+ 'readonly'?: NLDDCodeEditor['readonly'];
495
+ /** Required state */
496
+ 'required'?: NLDDCodeEditor['required'];
497
+ /** Wrap long lines instead of horizontal scroll */
498
+ 'wrap'?: NLDDCodeEditor['wrap'];
499
+ /** Minimum visible rows (the floor in every resize mode). Default: 6. */
500
+ 'rows'?: NLDDCodeEditor['rows'];
501
+ /** 'none' (fixed) | 'vertical' (drag) | 'auto' (grow, default) */
502
+ 'resize'?: NLDDCodeEditor['resize'];
503
+ /** 'simple' (default, bare) | 'input-field' (framed surface) */
504
+ 'variant'?: NLDDCodeEditor['variant'];
505
+ /** Highlight grammar (yaml, json, javascript, typescript, css, html, xml, bash, markdown, rust, gherkin, toml, sql, python). Empty disables highlighting. */
506
+ 'language'?: NLDDCodeEditor['language'];
507
+ /** Show a line-number gutter */
508
+ 'line-numbers'?: NLDDCodeEditor['lineNumbers'];
509
+ /** Show a line-number gutter */
510
+ 'lineNumbers'?: NLDDCodeEditor['lineNumbers'];
511
+ /** Accessible label forwarded to the editor. Set automatically by nldd-form-field. */
512
+ 'accessible-label'?: NLDDCodeEditor['accessibleLabel'];
513
+ /** Accessible label forwarded to the editor. Set automatically by nldd-form-field. */
514
+ 'accessibleLabel'?: NLDDCodeEditor['accessibleLabel'];
515
+ 'internals'?: NLDDCodeEditor['internals'];
516
+ /** When the content changes (detail: { value }) */
517
+ 'onInput'?: (event: CustomEvent) => void;
518
+ /** When the content is committed on blur (detail: { value }) */
519
+ 'onChange'?: (event: CustomEvent) => void;
520
+ };
521
+
522
+ type NLDDCodeViewerProps = {
523
+ /** Visual style. `box` (default) is a framed card with rounded corners, padding, fill, and a 1px border ring. `simple` drops the entire frame — use when embedding inside a parent surface. */
524
+ 'variant'?: NLDDCodeViewer['variant'];
525
+ /** Surface fill when `variant="box"`. */
526
+ 'background'?: NLDDCodeViewer['background'];
527
+ /** Grammar to highlight with. Empty disables highlighting. */
528
+ 'language'?: NLDDCodeViewer['language'];
529
+ /** Hide the copy-to-clipboard button (shown by default). */
530
+ 'no-copy'?: NLDDCodeViewer['noCopy'];
531
+ /** Hide the copy-to-clipboard button (shown by default). */
532
+ 'noCopy'?: NLDDCodeViewer['noCopy'];
533
+ /** Wrap long lines instead of horizontal scroll */
534
+ 'wrap'?: NLDDCodeViewer['wrap'];
535
+ 'copy-unavailable'?: NLDDCodeViewer['_copyUnavailable'];
536
+ '_copyUnavailable'?: NLDDCodeViewer['_copyUnavailable'];
537
+ /** Override translation keys (e.g. the copy button labels and the scroll-region label); unset keys fall back to Dutch. */
538
+ 'translations'?: NLDDCodeViewer['translations'];
539
+ };
540
+
541
+ type NLDDCollectionProps = {
542
+ /** Layout mode: 'grid' | 'stack' | 'horizontal-scroll' (default: 'grid') */
543
+ 'layout'?: NLDDCollection['layout'];
544
+ /** Show load-more button in grid/stack (default: false) */
545
+ 'show-load-more'?: NLDDCollection['showLoadMore'];
546
+ /** Show load-more button in grid/stack (default: false) */
547
+ 'showLoadMore'?: NLDDCollection['showLoadMore'];
548
+ /** Number of visible items per page (default: 24) */
549
+ 'max-items'?: NLDDCollection['maxItems'];
550
+ /** Number of visible items per page (default: 24) */
551
+ 'maxItems'?: NLDDCollection['maxItems'];
552
+ /** Automatically load more items when the button becomes visible */
553
+ 'lazy-load'?: NLDDCollection['lazyLoad'];
554
+ /** Automatically load more items when the button becomes visible */
555
+ 'lazyLoad'?: NLDDCollection['lazyLoad'];
556
+ /** Preferred width for each item (e.g. '280px', '20rem'). In grid layout used as the minimum column width (columns will be at least this wide; 1fr if container allows more). In horizontal scroll used as flex-basis. Never forces horizontal overflow — the value is clamped to container width. */
557
+ 'item-width'?: NLDDCollection['itemWidth'];
558
+ /** Preferred width for each item (e.g. '280px', '20rem'). In grid layout used as the minimum column width (columns will be at least this wide; 1fr if container allows more). In horizontal scroll used as flex-basis. Never forces horizontal overflow — the value is clamped to container width. */
559
+ 'itemWidth'?: NLDDCollection['itemWidth'];
560
+ /** Custom gap between items (any CSS length, e.g. '8px'). Overrides the responsive default at every breakpoint; unset keeps the default. */
561
+ 'gap'?: NLDDCollection['gap'];
562
+ /** Translation overrides; unset keys fall back to Dutch. Available keys: 'components.collection.previous-action', 'components.collection.next-action', 'components.collection.load-more-action' */
563
+ 'translations'?: NLDDCollection['translations'];
564
+ /** When the load-more button is clicked */
565
+ 'onLoadMore'?: (event: CustomEvent) => void;
566
+ };
567
+
568
+ type NLDDComboBoxProps = {
569
+ /** The selected form value */
570
+ 'value'?: NLDDComboBox['value'];
571
+ /** The text shown in the input. May differ from `value` (e.g. value="nl" → text="Nederland"). Set this when pre-populating an existing record. If left empty and `value` matches a slotted menu item, the matching item's `text` is used automatically. */
572
+ 'text'?: NLDDComboBox['text'];
573
+ /** Placeholder text for the input */
574
+ 'placeholder'?: NLDDComboBox['placeholder'];
575
+ /** Size: 'sm' | 'md' (default: 'md') */
576
+ 'size'?: NLDDComboBox['size'];
577
+ /** Marks the field as valid */
578
+ 'valid'?: NLDDComboBox['valid'];
579
+ /** Marks the field as invalid */
580
+ 'invalid'?: NLDDComboBox['invalid'];
581
+ /** Disabled state */
582
+ 'disabled'?: NLDDComboBox['disabled'];
583
+ /** Allow committing free-typed values that match no option (Enter/blur). Default false: only menu options are accepted. */
584
+ 'allow-custom'?: NLDDComboBox['allowCustom'];
585
+ /** Allow committing free-typed values that match no option (Enter/blur). Default false: only menu options are accepted. */
586
+ 'allowCustom'?: NLDDComboBox['allowCustom'];
587
+ /** Input name for form submission */
588
+ 'name'?: NLDDComboBox['name'];
589
+ /** Browser autofill hint. Default 'off' to prevent the native autofill panel from competing with the menu dropdown. Set to a valid token (e.g. 'country', 'organization') when browser autofill is desired. */
590
+ 'autocomplete'?: NLDDComboBox['autocomplete'];
591
+ /** Maximum visible items before scrolling (default: 8) */
592
+ 'max-items'?: NLDDComboBox['maxItems'];
593
+ /** Maximum visible items before scrolling (default: 8) */
594
+ 'maxItems'?: NLDDComboBox['maxItems'];
595
+ /** Accessible label forwarded as aria-label to the input. Required for screen reader accessibility. */
596
+ 'accessible-label'?: NLDDComboBox['accessibleLabel'];
597
+ /** Accessible label forwarded as aria-label to the input. Required for screen reader accessibility. */
598
+ 'accessibleLabel'?: NLDDComboBox['accessibleLabel'];
599
+ /** Override translation keys; unset keys fall back to Dutch */
600
+ 'translations'?: NLDDComboBox['translations'];
601
+ /** Disables browser spellchecking on the inner input */
602
+ 'no-spellcheck'?: NLDDComboBox['noSpellcheck'];
603
+ /** Disables browser spellchecking on the inner input */
604
+ 'noSpellcheck'?: NLDDComboBox['noSpellcheck'];
605
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
606
+ 'width'?: NLDDComboBox['width'];
607
+ 'internals'?: NLDDComboBox['internals'];
608
+ /** When the input value changes; detail: { value: string } */
609
+ 'onInput'?: (event: CustomEvent) => void;
610
+ /** When an option is selected or a custom value is committed; detail: { value: string } */
611
+ 'onChange'?: (event: CustomEvent) => void;
612
+ };
613
+
614
+ type NLDDContainerProps = {
615
+ /** 'stack' | 'row' | 'wrap' | 'grid' | 'columns' | 'lanes' (default: 'stack') */
616
+ 'layout'?: NLDDContainer['layout'];
617
+ /** Force N columns (1-8) for layout=grid/columns/lanes */
618
+ 'column-count'?: NLDDContainer['columnCount'];
619
+ /** Force N columns (1-8) for layout=grid/columns/lanes */
620
+ 'columnCount'?: NLDDContainer['columnCount'];
621
+ /** Column count when this container is sm-wide */
622
+ 'sm-column-count'?: NLDDContainer['smColumnCount'];
623
+ /** Column count when this container is sm-wide */
624
+ 'smColumnCount'?: NLDDContainer['smColumnCount'];
625
+ /** Column count when this container is md-wide */
626
+ 'md-column-count'?: NLDDContainer['mdColumnCount'];
627
+ /** Column count when this container is md-wide */
628
+ 'mdColumnCount'?: NLDDContainer['mdColumnCount'];
629
+ /** Column count when this container is lg-wide */
630
+ 'lg-column-count'?: NLDDContainer['lgColumnCount'];
631
+ /** Column count when this container is lg-wide */
632
+ 'lgColumnCount'?: NLDDContainer['lgColumnCount'];
633
+ /** 'left' | 'center' | 'right' */
634
+ 'horizontal-alignment'?: NLDDContainer['horizontalAlignment'];
635
+ /** 'left' | 'center' | 'right' */
636
+ 'horizontalAlignment'?: NLDDContainer['horizontalAlignment'];
637
+ /** 'top' | 'center' | 'bottom' */
638
+ 'vertical-alignment'?: NLDDContainer['verticalAlignment'];
639
+ /** 'top' | 'center' | 'bottom' */
640
+ 'verticalAlignment'?: NLDDContainer['verticalAlignment'];
641
+ /** Gap between children */
642
+ 'gap'?: NLDDContainer['gap'];
643
+ /** Gap at sm breakpoint */
644
+ 'sm-gap'?: NLDDContainer['smGap'];
645
+ /** Gap at sm breakpoint */
646
+ 'smGap'?: NLDDContainer['smGap'];
647
+ /** Gap at md breakpoint */
648
+ 'md-gap'?: NLDDContainer['mdGap'];
649
+ /** Gap at md breakpoint */
650
+ 'mdGap'?: NLDDContainer['mdGap'];
651
+ /** Gap at lg breakpoint */
652
+ 'lg-gap'?: NLDDContainer['lgGap'];
653
+ /** Gap at lg breakpoint */
654
+ 'lgGap'?: NLDDContainer['lgGap'];
655
+ /** Padding for all sides */
656
+ 'padding'?: NLDDContainer['padding'];
657
+ /** Padding for left and right */
658
+ 'padding-inline'?: NLDDContainer['paddingInline'];
659
+ /** Padding for left and right */
660
+ 'paddingInline'?: NLDDContainer['paddingInline'];
661
+ /** Padding for top and bottom */
662
+ 'padding-block'?: NLDDContainer['paddingBlock'];
663
+ /** Padding for top and bottom */
664
+ 'paddingBlock'?: NLDDContainer['paddingBlock'];
665
+ /** Padding top */
666
+ 'padding-top'?: NLDDContainer['paddingTop'];
667
+ /** Padding top */
668
+ 'paddingTop'?: NLDDContainer['paddingTop'];
669
+ /** Padding right */
670
+ 'padding-right'?: NLDDContainer['paddingRight'];
671
+ /** Padding right */
672
+ 'paddingRight'?: NLDDContainer['paddingRight'];
673
+ /** Padding bottom */
674
+ 'padding-bottom'?: NLDDContainer['paddingBottom'];
675
+ /** Padding bottom */
676
+ 'paddingBottom'?: NLDDContainer['paddingBottom'];
677
+ /** Padding left Breakpoints for the sm/md/lg padding attributes below: sm is up to 640px, md is 641px to 1007px, lg is 1008px and up. Each is emitted as both an */
678
+ 'padding-left'?: NLDDContainer['paddingLeft'];
679
+ /** Padding left Breakpoints for the sm/md/lg padding attributes below: sm is up to 640px, md is 641px to 1007px, lg is 1008px and up. Each is emitted as both an */
680
+ 'paddingLeft'?: NLDDContainer['paddingLeft'];
681
+ /** Padding for all sides at sm */
682
+ 'sm-padding'?: NLDDContainer['smPadding'];
683
+ /** Padding for all sides at sm */
684
+ 'smPadding'?: NLDDContainer['smPadding'];
685
+ /** Padding left and right at sm */
686
+ 'sm-padding-inline'?: NLDDContainer['smPaddingInline'];
687
+ /** Padding left and right at sm */
688
+ 'smPaddingInline'?: NLDDContainer['smPaddingInline'];
689
+ /** Padding top and bottom at sm */
690
+ 'sm-padding-block'?: NLDDContainer['smPaddingBlock'];
691
+ /** Padding top and bottom at sm */
692
+ 'smPaddingBlock'?: NLDDContainer['smPaddingBlock'];
693
+ /** Padding top at sm */
694
+ 'sm-padding-top'?: NLDDContainer['smPaddingTop'];
695
+ /** Padding top at sm */
696
+ 'smPaddingTop'?: NLDDContainer['smPaddingTop'];
697
+ /** Padding right at sm */
698
+ 'sm-padding-right'?: NLDDContainer['smPaddingRight'];
699
+ /** Padding right at sm */
700
+ 'smPaddingRight'?: NLDDContainer['smPaddingRight'];
701
+ /** Padding bottom at sm */
702
+ 'sm-padding-bottom'?: NLDDContainer['smPaddingBottom'];
703
+ /** Padding bottom at sm */
704
+ 'smPaddingBottom'?: NLDDContainer['smPaddingBottom'];
705
+ /** Padding left at sm */
706
+ 'sm-padding-left'?: NLDDContainer['smPaddingLeft'];
707
+ /** Padding left at sm */
708
+ 'smPaddingLeft'?: NLDDContainer['smPaddingLeft'];
709
+ /** Padding for all sides at md */
710
+ 'md-padding'?: NLDDContainer['mdPadding'];
711
+ /** Padding for all sides at md */
712
+ 'mdPadding'?: NLDDContainer['mdPadding'];
713
+ /** Padding left and right at md */
714
+ 'md-padding-inline'?: NLDDContainer['mdPaddingInline'];
715
+ /** Padding left and right at md */
716
+ 'mdPaddingInline'?: NLDDContainer['mdPaddingInline'];
717
+ /** Padding top and bottom at md */
718
+ 'md-padding-block'?: NLDDContainer['mdPaddingBlock'];
719
+ /** Padding top and bottom at md */
720
+ 'mdPaddingBlock'?: NLDDContainer['mdPaddingBlock'];
721
+ /** Padding top at md */
722
+ 'md-padding-top'?: NLDDContainer['mdPaddingTop'];
723
+ /** Padding top at md */
724
+ 'mdPaddingTop'?: NLDDContainer['mdPaddingTop'];
725
+ /** Padding right at md */
726
+ 'md-padding-right'?: NLDDContainer['mdPaddingRight'];
727
+ /** Padding right at md */
728
+ 'mdPaddingRight'?: NLDDContainer['mdPaddingRight'];
729
+ /** Padding bottom at md */
730
+ 'md-padding-bottom'?: NLDDContainer['mdPaddingBottom'];
731
+ /** Padding bottom at md */
732
+ 'mdPaddingBottom'?: NLDDContainer['mdPaddingBottom'];
733
+ /** Padding left at md */
734
+ 'md-padding-left'?: NLDDContainer['mdPaddingLeft'];
735
+ /** Padding left at md */
736
+ 'mdPaddingLeft'?: NLDDContainer['mdPaddingLeft'];
737
+ /** Padding for all sides at lg */
738
+ 'lg-padding'?: NLDDContainer['lgPadding'];
739
+ /** Padding for all sides at lg */
740
+ 'lgPadding'?: NLDDContainer['lgPadding'];
741
+ /** Padding left and right at lg */
742
+ 'lg-padding-inline'?: NLDDContainer['lgPaddingInline'];
743
+ /** Padding left and right at lg */
744
+ 'lgPaddingInline'?: NLDDContainer['lgPaddingInline'];
745
+ /** Padding top and bottom at lg */
746
+ 'lg-padding-block'?: NLDDContainer['lgPaddingBlock'];
747
+ /** Padding top and bottom at lg */
748
+ 'lgPaddingBlock'?: NLDDContainer['lgPaddingBlock'];
749
+ /** Padding top at lg */
750
+ 'lg-padding-top'?: NLDDContainer['lgPaddingTop'];
751
+ /** Padding top at lg */
752
+ 'lgPaddingTop'?: NLDDContainer['lgPaddingTop'];
753
+ /** Padding right at lg */
754
+ 'lg-padding-right'?: NLDDContainer['lgPaddingRight'];
755
+ /** Padding right at lg */
756
+ 'lgPaddingRight'?: NLDDContainer['lgPaddingRight'];
757
+ /** Padding bottom at lg */
758
+ 'lg-padding-bottom'?: NLDDContainer['lgPaddingBottom'];
759
+ /** Padding bottom at lg */
760
+ 'lgPaddingBottom'?: NLDDContainer['lgPaddingBottom'];
761
+ /** Padding left at lg */
762
+ 'lg-padding-left'?: NLDDContainer['lgPaddingLeft'];
763
+ /** Padding left at lg */
764
+ 'lgPaddingLeft'?: NLDDContainer['lgPaddingLeft'];
765
+ };
766
+
767
+ type NLDDDateFieldProps = {
768
+ /** 'md' (standaard) | 'sm'. Wordt automatisch gezet door nldd-form-field. */
769
+ 'size'?: NLDDDateField['size'];
770
+ /** De datum als ISO (jjjj-mm-dd). Met `range` een ISO 8601-interval: `jjjj-mm-dd/jjjj-mm-dd`. Leeg wanneer er geen geldige datum staat. */
771
+ 'value'?: NLDDDateField['value'];
772
+ /** Kies een periode: twee invoervelden en een kalender in bereikmodus. */
773
+ 'range'?: NLDDDateField['range'];
774
+ /** Vroegst toegestane datum als ISO (jjjj-mm-dd). */
775
+ 'min'?: NLDDDateField['min'];
776
+ /** Laatst toegestane datum als ISO (jjjj-mm-dd). */
777
+ 'max'?: NLDDDateField['max'];
778
+ /** Verbergt de kalenderknop. Standaard staat die knop er wel. */
779
+ 'no-picker'?: NLDDDateField['noPicker'];
780
+ /** Verbergt de kalenderknop. Standaard staat die knop er wel. */
781
+ 'noPicker'?: NLDDDateField['noPicker'];
782
+ /** Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field. */
783
+ 'input-id'?: NLDDDateField['inputId'];
784
+ /** Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field. */
785
+ 'inputId'?: NLDDDateField['inputId'];
786
+ /** Placeholdertekst. Zet hier geen formaat in; gebruik daarvoor de supporting-label van nldd-form-field. */
787
+ 'placeholder'?: NLDDDateField['placeholder'];
788
+ /** Markeert het veld als ongeldig. */
789
+ 'invalid'?: NLDDDateField['invalid'];
790
+ /** Markeert het veld als geldig. */
791
+ 'valid'?: NLDDDateField['valid'];
792
+ /** Uitgeschakelde staat. */
793
+ 'disabled'?: NLDDDateField['disabled'];
794
+ /** Alleen-lezen staat. */
795
+ 'readonly'?: NLDDDateField['readonly'];
796
+ /** Verplichte staat. */
797
+ 'required'?: NLDDDateField['required'];
798
+ /** Naam voor formulierverzending. */
799
+ 'name'?: NLDDDateField['name'];
800
+ /** Autocomplete-hint, bijvoorbeeld 'bday'. */
801
+ 'autocomplete'?: NLDDDateField['autocomplete'];
802
+ /** Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field. */
803
+ 'accessible-label'?: NLDDDateField['accessibleLabel'];
804
+ /** Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field. */
805
+ 'accessibleLabel'?: NLDDDateField['accessibleLabel'];
806
+ /** Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field. */
807
+ 'error-message-ids'?: NLDDDateField['errorMessageIds'];
808
+ /** Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field. */
809
+ 'errorMessageIds'?: NLDDDateField['errorMessageIds'];
810
+ /** Breedte. Standaard precies breed genoeg voor een datum plus de iconen; 'full' vult de container, of geef een eigen CSS-lengte. */
811
+ 'width'?: NLDDDateField['width'];
812
+ /** Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands. */
813
+ 'translations'?: NLDDDateField['translations'];
814
+ 'internals'?: NLDDDateField['internals'];
815
+ /** Bij elke wijziging. detail: { value } met de ISO-datum, of '' zolang er geen geldige datum staat. */
816
+ 'onInput'?: (event: CustomEvent) => void;
817
+ /** Wanneer de waarde is vastgelegd. detail: { value } met de ISO-datum, of ''. */
818
+ 'onChange'?: (event: CustomEvent) => void;
819
+ };
820
+
821
+ type NLDDDatePickerProps = {
822
+ /** De gekozen datum als ISO (jjjj-mm-dd). Alleen zonder `range`. */
823
+ 'value'?: NLDDDatePicker['value'];
824
+ /** Begin van de periode als ISO. Alleen met `range`. */
825
+ 'start'?: NLDDDatePicker['start'];
826
+ /** Einde van de periode als ISO. Alleen met `range`. */
827
+ 'end'?: NLDDDatePicker['end'];
828
+ /** Breedte: `full` (vult de container) of een CSS-lengte (bv. `560px`). Leeg (standaard) is de intrinsieke breedte van zeven dagcellen; de cellen rekken mee met de opgegeven breedte. */
829
+ 'width'?: NLDDDatePicker['width'];
830
+ /** Kies een periode in plaats van één datum. */
831
+ 'range'?: NLDDDatePicker['range'];
832
+ /** Vroegst toegestane datum: ISO, of `today` met een verschuiving (`today-18y`). */
833
+ 'min'?: NLDDDatePicker['min'];
834
+ /** Laatst toegestane datum: ISO, of `today` met een verschuiving (`today+1y`). */
835
+ 'max'?: NLDDDatePicker['max'];
836
+ /** Eerste dag van de week, 0 is zondag. Standaard 1 (maandag). */
837
+ 'first-day-of-week'?: NLDDDatePicker['firstDayOfWeek'];
838
+ /** Eerste dag van de week, 0 is zondag. Standaard 1 (maandag). */
839
+ 'firstDayOfWeek'?: NLDDDatePicker['firstDayOfWeek'];
840
+ /** Toont ISO-weeknummers in een kolom links. */
841
+ 'week-numbers'?: NLDDDatePicker['weekNumbers'];
842
+ /** Toont ISO-weeknummers in een kolom links. */
843
+ 'weekNumbers'?: NLDDDatePicker['weekNumbers'];
844
+ /** Toegankelijke naam van de kalender. */
845
+ 'accessible-label'?: NLDDDatePicker['accessibleLabel'];
846
+ /** Toegankelijke naam van de kalender. */
847
+ 'accessibleLabel'?: NLDDDatePicker['accessibleLabel'];
848
+ /** Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands. */
849
+ 'translations'?: NLDDDatePicker['translations'];
850
+ /** Marks individual dates as unselectable - weekends, holidays, dates already booked. */
851
+ 'isDateUnavailable'?: NLDDDatePicker['isDateUnavailable'];
852
+ /** Wanneer een datum of een volledige periode is gekozen. detail: { value } of { start, end }. */
853
+ 'onChange'?: (event: CustomEvent) => void;
854
+ /** Ook bij de tussenstap van een periode, wanneer alleen de begindatum staat. */
855
+ 'onInput'?: (event: CustomEvent) => void;
856
+ };
857
+
858
+ type NLDDDescriptionCellProps = {
859
+ /** 'full' | 'fit-content' | CSS length (e.g. '200px', '20rem'). Default: 'full' */
860
+ 'width'?: NLDDDescriptionCell['width'];
861
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
862
+ 'min-width'?: NLDDDescriptionCell['minWidth'];
863
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
864
+ 'minWidth'?: NLDDDescriptionCell['minWidth'];
865
+ /** Maximum width as CSS length (e.g. '300px', '20rem') */
866
+ 'max-width'?: NLDDDescriptionCell['maxWidth'];
867
+ /** Maximum width as CSS length (e.g. '300px', '20rem') */
868
+ 'maxWidth'?: NLDDDescriptionCell['maxWidth'];
869
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
870
+ 'min-height'?: NLDDDescriptionCell['minHeight'];
871
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
872
+ 'minHeight'?: NLDDDescriptionCell['minHeight'];
873
+ /** Vertical alignment (default: 'center') */
874
+ 'vertical-alignment'?: NLDDDescriptionCell['verticalAlignment'];
875
+ /** Vertical alignment (default: 'center') */
876
+ 'verticalAlignment'?: NLDDDescriptionCell['verticalAlignment'];
877
+ 'hide-below'?: NLDDDescriptionCell['hideBelow'];
878
+ 'hideBelow'?: NLDDDescriptionCell['hideBelow'];
879
+ 'hide-above'?: NLDDDescriptionCell['hideAbove'];
880
+ 'hideAbove'?: NLDDDescriptionCell['hideAbove'];
881
+ };
882
+
883
+ type NLDDDividerProps = {
884
+ };
885
+
886
+ type NLDDDocumentTabBarProps = {
887
+ /** Accessible name for the navigation landmark */
888
+ 'accessible-label'?: NLDDDocumentTabBar['accessibleLabel'];
889
+ /** Accessible name for the navigation landmark */
890
+ 'accessibleLabel'?: NLDDDocumentTabBar['accessibleLabel'];
891
+ /** Renders a nav landmark instead of tablist; use when items have hrefs */
892
+ 'navigation'?: NLDDDocumentTabBar['navigation'];
893
+ /** Translation overrides; unset keys fall back to Dutch. Available keys: 'components.document-tab-bar.overflow-action' (default: 'Meer') */
894
+ 'translations'?: NLDDDocumentTabBar['translations'];
895
+ /** Fired when a tab is selected; detail: { item } */
896
+ 'onTabchange'?: (event: CustomEvent) => void;
897
+ /** Fired when a tab is dismissed; detail: { item, nextItem } */
898
+ 'onTabdismiss'?: (event: CustomEvent) => void;
899
+ /** Fired when the last tab is dismissed */
900
+ 'onTabempty'?: (event: CustomEvent) => void;
901
+ /** Fired when tabs are reordered via drag; detail: { fromIndex, toIndex } */
902
+ 'onNlddReorder'?: (event: CustomEvent) => void;
903
+ };
904
+
905
+ type NLDDDocumentTabBarItemProps = {
906
+ /** Selected state (managed by nldd-document-tab-bar) */
907
+ 'selected'?: NLDDDocumentTabBarItem['selected'];
908
+ /** Primary text */
909
+ 'text'?: NLDDDocumentTabBarItem['text'];
910
+ /** Supporting text */
911
+ 'supporting-text'?: NLDDDocumentTabBarItem['supportingText'];
912
+ /** Supporting text */
913
+ 'supportingText'?: NLDDDocumentTabBarItem['supportingText'];
914
+ /** Short primary text (visible below 200px width) */
915
+ 'short-text'?: NLDDDocumentTabBarItem['shortText'];
916
+ /** Short primary text (visible below 200px width) */
917
+ 'shortText'?: NLDDDocumentTabBarItem['shortText'];
918
+ /** Short supporting text (visible below 200px width) */
919
+ 'short-supporting-text'?: NLDDDocumentTabBarItem['shortSupportingText'];
920
+ /** Short supporting text (visible below 200px width) */
921
+ 'shortSupportingText'?: NLDDDocumentTabBarItem['shortSupportingText'];
922
+ /** Optional link URL; renders an anchor instead of a div */
923
+ 'href'?: NLDDDocumentTabBarItem['href'];
924
+ /** Fired when the item is activated; detail: { item } */
925
+ 'onSelect'?: (event: CustomEvent) => void;
926
+ /** Fired when the dismiss button is clicked; detail: { item } */
927
+ 'onDismiss'?: (event: CustomEvent) => void;
928
+ };
929
+
930
+ type NLDDDragHandleCellProps = {
931
+ /** Handle size: 'sm' | 'md' (default: 'md') */
932
+ 'size'?: NLDDDragHandleCell['size'];
933
+ /** Override translation keys; unset keys fall back to Dutch. Sets the handle's accessible label. */
934
+ 'translations'?: NLDDDragHandleCell['translations'];
935
+ };
936
+
937
+ type NLDDDropdownProps = {
938
+ /** Size: 'xs' | 'sm' | 'md' (default: 'md') */
939
+ 'size'?: NLDDDropdown['size'];
940
+ /** Marks the field as valid */
941
+ 'valid'?: NLDDDropdown['valid'];
942
+ /** Marks the field as invalid */
943
+ 'invalid'?: NLDDDropdown['invalid'];
944
+ /** Disabled state; also forwarded to the slotted select */
945
+ 'disabled'?: NLDDDropdown['disabled'];
946
+ /** Reflects whether the native picker popup is open (driven internally) */
947
+ 'expanded'?: NLDDDropdown['expanded'];
948
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
949
+ 'width'?: NLDDDropdown['width'];
950
+ /** Bubbles up from the slotted select; detail: { value: string } */
951
+ 'onChange'?: (event: CustomEvent) => void;
952
+ };
953
+
954
+ type NLDDFormProps = {
955
+ /** Default `label-alignment` voor descendant nldd-form-field en nldd-form-actions ('top' | 'right' | 'left'). Wordt naar descendants gepropageerd als `form-label-alignment`. Een eigen `label-alignment` op de descendant heeft voorrang via CSS-cascade. */
956
+ 'label-alignment'?: NLDDForm['labelAlignment'];
957
+ /** Default `label-alignment` voor descendant nldd-form-field en nldd-form-actions ('top' | 'right' | 'left'). Wordt naar descendants gepropageerd als `form-label-alignment`. Een eigen `label-alignment` op de descendant heeft voorrang via CSS-cascade. */
958
+ 'labelAlignment'?: NLDDForm['labelAlignment'];
959
+ /** The inner <form> element. Useful for `form.checkValidity()` etc. */
960
+ 'form'?: NLDDForm['form'];
961
+ 'onSubmit'?: (event: CustomEvent) => void;
962
+ 'onReset'?: (event: CustomEvent) => void;
963
+ };
964
+
965
+ type NLDDFormActionsProps = {
966
+ /** 'top' (default) | 'right' | 'left'. Een eigen waarde wint altijd over de inherited form-label-alignment. */
967
+ 'label-alignment'?: NLDDFormActions['labelAlignment'];
968
+ /** 'top' (default) | 'right' | 'left'. Een eigen waarde wint altijd over de inherited form-label-alignment. */
969
+ 'labelAlignment'?: NLDDFormActions['labelAlignment'];
970
+ };
971
+
972
+ type NLDDFormFieldProps = {
973
+ /** 'top' (default) | 'right' | 'left'. Een eigen waarde wint altijd over de inherited form-label-alignment. */
974
+ 'label-alignment'?: NLDDFormField['labelAlignment'];
975
+ /** 'top' (default) | 'right' | 'left'. Een eigen waarde wint altijd over de inherited form-label-alignment. */
976
+ 'labelAlignment'?: NLDDFormField['labelAlignment'];
977
+ /** Field label text. Omit for no-label layout. */
978
+ 'label'?: NLDDFormField['label'];
979
+ /** Short supporting text below the label. Same typography as optional badge. */
980
+ 'supporting-label'?: NLDDFormField['supportingLabel'];
981
+ /** Short supporting text below the label. Same typography as optional badge. */
982
+ 'supportingLabel'?: NLDDFormField['supportingLabel'];
983
+ /** Shows an optional badge next to the label. */
984
+ 'optional'?: NLDDFormField['optional'];
985
+ /** Text for the optional badge. Defaults to 'Optioneel'. */
986
+ 'optional-label'?: NLDDFormField['optionalLabel'];
987
+ /** Text for the optional badge. Defaults to 'Optioneel'. */
988
+ 'optionalLabel'?: NLDDFormField['optionalLabel'];
989
+ };
990
+
991
+ type NLDDFormFieldErrorTextProps = {
992
+ /** Visibility managed automatically by nldd-form-field. */
993
+ 'invalid'?: NLDDFormFieldErrorText['invalid'];
994
+ };
995
+
996
+ type NLDDFormFieldHelpTextProps = {
997
+ };
998
+
999
+ type NLDDFormSectionProps = {
1000
+ /** Heading-tekst (gerenderd in `<legend>`). */
1001
+ 'text'?: NLDDFormSection['text'];
1002
+ /** Korte beschrijving onder de heading. Houd ≤ ~80 tekens (zie a11y-note). */
1003
+ 'supporting-text'?: NLDDFormSection['supportingText'];
1004
+ /** Korte beschrijving onder de heading. Houd ≤ ~80 tekens (zie a11y-note). */
1005
+ 'supportingText'?: NLDDFormSection['supportingText'];
1006
+ };
1007
+
1008
+ type NLDDFullBleedSectionProps = {
1009
+ /** Body max-width: 'full' removes the constraint so the section spans the full available width. Any CSS length (e.g. '480px') overrides the default max-width. */
1010
+ 'width'?: NLDDFullBleedSection['width'];
1011
+ /** Surface background ('inherit' default; 'base'/'tinted' paint and cascade a surface). */
1012
+ 'background'?: NLDDFullBleedSection['background'];
1013
+ /** Color scheme ('inherit' default; 'inverted' = opposite of the surrounding page scheme). */
1014
+ 'scheme'?: NLDDFullBleedSection['scheme'];
1015
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1016
+ 'padding-block'?: NLDDFullBleedSection['paddingBlock'];
1017
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1018
+ 'paddingBlock'?: NLDDFullBleedSection['paddingBlock'];
1019
+ /** Top padding override. */
1020
+ 'padding-top'?: NLDDFullBleedSection['paddingTop'];
1021
+ /** Top padding override. */
1022
+ 'paddingTop'?: NLDDFullBleedSection['paddingTop'];
1023
+ /** Bottom padding override. */
1024
+ 'padding-bottom'?: NLDDFullBleedSection['paddingBottom'];
1025
+ /** Bottom padding override. */
1026
+ 'paddingBottom'?: NLDDFullBleedSection['paddingBottom'];
1027
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1028
+ 'sm-padding-block'?: NLDDFullBleedSection['smPaddingBlock'];
1029
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1030
+ 'smPaddingBlock'?: NLDDFullBleedSection['smPaddingBlock'];
1031
+ 'sm-padding-top'?: NLDDFullBleedSection['smPaddingTop'];
1032
+ 'smPaddingTop'?: NLDDFullBleedSection['smPaddingTop'];
1033
+ 'sm-padding-bottom'?: NLDDFullBleedSection['smPaddingBottom'];
1034
+ 'smPaddingBottom'?: NLDDFullBleedSection['smPaddingBottom'];
1035
+ 'md-padding-block'?: NLDDFullBleedSection['mdPaddingBlock'];
1036
+ 'mdPaddingBlock'?: NLDDFullBleedSection['mdPaddingBlock'];
1037
+ 'md-padding-top'?: NLDDFullBleedSection['mdPaddingTop'];
1038
+ 'mdPaddingTop'?: NLDDFullBleedSection['mdPaddingTop'];
1039
+ 'md-padding-bottom'?: NLDDFullBleedSection['mdPaddingBottom'];
1040
+ 'mdPaddingBottom'?: NLDDFullBleedSection['mdPaddingBottom'];
1041
+ 'lg-padding-block'?: NLDDFullBleedSection['lgPaddingBlock'];
1042
+ 'lgPaddingBlock'?: NLDDFullBleedSection['lgPaddingBlock'];
1043
+ 'lg-padding-top'?: NLDDFullBleedSection['lgPaddingTop'];
1044
+ 'lgPaddingTop'?: NLDDFullBleedSection['lgPaddingTop'];
1045
+ 'lg-padding-bottom'?: NLDDFullBleedSection['lgPaddingBottom'];
1046
+ 'lgPaddingBottom'?: NLDDFullBleedSection['lgPaddingBottom'];
1047
+ /** Minimum section height (any CSS length, e.g. '400px', '100dvh') (mirrors width, which sets the body max-width). */
1048
+ 'height'?: NLDDFullBleedSection['height'];
1049
+ };
1050
+
1051
+ type NLDDHeroProps = {
1052
+ /** Positie van het tekstpaneel (default: 'bottom-left'); 'left'/'right' beslaan de volle hoogte */
1053
+ 'main-position'?: NLDDHero['mainPosition'];
1054
+ /** Positie van het tekstpaneel (default: 'bottom-left'); 'left'/'right' beslaan de volle hoogte */
1055
+ 'mainPosition'?: NLDDHero['mainPosition'];
1056
+ /** Breedte van het paneel (default: '1/2'); 'full' maakt een volle boven- of onderstrook en wordt bij 'left'/'right' genegeerd */
1057
+ 'main-width'?: NLDDHero['mainWidth'];
1058
+ /** Breedte van het paneel (default: '1/2'); 'full' maakt een volle boven- of onderstrook en wordt bij 'left'/'right' genegeerd */
1059
+ 'mainWidth'?: NLDDHero['mainWidth'];
1060
+ /** Vlakkleur van het paneel: 'base' (de base surface) of een categoriekleur — 'accent' (default) of een rijkskleur zoals 'lintblauw'|'donkerblauw'|'oranje' */
1061
+ 'main-background'?: NLDDHero['mainBackground'];
1062
+ /** Vlakkleur van het paneel: 'base' (de base surface) of een categoriekleur — 'accent' (default) of een rijkskleur zoals 'lintblauw'|'donkerblauw'|'oranje' */
1063
+ 'mainBackground'?: NLDDHero['mainBackground'];
1064
+ /** Aspect ratio van het mediavlak (CSS-vorm, '16/9' of '16:9'); default '21/9'. Bepaalt op md/lg de hoogte van de hero, op sm de hoogte van het mediavlak */
1065
+ 'media-aspect-ratio'?: NLDDHero['mediaAspectRatio'];
1066
+ /** Aspect ratio van het mediavlak (CSS-vorm, '16/9' of '16:9'); default '21/9'. Bepaalt op md/lg de hoogte van de hero, op sm de hoogte van het mediavlak */
1067
+ 'mediaAspectRatio'?: NLDDHero['mediaAspectRatio'];
1068
+ /** Body max-width; 'full' verwijdert de begrenzing (sectie-API) */
1069
+ 'width'?: NLDDHero['width'];
1070
+ /** Bron van het mediavlak (alternatief voor de media-slot); genegeerd zodra de media-slot gevuld is */
1071
+ 'media-src'?: NLDDHero['mediaSrc'];
1072
+ /** Bron van het mediavlak (alternatief voor de media-slot); genegeerd zodra de media-slot gevuld is */
1073
+ 'mediaSrc'?: NLDDHero['mediaSrc'];
1074
+ /** Responsive source set voor media-src */
1075
+ 'media-srcset'?: NLDDHero['mediaSrcset'];
1076
+ /** Responsive source set voor media-src */
1077
+ 'mediaSrcset'?: NLDDHero['mediaSrcset'];
1078
+ /** Source sizes-hint voor media-src */
1079
+ 'media-sizes'?: NLDDHero['mediaSizes'];
1080
+ /** Source sizes-hint voor media-src */
1081
+ 'mediaSizes'?: NLDDHero['mediaSizes'];
1082
+ /** Alt-tekst voor media-src; leeg = decoratief */
1083
+ 'media-alt'?: NLDDHero['mediaAlt'];
1084
+ /** Alt-tekst voor media-src; leeg = decoratief */
1085
+ 'mediaAlt'?: NLDDHero['mediaAlt'];
1086
+ /** Surface achter de hero (sectie-API) */
1087
+ 'background'?: NLDDHero['background'];
1088
+ /** Kleurschema (sectie-API) */
1089
+ 'scheme'?: NLDDHero['scheme'];
1090
+ /** Blokpadding-override, ook per rand en responsief (sectie-API) */
1091
+ 'padding-block'?: NLDDHero['paddingBlock'];
1092
+ /** Blokpadding-override, ook per rand en responsief (sectie-API) */
1093
+ 'paddingBlock'?: NLDDHero['paddingBlock'];
1094
+ 'padding-top'?: NLDDHero['paddingTop'];
1095
+ 'paddingTop'?: NLDDHero['paddingTop'];
1096
+ 'padding-bottom'?: NLDDHero['paddingBottom'];
1097
+ 'paddingBottom'?: NLDDHero['paddingBottom'];
1098
+ 'sm-padding-block'?: NLDDHero['smPaddingBlock'];
1099
+ 'smPaddingBlock'?: NLDDHero['smPaddingBlock'];
1100
+ 'sm-padding-top'?: NLDDHero['smPaddingTop'];
1101
+ 'smPaddingTop'?: NLDDHero['smPaddingTop'];
1102
+ 'sm-padding-bottom'?: NLDDHero['smPaddingBottom'];
1103
+ 'smPaddingBottom'?: NLDDHero['smPaddingBottom'];
1104
+ 'md-padding-block'?: NLDDHero['mdPaddingBlock'];
1105
+ 'mdPaddingBlock'?: NLDDHero['mdPaddingBlock'];
1106
+ 'md-padding-top'?: NLDDHero['mdPaddingTop'];
1107
+ 'mdPaddingTop'?: NLDDHero['mdPaddingTop'];
1108
+ 'md-padding-bottom'?: NLDDHero['mdPaddingBottom'];
1109
+ 'mdPaddingBottom'?: NLDDHero['mdPaddingBottom'];
1110
+ 'lg-padding-block'?: NLDDHero['lgPaddingBlock'];
1111
+ 'lgPaddingBlock'?: NLDDHero['lgPaddingBlock'];
1112
+ 'lg-padding-top'?: NLDDHero['lgPaddingTop'];
1113
+ 'lgPaddingTop'?: NLDDHero['lgPaddingTop'];
1114
+ 'lg-padding-bottom'?: NLDDHero['lgPaddingBottom'];
1115
+ 'lgPaddingBottom'?: NLDDHero['lgPaddingBottom'];
1116
+ /** Minimale hoogte van de sectie (sectie-API) */
1117
+ 'height'?: NLDDHero['height'];
1118
+ };
1119
+
1120
+ type NLDDIconProps = {
1121
+ /** The name of the icon to display */
1122
+ 'name'?: NLDDIcon['name'];
1123
+ /** `full` (default) fills the container; `inherit` follows the surrounding text (1em); or a fixed spacer-aligned size in px (16, 20, 24, 28, 32, 40, 44, 48, 56, 64, 80, 96). Empty behaves as `full`. */
1124
+ 'size'?: NLDDIcon['size'];
1125
+ /** Functional (`primary-content`, `secondary-content`, `accent`, `critical`, `warning`, `success`) or rijkskleur (`lintblauw`, `donkerblauw`, `hemelblauw`, `lichtblauw`, `paars`, `violet`, `robijnrood`, `roze`, `rood`, `oranje`, `donkergeel`, `geel`, `donkerbruin`, `bruin`, `donkergroen`, `groen`, `mosgroen`, `mintgroen`). Empty = inherit `color` from parent. */
1126
+ 'color'?: NLDDIcon['color'];
1127
+ };
1128
+
1129
+ type NLDDIconButtonProps = {
1130
+ /** Button variant: 'accent-filled' | 'accent-transparent' | 'neutral-tinted' | 'neutral-transparent' | 'critical-tinted' | 'critical-transparent' | 'inherit-filled' | 'inherit-tinted' | 'primary' | 'secondary' | 'destructive'. De inherit-varianten leiden hun kleuren af van currentColor, voor knoppen op gekleurde vlakken. */
1131
+ 'variant'?: NLDDIconButton['variant'];
1132
+ /** Button size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md') */
1133
+ 'size'?: NLDDIconButton['size'];
1134
+ /** In lg size, hides the text label and enlarges the icon by one step (28px) */
1135
+ 'hide-lg-text'?: NLDDIconButton['hideLgText'];
1136
+ /** In lg size, hides the text label and enlarges the icon by one step (28px) */
1137
+ 'hideLgText'?: NLDDIconButton['hideLgText'];
1138
+ /** Loading state (default: false). Shows an activity indicator over the visually hidden icon, sets aria-busy on the inner control and blocks activation, without dropping the button from the tab order (unlike disabled). */
1139
+ 'loading'?: NLDDIconButton['loading'];
1140
+ /** Disabled state */
1141
+ 'disabled'?: NLDDIconButton['disabled'];
1142
+ /** Removes the per-variant highlight border (e.g. when a control group draws a single border instead). */
1143
+ 'no-highlight-border'?: NLDDIconButton['noHighlightBorder'];
1144
+ /** Removes the per-variant highlight border (e.g. when a control group draws a single border instead). */
1145
+ 'noHighlightBorder'?: NLDDIconButton['noHighlightBorder'];
1146
+ /** Button type for form submission: 'button' | 'submit' | 'reset' (ignored when href is set) */
1147
+ 'type'?: NLDDIconButton['type'];
1148
+ /** Whether the button opens a menu or popover and shows chevron next to the icon */
1149
+ 'expandable'?: NLDDIconButton['expandable'];
1150
+ /** Whether the popover/menu controlled by this button is currently open. Forwarded as aria-expanded on the inner button; toggles the is-expanded visual state. */
1151
+ 'expanded'?: NLDDIconButton['expanded'];
1152
+ /** Takes the button out of the tab order (tabindex="-1"), for a control owned by a roving container (e.g. an nldd-token in nldd-token-field) that manages focus itself. Still mouse- and script-focusable. */
1153
+ 'no-tab'?: NLDDIconButton['noTab'];
1154
+ /** Takes the button out of the tab order (tabindex="-1"), for a control owned by a roving container (e.g. an nldd-token in nldd-token-field) that manages focus itself. Still mouse- and script-focusable. */
1155
+ 'noTab'?: NLDDIconButton['noTab'];
1156
+ /** Type of popup container this button opens: 'menu' | 'listbox' | 'dialog' | 'tree' | 'grid'. Sets aria-haspopup on the inner button and forces aria-expanded to always be present (true/false) so screen readers know the popup state. */
1157
+ 'popup-type'?: NLDDIconButton['popupType'];
1158
+ /** Type of popup container this button opens: 'menu' | 'listbox' | 'dialog' | 'tree' | 'grid'. Sets aria-haspopup on the inner button and forces aria-expanded to always be present (true/false) so screen readers know the popup state. */
1159
+ 'popupType'?: NLDDIconButton['popupType'];
1160
+ /** Width mode: 'full' (stretches to container) or any CSS length (e.g. '240px') */
1161
+ 'width'?: NLDDIconButton['width'];
1162
+ /** ID of a popover element to toggle; forwarded to the inner <button> */
1163
+ 'popovertarget'?: NLDDIconButton['popovertarget'];
1164
+ /** Button text, used as aria-label and shown below the icon in lg size */
1165
+ 'text'?: NLDDIconButton['text'];
1166
+ /** Icon name for the nldd-icon element. Defaults to a placeholder icon when neither this attribute nor the icon slot is set. */
1167
+ 'icon'?: NLDDIconButton['icon'];
1168
+ /** Accessible label for screen readers. Overrides text as aria-label and title tooltip. Use when the visible text alone lacks context for screen readers (e.g. text "Toon", accessible-label "Toon wachtwoord"). The text is still shown visually in lg size regardless. */
1169
+ 'accessible-label'?: NLDDIconButton['accessibleLabel'];
1170
+ /** Accessible label for screen readers. Overrides text as aria-label and title tooltip. Use when the visible text alone lacks context for screen readers (e.g. text "Toon", accessible-label "Toon wachtwoord"). The text is still shown visually in lg size regardless. */
1171
+ 'accessibleLabel'?: NLDDIconButton['accessibleLabel'];
1172
+ /** Forwarded to the inner nldd-tooltip's `timing`: 'default' (700 ms show-delay), 'instant', or 'never' (suppress the visual tooltip; screen readers still get the aria-label). Use 'never' when the surrounding context already explains the button (e.g. spin buttons in nldd-number-field, the chevron in nldd-split-button). */
1173
+ 'tooltip-timing'?: NLDDIconButton['tooltipTiming'];
1174
+ /** Forwarded to the inner nldd-tooltip's `timing`: 'default' (700 ms show-delay), 'instant', or 'never' (suppress the visual tooltip; screen readers still get the aria-label). Use 'never' when the surrounding context already explains the button (e.g. spin buttons in nldd-number-field, the chevron in nldd-split-button). */
1175
+ 'tooltipTiming'?: NLDDIconButton['tooltipTiming'];
1176
+ /** When set, renders an <a> element instead of <button> */
1177
+ 'href'?: NLDDIconButton['href'];
1178
+ /** Link target (e.g. '_blank'); only used when href is set. With '_blank' the "opens in new tab" announcement is folded into the aria-label for screen readers (WCAG 2.1 SC 3.2.2). */
1179
+ 'target'?: NLDDIconButton['target'];
1180
+ /** Link rel attribute; defaults to 'noopener noreferrer' when target is '_blank' */
1181
+ 'rel'?: NLDDIconButton['rel'];
1182
+ /** Override translation keys (e.g. the "opens in new tab" announcement); unset keys fall back to Dutch. */
1183
+ 'translations'?: NLDDIconButton['translations'];
1184
+ /** Direct element reference to the popover this button invokes — IDL-only counterpart to `popovertarget` that works across shadow boundaries. Use this when the popover lives in a different tree (e.g. an `nldd-menu` reparented to `<body>`) so the browser still recognizes this button as the popover's invoker and excludes it from the popover light-dismiss algorithm. Set programmatically; not reflected to an HTML attribute (the attribute form is `popovertarget`, ID-based). */
1185
+ 'popoverTargetElement'?: NLDDIconButton['popoverTargetElement'];
1186
+ /** Action the browser performs when the button is clicked, mirroring the standard `popovertargetaction` attribute. Defaults to `'toggle'`. Use `'show'` when a separate handler owns the close path (e.g. the consumer toggles the popover programmatically) so the browser's default action doesn't double-fire. */
1187
+ 'popoverTargetAction'?: NLDDIconButton['popoverTargetAction'];
1188
+ /** When button is clicked (not fired when disabled) */
1189
+ 'onClick'?: (event: CustomEvent) => void;
1190
+ };
1191
+
1192
+ type NLDDIconCellProps = {
1193
+ /** Vertical alignment: 'top' | 'center' | 'bottom' (default: 'center') */
1194
+ 'vertical-alignment'?: NLDDIconCell['verticalAlignment'];
1195
+ /** Vertical alignment: 'top' | 'center' | 'bottom' (default: 'center') */
1196
+ 'verticalAlignment'?: NLDDIconCell['verticalAlignment'];
1197
+ /** Size: '16' | '20' | '24' | '32' (default: '24') */
1198
+ 'size'?: NLDDIconCell['size'];
1199
+ /** Color variant of the icon (default: 'default') */
1200
+ 'color'?: NLDDIconCell['color'];
1201
+ /** Icon name (renders `<nldd-icon>`). Takes precedence over the default slot. */
1202
+ 'icon'?: NLDDIconCell['icon'];
1203
+ 'hide-below'?: NLDDIconCell['hideBelow'];
1204
+ 'hideBelow'?: NLDDIconCell['hideBelow'];
1205
+ 'hide-above'?: NLDDIconCell['hideAbove'];
1206
+ 'hideAbove'?: NLDDIconCell['hideAbove'];
1207
+ };
1208
+
1209
+ type NLDDImageProps = {
1210
+ /** Image URL */
1211
+ 'src'?: NLDDImage['src'];
1212
+ /** Alt text. Required unless `decorative`. */
1213
+ 'alt'?: NLDDImage['alt'];
1214
+ /** Responsive source set */
1215
+ 'srcset'?: NLDDImage['srcset'];
1216
+ /** Source sizes hint */
1217
+ 'sizes'?: NLDDImage['sizes'];
1218
+ /** Display width. `full` (default) fills the parent. A numeric value sets host `max-width` AND the `<img>` layout-hint width. */
1219
+ 'width'?: NLDDImage['width'];
1220
+ /** Intrinsic height (for layout reservation) */
1221
+ 'height'?: NLDDImage['height'];
1222
+ /** Loading strategy (default: 'lazy'). Lazy defers fetch until the image is near the viewport — the right choice for below-the-fold content. Set to 'eager' on images that appear in the initial viewport, especially the LCP candidate (hero illustration, top-of-list thumbnail); leaving them lazy silently regresses Core Web Vitals because the LCP fetch waits for the intersection observer. Pair with `fetchpriority="high"` on the LCP image for the strongest signal. */
1223
+ 'loading'?: NLDDImage['loading'];
1224
+ /** Decoding hint (default: 'async') */
1225
+ 'decoding'?: NLDDImage['decoding'];
1226
+ /** Fetch priority hint */
1227
+ 'fetchpriority'?: NLDDImage['fetchPriority'];
1228
+ /** Fetch priority hint */
1229
+ 'fetchPriority'?: NLDDImage['fetchPriority'];
1230
+ /** Aspect ratio in CSS form (e.g. "16/9", "1/1", "4/3"). "16:9" colon notation is also accepted for convenience. */
1231
+ 'aspect-ratio'?: NLDDImage['aspectRatio'];
1232
+ /** Aspect ratio in CSS form (e.g. "16/9", "1/1", "4/3"). "16:9" colon notation is also accepted for convenience. */
1233
+ 'aspectRatio'?: NLDDImage['aspectRatio'];
1234
+ /** default: 'cover' */
1235
+ 'object-fit'?: NLDDImage['objectFit'];
1236
+ /** default: 'cover' */
1237
+ 'objectFit'?: NLDDImage['objectFit'];
1238
+ /** default: 'center' */
1239
+ 'object-position'?: NLDDImage['objectPosition'];
1240
+ /** default: 'center' */
1241
+ 'objectPosition'?: NLDDImage['objectPosition'];
1242
+ /** Corner shape (default: 'square') */
1243
+ 'shape'?: NLDDImage['shape'];
1244
+ /** Caption text shown below the image */
1245
+ 'caption'?: NLDDImage['caption'];
1246
+ /** Smaller credit/attribution text shown beside the caption */
1247
+ 'credit'?: NLDDImage['credit'];
1248
+ /** Decorative image: alt is forced empty + aria-hidden */
1249
+ 'decorative'?: NLDDImage['decorative'];
1250
+ /** Low-quality image placeholder as a CSV string `"base,c1,c2,c3,c4,c5,c6"` — seven 0-255 bytes, each packing an 8-bit Oklab triplet (2 bits L, 3 bits a, 3 bits b). The first is the base color shown outside the cell gradients; the other six are per-cell colors in row-major 3×2 order. Generate via the encoder in `lqip-encoder.ts` or via the "LQIP encoder tool" Storybook story. Extends Lean Rada's CSS-only LQIP (https://leanrada.com/notes/css-only-lqip/) with per-cell hue — Lean's original format encodes grayscale cells only; ours encodes a color per cell so multi-color subjects survive the placeholder. */
1251
+ 'lqip'?: NLDDImage['lqip'];
1252
+ /** Override translation keys (e.g. the message shown when the image fails to load); unset keys fall back to Dutch. */
1253
+ 'translations'?: NLDDImage['translations'];
1254
+ };
1255
+
1256
+ type NLDDInlineDialogProps = {
1257
+ /** Semantic variant. 'alert' / 'success' force a matching icon and color; 'loading' shows an nldd-activity-indicator (a role="status" spinner announcing "Laden") in place of the icon — for an empty state that is still loading. */
1258
+ 'variant'?: NLDDInlineDialog['variant'];
1259
+ /** Typography size: 'md' (default) keeps body-md text + body-sm supporting; 'lg' bumps both up a step. */
1260
+ 'size'?: NLDDInlineDialog['size'];
1261
+ /** Name of the nldd-icon icon above the text; absent when not set. Ignored when variant is set. */
1262
+ 'icon'?: NLDDInlineDialog['icon'];
1263
+ /** 'secondary' | 'accent' | 'critical' | 'warning' | 'success'. Overrides the default and variant icon color. */
1264
+ 'icon-color'?: NLDDInlineDialog['iconColor'];
1265
+ /** 'secondary' | 'accent' | 'critical' | 'warning' | 'success'. Overrides the default and variant icon color. */
1266
+ 'iconColor'?: NLDDInlineDialog['iconColor'];
1267
+ /** Main text (heading or paragraph, depending on heading-level) */
1268
+ 'text'?: NLDDInlineDialog['text'];
1269
+ /** Supporting text below the heading */
1270
+ 'supporting-text'?: NLDDInlineDialog['supportingText'];
1271
+ /** Supporting text below the heading */
1272
+ 'supportingText'?: NLDDInlineDialog['supportingText'];
1273
+ /** Renders text as h1–h6; absent renders a p */
1274
+ 'heading-level'?: NLDDInlineDialog['headingLevel'];
1275
+ /** Renders text as h1–h6; absent renders a p */
1276
+ 'headingLevel'?: NLDDInlineDialog['headingLevel'];
1277
+ };
1278
+
1279
+ type NLDDJustInTimeEducationProps = {
1280
+ /** Toon de coach-mark. App-gestuurd; standaard false. */
1281
+ 'active'?: NLDDJustInTimeEducation['active'];
1282
+ /** Titel van de callout. */
1283
+ 'text'?: NLDDJustInTimeEducation['text'];
1284
+ /** Ondersteunende tekst onder de titel. */
1285
+ 'supporting-text'?: NLDDJustInTimeEducation['supportingText'];
1286
+ /** Ondersteunende tekst onder de titel. */
1287
+ 'supportingText'?: NLDDJustInTimeEducation['supportingText'];
1288
+ /** 'auto' | 'top' | 'bottom' | 'left' | 'right' (standaard 'auto'). */
1289
+ 'placement'?: NLDDJustInTimeEducation['placement'];
1290
+ /** Toon de dismiss-knop en sta sluiten toe via 1 klik/toets buiten de coach-mark. Standaard false: dan beheert de consumer het sluiten zelf. */
1291
+ 'dismissable'?: NLDDJustInTimeEducation['dismissable'];
1292
+ /** Pijllengte en dus de afstand tussen card en control, als CSS-lengte (bijv. \`333px\`, \`30vh\`). Leeg = DS-standaard; onder 40px wordt geklemd. */
1293
+ 'arrow-length'?: NLDDJustInTimeEducation['arrowLength'];
1294
+ /** Pijllengte en dus de afstand tussen card en control, als CSS-lengte (bijv. \`333px\`, \`30vh\`). Leeg = DS-standaard; onder 40px wordt geklemd. */
1295
+ 'arrowLength'?: NLDDJustInTimeEducation['arrowLength'];
1296
+ /** Verberg de pijl; de card staat dan dicht tegen het control. */
1297
+ 'no-arrow'?: NLDDJustInTimeEducation['noArrow'];
1298
+ /** Verberg de pijl; de card staat dan dicht tegen het control. */
1299
+ 'noArrow'?: NLDDJustInTimeEducation['noArrow'];
1300
+ 'translations'?: NLDDJustInTimeEducation['translations'];
1301
+ /** Wanneer de coach-mark sluit. detail: { reason: 'completed' | 'dismissed' | 'ignored' }. */
1302
+ 'onNlddClose'?: (event: CustomEvent) => void;
1303
+ };
1304
+
1305
+ type NLDDKeyboardShortcutProps = {
1306
+ /** Toetsen gescheiden door '+' (bijv. 'Cmd+K' of 'Ctrl+Shift+P'). Gebruik '+++' voor een letterlijke '+' toets: 'Ctrl+++' wordt 'Ctrl' + '+'. Voor complexere scenario's (bijv. combo met meerdere '+' keys) kun je in plaats van het keys-attribuut de default slot gebruiken met eigen <kbd> elementen. */
1307
+ 'keys'?: NLDDKeyboardShortcut['keys'];
1308
+ /** Optionele override voor macOS (incl. iPhone/iPad/iPod). */
1309
+ 'mac-keys'?: NLDDKeyboardShortcut['macKeys'];
1310
+ /** Optionele override voor macOS (incl. iPhone/iPad/iPod). */
1311
+ 'macKeys'?: NLDDKeyboardShortcut['macKeys'];
1312
+ /** Optionele override voor Windows. */
1313
+ 'windows-keys'?: NLDDKeyboardShortcut['windowsKeys'];
1314
+ /** Optionele override voor Windows. */
1315
+ 'windowsKeys'?: NLDDKeyboardShortcut['windowsKeys'];
1316
+ /** Optionele override voor Linux/ChromeOS. */
1317
+ 'linux-keys'?: NLDDKeyboardShortcut['linuxKeys'];
1318
+ /** Optionele override voor Linux/ChromeOS. */
1319
+ 'linuxKeys'?: NLDDKeyboardShortcut['linuxKeys'];
1320
+ /** Grootte: 'sm' | 'md' | 'inherit' (default: 'md'). 'inherit' neemt de font-size over van de container; bij de box-variant schalen de keycaps dan mee in em. */
1321
+ 'size'?: NLDDKeyboardShortcut['size'];
1322
+ /** 'box' (default) toont elke toets als keycap met vulling en highlight-rand; 'simple' toont de toetsen als platte tekst met scheidingstekens — lichter, voor inline gebruik zoals in een menu-item. */
1323
+ 'variant'?: NLDDKeyboardShortcut['variant'];
1324
+ /** 'neutral' (default) gebruikt de eigen component-kleuren. 'inherit' laat de toetsen en scheidingstekens de omringende tekstkleur (currentColor) volgen, met een doorschijnende contrast-vulling en highlight-rand — handig op een gevulde vlakkleur of een gemarkeerde rij. */
1325
+ 'color'?: NLDDKeyboardShortcut['color'];
1326
+ /** Toon ook op touch-only devices waar shortcuts niet aanroepbaar zijn. */
1327
+ 'always-visible'?: NLDDKeyboardShortcut['alwaysVisible'];
1328
+ /** Toon ook op touch-only devices waar shortcuts niet aanroepbaar zijn. */
1329
+ 'alwaysVisible'?: NLDDKeyboardShortcut['alwaysVisible'];
1330
+ };
1331
+
1332
+ type NLDDLinkProps = {
1333
+ /** Link doel */
1334
+ 'href'?: NLDDLink['href'];
1335
+ /** Link target (bijv. '_blank'); stelt rel automatisch bij. Bij '_blank' voegt de link een visueel verborgen "Opent in nieuw tabblad"-melding toe voor screenreaders (WCAG 2.1 SC 3.2.2). */
1336
+ 'target'?: NLDDLink['target'];
1337
+ /** Link rel attribuut; standaard 'noopener noreferrer' bij target='_blank' */
1338
+ 'rel'?: NLDDLink['rel'];
1339
+ /** Tekstgrootte: 'xs' | 'sm' | 'md' | 'lg' | 'inherit'. Leeg = inherit. */
1340
+ 'size'?: NLDDLink['size'];
1341
+ /** Link tekst (alternatief voor default slot) */
1342
+ 'text'?: NLDDLink['text'];
1343
+ /** Icoon voor de tekst */
1344
+ 'start-icon'?: NLDDLink['startIcon'];
1345
+ /** Icoon voor de tekst */
1346
+ 'startIcon'?: NLDDLink['startIcon'];
1347
+ /** Icoon na de tekst */
1348
+ 'end-icon'?: NLDDLink['endIcon'];
1349
+ /** Icoon na de tekst */
1350
+ 'endIcon'?: NLDDLink['endIcon'];
1351
+ /** Toegankelijk label voor screen readers */
1352
+ 'accessible-label'?: NLDDLink['accessibleLabel'];
1353
+ /** Toegankelijk label voor screen readers */
1354
+ 'accessibleLabel'?: NLDDLink['accessibleLabel'];
1355
+ /** Uitgeschakelde staat */
1356
+ 'disabled'?: NLDDLink['disabled'];
1357
+ /** Overschrijf vertaalsleutels (bijv. de "Opent in nieuw tabblad"-melding); niet-gezette sleutels vallen terug op Nederlands. */
1358
+ 'translations'?: NLDDLink['translations'];
1359
+ };
1360
+
1361
+ type NLDDListProps = {
1362
+ /** Visual style (default 'simple'): `simple` is a plain vertical strip with no chrome, `box` a framed card with rounded corners, fill and inset border ring */
1363
+ 'variant'?: NLDDList['variant'];
1364
+ /** Surface fill for `variant="box"` (default 'tinted'). Use `base` on an already-tinted parent. No effect with `variant="simple"`. */
1365
+ 'background'?: NLDDList['background'];
1366
+ /** A11y role and behavior (default 'list'). See the docblock above. */
1367
+ 'type'?: NLDDList['type'];
1368
+ /** Enables drag-to-reorder and pushes `reorderable` onto the items. Only valid with `type="list"`; wins over `arrow-navigation` when both are set. */
1369
+ 'reorderable'?: NLDDList['reorderable'];
1370
+ /** Hides the dividers between list items */
1371
+ 'no-dividers'?: NLDDList['noDividers'];
1372
+ /** Hides the dividers between list items */
1373
+ 'noDividers'?: NLDDList['noDividers'];
1374
+ /** Roving-tabindex arrow-key navigation: ArrowUp/ArrowDown move focus between the rows, Home/End jump to first/last, and the list becomes a single tab stop. Implied by `type="tree"` (which adds ArrowLeft/ArrowRight, see above). Ignored when `reorderable` is active on a `type="list"`, and in listbox mode. */
1375
+ 'arrow-navigation'?: NLDDList['arrowNavigation'];
1376
+ /** Roving-tabindex arrow-key navigation: ArrowUp/ArrowDown move focus between the rows, Home/End jump to first/last, and the list becomes a single tab stop. Implied by `type="tree"` (which adds ArrowLeft/ArrowRight, see above). Ignored when `reorderable` is active on a `type="list"`, and in listbox mode. */
1377
+ 'arrowNavigation'?: NLDDList['arrowNavigation'];
1378
+ /** Listbox only: caps the options' scroll region at this CSS length (e.g. '320px'). Unset means no cap. */
1379
+ 'height'?: NLDDList['height'];
1380
+ /** Text for the default empty-state dialog (falls back to the Dutch i18n default). Ignored when `[slot=empty]` is filled. */
1381
+ 'empty-text'?: NLDDList['emptyText'];
1382
+ /** Text for the default empty-state dialog (falls back to the Dutch i18n default). Ignored when `[slot=empty]` is filled. */
1383
+ 'emptyText'?: NLDDList['emptyText'];
1384
+ /** Supporting text for the default empty-state dialog. Ignored when `[slot=empty]` is filled. */
1385
+ 'empty-supporting-text'?: NLDDList['emptySupportingText'];
1386
+ /** Supporting text for the default empty-state dialog. Ignored when `[slot=empty]` is filled. */
1387
+ 'emptySupportingText'?: NLDDList['emptySupportingText'];
1388
+ /** Accessible name, forwarded to the list in `type="list"` and to the search field in `type="listbox"`. For `type="navigation"` set `aria-label` / `aria-labelledby` on the element itself. Falls back to the i18n default. */
1389
+ 'accessible-label'?: NLDDList['accessibleLabel'];
1390
+ /** Accessible name, forwarded to the list in `type="list"` and to the search field in `type="listbox"`. For `type="navigation"` set `aria-label` / `aria-labelledby` on the element itself. Falls back to the i18n default. */
1391
+ 'accessibleLabel'?: NLDDList['accessibleLabel'];
1392
+ /** Override translation keys; unset keys fall back to Dutch */
1393
+ 'translations'?: NLDDList['translations'];
1394
+ /** Reorderable `type="list"`: `{ fromIndex, toIndex }` on drop */
1395
+ 'onNlddReorder'?: (event: CustomEvent) => void;
1396
+ /** `type="listbox"`: search value changed; `{ value }`. Toggle `[hidden]` on items to filter. */
1397
+ 'onInput'?: (event: CustomEvent) => void;
1398
+ };
1399
+
1400
+ type NLDDListItemProps = {
1401
+ /** Row size (default: 'md'). Pushed onto the cells whose `size` means the same scale (nldd-text-cell, nldd-drag-handle-cell), so it is written once per row instead of once per cell. A size set on the cell itself wins. Cells where `size` means something else — pixels on nldd-icon-cell / nldd-spacer-cell, a heading scale on nldd-title-cell — are left alone. */
1402
+ 'size'?: NLDDListItem['size'];
1403
+ /** Marks the item as selected. Selection is consumer-managed; the list never sets it. In a `navigation` parent it puts `aria-current="page"` on the inner action, in a `listbox` parent it drives `aria-selected`. */
1404
+ 'selected'?: NLDDListItem['selected'];
1405
+ /** Renders the item as a `<button>`; ignored when `href` is set (a link wins) */
1406
+ 'button'?: NLDDListItem['button'];
1407
+ /** Makes the whole row a `role="checkbox"` control; ignored when `href` is set */
1408
+ 'checkbox'?: NLDDListItem['checkbox'];
1409
+ /** Checked state of a `checkbox` row; the item toggles it on activation */
1410
+ 'checked'?: NLDDListItem['checked'];
1411
+ /** Disclosure state. Drives the `children` group's visibility AND supplies `aria-expanded` — to the row's own control when the row is interactive, or to the segmented action marked `disclosure`. Written once either way; the item DEV-warns when there is nowhere for it to live. */
1412
+ 'expanded'?: NLDDListItem['expanded'];
1413
+ /** Renders the item as an `<a>` with this URL. Takes precedence over `button`; without either the item is a plain container with no action. */
1414
+ 'href'?: NLDDListItem['href'];
1415
+ /** Link target forwarded to the `<a>` (e.g. '_blank'); only applies with `href`. With '_blank' a visually hidden "opens in new tab" announcement is added for assistive technology. */
1416
+ 'target'?: NLDDListItem['target'];
1417
+ /** Link rel forwarded to the `<a>` (e.g. 'noopener noreferrer'); only applies with `href` */
1418
+ 'rel'?: NLDDListItem['rel'];
1419
+ /** Set by the parent `nldd-list` when its own `reorderable` is on (with `type="list"`); consumers do not set this. Serves as a CSS hook for drag handle visibility. */
1420
+ 'reorderable'?: NLDDListItem['reorderable'];
1421
+ 'translations'?: NLDDListItem['translations'];
1422
+ /** Nested rows sit in this item's `children` slot, not the list's, so a plain `querySelector` from the list walks past them. */
1423
+ 'childRows'?: NLDDListItem['childRows'];
1424
+ /** The branch this row hangs under, or undefined for a top-level row. */
1425
+ 'parentRow'?: NLDDListItem['parentRow'];
1426
+ /** On a `checkbox` row after it toggles; detail: { checked: boolean } */
1427
+ 'onChange'?: (event: CustomEvent) => void;
1428
+ };
1429
+
1430
+ type NLDDListItemActionProps = {
1431
+ /** Renders the segmented action as a `<button>`; ignored when `href` is set */
1432
+ 'button'?: NLDDListItemAction['button'];
1433
+ /** Renders the segmented action as an `<a>` with this URL; wins over `button` and `checkbox` */
1434
+ 'href'?: NLDDListItemAction['href'];
1435
+ /** Link target forwarded to the `<a>`; only applies with `href` */
1436
+ 'target'?: NLDDListItemAction['target'];
1437
+ /** Link rel forwarded to the `<a>`; only applies with `href` */
1438
+ 'rel'?: NLDDListItemAction['rel'];
1439
+ /** Makes the segmented action a `role="checkbox"` control; ignored when `href` is set */
1440
+ 'checkbox'?: NLDDListItemAction['checkbox'];
1441
+ /** Checked state of a `checkbox` action; it toggles on activation */
1442
+ 'checked'?: NLDDListItemAction['checked'];
1443
+ /** Disclosure state, reflected as `aria-expanded` on the control. Set it on the segmented action that opens something (e.g. a tree row's chevron). Leave it off entirely when the segmented action discloses nothing — an absent attribute emits no aria-expanded. */
1444
+ 'expanded'?: NLDDListItemAction['expanded'];
1445
+ /** Marks the segmented action as the row's disclosure control: `aria-expanded` comes from the parent item's `expanded`, so the state lives in one place. A slotted `nldd-icon-cell` rotates a quarter turn while the row is open */
1446
+ 'disclosure'?: NLDDListItemAction['disclosure'];
1447
+ /** Marks the segmented action as the current page (`aria-current="page"`) */
1448
+ 'current'?: NLDDListItemAction['current'];
1449
+ /** Disabled state; only applies to button and checkbox segmented actions */
1450
+ 'disabled'?: NLDDListItemAction['disabled'];
1451
+ /** `full` lets the segmented action grow to fill the row (default: 'fit-content') */
1452
+ 'width'?: NLDDListItemAction['width'];
1453
+ /** Accessible name for the control. Set it when the segmented action holds only an icon, or when the cell text does not describe the action. */
1454
+ 'accessible-label'?: NLDDListItemAction['accessibleLabel'];
1455
+ /** Accessible name for the control. Set it when the segmented action holds only an icon, or when the cell text does not describe the action. */
1456
+ 'accessibleLabel'?: NLDDListItemAction['accessibleLabel'];
1457
+ /** On a `checkbox` action after it toggles; detail: { checked: boolean } */
1458
+ 'onChange'?: (event: CustomEvent) => void;
1459
+ };
1460
+
1461
+ type NLDDMenuProps = {
1462
+ /** ID of the anchor element. Positions the menu against it AND makes it a toggle: the menu listens on document click and opens/closes itself when the click lands on the anchor. Use this for a menu hung off a button. For a menu you open yourself (a type-ahead under a text field, say), set the `anchorElement` property instead — same positioning, no toggle. */
1463
+ 'anchor'?: NLDDMenu['anchor'];
1464
+ /** Floating UI placement. Default: 'bottom-start'. */
1465
+ 'placement'?: NLDDMenu['placement'];
1466
+ /** Text of the default empty-state dialog. Falls back to Dutch i18n "Geen opties beschikbaar". */
1467
+ 'empty-text'?: NLDDMenu['emptyText'];
1468
+ /** Text of the default empty-state dialog. Falls back to Dutch i18n "Geen opties beschikbaar". */
1469
+ 'emptyText'?: NLDDMenu['emptyText'];
1470
+ /** Supporting text of the default empty-state dialog. */
1471
+ 'empty-supporting-text'?: NLDDMenu['emptySupportingText'];
1472
+ /** Supporting text of the default empty-state dialog. */
1473
+ 'emptySupportingText'?: NLDDMenu['emptySupportingText'];
1474
+ /** Explicit width, pinned exactly (sets --_width and clamps min/max to it). Leave unset to let the menu size to its content between a minimum and a viewport-aware maximum of min(100vw - inset, 640px). */
1475
+ 'width'?: NLDDMenu['width'];
1476
+ /** Maximum number of visible items before the menu scrolls. Sets --_max-items internally. Default: 0 (no limit). */
1477
+ 'max-items'?: NLDDMenu['maxItems'];
1478
+ /** Maximum number of visible items before the menu scrolls. Sets --_max-items internally. Default: 0 (no limit). */
1479
+ 'maxItems'?: NLDDMenu['maxItems'];
1480
+ /** Override one or more translation keys. Unset keys fall back to the Dutch default. */
1481
+ 'translations'?: NLDDMenu['translations'];
1482
+ /** Custom filter function (query, item) => boolean. */
1483
+ 'filterFn'?: NLDDMenu['filterFn'];
1484
+ /** Render variant. Use 'listbox' when the menu serves as a combobox popup — this switches role to "listbox" and item roles to "option" per ARIA spec. Default: 'menu'. */
1485
+ 'variant'?: NLDDMenu['variant'];
1486
+ /** The anchor as an element reference. Positions the menu exactly like the `anchor` attribute, but does NOT turn the anchor into a toggle — clicking it does not open the menu. Use this whenever you drive open/close yourself (`showPopover()` / `hidePopover()`), which is what nldd-combo-box and nldd-token-field do: their input must stay an input, not a menu button. */
1487
+ 'anchorElement'?: NLDDMenu['anchorElement'];
1488
+ };
1489
+
1490
+ type NLDDMenuBarProps = {
1491
+ /** Tekst voor de overflow button (standaard via i18n) */
1492
+ 'overflow-text'?: NLDDMenuBar['overflowText'];
1493
+ /** Tekst voor de overflow button (standaard via i18n) */
1494
+ 'overflowText'?: NLDDMenuBar['overflowText'];
1495
+ /** aria-label voor de nav landmark */
1496
+ 'accessible-label'?: NLDDMenuBar['accessibleLabel'];
1497
+ /** aria-label voor de nav landmark */
1498
+ 'accessibleLabel'?: NLDDMenuBar['accessibleLabel'];
1499
+ /** Propageert compact attribuut naar slotted items (activeert content-priority) */
1500
+ 'compact'?: NLDDMenuBar['compact'];
1501
+ 'translations'?: NLDDMenuBar['translations'];
1502
+ };
1503
+
1504
+ type NLDDMenuBarItemProps = {
1505
+ /** Tekst van het item */
1506
+ 'text'?: NLDDMenuBarItem['text'];
1507
+ /** Markeer als actief/huidig item */
1508
+ 'current'?: NLDDMenuBarItem['current'];
1509
+ /** aria-current waarde als current is true ('page', 'step', 'location', 'true'). Standaard: 'page' */
1510
+ 'current-type'?: NLDDMenuBarItem['currentType'];
1511
+ /** aria-current waarde als current is true ('page', 'step', 'location', 'true'). Standaard: 'page' */
1512
+ 'currentType'?: NLDDMenuBarItem['currentType'];
1513
+ /** Optionele link URL. Zonder href rendert als button. */
1514
+ 'href'?: NLDDMenuBarItem['href'];
1515
+ /** Optioneel icon naam (nldd-icon) */
1516
+ 'icon'?: NLDDMenuBarItem['icon'];
1517
+ /** Toon disclosure icon en open de geslotte `<nldd-menu>` bij klik */
1518
+ 'expandable'?: NLDDMenuBarItem['expandable'];
1519
+ /** Verberg tekst visueel (altijd) */
1520
+ 'icon-only'?: NLDDMenuBarItem['iconOnly'];
1521
+ /** Verberg tekst visueel (altijd) */
1522
+ 'iconOnly'?: NLDDMenuBarItem['iconOnly'];
1523
+ /** Bepaalt wat zichtbaar blijft in compact modus: 'icon' verbergt tekst, 'text' verbergt icon */
1524
+ 'content-priority'?: NLDDMenuBarItem['contentPriority'];
1525
+ /** Bepaalt wat zichtbaar blijft in compact modus: 'icon' verbergt tekst, 'text' verbergt icon */
1526
+ 'contentPriority'?: NLDDMenuBarItem['contentPriority'];
1527
+ /** Activeert content-priority gedrag (gezet door parent nldd-menu-bar) */
1528
+ 'compact'?: NLDDMenuBarItem['compact'];
1529
+ /** Schakel interactie uit */
1530
+ 'disabled'?: NLDDMenuBarItem['disabled'];
1531
+ /** Overschrijf aria-label */
1532
+ 'accessible-label'?: NLDDMenuBarItem['accessibleLabel'];
1533
+ /** Overschrijf aria-label */
1534
+ 'accessibleLabel'?: NLDDMenuBarItem['accessibleLabel'];
1535
+ /** aria-haspopup waarde (bijv. "menu", "dialog") */
1536
+ 'haspopup'?: NLDDMenuBarItem['haspopup'];
1537
+ /** Of de bijbehorende popover open is; zet aria-expanded op de knop wanneer expandable of haspopup is gezet. Wordt automatisch bijgehouden voor een geslotte `<nldd-menu>`. */
1538
+ 'expanded'?: NLDDMenuBarItem['expanded'];
1539
+ /** Direct element reference to the popover this item invokes — IDL-only counterpart to `popovertarget` that works across shadow boundaries. Set by `nldd-menu` when this item is wired up as the menu's anchor so the browser recognizes the inner button as the menu's invoker and excludes the click from popover light-dismiss. */
1540
+ 'popoverTargetElement'?: NLDDMenuBarItem['popoverTargetElement'];
1541
+ /** Action the browser performs when the inner button is clicked, mirroring the standard `popovertargetaction` attribute. The menu keeps this in sync with its open state — `'hide'` while open, `'show'` while closed — so the browser's native invoker action always matches the intent of the click without racing. */
1542
+ 'popoverTargetAction'?: NLDDMenuBarItem['popoverTargetAction'];
1543
+ /** Bij klik op non-expandable button item (bubbles, composed) */
1544
+ 'onSelect'?: (event: CustomEvent) => void;
1545
+ };
1546
+
1547
+ type NLDDMenuDividerProps = {
1548
+ };
1549
+
1550
+ type NLDDMenuGroupProps = {
1551
+ /** Group title text shown above the items. */
1552
+ 'text'?: NLDDMenuGroup['text'];
1553
+ };
1554
+
1555
+ type NLDDMenuItemProps = {
1556
+ /** Display text. Supports **bold** markdown syntax. */
1557
+ 'text'?: NLDDMenuItem['text'];
1558
+ /** Form value. Falls back to text when not set. */
1559
+ 'value'?: NLDDMenuItem['value'];
1560
+ /** Optional link target. A plain button item with an href renders as an `<a>` so it is a real link (middle-click, open in new tab, copy link). Ignored for submenu openers, checkbox/radio items, and while disabled. */
1561
+ 'href'?: NLDDMenuItem['href'];
1562
+ /** Space-separated alternative search terms. */
1563
+ 'aliases'?: NLDDMenuItem['aliases'];
1564
+ /** Secondary label shown on the right side. */
1565
+ 'details'?: NLDDMenuItem['details'];
1566
+ /** Keyboard shortcut hint shown on the right, e.g. 'Cmd+E'. Display only (rendered via nldd-keyboard-shortcut) — it does not bind the key; wire up the handling in your app. Hidden on touch-only devices, where it isn't invokable. */
1567
+ 'shortcut'?: NLDDMenuItem['shortcut'];
1568
+ /** / shortcut-windows / shortcut-linux - Per-OS overrides for `shortcut`, picked by detected OS (falls back to `shortcut`). */
1569
+ 'shortcut-mac'?: NLDDMenuItem['shortcutMac'];
1570
+ /** / shortcut-windows / shortcut-linux - Per-OS overrides for `shortcut`, picked by detected OS (falls back to `shortcut`). */
1571
+ 'shortcutMac'?: NLDDMenuItem['shortcutMac'];
1572
+ /** Icon name rendered before the text (nldd-icon name). */
1573
+ 'icon'?: NLDDMenuItem['icon'];
1574
+ /** Item type: 'button' | 'checkbox' | 'radio'. Default: 'button'. */
1575
+ 'type'?: NLDDMenuItem['type'];
1576
+ /** Selected state for checkbox and radio types. */
1577
+ 'selected'?: NLDDMenuItem['selected'];
1578
+ /** Marks the item as destructive (red text; red highlight bg). Use for irreversible actions like "Delete". Color is the only built-in signal, so per WCAG 1.4.1 the item's own label must convey the destructive nature (e.g. "Verwijder") — don't rely on the red alone. Confirming the action (e.g. a follow-up dialog) is the consumer's responsibility. */
1579
+ 'destructive'?: NLDDMenuItem['destructive'];
1580
+ /** Disabled state. */
1581
+ 'disabled'?: NLDDMenuItem['disabled'];
1582
+ /** Query substring to bold-highlight in text. Set by menu's filter(); also settable by consumers. */
1583
+ 'query'?: NLDDMenuItem['query'];
1584
+ /** 'match' | 'predictive' (default: 'predictive'). See text-cell for details. */
1585
+ 'query-mark-mode'?: NLDDMenuItem['queryMarkMode'];
1586
+ /** 'match' | 'predictive' (default: 'predictive'). See text-cell for details. */
1587
+ 'queryMarkMode'?: NLDDMenuItem['queryMarkMode'];
1588
+ 'shortcut-windows'?: NLDDMenuItem['shortcutWindows'];
1589
+ 'shortcutWindows'?: NLDDMenuItem['shortcutWindows'];
1590
+ 'shortcut-linux'?: NLDDMenuItem['shortcutLinux'];
1591
+ 'shortcutLinux'?: NLDDMenuItem['shortcutLinux'];
1592
+ /** Set by nldd-menu. Not part of the public API. */
1593
+ 'menuVariant'?: NLDDMenuItem['menuVariant'];
1594
+ 'onMenuItemFocused'?: (event: CustomEvent) => void;
1595
+ 'onSubmenuOpen'?: (event: CustomEvent) => void;
1596
+ /** Fired when the item is clicked and not disabled. */
1597
+ 'onSelect'?: (event: CustomEvent) => void;
1598
+ };
1599
+
1600
+ type NLDDModalDialogProps = {
1601
+ /** Forwarded to nldd-inline-dialog; 'alert' forces icon and color */
1602
+ 'variant'?: NLDDModalDialog['variant'];
1603
+ /** Forwarded to nldd-inline-dialog; absent when not set */
1604
+ 'icon'?: NLDDModalDialog['icon'];
1605
+ /** Forwarded to nldd-inline-dialog; main text */
1606
+ 'text'?: NLDDModalDialog['text'];
1607
+ /** Forwarded to nldd-inline-dialog; supporting text */
1608
+ 'supporting-text'?: NLDDModalDialog['supportingText'];
1609
+ /** Forwarded to nldd-inline-dialog; supporting text */
1610
+ 'supportingText'?: NLDDModalDialog['supportingText'];
1611
+ /** Accessible name for the dialog (aria-label); falls back to text */
1612
+ 'accessible-label'?: NLDDModalDialog['accessibleLabel'];
1613
+ /** Accessible name for the dialog (aria-label); falls back to text */
1614
+ 'accessibleLabel'?: NLDDModalDialog['accessibleLabel'];
1615
+ /** When the dialog is opened */
1616
+ 'onOpen'?: (event: CustomEvent) => void;
1617
+ /** When the dialog is fully closed */
1618
+ 'onClose'?: (event: CustomEvent) => void;
1619
+ };
1620
+
1621
+ type NLDDMultiLineTextFieldProps = {
1622
+ /** 'md' (default) | 'sm'. Set automatically by nldd-form-field. */
1623
+ 'size'?: NLDDMultiLineTextField['size'];
1624
+ /** The textarea value */
1625
+ 'value'?: NLDDMultiLineTextField['value'];
1626
+ /** Sets the id on the native textarea. Set automatically by nldd-form-field. */
1627
+ 'input-id'?: NLDDMultiLineTextField['inputId'];
1628
+ /** Sets the id on the native textarea. Set automatically by nldd-form-field. */
1629
+ 'inputId'?: NLDDMultiLineTextField['inputId'];
1630
+ /** Placeholder text */
1631
+ 'placeholder'?: NLDDMultiLineTextField['placeholder'];
1632
+ /** Marks the field as invalid */
1633
+ 'invalid'?: NLDDMultiLineTextField['invalid'];
1634
+ /** Marks the field as valid */
1635
+ 'valid'?: NLDDMultiLineTextField['valid'];
1636
+ /** Disabled state */
1637
+ 'disabled'?: NLDDMultiLineTextField['disabled'];
1638
+ /** Textarea name for form submission */
1639
+ 'name'?: NLDDMultiLineTextField['name'];
1640
+ /** Readonly state */
1641
+ 'readonly'?: NLDDMultiLineTextField['readonly'];
1642
+ /** Required state */
1643
+ 'required'?: NLDDMultiLineTextField['required'];
1644
+ /** Autocomplete hint */
1645
+ 'autocomplete'?: NLDDMultiLineTextField['autocomplete'];
1646
+ /** Initial visible rows (minimum height). Default: 3. */
1647
+ 'rows'?: NLDDMultiLineTextField['rows'];
1648
+ /** 'none' | 'vertical' | 'auto' (default). 'auto' grows with content (native field-sizing), no manual handle. */
1649
+ 'resize'?: NLDDMultiLineTextField['resize'];
1650
+ /** Accessible label forwarded to the inner textarea. Set automatically by nldd-form-field. */
1651
+ 'accessible-label'?: NLDDMultiLineTextField['accessibleLabel'];
1652
+ /** Accessible label forwarded to the inner textarea. Set automatically by nldd-form-field. */
1653
+ 'accessibleLabel'?: NLDDMultiLineTextField['accessibleLabel'];
1654
+ /** Ids for aria-describedby on the inner textarea. Set automatically by nldd-form-field. */
1655
+ 'error-message-ids'?: NLDDMultiLineTextField['errorMessageIds'];
1656
+ /** Ids for aria-describedby on the inner textarea. Set automatically by nldd-form-field. */
1657
+ 'errorMessageIds'?: NLDDMultiLineTextField['errorMessageIds'];
1658
+ /** Disables browser spellchecking on the inner textarea */
1659
+ 'no-spellcheck'?: NLDDMultiLineTextField['noSpellcheck'];
1660
+ /** Disables browser spellchecking on the inner textarea */
1661
+ 'noSpellcheck'?: NLDDMultiLineTextField['noSpellcheck'];
1662
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
1663
+ 'width'?: NLDDMultiLineTextField['width'];
1664
+ 'internals'?: NLDDMultiLineTextField['internals'];
1665
+ /** When value changes */
1666
+ 'onInput'?: (event: CustomEvent) => void;
1667
+ /** When value is committed (blur) */
1668
+ 'onChange'?: (event: CustomEvent) => void;
1669
+ };
1670
+
1671
+ type NLDDNavigationSplitViewProps = {
1672
+ /** Inspector hidden to free up space for other panes (read-only, set by the split view) */
1673
+ 'inspector-auto-hidden'?: NLDDNavigationSplitView['inspectorAutoHidden'];
1674
+ /** Inspector hidden to free up space for other panes (read-only, set by the split view) */
1675
+ 'inspectorAutoHidden'?: NLDDNavigationSplitView['inspectorAutoHidden'];
1676
+ /** Always show the inspector as a sheet regardless of available space */
1677
+ 'inspector-as-sheet'?: NLDDNavigationSplitView['inspectorAsSheet'];
1678
+ /** Always show the inspector as a sheet regardless of available space */
1679
+ 'inspectorAsSheet'?: NLDDNavigationSplitView['inspectorAsSheet'];
1680
+ /** Always show the primary sidebar as a sheet, keeping main visible at full width */
1681
+ 'primary-sidebar-as-sheet'?: NLDDNavigationSplitView['primarySidebarAsSheet'];
1682
+ /** Always show the primary sidebar as a sheet, keeping main visible at full width */
1683
+ 'primarySidebarAsSheet'?: NLDDNavigationSplitView['primarySidebarAsSheet'];
1684
+ /** @deprecated alias for primary-sidebar-as-sheet (kept for backwards compatibility) */
1685
+ 'sidebar-as-sheet'?: NLDDNavigationSplitView['sidebarAsSheet'];
1686
+ /** @deprecated alias for primary-sidebar-as-sheet (kept for backwards compatibility) */
1687
+ 'sidebarAsSheet'?: NLDDNavigationSplitView['sidebarAsSheet'];
1688
+ /** Accessible name for the inspector sheet dialog (default: 'Details') */
1689
+ 'inspector-accessible-label'?: NLDDNavigationSplitView['inspectorAccessibleLabel'];
1690
+ /** Accessible name for the inspector sheet dialog (default: 'Details') */
1691
+ 'inspectorAccessibleLabel'?: NLDDNavigationSplitView['inspectorAccessibleLabel'];
1692
+ /** Accessible name for the primary sidebar sheet dialog (default: 'Navigatie') */
1693
+ 'primary-sidebar-accessible-label'?: NLDDNavigationSplitView['primarySidebarAccessibleLabel'];
1694
+ /** Accessible name for the primary sidebar sheet dialog (default: 'Navigatie') */
1695
+ 'primarySidebarAccessibleLabel'?: NLDDNavigationSplitView['primarySidebarAccessibleLabel'];
1696
+ /** @deprecated alias for primary-sidebar-accessible-label (kept for backwards compatibility) */
1697
+ 'sidebar-accessible-label'?: NLDDNavigationSplitView['sidebarAccessibleLabel'];
1698
+ /** @deprecated alias for primary-sidebar-accessible-label (kept for backwards compatibility) */
1699
+ 'sidebarAccessibleLabel'?: NLDDNavigationSplitView['sidebarAccessibleLabel'];
1700
+ 'onSINGLE_COLUMN_CHANGE_EVENT'?: (event: CustomEvent) => void;
1701
+ };
1702
+
1703
+ type NLDDNumberFieldProps = {
1704
+ /** Current value */
1705
+ 'value'?: NLDDNumberField['value'];
1706
+ /** Minimum value (default: -Infinity) */
1707
+ 'min'?: NLDDNumberField['min'];
1708
+ /** Maximum value (default: Infinity) */
1709
+ 'max'?: NLDDNumberField['max'];
1710
+ /** Step size (default: 1) */
1711
+ 'step'?: NLDDNumberField['step'];
1712
+ /** Size: 'sm' | 'md' (default: 'md') */
1713
+ 'size'?: NLDDNumberField['size'];
1714
+ /** Disabled state */
1715
+ 'disabled'?: NLDDNumberField['disabled'];
1716
+ /** Name for form submission */
1717
+ 'name'?: NLDDNumberField['name'];
1718
+ /** Width mode: 'full' (stretches to container) or any CSS length (e.g. '240px') */
1719
+ 'width'?: NLDDNumberField['width'];
1720
+ /** When set, hides the decrement and increment buttons */
1721
+ 'hide-spin-buttons'?: NLDDNumberField['hideSpinButtons'];
1722
+ /** When set, hides the decrement and increment buttons */
1723
+ 'hideSpinButtons'?: NLDDNumberField['hideSpinButtons'];
1724
+ /** Accessible label (aria-label) forwarded to the native input */
1725
+ 'accessible-label'?: NLDDNumberField['accessibleLabel'];
1726
+ /** Accessible label (aria-label) forwarded to the native input */
1727
+ 'accessibleLabel'?: NLDDNumberField['accessibleLabel'];
1728
+ /** Translations; unspecified keys fall back to Dutch */
1729
+ 'translations'?: NLDDNumberField['translations'];
1730
+ 'internals'?: NLDDNumberField['internals'];
1731
+ /** When the value changes (typing, +/- button, or on-commit correction); detail: { value: number } */
1732
+ 'onInput'?: (event: CustomEvent) => void;
1733
+ /** When the value is committed (blur/Enter or +/- button), clamped to [min, max]; empty input falls back to the last valid value. When the committed value differs from the typed value, a matching input event is fired immediately before this one. detail: { value: number } */
1734
+ 'onChange'?: (event: CustomEvent) => void;
1735
+ };
1736
+
1737
+ type NLDDOneHalfOneHalfSectionProps = {
1738
+ /** Body max-width: 'full' removes the constraint so the section spans the full available width. Any CSS length (e.g. '480px') overrides the default max-width. */
1739
+ 'width'?: NLDDOneHalfOneHalfSection['width'];
1740
+ /** Surface background ('inherit' default; 'base'/'tinted' paint and cascade a surface). */
1741
+ 'background'?: NLDDOneHalfOneHalfSection['background'];
1742
+ /** Color scheme ('inherit' default; 'inverted' = opposite of the surrounding page scheme). */
1743
+ 'scheme'?: NLDDOneHalfOneHalfSection['scheme'];
1744
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1745
+ 'padding-block'?: NLDDOneHalfOneHalfSection['paddingBlock'];
1746
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1747
+ 'paddingBlock'?: NLDDOneHalfOneHalfSection['paddingBlock'];
1748
+ /** Top padding override. */
1749
+ 'padding-top'?: NLDDOneHalfOneHalfSection['paddingTop'];
1750
+ /** Top padding override. */
1751
+ 'paddingTop'?: NLDDOneHalfOneHalfSection['paddingTop'];
1752
+ /** Bottom padding override. */
1753
+ 'padding-bottom'?: NLDDOneHalfOneHalfSection['paddingBottom'];
1754
+ /** Bottom padding override. */
1755
+ 'paddingBottom'?: NLDDOneHalfOneHalfSection['paddingBottom'];
1756
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1757
+ 'sm-padding-block'?: NLDDOneHalfOneHalfSection['smPaddingBlock'];
1758
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1759
+ 'smPaddingBlock'?: NLDDOneHalfOneHalfSection['smPaddingBlock'];
1760
+ 'sm-padding-top'?: NLDDOneHalfOneHalfSection['smPaddingTop'];
1761
+ 'smPaddingTop'?: NLDDOneHalfOneHalfSection['smPaddingTop'];
1762
+ 'sm-padding-bottom'?: NLDDOneHalfOneHalfSection['smPaddingBottom'];
1763
+ 'smPaddingBottom'?: NLDDOneHalfOneHalfSection['smPaddingBottom'];
1764
+ 'md-padding-block'?: NLDDOneHalfOneHalfSection['mdPaddingBlock'];
1765
+ 'mdPaddingBlock'?: NLDDOneHalfOneHalfSection['mdPaddingBlock'];
1766
+ 'md-padding-top'?: NLDDOneHalfOneHalfSection['mdPaddingTop'];
1767
+ 'mdPaddingTop'?: NLDDOneHalfOneHalfSection['mdPaddingTop'];
1768
+ 'md-padding-bottom'?: NLDDOneHalfOneHalfSection['mdPaddingBottom'];
1769
+ 'mdPaddingBottom'?: NLDDOneHalfOneHalfSection['mdPaddingBottom'];
1770
+ 'lg-padding-block'?: NLDDOneHalfOneHalfSection['lgPaddingBlock'];
1771
+ 'lgPaddingBlock'?: NLDDOneHalfOneHalfSection['lgPaddingBlock'];
1772
+ 'lg-padding-top'?: NLDDOneHalfOneHalfSection['lgPaddingTop'];
1773
+ 'lgPaddingTop'?: NLDDOneHalfOneHalfSection['lgPaddingTop'];
1774
+ 'lg-padding-bottom'?: NLDDOneHalfOneHalfSection['lgPaddingBottom'];
1775
+ 'lgPaddingBottom'?: NLDDOneHalfOneHalfSection['lgPaddingBottom'];
1776
+ /** Minimum section height (any CSS length, e.g. '400px', '100dvh') (mirrors width, which sets the body max-width). */
1777
+ 'height'?: NLDDOneHalfOneHalfSection['height'];
1778
+ };
1779
+
1780
+ type NLDDOneThirdTwoThirdsSectionProps = {
1781
+ /** Body max-width: 'full' removes the constraint so the section spans the full available width. Any CSS length (e.g. '480px') overrides the default max-width. */
1782
+ 'width'?: NLDDOneThirdTwoThirdsSection['width'];
1783
+ /** Surface background ('inherit' default; 'base'/'tinted' paint and cascade a surface). */
1784
+ 'background'?: NLDDOneThirdTwoThirdsSection['background'];
1785
+ /** Color scheme ('inherit' default; 'inverted' = opposite of the surrounding page scheme). */
1786
+ 'scheme'?: NLDDOneThirdTwoThirdsSection['scheme'];
1787
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1788
+ 'padding-block'?: NLDDOneThirdTwoThirdsSection['paddingBlock'];
1789
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
1790
+ 'paddingBlock'?: NLDDOneThirdTwoThirdsSection['paddingBlock'];
1791
+ /** Top padding override. */
1792
+ 'padding-top'?: NLDDOneThirdTwoThirdsSection['paddingTop'];
1793
+ /** Top padding override. */
1794
+ 'paddingTop'?: NLDDOneThirdTwoThirdsSection['paddingTop'];
1795
+ /** Bottom padding override. */
1796
+ 'padding-bottom'?: NLDDOneThirdTwoThirdsSection['paddingBottom'];
1797
+ /** Bottom padding override. */
1798
+ 'paddingBottom'?: NLDDOneThirdTwoThirdsSection['paddingBottom'];
1799
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1800
+ 'sm-padding-block'?: NLDDOneThirdTwoThirdsSection['smPaddingBlock'];
1801
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
1802
+ 'smPaddingBlock'?: NLDDOneThirdTwoThirdsSection['smPaddingBlock'];
1803
+ 'sm-padding-top'?: NLDDOneThirdTwoThirdsSection['smPaddingTop'];
1804
+ 'smPaddingTop'?: NLDDOneThirdTwoThirdsSection['smPaddingTop'];
1805
+ 'sm-padding-bottom'?: NLDDOneThirdTwoThirdsSection['smPaddingBottom'];
1806
+ 'smPaddingBottom'?: NLDDOneThirdTwoThirdsSection['smPaddingBottom'];
1807
+ 'md-padding-block'?: NLDDOneThirdTwoThirdsSection['mdPaddingBlock'];
1808
+ 'mdPaddingBlock'?: NLDDOneThirdTwoThirdsSection['mdPaddingBlock'];
1809
+ 'md-padding-top'?: NLDDOneThirdTwoThirdsSection['mdPaddingTop'];
1810
+ 'mdPaddingTop'?: NLDDOneThirdTwoThirdsSection['mdPaddingTop'];
1811
+ 'md-padding-bottom'?: NLDDOneThirdTwoThirdsSection['mdPaddingBottom'];
1812
+ 'mdPaddingBottom'?: NLDDOneThirdTwoThirdsSection['mdPaddingBottom'];
1813
+ 'lg-padding-block'?: NLDDOneThirdTwoThirdsSection['lgPaddingBlock'];
1814
+ 'lgPaddingBlock'?: NLDDOneThirdTwoThirdsSection['lgPaddingBlock'];
1815
+ 'lg-padding-top'?: NLDDOneThirdTwoThirdsSection['lgPaddingTop'];
1816
+ 'lgPaddingTop'?: NLDDOneThirdTwoThirdsSection['lgPaddingTop'];
1817
+ 'lg-padding-bottom'?: NLDDOneThirdTwoThirdsSection['lgPaddingBottom'];
1818
+ 'lgPaddingBottom'?: NLDDOneThirdTwoThirdsSection['lgPaddingBottom'];
1819
+ /** Minimum section height (any CSS length, e.g. '400px', '100dvh') (mirrors width, which sets the body max-width). */
1820
+ 'height'?: NLDDOneThirdTwoThirdsSection['height'];
1821
+ };
1822
+
1823
+ type NLDDPageProps = {
1824
+ /** Sticky header */
1825
+ 'sticky-header'?: NLDDPage['stickyHeader'];
1826
+ /** Sticky header */
1827
+ 'stickyHeader'?: NLDDPage['stickyHeader'];
1828
+ /** Sticky footer */
1829
+ 'sticky-footer'?: NLDDPage['stickyFooter'];
1830
+ /** Sticky footer */
1831
+ 'stickyFooter'?: NLDDPage['stickyFooter'];
1832
+ /** Use a gray background instead of white */
1833
+ 'background'?: NLDDPage['background'];
1834
+ 'scrollTarget'?: NLDDPage['scrollTarget'];
1835
+ };
1836
+
1837
+ type NLDDPageFooterProps = {
1838
+ /** Body max-width, mirroring a page section: 'full' removes the constraint so the content spans the full width; any CSS length (e.g. '480px') overrides the default max-width. */
1839
+ 'width'?: NLDDPageFooter['width'];
1840
+ };
1841
+
1842
+ type NLDDPageFooterLegalBarProps = {
1843
+ /** Override the nav's aria-label. Defaults to the i18n value (NL: "Juridische links"). */
1844
+ 'accessible-label'?: NLDDPageFooterLegalBar['accessibleLabel'];
1845
+ /** Override the nav's aria-label. Defaults to the i18n value (NL: "Juridische links"). */
1846
+ 'accessibleLabel'?: NLDDPageFooterLegalBar['accessibleLabel'];
1847
+ /** Override translation keys; unset keys fall back to the Dutch default. */
1848
+ 'translations'?: NLDDPageFooterLegalBar['translations'];
1849
+ };
1850
+
1851
+ type NLDDPageFooterLegalBarItemProps = {
1852
+ /** Link target. When omitted, the item renders as plain text. */
1853
+ 'href'?: NLDDPageFooterLegalBarItem['href'];
1854
+ /** Item label. Falls back to the default slot. */
1855
+ 'text'?: NLDDPageFooterLegalBarItem['text'];
1856
+ };
1857
+
1858
+ type NLDDPaginationProps = {
1859
+ /** Currently active page (1-based) */
1860
+ 'current'?: NLDDPagination['current'];
1861
+ /** Total number of pages (recommended max: 200 for compact select performance) */
1862
+ 'total'?: NLDDPagination['total'];
1863
+ /** Disabled state */
1864
+ 'disabled'?: NLDDPagination['disabled'];
1865
+ /** Centreert de pagination in de container (host fills row, items grouped in the middle) */
1866
+ 'centered'?: NLDDPagination['centered'];
1867
+ /** URL patroon met {page} placeholder, rendert links in plaats van buttons */
1868
+ 'href-pattern'?: NLDDPagination['hrefPattern'];
1869
+ /** URL patroon met {page} placeholder, rendert links in plaats van buttons */
1870
+ 'hrefPattern'?: NLDDPagination['hrefPattern'];
1871
+ /** Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands */
1872
+ 'translations'?: NLDDPagination['translations'];
1873
+ /** Bij paginawisseling (detail: { page: number, href?: string }). Alleen cancelable in href-mode: preventDefault() voorkomt navigatie (SPA). */
1874
+ 'onPageChange'?: (event: CustomEvent) => void;
1875
+ };
1876
+
1877
+ type NLDDPasswordFieldProps = {
1878
+ /** 'md' (default) | 'sm'. Set automatically by nldd-form-field. */
1879
+ 'size'?: NLDDPasswordField['size'];
1880
+ /** The input value */
1881
+ 'value'?: NLDDPasswordField['value'];
1882
+ /** Sets the id on the native input. Set automatically by nldd-form-field. */
1883
+ 'input-id'?: NLDDPasswordField['inputId'];
1884
+ /** Sets the id on the native input. Set automatically by nldd-form-field. */
1885
+ 'inputId'?: NLDDPasswordField['inputId'];
1886
+ /** Placeholder text */
1887
+ 'placeholder'?: NLDDPasswordField['placeholder'];
1888
+ /** Marks the field as valid */
1889
+ 'valid'?: NLDDPasswordField['valid'];
1890
+ /** Marks the field as invalid */
1891
+ 'invalid'?: NLDDPasswordField['invalid'];
1892
+ /** Disabled state */
1893
+ 'disabled'?: NLDDPasswordField['disabled'];
1894
+ /** Whether the password is masked (default: true) */
1895
+ 'masked'?: NLDDPasswordField['masked'];
1896
+ /** Visible toggle button text when masked (default: 'Toon') */
1897
+ 'show-button-text'?: NLDDPasswordField['showButtonText'];
1898
+ /** Visible toggle button text when masked (default: 'Toon') */
1899
+ 'showButtonText'?: NLDDPasswordField['showButtonText'];
1900
+ /** Visible toggle button text when unmasked (default: 'Verberg') */
1901
+ 'hide-button-text'?: NLDDPasswordField['hideButtonText'];
1902
+ /** Visible toggle button text when unmasked (default: 'Verberg') */
1903
+ 'hideButtonText'?: NLDDPasswordField['hideButtonText'];
1904
+ /** aria-label for toggle when masked (default: 'Toon wachtwoord') */
1905
+ 'show-button-accessible-label'?: NLDDPasswordField['showButtonAccessibleLabel'];
1906
+ /** aria-label for toggle when masked (default: 'Toon wachtwoord') */
1907
+ 'showButtonAccessibleLabel'?: NLDDPasswordField['showButtonAccessibleLabel'];
1908
+ /** aria-label for toggle when unmasked (default: 'Verberg wachtwoord') */
1909
+ 'hide-button-accessible-label'?: NLDDPasswordField['hideButtonAccessibleLabel'];
1910
+ /** aria-label for toggle when unmasked (default: 'Verberg wachtwoord') */
1911
+ 'hideButtonAccessibleLabel'?: NLDDPasswordField['hideButtonAccessibleLabel'];
1912
+ /** Readonly state */
1913
+ 'readonly'?: NLDDPasswordField['readonly'];
1914
+ /** Required state */
1915
+ 'required'?: NLDDPasswordField['required'];
1916
+ /** Input name for form submission */
1917
+ 'name'?: NLDDPasswordField['name'];
1918
+ /** Autocomplete hint */
1919
+ 'autocomplete'?: NLDDPasswordField['autocomplete'];
1920
+ /** Accessible label forwarded to the inner input. Set automatically by nldd-form-field. */
1921
+ 'accessible-label'?: NLDDPasswordField['accessibleLabel'];
1922
+ /** Accessible label forwarded to the inner input. Set automatically by nldd-form-field. */
1923
+ 'accessibleLabel'?: NLDDPasswordField['accessibleLabel'];
1924
+ /** Ids for aria-describedby on the inner input. Set automatically by nldd-form-field. */
1925
+ 'error-message-ids'?: NLDDPasswordField['errorMessageIds'];
1926
+ /** Ids for aria-describedby on the inner input. Set automatically by nldd-form-field. */
1927
+ 'errorMessageIds'?: NLDDPasswordField['errorMessageIds'];
1928
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
1929
+ 'width'?: NLDDPasswordField['width'];
1930
+ 'internals'?: NLDDPasswordField['internals'];
1931
+ /** When the input value changes ({ detail: { value } }) */
1932
+ 'onInput'?: (event: CustomEvent) => void;
1933
+ /** When the input value is committed ({ detail: { value } }) */
1934
+ 'onChange'?: (event: CustomEvent) => void;
1935
+ };
1936
+
1937
+ type NLDDPopoverProps = {
1938
+ /** ID van het trigger-element voor positionering */
1939
+ 'anchor'?: NLDDPopover['anchor'];
1940
+ /** Floating UI placement (default: 'bottom-start') */
1941
+ 'placement'?: NLDDPopover['placement'];
1942
+ /** Expliciete width (default: 320px via --components-popover-default-width) */
1943
+ 'width'?: NLDDPopover['width'];
1944
+ /** CSS top-positie. Wanneer gezet (alleen of samen met andere edge-attrs of `centered`) wordt Floating UI's anchor-positionering overgeslagen — de popover staat dan vrij op het scherm. De `anchor` blijft wel nodig voor ARIA-koppeling op de trigger. Geen effect op sm (bottom-sheet wint). */
1945
+ 'top'?: NLDDPopover['top'];
1946
+ /** CSS left-positie. Zie `top` voor semantiek. */
1947
+ 'left'?: NLDDPopover['left'];
1948
+ /** CSS right-positie. Zie `top` voor semantiek. */
1949
+ 'right'?: NLDDPopover['right'];
1950
+ /** CSS bottom-positie. Zie `top` voor semantiek. */
1951
+ 'bottom'?: NLDDPopover['bottom'];
1952
+ /** Centreert beide assen op de viewport. Per as overrideable: `centered top="0"` = horizontaal gecentreerd, top-aligned. Mirrort CSS `place-items: center` met `align-items`/`justify-items` overrides. */
1953
+ 'centered'?: NLDDPopover['centered'];
1954
+ /** Op sm-viewport (waar de popover als bottom-sheet rendert) de volledige beschikbare hoogte vullen i.p.v. te krimpen naar content. Geen effect op md+ (anchored modus). Opt-in voor content-heavy use cases zoals zoekresultaten of lange detail-views; volgt Apple/Material conventie van content-sized als default. */
1955
+ 'sm-full-height'?: NLDDPopover['smFullHeight'];
1956
+ /** Op sm-viewport (waar de popover als bottom-sheet rendert) de volledige beschikbare hoogte vullen i.p.v. te krimpen naar content. Geen effect op md+ (anchored modus). Opt-in voor content-heavy use cases zoals zoekresultaten of lange detail-views; volgt Apple/Material conventie van content-sized als default. */
1957
+ 'smFullHeight'?: NLDDPopover['smFullHeight'];
1958
+ /** (verplicht) Toegankelijke naam (aria-label). Valt terug op de i18n default ('Popover') als niet gezet — geef altijd een unieke, beschrijvende naam. */
1959
+ 'accessible-label'?: NLDDPopover['accessibleLabel'];
1960
+ /** (verplicht) Toegankelijke naam (aria-label). Valt terug op de i18n default ('Popover') als niet gezet — geef altijd een unieke, beschrijvende naam. */
1961
+ 'accessibleLabel'?: NLDDPopover['accessibleLabel'];
1962
+ /** Override translation keys; unset keys vallen terug op de Nederlandse default. */
1963
+ 'translations'?: NLDDPopover['translations'];
1964
+ 'anchorElement'?: NLDDPopover['anchorElement'];
1965
+ 'open'?: NLDDPopover['open'];
1966
+ /** Wanneer de popover wordt geopend */
1967
+ 'onOpen'?: (event: CustomEvent) => void;
1968
+ /** Wanneer de popover wordt gesloten */
1969
+ 'onClose'?: (event: CustomEvent) => void;
1970
+ };
1971
+
1972
+ type NLDDProgressBarProps = {
1973
+ /** Semantics for ARIA and visualization (default: 'progress') */
1974
+ 'mode'?: NLDDProgressBar['mode'];
1975
+ /** Total value (default: 100) */
1976
+ 'max'?: NLDDProgressBar['max'];
1977
+ /** Single-segment shorthand (ignored when segment children are present) */
1978
+ 'value'?: NLDDProgressBar['value'];
1979
+ /** Color for the single-segment shorthand (default: 'accent') */
1980
+ 'color'?: NLDDProgressBar['color'];
1981
+ /** Height of the bar (default: 'md') */
1982
+ 'size'?: NLDDProgressBar['size'];
1983
+ /** Label above the bar (left) */
1984
+ 'text'?: NLDDProgressBar['text'];
1985
+ /** Format for the displayed value (default: 'percentage') */
1986
+ 'value-format'?: NLDDProgressBar['valueFormat'];
1987
+ /** Format for the displayed value (default: 'percentage') */
1988
+ 'valueFormat'?: NLDDProgressBar['valueFormat'];
1989
+ /** Full override of the displayed value */
1990
+ 'value-text'?: NLDDProgressBar['valueText'];
1991
+ /** Full override of the displayed value */
1992
+ 'valueText'?: NLDDProgressBar['valueText'];
1993
+ /** Where the value shows: inline in the caption, in a tooltip on the bar, or hidden (default: 'inline') */
1994
+ 'value-display'?: NLDDProgressBar['valueDisplay'];
1995
+ /** Where the value shows: inline in the caption, in a tooltip on the bar, or hidden (default: 'inline') */
1996
+ 'valueDisplay'?: NLDDProgressBar['valueDisplay'];
1997
+ /** Full override of aria-valuetext */
1998
+ 'accessible-label'?: NLDDProgressBar['accessibleLabel'];
1999
+ /** Full override of aria-valuetext */
2000
+ 'accessibleLabel'?: NLDDProgressBar['accessibleLabel'];
2001
+ /** Shows a sliding indicator animation (only without segments) */
2002
+ 'indeterminate'?: NLDDProgressBar['indeterminate'];
2003
+ /** Override translation keys; unset keys fall back to Dutch */
2004
+ 'translations'?: NLDDProgressBar['translations'];
2005
+ };
2006
+
2007
+ type NLDDProgressBarSegmentIndicatorProps = {
2008
+ /** Share of the parent's total (default 0; <=0 hides segment) */
2009
+ 'value'?: NLDDProgressBarSegmentIndicator['value'];
2010
+ /** Color. Semantic (neutral, accent, success, warning, critical) or a Rijkskleur. Default 'accent'. */
2011
+ 'color'?: NLDDProgressBarSegmentIndicator['color'];
2012
+ /** Name for screenreader text (optional) */
2013
+ 'name'?: NLDDProgressBarSegmentIndicator['name'];
2014
+ /** Override of the auto-generated tooltip text */
2015
+ 'tooltip-text'?: NLDDProgressBarSegmentIndicator['tooltipText'];
2016
+ /** Override of the auto-generated tooltip text */
2017
+ 'tooltipText'?: NLDDProgressBarSegmentIndicator['tooltipText'];
2018
+ };
2019
+
2020
+ type NLDDProgressCircleProps = {
2021
+ /** Semantics for ARIA and gap behavior (default: 'progress') */
2022
+ 'mode'?: NLDDProgressCircle['mode'];
2023
+ /** Total value (default: 100) */
2024
+ 'max'?: NLDDProgressCircle['max'];
2025
+ /** Single-segment shorthand (ignored when segment children exist) */
2026
+ 'value'?: NLDDProgressCircle['value'];
2027
+ /** Color. Semantic (neutral, accent, success, warning, critical) or a Rijkskleur. Default 'accent'. */
2028
+ 'color'?: NLDDProgressCircle['color'];
2029
+ /** Circle diameter in px. Matches nldd-icon sizes: 16, 20, 24, 28, 32, 40, 44, 48, 56, 64, 80, 96 (default: '28') */
2030
+ 'size'?: NLDDProgressCircle['size'];
2031
+ /** Label below the circle */
2032
+ 'text'?: NLDDProgressCircle['text'];
2033
+ /** Format of the displayed value (default: 'percentage') */
2034
+ 'value-format'?: NLDDProgressCircle['valueFormat'];
2035
+ /** Format of the displayed value (default: 'percentage') */
2036
+ 'valueFormat'?: NLDDProgressCircle['valueFormat'];
2037
+ /** Full override of the displayed value (inline + tooltip) */
2038
+ 'value-text'?: NLDDProgressCircle['valueText'];
2039
+ /** Full override of the displayed value (inline + tooltip) */
2040
+ 'valueText'?: NLDDProgressCircle['valueText'];
2041
+ /** Where the value shows: inline below the label, in a tooltip, or hidden (default: 'tooltip') */
2042
+ 'value-display'?: NLDDProgressCircle['valueDisplay'];
2043
+ /** Where the value shows: inline below the label, in a tooltip, or hidden (default: 'tooltip') */
2044
+ 'valueDisplay'?: NLDDProgressCircle['valueDisplay'];
2045
+ /** Full override of aria-valuetext */
2046
+ 'accessible-label'?: NLDDProgressCircle['accessibleLabel'];
2047
+ /** Full override of aria-valuetext */
2048
+ 'accessibleLabel'?: NLDDProgressCircle['accessibleLabel'];
2049
+ /** Renders the rotating elastic arc animation */
2050
+ 'indeterminate'?: NLDDProgressCircle['indeterminate'];
2051
+ /** Override translation keys; unset keys fall back to Dutch */
2052
+ 'translations'?: NLDDProgressCircle['translations'];
2053
+ };
2054
+
2055
+ type NLDDProgressCircleSegmentIndicatorProps = {
2056
+ /** Share of the parent's total (default 0; <=0 hides segment) */
2057
+ 'value'?: NLDDProgressCircleSegmentIndicator['value'];
2058
+ /** Color (semantic or Rijkskleur). Default 'accent'. */
2059
+ 'color'?: NLDDProgressCircleSegmentIndicator['color'];
2060
+ /** Optional name used in the combined tooltip + screenreader text */
2061
+ 'name'?: NLDDProgressCircleSegmentIndicator['name'];
2062
+ };
2063
+
2064
+ type NLDDRadioButtonProps = {
2065
+ /** Checked state */
2066
+ 'checked'?: NLDDRadioButton['checked'];
2067
+ /** Disabled state */
2068
+ 'disabled'?: NLDDRadioButton['disabled'];
2069
+ /** Required state */
2070
+ 'required'?: NLDDRadioButton['required'];
2071
+ /** Radio group name for form submission; ties the buttons of one group together */
2072
+ 'name'?: NLDDRadioButton['name'];
2073
+ /** Value submitted with the form when this radio button is checked */
2074
+ 'value'?: NLDDRadioButton['value'];
2075
+ /** Accessible label forwarded as aria-label to the native input. Note: aria-labelledby is not supported as IDREF resolution cannot cross shadow DOM boundaries. */
2076
+ 'accessible-label'?: NLDDRadioButton['accessibleLabel'];
2077
+ /** Accessible label forwarded as aria-label to the native input. Note: aria-labelledby is not supported as IDREF resolution cannot cross shadow DOM boundaries. */
2078
+ 'accessibleLabel'?: NLDDRadioButton['accessibleLabel'];
2079
+ 'internals'?: NLDDRadioButton['internals'];
2080
+ /** When checked state changes; detail: { checked: boolean, value: string, name: string } */
2081
+ 'onChange'?: (event: CustomEvent) => void;
2082
+ };
2083
+
2084
+ type NLDDRadioButtonFieldProps = {
2085
+ /** Checked state */
2086
+ 'checked'?: NLDDRadioButtonField['checked'];
2087
+ /** Disabled state */
2088
+ 'disabled'?: NLDDRadioButtonField['disabled'];
2089
+ /** Value for form submission */
2090
+ 'value'?: NLDDRadioButtonField['value'];
2091
+ /** Radio group name for form submission, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group. */
2092
+ 'name'?: NLDDRadioButtonField['name'];
2093
+ /** Required state, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group. */
2094
+ 'required'?: NLDDRadioButtonField['required'];
2095
+ /** Label text for the radio button */
2096
+ 'label'?: NLDDRadioButtonField['label'];
2097
+ 'internals'?: NLDDRadioButtonField['internals'];
2098
+ /** When checked state changes; detail: { checked: boolean, value: string } */
2099
+ 'onChange'?: (event: CustomEvent) => void;
2100
+ };
2101
+
2102
+ type NLDDRadioButtonGroupProps = {
2103
+ /** Forwarded to all slotted nldd-radio-button-field elements */
2104
+ 'name'?: NLDDRadioButtonGroup['name'];
2105
+ /** Disables all slotted fields */
2106
+ 'disabled'?: NLDDRadioButtonGroup['disabled'];
2107
+ /** Marks the group as required */
2108
+ 'required'?: NLDDRadioButtonGroup['required'];
2109
+ /** Id of an external label element, set as aria-labelledby on the group */
2110
+ 'accessible-labeled-by'?: NLDDRadioButtonGroup['accessibleLabeledBy'];
2111
+ /** Id of an external label element, set as aria-labelledby on the group */
2112
+ 'accessibleLabeledBy'?: NLDDRadioButtonGroup['accessibleLabeledBy'];
2113
+ /** Bubbles up from the checked field; detail: { checked: boolean, value: string } */
2114
+ 'onChange'?: (event: CustomEvent) => void;
2115
+ };
2116
+
2117
+ type NLDDRichTextProps = {
2118
+ /** Spacing between elements: 'flat' | 'tight' | 'snug' (default) | 'loose' */
2119
+ 'spacing'?: NLDDRichText['spacing'];
2120
+ /** Centers the main column inside the container; without it, content is left-aligned */
2121
+ 'centered'?: NLDDRichText['centered'];
2122
+ /** Opt-in automatische woordafbreking voor doorlopende tekst (p, li, dd). Vereist een correcte `lang` op de pagina (bijv. `lang="nl"` op `<html>`): zonder taalinfo breekt de browser niet af. Een `overflow-wrap: break-word`-vangnet op p/li staat altijd aan, los van dit attribuut, zodat lange URLs en samenstellingen ook zonder woordenboek netjes breken in plaats van te overlopen. */
2123
+ 'hyphens'?: NLDDRichText['hyphens'];
2124
+ /** 'inherit' laat alle tekst de kleur van de ondergrond volgen (voor gekleurde vlakken zoals de filled-categories). Links blijven onderstreept als affordance; secundaire tekst (figcaption) krijgt dezelfde kleur op verlaagde dekking. Bekende v1-gaten: inline code, mark, tabellen en hr behouden hun eigen surfaces. Leeg = standaard contentkleuren. */
2125
+ 'color'?: NLDDRichText['color'];
2126
+ /** Override translation keys; unset keys fall back to Dutch */
2127
+ 'translations'?: NLDDRichText['translations'];
2128
+ };
2129
+
2130
+ type NLDDSearchFieldProps = {
2131
+ /** The search value */
2132
+ 'value'?: NLDDSearchField['value'];
2133
+ /** Placeholder text for the input */
2134
+ 'placeholder'?: NLDDSearchField['placeholder'];
2135
+ /** Accessible label (aria-label) for the native input. Falls back to placeholder when not set. Set explicitly when a value is already present and the placeholder is no longer visible. */
2136
+ 'accessible-label'?: NLDDSearchField['accessibleLabel'];
2137
+ /** Accessible label (aria-label) for the native input. Falls back to placeholder when not set. Set explicitly when a value is already present and the placeholder is no longer visible. */
2138
+ 'accessibleLabel'?: NLDDSearchField['accessibleLabel'];
2139
+ /** Field size: 'sm' | 'md' (default: 'md') */
2140
+ 'size'?: NLDDSearchField['size'];
2141
+ /** Disabled state */
2142
+ 'disabled'?: NLDDSearchField['disabled'];
2143
+ /** Input name for form submission */
2144
+ 'name'?: NLDDSearchField['name'];
2145
+ /** When set, shows a search button on the right */
2146
+ 'show-search-button'?: NLDDSearchField['showSearchButton'];
2147
+ /** When set, shows a search button on the right */
2148
+ 'showSearchButton'?: NLDDSearchField['showSearchButton'];
2149
+ /** Override translation keys; unset keys fall back to Dutch */
2150
+ 'translations'?: NLDDSearchField['translations'];
2151
+ /** Disables browser spellchecking on the inner input */
2152
+ 'no-spellcheck'?: NLDDSearchField['noSpellcheck'];
2153
+ /** Disables browser spellchecking on the inner input */
2154
+ 'noSpellcheck'?: NLDDSearchField['noSpellcheck'];
2155
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
2156
+ 'width'?: NLDDSearchField['width'];
2157
+ 'internals'?: NLDDSearchField['internals'];
2158
+ /** When the input value changes; detail: { value: string } */
2159
+ 'onInput'?: (event: CustomEvent) => void;
2160
+ /** When the input value is committed; detail: { value: string } */
2161
+ 'onChange'?: (event: CustomEvent) => void;
2162
+ /** When search is submitted via Enter or the search button; detail: { value: string } */
2163
+ 'onSearch'?: (event: CustomEvent) => void;
2164
+ };
2165
+
2166
+ type NLDDSegmentedControlProps = {
2167
+ /** Selected value for radio type */
2168
+ 'value'?: NLDDSegmentedControl['value'];
2169
+ /** Control size: 'sm' | 'md' | 'lg' (default: 'md') */
2170
+ 'size'?: NLDDSegmentedControl['size'];
2171
+ /** Input type: 'radio' | 'checkbox' (default: 'radio'). */
2172
+ 'type'?: NLDDSegmentedControl['type'];
2173
+ /** Content type for all items: 'text' | 'icon' | 'icon-and-text' (default: 'text') */
2174
+ 'variant'?: NLDDSegmentedControl['variant'];
2175
+ /** Disabled state for all items */
2176
+ 'disabled'?: NLDDSegmentedControl['disabled'];
2177
+ /** Width mode: 'full' (stretches to container), 'fit-content' (per-item content size), or any CSS length (e.g. '240px') */
2178
+ 'width'?: NLDDSegmentedControl['width'];
2179
+ /** Name for form submission, forwarded to native inputs */
2180
+ 'name'?: NLDDSegmentedControl['name'];
2181
+ /** Accessible name for the group, set as aria-label */
2182
+ 'accessible-label'?: NLDDSegmentedControl['accessibleLabel'];
2183
+ /** Accessible name for the group, set as aria-label */
2184
+ 'accessibleLabel'?: NLDDSegmentedControl['accessibleLabel'];
2185
+ /** Id of an external label element, set as aria-labelledby on the group */
2186
+ 'accessible-labeled-by'?: NLDDSegmentedControl['accessibleLabeledBy'];
2187
+ /** Id of an external label element, set as aria-labelledby on the group */
2188
+ 'accessibleLabeledBy'?: NLDDSegmentedControl['accessibleLabeledBy'];
2189
+ /** Selected values for checkbox type. Use property binding: .values=${['New York', 'Amsterdam']} Does not reflect to an attribute — safe for values containing spaces or special characters. */
2190
+ 'values'?: NLDDSegmentedControl['values'];
2191
+ 'internals'?: NLDDSegmentedControl['internals'];
2192
+ /** When selection changes; detail: { value: string } for radio, detail: { values: string[] } for checkbox */
2193
+ 'onChange'?: (event: CustomEvent) => void;
2194
+ };
2195
+
2196
+ type NLDDSegmentedControlItemProps = {
2197
+ /** Value for this item */
2198
+ 'value'?: NLDDSegmentedControlItem['value'];
2199
+ /** Whether this item is selected (set by parent) */
2200
+ 'selected'?: NLDDSegmentedControlItem['selected'];
2201
+ /** Disabled state */
2202
+ 'disabled'?: NLDDSegmentedControlItem['disabled'];
2203
+ /** Control size: 'sm' | 'md' | 'lg' (default: 'md'). Set by nldd-segmented-control. */
2204
+ 'size'?: NLDDSegmentedControlItem['size'];
2205
+ /** Content type: 'text' | 'icon' | 'icon-and-text' (default: 'text'). Set by nldd-segmented-control. */
2206
+ 'variant'?: NLDDSegmentedControlItem['variant'];
2207
+ /** Type of the native input: 'radio' | 'checkbox' (default: 'radio'). Set by nldd-segmented-control. */
2208
+ 'input-type'?: NLDDSegmentedControlItem['inputType'];
2209
+ /** Type of the native input: 'radio' | 'checkbox' (default: 'radio'). Set by nldd-segmented-control. */
2210
+ 'inputType'?: NLDDSegmentedControlItem['inputType'];
2211
+ /** Name of the group for form submission, put on the native input. Set by nldd-segmented-control. */
2212
+ 'group-name'?: NLDDSegmentedControlItem['groupName'];
2213
+ /** Name of the group for form submission, put on the native input. Set by nldd-segmented-control. */
2214
+ 'groupName'?: NLDDSegmentedControlItem['groupName'];
2215
+ /** Text label (shown for variant "text" and "icon-and-text"; used as aria-label and tooltip for variant "icon") */
2216
+ 'text'?: NLDDSegmentedControlItem['text'];
2217
+ /** Icon name for nldd-icon */
2218
+ 'icon'?: NLDDSegmentedControlItem['icon'];
2219
+ /** When item is activated; detail: { value: string, checked: boolean } */
2220
+ 'onItemChange'?: (event: CustomEvent) => void;
2221
+ };
2222
+
2223
+ type NLDDSheetProps = {
2224
+ /** Sheet position: 'left' | 'right' | 'bottom' (default: 'right') */
2225
+ 'placement'?: NLDDSheet['placement'];
2226
+ /** Custom height for bottom sheets (and for any sheet on sm viewports, where all placements collapse to bottom). Accepts: `'full'` (default — viewport minus top-inset, identical to omitting the attribute), `'fit-content'` (collapse to content size), or any CSS length/percentage (e.g. `'50dvh'`, `'480px'`, `'50%'`). Always clamped to `100dvh - top-inset` so the sheet can't extend past the dismiss-tap area. No effect on side sheets at md+. */
2227
+ 'height'?: NLDDSheet['height'];
2228
+ /** Non-modal (no backdrop or focus lock); the sheet is modal by default */
2229
+ 'modeless'?: NLDDSheet['modeless'];
2230
+ /** Accessible name for the dialog, forwarded as aria-label (default: 'Venster') */
2231
+ 'accessible-label'?: NLDDSheet['accessibleLabel'];
2232
+ /** Accessible name for the dialog, forwarded as aria-label (default: 'Venster') */
2233
+ 'accessibleLabel'?: NLDDSheet['accessibleLabel'];
2234
+ /** Custom width for side sheets (left/right) as a CSS length (e.g. '480px', '32rem'). Applied from the md breakpoint up; ignored on sm (bottom sheet) and for `placement="bottom"`. Clamped to `100vw - 2 * inset` so the sheet always fits. */
2235
+ 'width'?: NLDDSheet['width'];
2236
+ /** Fired when the sheet is opened */
2237
+ 'onOpen'?: (event: CustomEvent) => void;
2238
+ /** Fired when the sheet is fully closed */
2239
+ 'onClose'?: (event: CustomEvent) => void;
2240
+ };
2241
+
2242
+ type NLDDSideBySideSplitViewProps = {
2243
+ /** Use a tinted background color (cascades to descendants) */
2244
+ 'background'?: NLDDSideBySideSplitView['background'];
2245
+ /** Number of panes (default: 2) */
2246
+ 'panes'?: NLDDSideBySideSplitView['panes'];
2247
+ 'onSINGLE_COLUMN_CHANGE_EVENT'?: (event: CustomEvent) => void;
2248
+ };
2249
+
2250
+ type NLDDSidebarSectionProps = {
2251
+ /** Body max-width: 'full' removes the constraint; any CSS length overrides the default. */
2252
+ 'width'?: NLDDSidebarSection['width'];
2253
+ /** Sticky top inset on lg (CSS length; default = 16px). */
2254
+ 'sticky-top'?: NLDDSidebarSection['stickyTop'];
2255
+ /** Sticky top inset on lg (CSS length; default = 16px). */
2256
+ 'stickyTop'?: NLDDSidebarSection['stickyTop'];
2257
+ /** Sticky bottom inset on lg (CSS length; default = 16px). */
2258
+ 'sticky-bottom'?: NLDDSidebarSection['stickyBottom'];
2259
+ /** Sticky bottom inset on lg (CSS length; default = 16px). */
2260
+ 'stickyBottom'?: NLDDSidebarSection['stickyBottom'];
2261
+ /** Accessible name for the sidebar (the aside landmark on lg and the sheet on sm/md). Default 'Zijbalk'. */
2262
+ 'sidebar-label'?: NLDDSidebarSection['sidebarLabel'];
2263
+ /** Accessible name for the sidebar (the aside landmark on lg and the sheet on sm/md). Default 'Zijbalk'. */
2264
+ 'sidebarLabel'?: NLDDSidebarSection['sidebarLabel'];
2265
+ /** Opt out of the sheet: a narrow section stacks the sidebar above the main instead of collapsing. `collapsed` then stays false. */
2266
+ 'no-collapse'?: NLDDSidebarSection['noCollapse'];
2267
+ /** Opt out of the sheet: a narrow section stacks the sidebar above the main instead of collapsing. `collapsed` then stays false. */
2268
+ 'noCollapse'?: NLDDSidebarSection['noCollapse'];
2269
+ /** Override translation keys (sheet title fallback, dismiss label); unset keys fall back to Dutch. */
2270
+ 'translations'?: NLDDSidebarSection['translations'];
2271
+ /** Read-only, reflected: true while the sidebar is a sheet (the section is narrower than lg). Target it via CSS to reveal sheet-only chrome. */
2272
+ 'collapsed'?: NLDDSidebarSection['collapsed'];
2273
+ 'background'?: NLDDSidebarSection['background'];
2274
+ 'scheme'?: NLDDSidebarSection['scheme'];
2275
+ 'padding-block'?: NLDDSidebarSection['paddingBlock'];
2276
+ 'paddingBlock'?: NLDDSidebarSection['paddingBlock'];
2277
+ 'padding-top'?: NLDDSidebarSection['paddingTop'];
2278
+ 'paddingTop'?: NLDDSidebarSection['paddingTop'];
2279
+ 'padding-bottom'?: NLDDSidebarSection['paddingBottom'];
2280
+ 'paddingBottom'?: NLDDSidebarSection['paddingBottom'];
2281
+ 'sm-padding-block'?: NLDDSidebarSection['smPaddingBlock'];
2282
+ 'smPaddingBlock'?: NLDDSidebarSection['smPaddingBlock'];
2283
+ 'sm-padding-top'?: NLDDSidebarSection['smPaddingTop'];
2284
+ 'smPaddingTop'?: NLDDSidebarSection['smPaddingTop'];
2285
+ 'sm-padding-bottom'?: NLDDSidebarSection['smPaddingBottom'];
2286
+ 'smPaddingBottom'?: NLDDSidebarSection['smPaddingBottom'];
2287
+ 'md-padding-block'?: NLDDSidebarSection['mdPaddingBlock'];
2288
+ 'mdPaddingBlock'?: NLDDSidebarSection['mdPaddingBlock'];
2289
+ 'md-padding-top'?: NLDDSidebarSection['mdPaddingTop'];
2290
+ 'mdPaddingTop'?: NLDDSidebarSection['mdPaddingTop'];
2291
+ 'md-padding-bottom'?: NLDDSidebarSection['mdPaddingBottom'];
2292
+ 'mdPaddingBottom'?: NLDDSidebarSection['mdPaddingBottom'];
2293
+ 'lg-padding-block'?: NLDDSidebarSection['lgPaddingBlock'];
2294
+ 'lgPaddingBlock'?: NLDDSidebarSection['lgPaddingBlock'];
2295
+ 'lg-padding-top'?: NLDDSidebarSection['lgPaddingTop'];
2296
+ 'lgPaddingTop'?: NLDDSidebarSection['lgPaddingTop'];
2297
+ 'lg-padding-bottom'?: NLDDSidebarSection['lgPaddingBottom'];
2298
+ 'lgPaddingBottom'?: NLDDSidebarSection['lgPaddingBottom'];
2299
+ 'height'?: NLDDSidebarSection['height'];
2300
+ /** The sidebar sheet opened. */
2301
+ 'onOpen'?: (event: CustomEvent) => void;
2302
+ /** The sidebar sheet closed. */
2303
+ 'onClose'?: (event: CustomEvent) => void;
2304
+ /** The collapsed state flipped because the section's width crossed the lg breakpoint; `{ collapsed }`. */
2305
+ 'onCollapseChange'?: (event: CustomEvent) => void;
2306
+ };
2307
+
2308
+ type NLDDSimpleSectionProps = {
2309
+ /** Body max-width: 'full' removes the constraint so the section spans the full available width. Any CSS length (e.g. '480px') overrides the default max-width. */
2310
+ 'width'?: NLDDSimpleSection['width'];
2311
+ /** Surface background ('inherit' default; 'base'/'tinted' paint and cascade a surface). */
2312
+ 'background'?: NLDDSimpleSection['background'];
2313
+ /** Color scheme ('inherit' default; 'inverted' = opposite of the surrounding page scheme). */
2314
+ 'scheme'?: NLDDSimpleSection['scheme'];
2315
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
2316
+ 'padding-block'?: NLDDSimpleSection['paddingBlock'];
2317
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
2318
+ 'paddingBlock'?: NLDDSimpleSection['paddingBlock'];
2319
+ /** Top padding override. */
2320
+ 'padding-top'?: NLDDSimpleSection['paddingTop'];
2321
+ /** Top padding override. */
2322
+ 'paddingTop'?: NLDDSimpleSection['paddingTop'];
2323
+ /** Bottom padding override. */
2324
+ 'padding-bottom'?: NLDDSimpleSection['paddingBottom'];
2325
+ /** Bottom padding override. */
2326
+ 'paddingBottom'?: NLDDSimpleSection['paddingBottom'];
2327
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
2328
+ 'sm-padding-block'?: NLDDSimpleSection['smPaddingBlock'];
2329
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
2330
+ 'smPaddingBlock'?: NLDDSimpleSection['smPaddingBlock'];
2331
+ 'sm-padding-top'?: NLDDSimpleSection['smPaddingTop'];
2332
+ 'smPaddingTop'?: NLDDSimpleSection['smPaddingTop'];
2333
+ 'sm-padding-bottom'?: NLDDSimpleSection['smPaddingBottom'];
2334
+ 'smPaddingBottom'?: NLDDSimpleSection['smPaddingBottom'];
2335
+ 'md-padding-block'?: NLDDSimpleSection['mdPaddingBlock'];
2336
+ 'mdPaddingBlock'?: NLDDSimpleSection['mdPaddingBlock'];
2337
+ 'md-padding-top'?: NLDDSimpleSection['mdPaddingTop'];
2338
+ 'mdPaddingTop'?: NLDDSimpleSection['mdPaddingTop'];
2339
+ 'md-padding-bottom'?: NLDDSimpleSection['mdPaddingBottom'];
2340
+ 'mdPaddingBottom'?: NLDDSimpleSection['mdPaddingBottom'];
2341
+ 'lg-padding-block'?: NLDDSimpleSection['lgPaddingBlock'];
2342
+ 'lgPaddingBlock'?: NLDDSimpleSection['lgPaddingBlock'];
2343
+ 'lg-padding-top'?: NLDDSimpleSection['lgPaddingTop'];
2344
+ 'lgPaddingTop'?: NLDDSimpleSection['lgPaddingTop'];
2345
+ 'lg-padding-bottom'?: NLDDSimpleSection['lgPaddingBottom'];
2346
+ 'lgPaddingBottom'?: NLDDSimpleSection['lgPaddingBottom'];
2347
+ /** Minimum section height (any CSS length, e.g. '400px', '100dvh') (mirrors width, which sets the body max-width). */
2348
+ 'height'?: NLDDSimpleSection['height'];
2349
+ };
2350
+
2351
+ type NLDDSkipLinkProps = {
2352
+ /** Tekst van de skip-link. Fallback naar i18n default. */
2353
+ 'text'?: NLDDSkipLink['text'];
2354
+ /** Optioneel extern doel-ID. Zonder href springt naar eind van eigen content. */
2355
+ 'href'?: NLDDSkipLink['href'];
2356
+ 'translations'?: NLDDSkipLink['translations'];
2357
+ };
2358
+
2359
+ type NLDDSpacerProps = {
2360
+ /** Base spacer size. 'flexible' or one of the fixed tokens (2–96). Default: '16'. */
2361
+ 'size'?: NLDDSpacer['size'];
2362
+ /** Spacer size at sm breakpoint (max-width: 640px). */
2363
+ 'sm-size'?: NLDDSpacer['smSize'];
2364
+ /** Spacer size at sm breakpoint (max-width: 640px). */
2365
+ 'smSize'?: NLDDSpacer['smSize'];
2366
+ /** Spacer size at md breakpoint (641px–1007px). */
2367
+ 'md-size'?: NLDDSpacer['mdSize'];
2368
+ /** Spacer size at md breakpoint (641px–1007px). */
2369
+ 'mdSize'?: NLDDSpacer['mdSize'];
2370
+ /** Spacer size at lg breakpoint (min-width: 1008px). */
2371
+ 'lg-size'?: NLDDSpacer['lgSize'];
2372
+ /** Spacer size at lg breakpoint (min-width: 1008px). */
2373
+ 'lgSize'?: NLDDSpacer['lgSize'];
2374
+ /** Direction: 'horizontal' | 'vertical' | 'both' (default: 'both') */
2375
+ 'direction'?: NLDDSpacer['direction'];
2376
+ };
2377
+
2378
+ type NLDDSpacerCellProps = {
2379
+ /** Spacer size in pixels: '2' | '4' | '6' | '8' | '10' | '12' | '16' | '20' | '24' | '28' | '32' | '40' | '44' | '48' | '56' | '64' | '80' | '96' (default: '16') */
2380
+ 'size'?: NLDDSpacerCell['size'];
2381
+ 'hide-below'?: NLDDSpacerCell['hideBelow'];
2382
+ 'hideBelow'?: NLDDSpacerCell['hideBelow'];
2383
+ 'hide-above'?: NLDDSpacerCell['hideAbove'];
2384
+ 'hideAbove'?: NLDDSpacerCell['hideAbove'];
2385
+ };
2386
+
2387
+ type NLDDSplitButtonProps = {
2388
+ /** Button size: 'xs' | 'sm' | 'md' | 'lg' (default: 'md') */
2389
+ 'size'?: NLDDSplitButton['size'];
2390
+ /** Button variant (default: 'neutral-tinted') */
2391
+ 'variant'?: NLDDSplitButton['variant'];
2392
+ /** Disabled state */
2393
+ 'disabled'?: NLDDSplitButton['disabled'];
2394
+ /** Width mode: 'full' (stretches to container) or any CSS length; the main action button fills the available space */
2395
+ 'width'?: NLDDSplitButton['width'];
2396
+ /** Button text for the primary action */
2397
+ 'text'?: NLDDSplitButton['text'];
2398
+ /** Icon name shown before the text on the primary action button */
2399
+ 'icon'?: NLDDSplitButton['icon'];
2400
+ /** Translations; unset keys fall back to Dutch */
2401
+ 'translations'?: NLDDSplitButton['translations'];
2402
+ /** Fired when the main button is clicked */
2403
+ 'onActionClick'?: (event: CustomEvent) => void;
2404
+ /** Fired when the dropdown trigger is clicked and no overlay is slotted */
2405
+ 'onMenuClick'?: (event: CustomEvent) => void;
2406
+ };
2407
+
2408
+ type NLDDSplitViewDividerProps = {
2409
+ /** Orientation: 'vertical' | 'horizontal' */
2410
+ 'orientation'?: NLDDSplitViewDivider['orientation'];
2411
+ /** Show a drag handle */
2412
+ 'has-drag-handle'?: NLDDSplitViewDivider['hasDragHandle'];
2413
+ /** Show a drag handle */
2414
+ 'hasDragHandle'?: NLDDSplitViewDivider['hasDragHandle'];
2415
+ };
2416
+
2417
+ type NLDDSplitViewPaneProps = {
2418
+ /** The pane has content (default: false) */
2419
+ 'has-content'?: NLDDSplitViewPane['hasContent'];
2420
+ /** The pane has content (default: false) */
2421
+ 'hasContent'?: NLDDSplitViewPane['hasContent'];
2422
+ /** Hide the back button (set automatically by the split view) */
2423
+ 'hide-back'?: NLDDSplitViewPane['hideBack'];
2424
+ /** Hide the back button (set automatically by the split view) */
2425
+ 'hideBack'?: NLDDSplitViewPane['hideBack'];
2426
+ /** Use a tinted background color (cascades to descendants) */
2427
+ 'background'?: NLDDSplitViewPane['background'];
2428
+ };
2429
+
2430
+ type NLDDStackedSplitViewProps = {
2431
+ /** Use a tinted background color (cascades to descendants) */
2432
+ 'background'?: NLDDStackedSplitView['background'];
2433
+ /** Number of panes (default: 2) */
2434
+ 'panes'?: NLDDStackedSplitView['panes'];
2435
+ };
2436
+
2437
+ type NLDDStatusBarProps = {
2438
+ /** Kleur van de balk (standaard: 'neutral') */
2439
+ 'variant'?: NLDDStatusBar['variant'];
2440
+ /** De statustekst (één regel; afgekapt met ellipsis) */
2441
+ 'text'?: NLDDStatusBar['text'];
2442
+ /** Maakt de hele balk een link (rendert een <a>) */
2443
+ 'href'?: NLDDStatusBar['href'];
2444
+ /** Link target (bijv. '_blank'); alleen gebruikt bij href */
2445
+ 'target'?: NLDDStatusBar['target'];
2446
+ /** Link rel; standaard 'noopener noreferrer' bij target='_blank' */
2447
+ 'rel'?: NLDDStatusBar['rel'];
2448
+ /** Maakt de hele balk een button; genegeerd als href is gezet */
2449
+ 'button'?: NLDDStatusBar['button'];
2450
+ };
2451
+
2452
+ type NLDDStepIndicatorProps = {
2453
+ /** Naam van de nav; standaard de i18n-waarde ("Voortgang") */
2454
+ 'accessible-label'?: NLDDStepIndicator['accessibleLabel'];
2455
+ /** Naam van de nav; standaard de i18n-waarde ("Voortgang") */
2456
+ 'accessibleLabel'?: NLDDStepIndicator['accessibleLabel'];
2457
+ /** 1-based nummer van de huidige stap (standaard 1) */
2458
+ 'current'?: NLDDStepIndicator['current'];
2459
+ /** Overschrijf vertaalsleutels; niet gezette vallen terug op Nederlands */
2460
+ 'translations'?: NLDDStepIndicator['translations'];
2461
+ 'total'?: NLDDStepIndicator['total'];
2462
+ /** The current step, clamped to the number of steps: an out-of-range `current` would otherwise mark every step past (or none at all). */
2463
+ 'resolvedCurrent'?: NLDDStepIndicator['resolvedCurrent'];
2464
+ 'currentItem'?: NLDDStepIndicator['currentItem'];
2465
+ };
2466
+
2467
+ type NLDDStepIndicatorItemProps = {
2468
+ /** `past` | `current` | `future`; overschrijft wat de ouder afleidt */
2469
+ 'status'?: NLDDStepIndicatorItem['status'];
2470
+ /** Label onder de bol */
2471
+ 'text'?: NLDDStepIndicatorItem['text'];
2472
+ /** Icoon in de bol in plaats van het cijfer of het vinkje */
2473
+ 'icon'?: NLDDStepIndicatorItem['icon'];
2474
+ /** Maakt de stap een link (bijvoorbeeld terug naar een afgeronde stap) */
2475
+ 'href'?: NLDDStepIndicatorItem['href'];
2476
+ /** For flows without a URL per step (a wizard inside one window). Ignored once `href` is set: one step is one action, and a link outranks a button -- the same rule as nldd-card and nldd-avatar. */
2477
+ 'button'?: NLDDStepIndicatorItem['button'];
2478
+ /** The status that counts: the item's own wins over the derived one. */
2479
+ 'resolvedStatus'?: NLDDStepIndicatorItem['resolvedStatus'];
2480
+ };
2481
+
2482
+ type NLDDStepperProps = {
2483
+ /** Current value */
2484
+ 'value'?: NLDDStepper['value'];
2485
+ /** Minimum value (default: 0) */
2486
+ 'min'?: NLDDStepper['min'];
2487
+ /** Maximum value (default: Infinity) */
2488
+ 'max'?: NLDDStepper['max'];
2489
+ /** Step size (default: 1) */
2490
+ 'step'?: NLDDStepper['step'];
2491
+ /** Disabled state */
2492
+ 'disabled'?: NLDDStepper['disabled'];
2493
+ /** Size: 'xs' | 'sm' | 'md' (default: 'md') */
2494
+ 'size'?: NLDDStepper['size'];
2495
+ /** Name for form submission; the value is submitted under this name */
2496
+ 'name'?: NLDDStepper['name'];
2497
+ /** Translations; unspecified keys fall back to Dutch */
2498
+ 'translations'?: NLDDStepper['translations'];
2499
+ 'internals'?: NLDDStepper['internals'];
2500
+ /** When the value changes; detail: { value: number } */
2501
+ 'onChange'?: (event: CustomEvent) => void;
2502
+ };
2503
+
2504
+ type NLDDSwitchProps = {
2505
+ /** Name for form submission; nothing is submitted when the switch is off */
2506
+ 'name'?: NLDDSwitch['name'];
2507
+ /** Whether the switch is on/off */
2508
+ 'checked'?: NLDDSwitch['checked'];
2509
+ /** Disabled state */
2510
+ 'disabled'?: NLDDSwitch['disabled'];
2511
+ /** Switch size: 'xs' | 'sm' (default: 'sm') */
2512
+ 'size'?: NLDDSwitch['size'];
2513
+ /** Accessible label forwarded as aria-label to the native input. Required when using nldd-switch without nldd-switch-field. */
2514
+ 'accessible-label'?: NLDDSwitch['accessibleLabel'];
2515
+ /** Accessible label forwarded as aria-label to the native input. Required when using nldd-switch without nldd-switch-field. */
2516
+ 'accessibleLabel'?: NLDDSwitch['accessibleLabel'];
2517
+ /** Value submitted with the form when the switch is on (default: 'on') */
2518
+ 'value'?: NLDDSwitch['value'];
2519
+ 'internals'?: NLDDSwitch['internals'];
2520
+ /** When the switch state changes; detail: { checked: boolean, value: string } */
2521
+ 'onChange'?: (event: CustomEvent) => void;
2522
+ };
2523
+
2524
+ type NLDDSwitchFieldProps = {
2525
+ /** Checked state */
2526
+ 'checked'?: NLDDSwitchField['checked'];
2527
+ /** Disabled state */
2528
+ 'disabled'?: NLDDSwitchField['disabled'];
2529
+ /** Value for form submission */
2530
+ 'value'?: NLDDSwitchField['value'];
2531
+ /** Name for form submission */
2532
+ 'name'?: NLDDSwitchField['name'];
2533
+ /** Label text for the switch */
2534
+ 'label'?: NLDDSwitchField['label'];
2535
+ /** When checked state changes; detail: { checked: boolean, value: string } */
2536
+ 'onChange'?: (event: CustomEvent) => void;
2537
+ };
2538
+
2539
+ type NLDDTabBarProps = {
2540
+ /** Centers the tabs in the container (host fills the row, tabs group in the middle) */
2541
+ 'centered'?: NLDDTabBar['centered'];
2542
+ /** Visual mode: 'icon-and-text' | 'text' | 'icon'. When unset, the variant is inferred from each item's content. Drives the layout at every size. */
2543
+ 'variant'?: NLDDTabBar['variant'];
2544
+ /** Size: 'md' | 'lg' (default: 'md'). 'lg' enlarges the touch target; the per-variant layout is preserved (icon-and-text stacks the icon over the text, text renders large text, icon renders a larger icon-only control). */
2545
+ 'size'?: NLDDTabBar['size'];
2546
+ /** Renders a nav landmark instead of tablist; use for href-based items that navigate between routes */
2547
+ 'navigation'?: NLDDTabBar['navigation'];
2548
+ /** Disables the whole bar: dims it, blocks pointer interaction, and takes the tabs out of the tab order */
2549
+ 'disabled'?: NLDDTabBar['disabled'];
2550
+ /** Accessible name for the navigation region; defaults to 'Tabs' */
2551
+ 'accessible-label'?: NLDDTabBar['accessibleLabel'];
2552
+ /** Accessible name for the navigation region; defaults to 'Tabs' */
2553
+ 'accessibleLabel'?: NLDDTabBar['accessibleLabel'];
2554
+ /** When a tab is selected; detail: { item: NLDDTabBarItem } */
2555
+ 'onTabchange'?: (event: CustomEvent) => void;
2556
+ };
2557
+
2558
+ type NLDDTabBarItemProps = {
2559
+ /** Selected state (managed by nldd-tab-bar) */
2560
+ 'selected'?: NLDDTabBarItem['selected'];
2561
+ /** Optional link URL; renders an anchor instead of a button */
2562
+ 'href'?: NLDDTabBarItem['href'];
2563
+ /** Set by nldd-tab-bar. Not part of the public API. */
2564
+ '_groupVariant'?: NLDDTabBarItem['_groupVariant'];
2565
+ /** Tab text; also used as accessible name for icon-only items */
2566
+ 'text'?: NLDDTabBarItem['text'];
2567
+ /** Icon name for nldd-icon; an alternative to the icon slot. The icon and icon-and-text variants fall back to a placeholder icon when neither is provided. */
2568
+ 'icon'?: NLDDTabBarItem['icon'];
2569
+ /** Size: 'md' (default) | 'lg'. Set by nldd-tab-bar from its own size; 'lg' enlarges the touch target while keeping the variant layout. */
2570
+ 'size'?: NLDDTabBarItem['size'];
2571
+ /** When the item is activated; detail: { item: NLDDTabBarItem } */
2572
+ 'onSelect'?: (event: CustomEvent) => void;
2573
+ };
2574
+
2575
+ type NLDDTableProps = {
2576
+ /** Surface fill of the box (default 'base') */
2577
+ 'background'?: NLDDTable['background'];
2578
+ /** CSS grid track list defining the columns once, e.g. "minmax(200px,1fr) 120px 80px" */
2579
+ 'columns'?: NLDDTable['columns'];
2580
+ /** Track list when the table is sm-wide (≤640px); falls back to `columns` */
2581
+ 'sm-columns'?: NLDDTable['smColumns'];
2582
+ /** Track list when the table is sm-wide (≤640px); falls back to `columns` */
2583
+ 'smColumns'?: NLDDTable['smColumns'];
2584
+ /** Track list when the table is md-wide (641–1007px); falls back to `columns` */
2585
+ 'md-columns'?: NLDDTable['mdColumns'];
2586
+ /** Track list when the table is md-wide (641–1007px); falls back to `columns` */
2587
+ 'mdColumns'?: NLDDTable['mdColumns'];
2588
+ /** Track list when the table is lg-wide (≥1008px); falls back to `columns` */
2589
+ 'lg-columns'?: NLDDTable['lgColumns'];
2590
+ /** Track list when the table is lg-wide (≥1008px); falls back to `columns` */
2591
+ 'lgColumns'?: NLDDTable['lgColumns'];
2592
+ /** Accessible name for the table. Strongly recommended — role="table" needs a name. A missing label is DEV-warned and a generic fallback name is used. */
2593
+ 'accessible-label'?: NLDDTable['accessibleLabel'];
2594
+ /** Accessible name for the table. Strongly recommended — role="table" needs a name. A missing label is DEV-warned and a generic fallback name is used. */
2595
+ 'accessibleLabel'?: NLDDTable['accessibleLabel'];
2596
+ /** Opt into row selection: body rows expose aria-selected (true/false). Without it, rows omit aria-selected so a non-selectable table isn't announced as selectable. */
2597
+ 'selectable'?: NLDDTable['selectable'];
2598
+ /** Text for the default empty-state dialog (falls back to the Dutch i18n default). Ignored when `[slot=empty]` is filled */
2599
+ 'empty-text'?: NLDDTable['emptyText'];
2600
+ /** Text for the default empty-state dialog (falls back to the Dutch i18n default). Ignored when `[slot=empty]` is filled */
2601
+ 'emptyText'?: NLDDTable['emptyText'];
2602
+ /** Supporting text for the default empty-state dialog. Ignored when `[slot=empty]` is filled */
2603
+ 'empty-supporting-text'?: NLDDTable['emptySupportingText'];
2604
+ /** Supporting text for the default empty-state dialog. Ignored when `[slot=empty]` is filled */
2605
+ 'emptySupportingText'?: NLDDTable['emptySupportingText'];
2606
+ /** Override translation keys; unset keys fall back to Dutch */
2607
+ 'translations'?: NLDDTable['translations'];
2608
+ };
2609
+
2610
+ type NLDDTableRowProps = {
2611
+ /** Highlights the row (same treatment as nldd-list-item[selected]) */
2612
+ 'selected'?: NLDDTableRow['selected'];
2613
+ };
2614
+
2615
+ type NLDDTagProps = {
2616
+ /** Kleurvariant. Semantisch: 'neutral' | 'accent' | 'success' | 'warning' | 'critical'. Rijkskleuren: 'lintblauw' | 'donkerblauw' | 'hemelblauw' | 'lichtblauw' | 'paars' | 'violet' | 'robijnrood' | 'roze' | 'rood' | 'oranje' | 'donkergeel' | 'geel' | 'donkerbruin' | 'bruin' | 'donkergroen' | 'groen' | 'mosgroen' | 'mintgroen'. (default: 'neutral') */
2617
+ 'color'?: NLDDTag['color'];
2618
+ /** Tag grootte: 'sm' | 'md' (default: 'md') */
2619
+ 'size'?: NLDDTag['size'];
2620
+ /** Tag tekst (alternatief voor default slot) */
2621
+ 'text'?: NLDDTag['text'];
2622
+ /** Icoon voor de tekst */
2623
+ 'icon'?: NLDDTag['icon'];
2624
+ /** Wat zichtbaar is: 'text' | 'icon' | 'icon-and-text'. Onbepaald → auto-detect op basis van welke van text/icon aanwezig is. */
2625
+ 'variant'?: NLDDTag['variant'];
2626
+ /** Toegankelijk label voor screenreaders. Gebruik dit bij icon-only tags zonder zichtbare tekst. */
2627
+ 'accessible-label'?: NLDDTag['accessibleLabel'];
2628
+ /** Toegankelijk label voor screenreaders. Gebruik dit bij icon-only tags zonder zichtbare tekst. */
2629
+ 'accessibleLabel'?: NLDDTag['accessibleLabel'];
2630
+ };
2631
+
2632
+ type NLDDTextCellProps = {
2633
+ /** Cell size: 'sm' | 'md' (default: 'md') */
2634
+ 'size'?: NLDDTextCell['size'];
2635
+ /** Text color variant: 'default' | 'secondary' | 'accent' | 'success' | 'warning' | 'critical' (default: 'default'). All non-default/-secondary variants apply to all three text fields so the cell reads as a coherent state. */
2636
+ 'color'?: NLDDTextCell['color'];
2637
+ /** 'full' | 'fit-content' | CSS length (e.g. '200px', '20rem'). Default: 'full' */
2638
+ 'width'?: NLDDTextCell['width'];
2639
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
2640
+ 'min-width'?: NLDDTextCell['minWidth'];
2641
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
2642
+ 'minWidth'?: NLDDTextCell['minWidth'];
2643
+ /** Maximum width as CSS length (e.g. '200px', '20rem') */
2644
+ 'max-width'?: NLDDTextCell['maxWidth'];
2645
+ /** Maximum width as CSS length (e.g. '200px', '20rem') */
2646
+ 'maxWidth'?: NLDDTextCell['maxWidth'];
2647
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
2648
+ 'min-height'?: NLDDTextCell['minHeight'];
2649
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
2650
+ 'minHeight'?: NLDDTextCell['minHeight'];
2651
+ /** Horizontal alignment: 'left' | 'center' | 'right' (default: 'left') */
2652
+ 'horizontal-alignment'?: NLDDTextCell['horizontalAlignment'];
2653
+ /** Horizontal alignment: 'left' | 'center' | 'right' (default: 'left') */
2654
+ 'horizontalAlignment'?: NLDDTextCell['horizontalAlignment'];
2655
+ /** Vertical alignment: 'top' | 'center' | 'bottom' (default: 'center') */
2656
+ 'vertical-alignment'?: NLDDTextCell['verticalAlignment'];
2657
+ /** Vertical alignment: 'top' | 'center' | 'bottom' (default: 'center') */
2658
+ 'verticalAlignment'?: NLDDTextCell['verticalAlignment'];
2659
+ /** Main text content. Supports **bold** syntax for inline bold segments. Falls back to default slot. */
2660
+ 'text'?: NLDDTextCell['text'];
2661
+ /** Optional overline text displayed above the main content. Supports **bold**. Falls back to `overline` slot. */
2662
+ 'overline'?: NLDDTextCell['overline'];
2663
+ /** Optional supporting text displayed below the main content. Supports **bold**. Falls back to `supporting-text` slot. */
2664
+ 'supporting-text'?: NLDDTextCell['supportingText'];
2665
+ /** Optional supporting text displayed below the main content. Supports **bold**. Falls back to `supporting-text` slot. */
2666
+ 'supportingText'?: NLDDTextCell['supportingText'];
2667
+ /** Query substring to bold-highlight across text fields. Empty = no marking. */
2668
+ 'query'?: NLDDTextCell['query'];
2669
+ /** 'match' | 'predictive' (default: 'predictive') */
2670
+ 'query-mark-mode'?: NLDDTextCell['queryMarkMode'];
2671
+ /** 'match' | 'predictive' (default: 'predictive') */
2672
+ 'queryMarkMode'?: NLDDTextCell['queryMarkMode'];
2673
+ 'hide-below'?: NLDDTextCell['hideBelow'];
2674
+ 'hideBelow'?: NLDDTextCell['hideBelow'];
2675
+ 'hide-above'?: NLDDTextCell['hideAbove'];
2676
+ 'hideAbove'?: NLDDTextCell['hideAbove'];
2677
+ };
2678
+
2679
+ type NLDDTextEditorProps = {
2680
+ /** Editor content (markdown) */
2681
+ 'value'?: NLDDTextEditor['value'];
2682
+ /** Sets the id on the editable element. Set automatically by nldd-form-field. */
2683
+ 'input-id'?: NLDDTextEditor['inputId'];
2684
+ /** Sets the id on the editable element. Set automatically by nldd-form-field. */
2685
+ 'inputId'?: NLDDTextEditor['inputId'];
2686
+ /** Placeholder text shown while empty */
2687
+ 'placeholder'?: NLDDTextEditor['placeholder'];
2688
+ /** Disabled state */
2689
+ 'disabled'?: NLDDTextEditor['disabled'];
2690
+ /** Field name for form submission */
2691
+ 'name'?: NLDDTextEditor['name'];
2692
+ /** Readonly state (focusable and selectable, not editable) */
2693
+ 'readonly'?: NLDDTextEditor['readonly'];
2694
+ /** Required state */
2695
+ 'required'?: NLDDTextEditor['required'];
2696
+ /** Wrap long lines (default true; prose wraps) */
2697
+ 'wrap'?: NLDDTextEditor['wrap'];
2698
+ /** Minimum visible rows (the floor in every resize mode). Default: 6. */
2699
+ 'rows'?: NLDDTextEditor['rows'];
2700
+ /** 'none' (fixed) | 'vertical' (drag) | 'auto' (grow, default) */
2701
+ 'resize'?: NLDDTextEditor['resize'];
2702
+ /** 'simple' (default, bare) | 'input-field' (framed surface) */
2703
+ 'variant'?: NLDDTextEditor['variant'];
2704
+ /** 'sans' (default) | 'mono' */
2705
+ 'font'?: NLDDTextEditor['font'];
2706
+ /** Accessible label forwarded to the editor. Set automatically by nldd-form-field. */
2707
+ 'accessible-label'?: NLDDTextEditor['accessibleLabel'];
2708
+ /** Accessible label forwarded to the editor. Set automatically by nldd-form-field. */
2709
+ 'accessibleLabel'?: NLDDTextEditor['accessibleLabel'];
2710
+ /** Enable the annotation overlay (off by default). Annotations only render when this is set. */
2711
+ 'annotatable'?: NLDDTextEditor['annotatable'];
2712
+ /** Override the editor's assistive-tech strings (the open-in-new-tab link badge and the annotation count badge). Unset keys fall back to Dutch. */
2713
+ 'translations'?: NLDDTextEditor['translations'];
2714
+ /** Consumer-supplied */
2715
+ 'mentionSource'?: NLDDTextEditor['mentionSource'];
2716
+ /** Consumer-supplied annotations (W3C-style overlay). Property only (set via JS). Render only when `annotatable` is on. The text stays clean; these render as a light tint and a count badge, anchored by offset and mapped through edits. IMPORTANT: assign a NEW array to apply changes. Lit dirty-checks this property by identity, so mutating the existing array in place (`editor.annotations.push(next)`, `editor.annotations[0].end = 9`, …) does NOT trigger a re-render. Always replace it: `editor.annotations = [...editor.annotations, next]`. */
2717
+ 'annotations'?: NLDDTextEditor['annotations'];
2718
+ 'internals'?: NLDDTextEditor['internals'];
2719
+ /** When the content changes (detail: { value }) */
2720
+ 'onInput'?: (event: CustomEvent) => void;
2721
+ /** When the content is committed on blur (detail: { value }) */
2722
+ 'onChange'?: (event: CustomEvent) => void;
2723
+ /** When the selection or content changes (detail: TextEditorState), for toolbar toggle state */
2724
+ 'onNlddTextEditorState'?: (event: CustomEvent) => void;
2725
+ /** When an @-mention is inserted (detail: MentionInsertedDetail with id, label, from, to) */
2726
+ 'onNlddTextEditorMention'?: (event: CustomEvent) => void;
2727
+ /** When an annotation's count badge is clicked (detail: { ids: string[], rect: DOMRect }); rect is the badge's viewport box so a consumer can anchor its own note UI to it */
2728
+ 'onNlddTextEditorAnnotationClick'?: (event: CustomEvent) => void;
2729
+ };
2730
+
2731
+ type NLDDTextFieldProps = {
2732
+ /** 'md' (default) | 'sm'. Set automatically by nldd-form-field. */
2733
+ 'size'?: NLDDTextField['size'];
2734
+ /** The input value */
2735
+ 'value'?: NLDDTextField['value'];
2736
+ /** Sets the id on the native input. Set automatically by nldd-form-field. */
2737
+ 'input-id'?: NLDDTextField['inputId'];
2738
+ /** Sets the id on the native input. Set automatically by nldd-form-field. */
2739
+ 'inputId'?: NLDDTextField['inputId'];
2740
+ /** Placeholder text */
2741
+ 'placeholder'?: NLDDTextField['placeholder'];
2742
+ /** Marks the field as invalid */
2743
+ 'invalid'?: NLDDTextField['invalid'];
2744
+ /** Marks the field as valid */
2745
+ 'valid'?: NLDDTextField['valid'];
2746
+ /** Disabled state */
2747
+ 'disabled'?: NLDDTextField['disabled'];
2748
+ /** Input type: 'text' | 'email' | 'tel' | 'url' */
2749
+ 'type'?: NLDDTextField['type'];
2750
+ /** Input name for form submission */
2751
+ 'name'?: NLDDTextField['name'];
2752
+ /** Readonly state */
2753
+ 'readonly'?: NLDDTextField['readonly'];
2754
+ /** Required state */
2755
+ 'required'?: NLDDTextField['required'];
2756
+ /** Autocomplete hint */
2757
+ 'autocomplete'?: NLDDTextField['autocomplete'];
2758
+ /** Accessible label forwarded to the inner input. Set automatically by nldd-form-field. */
2759
+ 'accessible-label'?: NLDDTextField['accessibleLabel'];
2760
+ /** Accessible label forwarded to the inner input. Set automatically by nldd-form-field. */
2761
+ 'accessibleLabel'?: NLDDTextField['accessibleLabel'];
2762
+ /** Ids for aria-describedby on the inner input. Set automatically by nldd-form-field. */
2763
+ 'error-message-ids'?: NLDDTextField['errorMessageIds'];
2764
+ /** Ids for aria-describedby on the inner input. Set automatically by nldd-form-field. */
2765
+ 'errorMessageIds'?: NLDDTextField['errorMessageIds'];
2766
+ /** Disables browser spellchecking on the inner input */
2767
+ 'no-spellcheck'?: NLDDTextField['noSpellcheck'];
2768
+ /** Disables browser spellchecking on the inner input */
2769
+ 'noSpellcheck'?: NLDDTextField['noSpellcheck'];
2770
+ /** Optional fixed width (any CSS length, e.g. "240px"). Default: stretches to fill container. */
2771
+ 'width'?: NLDDTextField['width'];
2772
+ 'internals'?: NLDDTextField['internals'];
2773
+ /** When input value changes */
2774
+ 'onInput'?: (event: CustomEvent) => void;
2775
+ /** When input value is committed */
2776
+ 'onChange'?: (event: CustomEvent) => void;
2777
+ };
2778
+
2779
+ type NLDDTimelineTrackCellProps = {
2780
+ /** Status van deze stap (standaard 'past'); dezelfde waarden als `nldd-step-indicator-item`. `none` tekent alleen de lijn, zonder stip */
2781
+ 'status'?: NLDDTimelineTrackCell['status'];
2782
+ /** Wat deze rij is: een `dot` (standaard) op een tijdlijn van gebeurtenissen, stip van 16px, of een `step` in een stappenlijst, stip van 24px waar een cijfer of icoon in past */
2783
+ 'variant'?: NLDDTimelineTrackCell['variant'];
2784
+ /** Deze rij hoort onder de vorige: een kleinere stip in dezelfde baan, dus het spoor loopt recht door en er springt niets in. De stip blijft leeg (een cijfer of icoon past er niet in en zou de rij tot een eigen stap maken); de hiërarchie zet je verder met de rij zelf, bijvoorbeeld een `nldd-text-cell` in plaats van een `nldd-title-cell` */
2785
+ 'minor'?: NLDDTimelineTrackCell['minor'];
2786
+ /** Richting waarin de tijdlijn vooruit loopt: `down` (standaard) zet het verleden boven, `up` eronder. Alleen de huidige stap heeft een half spoor, dus alleen daar heeft dit effect */
2787
+ 'direction'?: NLDDTimelineTrackCell['direction'];
2788
+ /** Plek in de reeks (standaard 'between'): bepaalt of de lijn boven, onder of aan beide kanten van de stip doorloopt */
2789
+ 'position'?: NLDDTimelineTrackCell['position'];
2790
+ /** Cijfer of korte tekst in de stip */
2791
+ 'text'?: NLDDTimelineTrackCell['text'];
2792
+ /** Icoonnaam in de stip; wint van `text` */
2793
+ 'icon'?: NLDDTimelineTrackCell['icon'];
2794
+ /** Only a step marker has room to read a number in, and a minor row is smaller still -- besides, a number would claim it is a step of its own. */
2795
+ 'showsContent'?: NLDDTimelineTrackCell['showsContent'];
2796
+ };
2797
+
2798
+ type NLDDTitleProps = {
2799
+ /** Visual size of the title: 1–6 (default: 3) */
2800
+ 'size'?: NLDDTitle['size'];
2801
+ /** 'inherit' laat de titel de tekstkleur van de ondergrond volgen (voor gekleurde vlakken zoals de filled-categories); overline en subtitle krijgen dezelfde kleur op verlaagde dekking. Leeg = standaard contentkleuren. */
2802
+ 'color'?: NLDDTitle['color'];
2803
+ };
2804
+
2805
+ type NLDDTitleCellProps = {
2806
+ /** Visual size of the title (default: 5) */
2807
+ 'size'?: NLDDTitleCell['size'];
2808
+ /** Text color variant (default: 'default'). `secondary` demotes the title to match the muted overline/supporting-text. `accent`, `success`, `warning` and `critical` tint all three regions so the cell reads as a coherent state. */
2809
+ 'color'?: NLDDTitleCell['color'];
2810
+ /** 'full' | 'fit-content' | CSS length (e.g. '200px', '20rem'). Default: 'full' */
2811
+ 'width'?: NLDDTitleCell['width'];
2812
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
2813
+ 'min-width'?: NLDDTitleCell['minWidth'];
2814
+ /** Minimum width as CSS length (e.g. '80px', '5rem') */
2815
+ 'minWidth'?: NLDDTitleCell['minWidth'];
2816
+ /** Maximum width as CSS length (e.g. '300px', '20rem') */
2817
+ 'max-width'?: NLDDTitleCell['maxWidth'];
2818
+ /** Maximum width as CSS length (e.g. '300px', '20rem') */
2819
+ 'maxWidth'?: NLDDTitleCell['maxWidth'];
2820
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
2821
+ 'min-height'?: NLDDTitleCell['minHeight'];
2822
+ /** Minimum height as CSS length (e.g. '44px', '3rem') */
2823
+ 'minHeight'?: NLDDTitleCell['minHeight'];
2824
+ /** Horizontal alignment (default: 'left') */
2825
+ 'horizontal-alignment'?: NLDDTitleCell['horizontalAlignment'];
2826
+ /** Horizontal alignment (default: 'left') */
2827
+ 'horizontalAlignment'?: NLDDTitleCell['horizontalAlignment'];
2828
+ /** Vertical alignment (default: 'center') */
2829
+ 'vertical-alignment'?: NLDDTitleCell['verticalAlignment'];
2830
+ /** Vertical alignment (default: 'center') */
2831
+ 'verticalAlignment'?: NLDDTitleCell['verticalAlignment'];
2832
+ /** Title text content. Supports **bold** syntax for inline bold segments. Falls back to default slot. */
2833
+ 'text'?: NLDDTitleCell['text'];
2834
+ /** Optional overline text displayed above the title. Supports **bold**. Falls back to `overline` slot. */
2835
+ 'overline'?: NLDDTitleCell['overline'];
2836
+ /** Optional supporting text displayed below the title. Supports **bold**. Falls back to `supporting-text` slot. */
2837
+ 'supporting-text'?: NLDDTitleCell['supportingText'];
2838
+ /** Optional supporting text displayed below the title. Supports **bold**. Falls back to `supporting-text` slot. */
2839
+ 'supportingText'?: NLDDTitleCell['supportingText'];
2840
+ /** Heading level for the title element: 1–6 (default: none, renders a <p>) */
2841
+ 'heading-level'?: NLDDTitleCell['headingLevel'];
2842
+ /** Heading level for the title element: 1–6 (default: none, renders a <p>) */
2843
+ 'headingLevel'?: NLDDTitleCell['headingLevel'];
2844
+ /** Query substring to bold-highlight across text fields. Empty = no marking. */
2845
+ 'query'?: NLDDTitleCell['query'];
2846
+ /** 'match' | 'predictive' (default: 'predictive') */
2847
+ 'query-mark-mode'?: NLDDTitleCell['queryMarkMode'];
2848
+ /** 'match' | 'predictive' (default: 'predictive') */
2849
+ 'queryMarkMode'?: NLDDTitleCell['queryMarkMode'];
2850
+ 'hide-below'?: NLDDTitleCell['hideBelow'];
2851
+ 'hideBelow'?: NLDDTitleCell['hideBelow'];
2852
+ 'hide-above'?: NLDDTitleCell['hideAbove'];
2853
+ 'hideAbove'?: NLDDTitleCell['hideAbove'];
2854
+ };
2855
+
2856
+ type NLDDToggleButtonProps = {
2857
+ /** Underlying element (default: 'button') */
2858
+ 'type'?: NLDDToggleButton['type'];
2859
+ /** Button size (default: 'md') */
2860
+ 'size'?: NLDDToggleButton['size'];
2861
+ /** Selected state */
2862
+ 'selected'?: NLDDToggleButton['selected'];
2863
+ /** Disabled state */
2864
+ 'disabled'?: NLDDToggleButton['disabled'];
2865
+ /** Value for form submission (checkbox/radio) */
2866
+ 'value'?: NLDDToggleButton['value'];
2867
+ /** Name for form submission (checkbox/radio) */
2868
+ 'name'?: NLDDToggleButton['name'];
2869
+ /** Button text */
2870
+ 'text'?: NLDDToggleButton['text'];
2871
+ /** Icon name for nldd-icon */
2872
+ 'icon'?: NLDDToggleButton['icon'];
2873
+ /** What renders: text, icon, or both. Unset → auto-detect from text/icon attributes. */
2874
+ 'variant'?: NLDDToggleButton['variant'];
2875
+ /** Accessible label; required for icon-only usage */
2876
+ 'accessible-label'?: NLDDToggleButton['accessibleLabel'];
2877
+ /** Accessible label; required for icon-only usage */
2878
+ 'accessibleLabel'?: NLDDToggleButton['accessibleLabel'];
2879
+ 'internals'?: NLDDToggleButton['internals'];
2880
+ /** When selection changes; detail: { selected: boolean, value: string } */
2881
+ 'onChange'?: (event: CustomEvent) => void;
2882
+ };
2883
+
2884
+ type NLDDToggleButtonGroupProps = {
2885
+ /** Selection mode (default: 'checkbox') */
2886
+ 'type'?: NLDDToggleButtonGroup['type'];
2887
+ /** Forwarded to all buttons */
2888
+ 'name'?: NLDDToggleButtonGroup['name'];
2889
+ /** Forwarded to all buttons (default: 'md') */
2890
+ 'size'?: NLDDToggleButtonGroup['size'];
2891
+ /** Disables all buttons */
2892
+ 'disabled'?: NLDDToggleButtonGroup['disabled'];
2893
+ /** Accessible name for the group (aria-label) */
2894
+ 'accessible-label'?: NLDDToggleButtonGroup['accessibleLabel'];
2895
+ /** Accessible name for the group (aria-label) */
2896
+ 'accessibleLabel'?: NLDDToggleButtonGroup['accessibleLabel'];
2897
+ /** ID of an external label element (aria-labelledby) */
2898
+ 'accessible-labeled-by'?: NLDDToggleButtonGroup['accessibleLabeledBy'];
2899
+ /** ID of an external label element (aria-labelledby) */
2900
+ 'accessibleLabeledBy'?: NLDDToggleButtonGroup['accessibleLabeledBy'];
2901
+ /** Bubbles up from the changed button; detail: { selected: boolean, value: string } */
2902
+ 'onChange'?: (event: CustomEvent) => void;
2903
+ };
2904
+
2905
+ type NLDDTokenProps = {
2906
+ /** Token text; falls back to the default slot when unset. */
2907
+ 'text'?: NLDDToken['text'];
2908
+ /** Control type (default: 'none') */
2909
+ 'control'?: NLDDToken['control'];
2910
+ /** Reflects whether the token's menu is open (control="menu"); managed by the token. */
2911
+ 'expanded'?: NLDDToken['expanded'];
2912
+ /** Disabled state */
2913
+ 'disabled'?: NLDDToken['disabled'];
2914
+ /** Accessible label for the dismiss button (default: 'Verwijder') */
2915
+ 'dismiss-text'?: NLDDToken['dismissText'];
2916
+ /** Accessible label for the dismiss button (default: 'Verwijder') */
2917
+ 'dismissText'?: NLDDToken['dismissText'];
2918
+ /** Accessible label for the menu button (default: 'Toon opties') */
2919
+ 'menu-text'?: NLDDToken['menuText'];
2920
+ /** Accessible label for the menu button (default: 'Toon opties') */
2921
+ 'menuText'?: NLDDToken['menuText'];
2922
+ /** Inside a roving-focus container (e.g. nldd-token-field): the host is the single tab stop, so the trailing control is not separately tabbable. */
2923
+ 'roving'?: NLDDToken['roving'];
2924
+ /** When the dismiss button is clicked */
2925
+ 'onDismiss'?: (event: CustomEvent) => void;
2926
+ };
2927
+
2928
+ type NLDDTokenFieldProps = {
2929
+ /** Initial token values as a comma-separated string (e.g. "nl, be, de"). Not reflected; the live value is the `.values` array property. Values can't contain commas. */
2930
+ 'values'?: NLDDTokenField['values'];
2931
+ /** Placeholder shown in the input */
2932
+ 'placeholder'?: NLDDTokenField['placeholder'];
2933
+ /** Input type forwarded to the inner input (e.g. 'email') */
2934
+ 'type'?: NLDDTokenField['type'];
2935
+ /** Autocomplete hint forwarded to the inner input */
2936
+ 'autocomplete'?: NLDDTokenField['autocomplete'];
2937
+ /** Accessible label forwarded as aria-label to the input */
2938
+ 'accessible-label'?: NLDDTokenField['accessibleLabel'];
2939
+ /** Accessible label forwarded as aria-label to the input */
2940
+ 'accessibleLabel'?: NLDDTokenField['accessibleLabel'];
2941
+ /** Allow free-typed values (not just menu options) */
2942
+ 'allow-custom'?: NLDDTokenField['allowCustom'];
2943
+ /** Allow free-typed values (not just menu options) */
2944
+ 'allowCustom'?: NLDDTokenField['allowCustom'];
2945
+ /** Marks the field valid (shows the valid icon) */
2946
+ 'valid'?: NLDDTokenField['valid'];
2947
+ /** Marks the field invalid (shows the invalid icon) */
2948
+ 'invalid'?: NLDDTokenField['invalid'];
2949
+ /** Disables browser spellchecking on the inner input */
2950
+ 'no-spellcheck'?: NLDDTokenField['noSpellcheck'];
2951
+ /** Disables browser spellchecking on the inner input */
2952
+ 'noSpellcheck'?: NLDDTokenField['noSpellcheck'];
2953
+ /** Readonly: static tokens, no input/picker, read-only surface */
2954
+ 'readonly'?: NLDDTokenField['readonly'];
2955
+ /** Marks the field required (invalid when it has no tokens) */
2956
+ 'required'?: NLDDTokenField['required'];
2957
+ /** Disabled state */
2958
+ 'disabled'?: NLDDTokenField['disabled'];
2959
+ /** Trailing control per token: 'dismiss' (default, a ✕ that removes it) or 'menu' (a ⌄ opening a per-token action menu supplied by the template prototypes) */
2960
+ 'token-control'?: NLDDTokenField['tokenControl'];
2961
+ /** Trailing control per token: 'dismiss' (default, a ✕ that removes it) or 'menu' (a ⌄ opening a per-token action menu supplied by the template prototypes) */
2962
+ 'tokenControl'?: NLDDTokenField['tokenControl'];
2963
+ /** Name for form submission */
2964
+ 'name'?: NLDDTokenField['name'];
2965
+ /** Override translation keys; unset keys fall back to Dutch */
2966
+ 'translations'?: NLDDTokenField['translations'];
2967
+ 'internals'?: NLDDTokenField['internals'];
2968
+ /** When the selected values change; detail: { values: string[] } */
2969
+ 'onChange'?: (event: CustomEvent) => void;
2970
+ /** When the input text changes; detail: { value: string } */
2971
+ 'onInput'?: (event: CustomEvent) => void;
2972
+ /** When a token's menu action is chosen (token-control="menu"); detail: { value: string, action: string } */
2973
+ 'onTokenAction'?: (event: CustomEvent) => void;
2974
+ };
2975
+
2976
+ type NLDDToolbarProps = {
2977
+ /** Toolbar size, propagated to all child controls: 'sm' | 'md' | 'lg' (default: 'md'). At 'lg' the overflow button (and lg-capable children like nldd-icon-button) stack their label below the icon. */
2978
+ 'size'?: NLDDToolbar['size'];
2979
+ /** When true, shows a text label below each toolbar item and the overflow button */
2980
+ 'show-item-labels'?: NLDDToolbar['showItemLabels'];
2981
+ /** When true, shows a text label below each toolbar item and the overflow button */
2982
+ 'showItemLabels'?: NLDDToolbar['showItemLabels'];
2983
+ /** Accessible label for the toolbar. Only needed when multiple toolbars appear on the same page */
2984
+ 'label'?: NLDDToolbar['label'];
2985
+ /** Override translation keys (e.g. the overflow button label); unset keys fall back to Dutch. */
2986
+ 'translations'?: NLDDToolbar['translations'];
2987
+ };
2988
+
2989
+ type NLDDToolbarItemProps = {
2990
+ /** Fluid width: a percentage (e.g. '40%') or any CSS length (e.g. '240px'). Setting it (or min-width or max-width) makes the item fluid so it grows to fill the available space. */
2991
+ 'width'?: NLDDToolbarItem['width'];
2992
+ /** Minimum (fluid) width as a CSS length (e.g. '240px'). Setting it also makes the item fluid. */
2993
+ 'min-width'?: NLDDToolbarItem['minWidth'];
2994
+ /** Minimum (fluid) width as a CSS length (e.g. '240px'). Setting it also makes the item fluid. */
2995
+ 'minWidth'?: NLDDToolbarItem['minWidth'];
2996
+ /** Maximum (fluid) width as a CSS length (e.g. '480px'). Setting it also makes the item fluid. */
2997
+ 'max-width'?: NLDDToolbarItem['maxWidth'];
2998
+ /** Maximum (fluid) width as a CSS length (e.g. '480px'). Setting it also makes the item fluid. */
2999
+ 'maxWidth'?: NLDDToolbarItem['maxWidth'];
3000
+ /** Text label shown below the item when the toolbar has show-item-labels. */
3001
+ 'label'?: NLDDToolbarItem['label'];
3002
+ /** Overflow order: items with a lower priority move into the overflow menu first (default 0). Items sharing a priority overflow together, regardless of position. */
3003
+ 'priority'?: NLDDToolbarItem['priority'];
3004
+ };
3005
+
3006
+ type NLDDToolbarTitleProps = {
3007
+ /** Title text. */
3008
+ 'text'?: NLDDToolbarTitle['text'];
3009
+ /** Secondary supporting text shown below the title. */
3010
+ 'supporting-text'?: NLDDToolbarTitle['supportingText'];
3011
+ /** Secondary supporting text shown below the title. */
3012
+ 'supportingText'?: NLDDToolbarTitle['supportingText'];
3013
+ /** Text alignment: 'left' | 'center' (default: 'left'). */
3014
+ 'align'?: NLDDToolbarTitle['align'];
3015
+ /** Preferred (fluid) width as a CSS length or percentage; the title grows toward it and shrinks to min-width. */
3016
+ 'width'?: NLDDToolbarTitle['width'];
3017
+ /** Minimum width as a CSS length (default: '0', so the title shrink-wraps its content and the next element sits against it). */
3018
+ 'min-width'?: NLDDToolbarTitle['minWidth'];
3019
+ /** Minimum width as a CSS length (default: '0', so the title shrink-wraps its content and the next element sits against it). */
3020
+ 'minWidth'?: NLDDToolbarTitle['minWidth'];
3021
+ /** Maximum width as a CSS length (default: '240px'); the title text truncates with an ellipsis beyond it. The cap is lifted while the title is the sole toolbar element (it then stretches to fill the row). */
3022
+ 'max-width'?: NLDDToolbarTitle['maxWidth'];
3023
+ /** Maximum width as a CSS length (default: '240px'); the title text truncates with an ellipsis beyond it. The cap is lifted while the title is the sole toolbar element (it then stretches to fill the row). */
3024
+ 'maxWidth'?: NLDDToolbarTitle['maxWidth'];
3025
+ };
3026
+
3027
+ type NLDDTooltipProps = {
3028
+ /** Tooltip tekst */
3029
+ 'text'?: NLDDTooltip['text'];
3030
+ /** Forceer de tooltip zichtbaar, ongeacht hover/focus. Gebruik voor programmatische feedback (bv. "Gekopieerd"). Reset naar false om hover-gedrag te herstellen. */
3031
+ 'open'?: NLDDTooltip['open'];
3032
+ /** Positie: 'top' | 'bottom' | 'left' | 'right' (standaard: 'bottom'; op touch devices automatisch 'top') */
3033
+ 'placement'?: NLDDTooltip['placement'];
3034
+ /** Wanneer de tooltip verschijnt op hover: 'instant' — direct, zonder show-delay. 'default' — na de standaard show-delay (700ms). 'never' — tooltip wordt nooit getoond; hover/focus events worden genegeerd, aria-describedby wordt onderdrukt en een al zichtbare tooltip verdwijnt. Hide-delay en touch suppression blijven onder alle waarden van kracht. Focus-trigger is altijd instant. */
3035
+ 'timing'?: NLDDTooltip['timing'];
3036
+ /** Wanneer een gebruiker Escape drukt terwijl `open=true` is. De consumer beheert dan de open-lifecycle (wij kunnen `open` niet eenzijdig wissen), dus dit event geeft de consumer de kans om `open` terug naar `false` te zetten. WCAG 1.4.13: persistent hover-/ focus-overlays moeten dismissible zijn zonder focus te verplaatsen. */
3037
+ 'onNlddTooltipDismiss'?: (event: CustomEvent) => void;
3038
+ };
3039
+
3040
+ type NLDDTopNavigationBarProps = {
3041
+ /** Naam van de website of applicatie, boven de menubalk. Leeg laat de titelregel weg. */
3042
+ 'website-title'?: NLDDTopNavigationBar['websiteTitle'];
3043
+ /** Naam van de website of applicatie, boven de menubalk. Leeg laat de titelregel weg. */
3044
+ 'websiteTitle'?: NLDDTopNavigationBar['websiteTitle'];
3045
+ /** Verbergt de hele logobalk, inclusief woordmerk. */
3046
+ 'no-logo'?: NLDDTopNavigationBar['noLogo'];
3047
+ /** Verbergt de hele logobalk, inclusief woordmerk. */
3048
+ 'noLogo'?: NLDDTopNavigationBar['noLogo'];
3049
+ /** Begrenst de bar-content tot een max-width zodat die uitlijnt met de page-sections. 'full' vult de volle breedte, of geef een eigen CSS-lengte. */
3050
+ 'width'?: NLDDTopNavigationBar['width'];
3051
+ /** Titel van het woordmerk naast het logo. Zonder deze waarde staat het logo er alleen. */
3052
+ 'logo-title'?: NLDDTopNavigationBar['logoTitle'];
3053
+ /** Titel van het woordmerk naast het logo. Zonder deze waarde staat het logo er alleen. */
3054
+ 'logoTitle'?: NLDDTopNavigationBar['logoTitle'];
3055
+ /** Subtitel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3056
+ 'logo-subtitle'?: NLDDTopNavigationBar['logoSubtitle'];
3057
+ /** Subtitel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3058
+ 'logoSubtitle'?: NLDDTopNavigationBar['logoSubtitle'];
3059
+ /** Eerste ondersteunende regel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3060
+ 'logo-supporting-text-1'?: NLDDTopNavigationBar['logoSupportingText1'];
3061
+ /** Eerste ondersteunende regel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3062
+ 'logoSupportingText1'?: NLDDTopNavigationBar['logoSupportingText1'];
3063
+ /** Tweede ondersteunende regel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3064
+ 'logo-supporting-text-2'?: NLDDTopNavigationBar['logoSupportingText2'];
3065
+ /** Tweede ondersteunende regel onder de woordmerktitel. Alleen zichtbaar als er een woordmerk is. */
3066
+ 'logoSupportingText2'?: NLDDTopNavigationBar['logoSupportingText2'];
3067
+ /** URL voor logo en woordmerk. Zonder deze waarde zijn ze geen link, maar een afbeelding met een toegankelijk label. */
3068
+ 'logo-href'?: NLDDTopNavigationBar['logoHref'];
3069
+ /** URL voor logo en woordmerk. Zonder deze waarde zijn ze geen link, maar een afbeelding met een toegankelijk label. */
3070
+ 'logoHref'?: NLDDTopNavigationBar['logoHref'];
3071
+ /** URL voor de websitetitel. Zonder deze waarde blijft de titel gewone tekst. */
3072
+ 'website-href'?: NLDDTopNavigationBar['websiteHref'];
3073
+ /** URL voor de websitetitel. Zonder deze waarde blijft de titel gewone tekst. */
3074
+ 'websiteHref'?: NLDDTopNavigationBar['websiteHref'];
3075
+ /** URL van de terugknop. Zonder deze waarde vuurt een klik het `back-click`-event, zodat de consument zelf navigeert. */
3076
+ 'back-href'?: NLDDTopNavigationBar['backHref'];
3077
+ /** URL van de terugknop. Zonder deze waarde vuurt een klik het `back-click`-event, zodat de consument zelf navigeert. */
3078
+ 'backHref'?: NLDDTopNavigationBar['backHref'];
3079
+ /** Tekst van de terugknop. De knop verschijnt zodra back-text of back-href is gezet; zonder tekst valt hij terug op de vertaling ("Terug"). */
3080
+ 'back-text'?: NLDDTopNavigationBar['backText'];
3081
+ /** Tekst van de terugknop. De knop verschijnt zodra back-text of back-href is gezet; zonder tekst valt hij terug op de vertaling ("Terug"). */
3082
+ 'backText'?: NLDDTopNavigationBar['backText'];
3083
+ 'translations'?: NLDDTopNavigationBar['translations'];
3084
+ };
3085
+
3086
+ type NLDDTopTitleBarProps = {
3087
+ /** Title of the bar, rendered as the h1 in the title group. */
3088
+ 'text'?: NLDDTopTitleBar['text'];
3089
+ /** Subtitle under the title. */
3090
+ 'supporting-text'?: NLDDTopTitleBar['supportingText'];
3091
+ /** Subtitle under the title. */
3092
+ 'supportingText'?: NLDDTopTitleBar['supportingText'];
3093
+ /** Id of the element whose top edge triggers the compact state on scroll. Without it the state is static (see above). */
3094
+ 'collapse-anchor'?: NLDDTopTitleBar['collapseAnchor'];
3095
+ /** Id of the element whose top edge triggers the compact state on scroll. Without it the state is static (see above). */
3096
+ 'collapseAnchor'?: NLDDTopTitleBar['collapseAnchor'];
3097
+ /** Text of the back button and its accessible name. Empty hides the back button (and the divider). */
3098
+ 'back-text'?: NLDDTopTitleBar['backText'];
3099
+ /** Text of the back button and its accessible name. Empty hides the back button (and the divider). */
3100
+ 'backText'?: NLDDTopTitleBar['backText'];
3101
+ /** URL for the back button; renders a link and suppresses the `back` event. */
3102
+ 'back-href'?: NLDDTopTitleBar['backHref'];
3103
+ /** URL for the back button; renders a link and suppresses the `back` event. */
3104
+ 'backHref'?: NLDDTopTitleBar['backHref'];
3105
+ /** Text of the dismiss button. Empty hides that button. */
3106
+ 'dismiss-text'?: NLDDTopTitleBar['dismissText'];
3107
+ /** Text of the dismiss button. Empty hides that button. */
3108
+ 'dismissText'?: NLDDTopTitleBar['dismissText'];
3109
+ /** Fired when the back button is clicked (not fired when back-href is set) */
3110
+ 'onBack'?: (event: CustomEvent) => void;
3111
+ /** Fired when the dismiss button is clicked */
3112
+ 'onDismiss'?: (event: CustomEvent) => void;
3113
+ };
3114
+
3115
+ type NLDDTwoThirdsOneThirdSectionProps = {
3116
+ /** Body max-width: 'full' removes the constraint so the section spans the full available width. Any CSS length (e.g. '480px') overrides the default max-width. */
3117
+ 'width'?: NLDDTwoThirdsOneThirdSection['width'];
3118
+ /** Surface background ('inherit' default; 'base'/'tinted' paint and cascade a surface). */
3119
+ 'background'?: NLDDTwoThirdsOneThirdSection['background'];
3120
+ /** Color scheme ('inherit' default; 'inverted' = opposite of the surrounding page scheme). */
3121
+ 'scheme'?: NLDDTwoThirdsOneThirdSection['scheme'];
3122
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
3123
+ 'padding-block'?: NLDDTwoThirdsOneThirdSection['paddingBlock'];
3124
+ /** Block (top and bottom) padding override (token 0-96; '0' strips it). */
3125
+ 'paddingBlock'?: NLDDTwoThirdsOneThirdSection['paddingBlock'];
3126
+ /** Top padding override. */
3127
+ 'padding-top'?: NLDDTwoThirdsOneThirdSection['paddingTop'];
3128
+ /** Top padding override. */
3129
+ 'paddingTop'?: NLDDTwoThirdsOneThirdSection['paddingTop'];
3130
+ /** Bottom padding override. */
3131
+ 'padding-bottom'?: NLDDTwoThirdsOneThirdSection['paddingBottom'];
3132
+ /** Bottom padding override. */
3133
+ 'paddingBottom'?: NLDDTwoThirdsOneThirdSection['paddingBottom'];
3134
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
3135
+ 'sm-padding-block'?: NLDDTwoThirdsOneThirdSection['smPaddingBlock'];
3136
+ /** Responsive block padding (sm/md/lg, also per edge: {sm,md,lg}-padding-{top,bottom}). */
3137
+ 'smPaddingBlock'?: NLDDTwoThirdsOneThirdSection['smPaddingBlock'];
3138
+ 'sm-padding-top'?: NLDDTwoThirdsOneThirdSection['smPaddingTop'];
3139
+ 'smPaddingTop'?: NLDDTwoThirdsOneThirdSection['smPaddingTop'];
3140
+ 'sm-padding-bottom'?: NLDDTwoThirdsOneThirdSection['smPaddingBottom'];
3141
+ 'smPaddingBottom'?: NLDDTwoThirdsOneThirdSection['smPaddingBottom'];
3142
+ 'md-padding-block'?: NLDDTwoThirdsOneThirdSection['mdPaddingBlock'];
3143
+ 'mdPaddingBlock'?: NLDDTwoThirdsOneThirdSection['mdPaddingBlock'];
3144
+ 'md-padding-top'?: NLDDTwoThirdsOneThirdSection['mdPaddingTop'];
3145
+ 'mdPaddingTop'?: NLDDTwoThirdsOneThirdSection['mdPaddingTop'];
3146
+ 'md-padding-bottom'?: NLDDTwoThirdsOneThirdSection['mdPaddingBottom'];
3147
+ 'mdPaddingBottom'?: NLDDTwoThirdsOneThirdSection['mdPaddingBottom'];
3148
+ 'lg-padding-block'?: NLDDTwoThirdsOneThirdSection['lgPaddingBlock'];
3149
+ 'lgPaddingBlock'?: NLDDTwoThirdsOneThirdSection['lgPaddingBlock'];
3150
+ 'lg-padding-top'?: NLDDTwoThirdsOneThirdSection['lgPaddingTop'];
3151
+ 'lgPaddingTop'?: NLDDTwoThirdsOneThirdSection['lgPaddingTop'];
3152
+ 'lg-padding-bottom'?: NLDDTwoThirdsOneThirdSection['lgPaddingBottom'];
3153
+ 'lgPaddingBottom'?: NLDDTwoThirdsOneThirdSection['lgPaddingBottom'];
3154
+ /** Minimum section height (any CSS length, e.g. '400px', '100dvh') (mirrors width, which sets the body max-width). */
3155
+ 'height'?: NLDDTwoThirdsOneThirdSection['height'];
3156
+ };
3157
+
3158
+ type NLDDWindowProps = {
3159
+ /** Niet-modaal (geen backdrop of focusvergrendeling); standaard is het venster modaal */
3160
+ 'modeless'?: NLDDWindow['modeless'];
3161
+ /** Een klik op de backdrop sluit het venster niet. Voor vensters waar per ongeluk wegklikken werk kost: een wizard, een formulier met ingevulde velden. Escape en de dismiss-knop blijven werken. */
3162
+ 'no-light-dismiss'?: NLDDWindow['noLightDismiss'];
3163
+ /** Een klik op de backdrop sluit het venster niet. Voor vensters waar per ongeluk wegklikken werk kost: een wizard, een formulier met ingevulde velden. Escape en de dismiss-knop blijven werken. */
3164
+ 'noLightDismiss'?: NLDDWindow['noLightDismiss'];
3165
+ /** (verplicht) Toegankelijke naam (aria-label). Valt terug op de i18n default ('Venster') als niet gezet — geef altijd een unieke, beschrijvende naam per venster. */
3166
+ 'accessible-label'?: NLDDWindow['accessibleLabel'];
3167
+ /** (verplicht) Toegankelijke naam (aria-label). Valt terug op de i18n default ('Venster') als niet gezet — geef altijd een unieke, beschrijvende naam per venster. */
3168
+ 'accessibleLabel'?: NLDDWindow['accessibleLabel'];
3169
+ /** Override translation keys; unset keys vallen terug op de Nederlandse default. */
3170
+ 'translations'?: NLDDWindow['translations'];
3171
+ /** CSS top positie van de bovenrand (bijv. '0', '100px') */
3172
+ 'top'?: NLDDWindow['top'];
3173
+ /** CSS left positie van de linkerrand */
3174
+ 'left'?: NLDDWindow['left'];
3175
+ /** CSS right waarde */
3176
+ 'right'?: NLDDWindow['right'];
3177
+ /** CSS bottom waarde */
3178
+ 'bottom'?: NLDDWindow['bottom'];
3179
+ /** Centreert beide assen op de viewport. Per as overrideable: `centered top="0"` = horizontaal gecentreerd, top-aligned. Mirrort CSS `place-items: center` met `align-items`/`justify-items` overrides. */
3180
+ 'centered'?: NLDDWindow['centered'];
3181
+ /** CSS width (standaard: var(--components-window-default-width)) */
3182
+ 'width'?: NLDDWindow['width'];
3183
+ /** CSS height (standaard: content height) */
3184
+ 'height'?: NLDDWindow['height'];
3185
+ /** Color scheme (default 'inherit'). */
3186
+ 'scheme'?: NLDDWindow['scheme'];
3187
+ /** Wanneer het venster wordt geopend */
3188
+ 'onOpen'?: (event: CustomEvent) => void;
3189
+ /** Wanneer het venster volledig is gesloten */
3190
+ 'onClose'?: (event: CustomEvent) => void;
3191
+ };
3192
+
3193
+ export interface GlobalComponents {
3194
+ /** Layout placeholder that fills its parent and centers an indeterminate activity indicator. By default the indicator is held back for 1000ms so brief loading states don't flash; once the delay passes it fades in. Set `timing="instant"` to skip the delay (the fade-in still plays) — this is what embedding components such as `nldd-button` use for their loading state. The default indicator is a simple icon-sized circle that follows the shared `--context-content-color` channel (set by list-item / table / menu on their content), falling back to `currentColor` wherever that channel is unset (buttons, rich-text, standalone) — so a spinner inside a cell tracks the row's state-aware content color, while embedders relying on currentColor are unaffected. An optional label sits below (hidden unless `show-text` is set). Drop a `<nldd-progress-circle>`, `<nldd-progress-bar>` or any element in the `indicator` slot to override it. Icon alignment: the visible ring already sits at 5/6 of its box (the SVG's r=9 plus a 2-unit stroke in a 24 view-box, the same optical inset a filled icon glyph has), so a standalone spinner lines up with an icon or an `icon-aligned` `nldd-avatar` on the same grid — no extra option needed (unlike `nldd-avatar`, which fills edge-to-edge and opts in via `icon-aligned`). Overlay mode: put content in the default slot and the indicator wraps it — it becomes a `position: relative` container, renders the spinner over a dimming backdrop (opt out with `no-backdrop`), and makes the content `inert` so its controls can't be focused or clicked. Toggle loading with `complete` (`?complete=${!isLoading}`). With no slotted content it stays the standalone placeholder described above. Reconnect behavior: every `connectedCallback` resets the timer and hides the indicator again. If a consumer toggles the element via a conditional render (remove + re-insert) the indicator disappears and re-fades after another delay. Keep the element mounted and toggle visibility / `hidden` instead if you want the timer to run only once. Accessibility: while connected and not `complete` the host is a polite live region (`role="status"`). The label (`text`, or the translated "Laden" fallback) always renders as the region's content — visually hidden when `show-text` is off (the default) — so assistive tech announces the loading state when the indicator appears. Set `complete` (or unmount) to clear it. */
3195
+ 'nldd-activity-indicator': DefineComponent<NLDDActivityIndicatorProps>;
3196
+ /** The required root shell of a Nederlandse Digitale Dienst application. Always contains a split view or an nldd-page as direct content. Set background="tinted" to give the whole application a tinted background. All descendants read --context-parent-background-color via --_background-color automatically. Individual components can override locally with their own background attribute. The same background color is forced on `document.body` so that browser- chrome surfaces (iOS overscroll bounce, status bar, page-margin areas) blend with the app instead of revealing the user-agent's default white. Cleared when the app-view disconnects. The app scrolls the DOCUMENT (root mode) or lets each `nldd-page` scroll inside its pane (nested mode). The mode is derived from the outermost horizontal split view: one column means the document scrolls, several columns mean the panes do. An app without such a split view is a single column at every width and therefore scrolls the document too — nested scrolling would cost it the rubber-band and the collapsing browser toolbar on iOS for nothing. Set `--context-scroll-mode` on the `nldd-app-view` itself to override the derived mode; an inherited value loses from it. In nested scroll mode `overscroll-behavior: none` is set on `document.documentElement` and `document.body` while the app-view is connected. Combined with `overscroll-behavior: contain` on `nldd-page`'s scroll target, this prevents iOS rubber-band on the viewport when scroll gestures land outside an `nldd-page` (e.g. on a top-bar). In root scroll mode the document itself is the scroller, so this is lifted to let the native rubber-band happen. Cleared on last disconnect. */
3197
+ 'nldd-app-view': DefineComponent<NLDDAppViewProps>;
3198
+ /** Toont één persoon of organisatie als een compacte, ronde (persoon) of afgeronde (organisatie) representatie. De inhoud volgt een vaste terugvalketen: een afbeelding wanneer `src` laadt, anders de initialen (uit `initials` of afgeleid uit `name`), en anders een terugval-icoon. `type` bepaalt zowel de vorm als het terugval-icoon: `person` geeft een cirkel met een person-icoon, `organization` een afgeronde vierkant met een building-icoon. De vorm hoort dus bij de betekenis en is niet los instelbaar. Overschrijf het terugval-icoon desgewenst met `icon`. Zonder `size` schaalt de avatar mee met zijn container (net als `nldd-icon`); een vaste maat (dezelfde spacer-uitgelijnde schaal, 16 tot en met 96) is de uitzondering. De initialen en het icoon schalen mee. Brede initialen (WW, MMM) worden automatisch teruggeschaald zodat ze binnen de schijf blijven. Toegankelijkheid: het host-element draagt de betekenis. Met een `name` (en zonder `decorative`) krijgt het `role="img"` met de naam als label. Staat de naam al als tekst ernaast (bijvoorbeeld in een byline), zet dan `decorative` zodat de avatar voor hulpsoftware verborgen blijft. Een dode `src` valt automatisch terug op de initialen of het icoon, nooit op een gebroken-afbeelding-icoon. */
3199
+ 'nldd-avatar': DefineComponent<NLDDAvatarProps>;
3200
+ /** Een notificatie-indicator, vaak voor ongelezen aantallen of statusdots. Kan tekst, een getal en/of een icoon tonen. Zonder inhoud verschijnt automatisch een stip. Gebruik in een hoek van een ander element (bijv. een icon) of standalone. */
3201
+ 'nldd-badge': DefineComponent<NLDDBadgeProps>;
3202
+ /** An inline notification with a tinted background per variant. Use for persistent, page-level feedback (e.g. an error summary at the top of a form). Banner is more visually present than nldd-inline-dialog — the tinted color catches the eye. If you need a quieter component, pick a different one rather than overriding the banner's ARIA. Layout: icon left, text + supporting text + optional rich content + actions in the center, optional dismiss button right. Buttons wrap to a second row on narrow viewports via nldd-button-group's flex wrapping. role and aria-live are set automatically from the variant: - critical → role="alert" (interrupts screen reader) - others → role="status" aria-live="polite" Not overridable — if you need a less prominent component, use one. aria-atomic="true" is also set so that updates to the structured region (icon + heading + supporting-text + actions) are announced as one unit rather than as a partial subtree. Trade-off: any programmatic content mutation re-reads the entire banner. Banners are designed for short, heading-scale copy — if you slot in a paragraph of rich body text and then toggle variant or supporting-text at runtime, AT will re-announce the whole thing. Keep banner content concise, or render long-form messages in a different surface. */
3203
+ 'nldd-banner': DefineComponent<NLDDBannerProps>;
3204
+ /** A vertical split view with a main area and an unlimited number of bar panels. Each child determines its order per breakpoint via sm-order, md-order, and lg-order. Children without order attributes are sorted by DOM order. All bars are in normal flow at every breakpoint and stack vertically. A divider is drawn only where the main pane meets an adjacent bar — directly above and/or below main — at every breakpoint (including sm). Two stacked bars on the same side never get a divider between them, so a toolbar and a tab-bar read as one visual unit. Consumers never manage dividers themselves. Give each bar a unique slot name (e.g. slot="toolbar", slot="status-bar"). Use slot="bar-1", slot="bar-2" if no meaningful name applies. The main panel always uses slot="main". Sets --context-parent-background-color, which cascades to all descendants. */
3205
+ 'nldd-bar-split-view': DefineComponent<NLDDBarSplitViewProps>;
3206
+ /** Toont een citaat met optionele bron-attributie. */
3207
+ 'nldd-blockquote': DefineComponent<NLDDBlockquoteProps>;
3208
+ /** Use a box to visually group related components in a distinct, contained region. Boxes draw attention to a set of controls or content that belong together, helping users understand their relationship at a glance. */
3209
+ 'nldd-box': DefineComponent<NLDDBoxProps>;
3210
+ /** A trail of `nldd-breadcrumbs-item`s separated by `›`, rendered as a `<nav>` landmark wrapping a `<div role="list">` (with each item carrying `role="listitem"`). Explicit ARIA roles travel reliably across the slot boundary where the implicit `<ol>`/`<li>` mapping is inconsistent across AT + browser combos. The trail wraps onto multiple lines when it doesn't fit, so it adapts to any width. */
3211
+ 'nldd-breadcrumbs': DefineComponent<NLDDBreadcrumbsProps>;
3212
+ /** A single entry in an `nldd-breadcrumbs` list. Renders as a link when `href` is set, as plain text marked `aria-current="page"` when `current` is set, and as plain text otherwise. Each item renders its own trailing `›` separator; the last item in the list hides it via `:host(:last-of-type)`. */
3213
+ 'nldd-breadcrumbs-item': DefineComponent<NLDDBreadcrumbsItemProps>;
3214
+ 'nldd-button': DefineComponent<NLDDButtonProps>;
3215
+ /** A horizontal container for grouping buttons with a neutral background. Automatically propagates its size and variant to all child nldd-button and nldd-icon-button elements. Renders nldd-button-bar-divider elements as internal dividers — no separate component needed. */
3216
+ 'nldd-button-bar': DefineComponent<NLDDButtonBarProps>;
3217
+ 'nldd-button-bar-divider': DefineComponent<anonymous_0Props>;
3218
+ /** A container for grouping related buttons together, either horizontally or vertically. */
3219
+ 'nldd-button-group': DefineComponent<NLDDButtonGroupProps>;
3220
+ /** Een redactionele regel die auteurs of redacteuren toont: optionele avatar(s), een naamregel en ondersteunende tekst (bijvoorbeeld functie of datum). Alle onderdelen zijn optioneel. De naamregel en ondersteunende tekst kunnen als attribuut of als slot worden aangeleverd. Gebruik de slots voor rijkere inhoud, zoals een `<time datetime="…">` voor machine-leesbare datums of een link naar het auteursprofiel. Geslotte inhoud vervangt het bijbehorende attribuut (het attribuut is de fallback van de slot). Bij meerdere redacteuren overlappen de avatars elkaar subtiel; elke avatar krijgt een ring in de surface-kleur (zelfde mechaniek als badge) zodat ze visueel gescheiden blijven. Op een gekleurde ondergrond kan de ringkleur meegegeven worden via `--context-parent-background-color`. Op smalle breedtes (een sm-container, ≤ 640px) met meerdere avatars komt de avatarrij boven de namen te staan, zodat de tekst de volle breedte houdt; met één avatar blijft de byline op één regel. Avatars worden geslot als `<img slot="avatars">`. Zet `alt=""` wanneer de namen al in de tekst staan (decoratief); geef anders een beschrijvende alt-tekst op. Voor één avatar kun je in plaats van slotten ook `avatar-src` (met optioneel `avatar-srcset`) als attribuut meegeven; de afmetingen liggen vast (40px), dus `sizes` zet het component zelf. Meerdere avatars gaan altijd via de slot, en geslotte avatars hebben voorrang op `avatar-src`. */
3221
+ 'nldd-byline': DefineComponent<NLDDBylineProps>;
3222
+ /** Een visueel afgebakende kaart met optionele header, body en footer secties. De kaart heeft een elevated look als standaard. Padding wordt overgelaten aan geneste containers. Met `href` wordt de hele kaart een link (een overlay-anchor over de kaart); met `button` een knop (een overlay-button die een gewone, composed `click` geeft — een klik-listener of htmx-attribuut op de kaart zelf werkt dus direct, en Enter/Space doen het native). `href` wint als beide gezet zijn. Geneste interactieve content (bijv. footer-knoppen) moet je erboven tillen met `position: relative; z-index: 1` om klikbaar te blijven. */
3223
+ 'nldd-card': DefineComponent<NLDDCardProps>;
3224
+ /** A generic cell for wrapping arbitrary content in a list item. Controls vertical alignment and sizing without imposing content opinions. `vertical-alignment="center"` (default) stretches the cell to fill the full row height and centers its content within that space. Use `min-height` to set a minimum centered region. For strict top alignment without a minimum height, use `vertical-alignment="top"`. */
3225
+ 'nldd-cell': DefineComponent<NLDDCellProps>;
3226
+ 'nldd-checkbox': DefineComponent<NLDDCheckboxProps>;
3227
+ /** A checkbox with an inline label for use in forms. Form-associated: participates in native form submission under `name` with `value` when checked (the inner nldd-checkbox sits in the shadow root and never joins the consumer's form; the field submits on its behalf). */
3228
+ 'nldd-checkbox-field': DefineComponent<NLDDCheckboxFieldProps>;
3229
+ /** A monospace editor for code, YAML, JSON and other technical content, built on CodeMirror 6 (via NLDDCodeMirrorElement). Visually pairs with nldd-code-viewer for a matching read-only surface. Default `variant="simple"` is a bare, flush editor (no frame, no focus ring) for use inside an nldd-form-field or a consumer composition that owns its own chrome and focus treatment; the caret is rendered as a prominent accent as the focus cue. `variant="input-field"` adds the framed surface (border ring, tinted fill, inner padding, radius) and a focus ring for standalone use. The simple variant has no surrounding space of its own: let a layout container own the spacing and forward clicks with `focusFromPoint()` so clicking the padding still starts editing. Optional `language` enables lazy syntax highlighting; `line-numbers` adds a gutter (click a number to move the caret to that line). */
3230
+ 'nldd-code-editor': DefineComponent<NLDDCodeEditorProps>;
3231
+ /** A read-only block of code/text built on a non-editable CodeMirror 6 view. Visually pairs with nldd-code-editor (same engine, same token palette). Whitespace is preserved; long lines scroll horizontally by default. Set `wrap` to break long lines onto the next visual line. Set `language` to one of the supported grammars (yaml, json, javascript, typescript, css, html, xml, bash, markdown, rust, gherkin, toml, sql, python) to highlight the content. Without `language` the content renders plain. Grammars are loaded lazily on first use, so a page that never sets `language` ships zero grammar code. Token colors are the `--components-code-viewer-token-*` custom properties (shared with the editor via the CodeMirror highlight style). Override them per-instance to swap the theme. */
3232
+ 'nldd-code-viewer': DefineComponent<NLDDCodeViewerProps>;
3233
+ /** A container for displaying collections of items. Supports grid, stack, and horizontal scroll layouts. In grid and stack modes, items are paginated via a load-more button. In horizontal scroll, the prev/next controls and the edge fade appear only when the items overflow the container. With `lazy-load`, the next items are automatically loaded when the load-more button comes into view. */
3234
+ 'nldd-collection': DefineComponent<NLDDCollectionProps>;
3235
+ /** A text input with autocomplete dropdown via nldd-menu. Add a slotted nldd-menu with nldd-menu-item children to provide options. The slotted nldd-menu keeps its default focus behavior (menu container receives focus) so that typing keeps focus on the input. The picker button moves focus to the menu explicitly on activation. Note: Only nldd-menu-item type="button" is supported. Radio and checkbox types are not supported in this context. */
3236
+ 'nldd-combo-box': DefineComponent<NLDDComboBoxProps>;
3237
+ /** A simple layout primitive: pick a layout mode, give it a gap, optionally align contents, and add padding. Padding can be set for all sides, per axis (inline/block), or per individual side. Specificity: per side > per axis > all sides. Responsive padding and gap have sm/md/lg variants. Each variant emits both an @media (viewport) and @container (layout-container) query. When inside a layout-container the @container query wins; otherwise the @media query provides the viewport-based fallback. Layout modes: - `stack` (default): block items, stacked vertically. The "what you expect from DOM flow" mode. - `row`: flex row, no wrapping. Items shrink or overflow. - `wrap`: flex row, items wrap to new lines. - `grid`: CSS grid, auto-fit columns at min 280px wide. - `columns`: CSS multi-column flow, 280px minimum column width, items don't split across column breaks. Alignment maps to the layout's natural axis: - `stack`: vertical = main-axis (justify-content), horizontal = cross-axis (align-items) - `row` / `wrap`: horizontal = main-axis, vertical = cross-axis - `grid`: horizontal = justify-items, vertical = align-items (per cell) - `columns`: alignment props have no effect (CSS multicol doesn't expose alignment) Item order is set per-child via attributes on the slotted children themselves: `<child order="3">` for a fixed position, or `<child sm-order="N">` / `<child md-order="N">` / `<child lg-order="N">` to override per breakpoint (resolved against THIS container's width via @container queries, same scope as the responsive padding/gap). The container observes slot changes and child attribute mutations and bridges these to `--_slot-order` / `--_slot-sm-order` / etc. custom properties on each child's inline style, which the container's CSS then reads via `::slotted(*)` inside @container queries. Cascade: `sm-order` falls back to `order` falls back to `0` at sm (and analogously for md/lg). No-op for `layout="columns"` (CSS multicol has no per-item ordering hook). The `column-count` attribute (1-8) forces an exact column count for `layout="grid"` (overrides auto-fit) and `layout="columns"` (overrides the natural width-driven count). `sm-column-count` / `md-column-count` / `lg-column-count` resolve against this container's OWN width via an `@container (...)` query on the host — not against the viewport. That lets a footer in a narrow sidebar choose its own column count independent of the surrounding page width. `layout="lanes"` packs items into balanced columns using native CSS grid lanes where supported, falling back to CSS multicol (column-order) elsewhere. CSS-only, no JS. Honours `gap` on both axes and `column-count`. */
3238
+ 'nldd-container': DefineComponent<NLDDContainerProps>;
3239
+ /** Een tekstveld voor een datum, met een optionele kalender in een popover. De waarde is altijd ISO (jjjj-mm-dd); op het scherm staat de Nederlandse notatie (dd-mm-jjjj). Er wordt niet gemaskerd 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. */
3240
+ 'nldd-date-field': DefineComponent<NLDDDateFieldProps>;
3241
+ /** Een kalender waarin een datum of een periode wordt gekozen. Het component is zelfstandig bruikbaar - inline op een pagina, in een filterpaneel - en zit ook in de popover van nldd-date-field. Waarden zijn altijd ISO (jjjj-mm-dd). Met `range` kiest de gebruiker in twee stappen een begin- en einddatum. */
3242
+ 'nldd-date-picker': DefineComponent<NLDDDatePickerProps>;
3243
+ /** A cell component for displaying a title-description pair in lists. `vertical-alignment="center"` (default) stretches the cell to fill the full row height and centers its content within that space. Use `min-height` to set a minimum centered region. For strict top alignment without a minimum height, use `vertical-alignment="top"`. */
3244
+ 'nldd-description-cell': DefineComponent<NLDDDescriptionCellProps>;
3245
+ /** Een scheidingslijn die secties van inhoud visueel van elkaar scheidt. */
3246
+ 'nldd-divider': DefineComponent<NLDDDividerProps>;
3247
+ /** A horizontal tab bar for document tabs with an automatic overflow button and an end slot for action buttons. Exports both NLDDDocumentTabBar and NLDDDocumentTabBarItem. */
3248
+ 'nldd-document-tab-bar': DefineComponent<NLDDDocumentTabBarProps>;
3249
+ 'nldd-document-tab-bar-item': DefineComponent<NLDDDocumentTabBarItemProps>;
3250
+ /** A cell that displays a drag handle for reorderable list items. Always vertically centered and sized to fit the handle. To enable drag-to-reorder, add the `reorderable-only` attribute to this element. This attribute is required for `nldd-list` to detect the drag handle in the composed event path and activate pointer and keyboard drag mode: ```html <nldd-list reorderable> <nldd-list-item> <nldd-drag-handle-cell reorderable-only></nldd-drag-handle-cell> <nldd-text-cell text="Item"></nldd-text-cell> </nldd-list-item> </nldd-list> ``` Without `reorderable-only`, pointer and keyboard drag will never trigger. */
3251
+ 'nldd-drag-handle-cell': DefineComponent<NLDDDragHandleCellProps>;
3252
+ /** A visual wrapper around a native `<select>` element. The consumer provides a native `<select>` as a slotted child — this way the browser retains full control over form submission, accessibility and keyboard navigation, including `<optgroup>`, `data-*` attributes and dynamic changes to options. */
3253
+ 'nldd-dropdown': DefineComponent<NLDDDropdownProps>;
3254
+ /** Nederlandse Digitale Dienst Form Component Plain custom element (extends HTMLElement, no Lit) — required for light-DOM autofill. Renders a real <form> element in the LIGHT DOM around its children. Chrome's autofill engine looks for native <input> elements that have a <form> ancestor in the light DOM; with shadow-DOM inputs it can't find them, so we keep this component shadow-less. **Differs from other nldd-* components:** - Geen shadowRoot — alle children leven in light DOM (binnen het inner <form>) - Geen Lit — pure HTMLElement met handmatige attribute-mirroring - **Vereist global stylesheet import** — vertical rhythm en form-section divider-suppression regels staan in `dist/css/form.css` (of `global.css`), niet in een component-specifieke shadow stylesheet. Import deze als deel van je app's globale CSS bundle. **Two usage modes:** 1. **Auto-wrap** (default): write children directly. Component creates a `<form>` element and migrates children into it via MutationObserver. Simplest API. 2. **User-provided form** (framework-friendly): write your own `<form>` as direct child. Component detects it, takes over attribute-mirroring, en skipt de migration. Children blijven waar je framework ze plaatst — geen DOM-shuffling die met React/Vue/Angular reconciliation conflicteert. **Framework interop:** In auto-wrap mode wordt elke direct child verplaatst naar het inner form via een MutationObserver. Voor de meeste React/Vue use cases werkt dit prima omdat frameworks alleen DOM-mutaties doen wanneer hun virtual DOM verandert. Voor edge cases (animatie-libs die DOM-positie tracken, SSR-hydration mismatches, frameworks die actief sibling-positions controleren) gebruik dan **user-provided form** mode. Voor programmatische manipulatie: gebruik de `form` getter zodat je direct met het inner `<form>` element werkt: const inner = document.querySelector('nldd-form').form; inner.checkValidity(); inner.appendChild(myInput); // skipt migration-overhead */
3255
+ 'nldd-form': DefineComponent<NLDDFormProps>;
3256
+ /** Een layout-wrapper voor de actie-knoppen onderaan een formulier (typisch een submit-button of button-group). Volgt dezelfde responsive layout als `nldd-form-field`: met `label-alignment="right"` of `"left"` krijgt de inhoud dezelfde insprong als de invoervelden boven, dankzij een `::before`-pseudo-element dat fungeert als spacer-kolom waar de label zou staan. Erft `label-alignment` automatisch over van een wrappende `<nldd-form>`: de form propageert z'n eigen `label-alignment` als `form-label-alignment` naar descendant `nldd-form-actions` (en `nldd-form-field`) via een MutationObserver. Een expliciete eigen `label-alignment` op de form-actions wint via CSS-cascade — de form-code raakt het `label-alignment` attribuut van de descendant nooit aan. <nldd-form label-alignment="right"> <nldd-form-field>...</nldd-form-field> <nldd-form-actions> <nldd-button-group> <nldd-button variant="primary" type="submit" text="Opslaan"></nldd-button> </nldd-button-group> </nldd-form-actions> </nldd-form> */
3257
+ 'nldd-form-actions': DefineComponent<NLDDFormActionsProps>;
3258
+ 'nldd-form-field': DefineComponent<NLDDFormFieldProps>;
3259
+ 'nldd-form-field-error-text': DefineComponent<NLDDFormFieldErrorTextProps>;
3260
+ 'nldd-form-field-help-text': DefineComponent<NLDDFormFieldHelpTextProps>;
3261
+ /** Nederlandse Digitale Dienst Form Section Component Plain custom element (extends HTMLElement, no Lit) — light-DOM render lost een NVDA + Firefox a11y-bug op waar shadow-DOM <fieldset> + <legend> niet betrouwbaar als group-label aangekondigd worden voor slotted controls. Native fieldset/legend in light DOM werkt correct over alle AT/browser-combinaties. **Differs from shadow components:** - Geen shadowRoot — alle children leven in light DOM (binnen het gerenderde <fieldset>). - Geen Lit — pure HTMLElement met handmatige DOM-mutation. - **Vereist global stylesheet import** — `dist/css/form-section.css` (of `global.css`). Form-section heeft geen shadow stylesheet. Renders to: <nldd-form-section> <fieldset class="form-section"> <legend class="form-section__header"> <span class="form-section__title">Title</span> <span class="form-section__subtitle">Subtitle</span> </legend> <div class="form-section__main"> [user's children] </div> </fieldset> </nldd-form-section> **Accessibility note**: de title rendert als `<legend>`. Dat is semantisch een **groep-label**, geen heading. Screenreaders kondigen 't aan wanneer de gebruiker in de fieldset komt, maar gebruikers die met de H-toets door headings springen slaan 'm over. Visueel lijkt 't op een heading; gebruik dit component dus voor *form-grouping*, niet als pagina-structuur. Voor echte page-headings: gebruik een apart heading-element boven het form. **Supporting-text lengte**: de subtitle staat als `<span>` binnen de `<legend>` zodat SR 'm meeleest als group label. Bijwerking: bij elke field-entry binnen de sectie wordt de hele legend (titel + subtitel) opnieuw uitgesproken. Houd `supporting-text` daarom kort (richtlijn: ≤ ~80 tekens) en gebruik 'm voor groep-introductie ("Vul je adresgegevens in"), niet voor uitgebreide instructies. Voor langere uitleg op een specifiek veld: gebruik `nldd-form-field-help-text` op dat veld. <nldd-form> <nldd-form-section text="Persoonsgegevens" supporting-text="Vul je gegevens in."> <nldd-form-field label="Voornaam">...</nldd-form-field> <nldd-form-field label="Achternaam">...</nldd-form-field> </nldd-form-section> <nldd-form-section text="Adres"> <nldd-form-field label="Straat">...</nldd-form-field> </nldd-form-section> <nldd-form-actions>...</nldd-form-actions> </nldd-form> */
3262
+ 'nldd-form-section': DefineComponent<NLDDFormSectionProps>;
3263
+ /** A section that spans the full width without horizontal padding. Useful for background colors, images, or other content that runs edge to edge. Vertical padding and gap adjust via container queries. */
3264
+ 'nldd-full-bleed-section': DefineComponent<NLDDFullBleedSectionProps>;
3265
+ /** Een paginakop met een mediavlak en een tekstpaneel (de main) dat op zes posities kan staan. Alle vlakken zijn rechthoekig. Bij `main-width="full"` staat het mediavlak als losse strook boven of onder het paneel, niet erachter. Op mobiel stapelt de media altijd boven het volle-breedte paneel. Zonder media vult de main het volledige vlak; met `main-background="base"` krijgt dat vlak een rand zodat het zichtbaar blijft op de base-surface. Met `main-background` krijgt het paneel een vlakkleur uit de filled-categories; die leveren een pure witte of zwarte contentkleur mee, zodat componenten met `color="inherit"` (title, rich-text) gegarandeerd contrast houden. */
3266
+ 'nldd-hero': DefineComponent<NLDDHeroProps>;
3267
+ /** A customizable icon component that renders SVG icons from a predefined library. Icons are decorative by default: the host gets `aria-hidden="true"` automatically. If you want the icon to be announced by assistive tech, set `aria-hidden="false"` on the consumer side together with an `aria-label`. Sizing: the icon fills whatever sizes it — an `nldd-icon-cell`, a button, a menu item. `size="full"` names that default explicitly. `size="inherit"` makes it follow the surrounding text (1em), for an icon set inline in a sentence. Any spacer-aligned number (16–96) pins a fixed dimension. Reach for `inherit` rather than a global `nldd-icon { width: 1em }` rule in the consumer: such a rule wins over the component's own :host styling and so also shrinks the icons that a cell or button was already sizing correctly. Color: by default the icon inherits its parent's `color`. Set `color` to one of the functional semantics (`primary-content`, `secondary-content`, `accent`, `critical`, `warning`, `success`) or a rijkskleur (`lintblauw`, `paars`, `groen`, …). For arbitrary one-off colors, set `style="color: …"` on the host — the inherited `color` still drives the SVG fill/stroke. */
3268
+ 'nldd-icon': DefineComponent<NLDDIconProps>;
3269
+ 'nldd-icon-button': DefineComponent<NLDDIconButtonProps>;
3270
+ /** A cell component for displaying icons in lists with configurable alignment and size. Set `icon` to render an `nldd-icon` by name, or slot custom content as an escape hatch for non-standard iconography. */
3271
+ 'nldd-icon-cell': DefineComponent<NLDDIconCellProps>;
3272
+ /** Wraps a native `<img>` with design-system styling: corner radius variants, aspect-ratio reservation, object-fit/position control, optional caption + credit. Renders as `<figure>` + `<figcaption>` only when a caption or credit is set — otherwise just the image, no extra wrapping. Hybrid source: the `src` attribute renders an internal `<img>`. To use a custom `<img>` or `<picture>` (e.g. with art-direction sources), slot it into the default slot and we'll style and wrap it like our own image. */
3273
+ 'nldd-image': DefineComponent<NLDDImageProps>;
3274
+ /** An inline status component for empty state, confirmations and feedback. Fills the container and has no minimum width. */
3275
+ 'nldd-inline-dialog': DefineComponent<NLDDInlineDialogProps>;
3276
+ /** Een guided-discovery coach-mark. Plaats een control (bijv. nldd-search-field) in de default slot; zolang `active` is gezet tilt het component een callout (titel + supporting text + dismiss) in de top layer via de Popover API (`popover="manual"`), geankerd aan het control met Floating UI. Geen backdrop, non-modaal: de achtergrond blijft interactief. Het control zelf blijft op zijn plek in de flow staan. Met `dismissable` beheert het component het sluiten en vuurt het nldd-close: - de gebruiker voert de geadviseerde interactie uit op het control -> close{completed} - de dismiss-knop -> close{dismissed} - een klik/toets BUITEN de coach-mark -> close{ignored} Zonder `dismissable` sluit niets vanzelf (geen knop, geen buiten- of slot-klik); dan bepaalt de consumer het sluiten zelf via `active` of `complete()`. `complete()` werkt altijd en sluit met close{completed} (bijv. pas bij een echte zoekopdracht). */
3277
+ 'nldd-just-in-time-education': DefineComponent<NLDDJustInTimeEducationProps>;
3278
+ /** Toont een toetsencombinatie (zoals Cmd+K of Ctrl+Shift+P) in één gecombineerde container met semantische <kbd>-elementen per toets. Op touch-only devices (geen hover-capable input) wordt de shortcut standaard verborgen omdat hij niet aanroepbaar is. Gebruik het `always-visible` attribuut wanneer de shortcut puur informatief is en altijd zichtbaar moet blijven. Voor cross-platform shortcuts kunnen `mac-keys`, `windows-keys` en `linux-keys` worden gezet — het component picks de juiste op basis van de gedetecteerde OS, met `keys` als fallback voor onbekende platforms. */
3279
+ 'nldd-keyboard-shortcut': DefineComponent<NLDDKeyboardShortcutProps>;
3280
+ /** 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. */
3281
+ 'nldd-link': DefineComponent<NLDDLinkProps>;
3282
+ /** 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. */
3283
+ 'nldd-list': DefineComponent<NLDDListProps>;
3284
+ /** 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. Mark a cell with `divider-start` and/or `divider-end` to run it from that cell's start edge to that cell's end edge instead (e.g. starting after an avatar). 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`). */
3285
+ 'nldd-list-item': DefineComponent<NLDDListItemProps>;
3286
+ /** 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. */
3287
+ 'nldd-list-item-action': DefineComponent<NLDDListItemActionProps>;
3288
+ /** A floating menu component using the Popover API. Positioned relative to an anchor element using Floating UI. Supports filtering, keyboard navigation, and highlight management. Use nldd-menu-item and nldd-menu-divider as children. Note: Only type="button" items are supported when used inside nldd-combo-box-field. Radio and checkbox types may be used in standalone menus. */
3289
+ 'nldd-menu': DefineComponent<NLDDMenuProps>;
3290
+ /** Horizontale rij van nldd-menu-bar-item elementen met automatische overflow detectie. Items die niet passen worden verborgen achter een overflow button met een popover menu. */
3291
+ 'nldd-menu-bar': DefineComponent<NLDDMenuBarProps>;
3292
+ /** Interactief bouwblok voor gebruik in een menu bar. Rendert als <a> (met href) of <button> (zonder href). Ondersteunt icon, text, disclosure indicator, en een expandable popover via een geslotte `<nldd-menu>` (of ander popover-element). */
3293
+ 'nldd-menu-bar-item': DefineComponent<NLDDMenuBarItemProps>;
3294
+ /** A horizontal rule between groups of items in an `nldd-menu`. */
3295
+ 'nldd-menu-divider': DefineComponent<NLDDMenuDividerProps>;
3296
+ /** A labeled group of menu items inside an nldd-menu. Wraps its slotted items in `role="group"` with `aria-labelledby` pointing to the group's `text`, providing native ARIA group semantics that a flat title element can't deliver. The group renders an automatic divider above itself, except when it's the first child of the menu — so consumers don't need to manage separator placement around groups themselves. Spacing above the title is intentionally larger than below, to bind the title visually to the items it labels. Use the wrapper for grouping with a title; for ungrouped flat menus or a divider without a title, the existing `nldd-menu-item` + `nldd-menu-divider` flat structure keeps working unchanged. */
3297
+ 'nldd-menu-group': DefineComponent<NLDDMenuGroupProps>;
3298
+ /** A single item within an nldd-menu. */
3299
+ 'nldd-menu-item': DefineComponent<NLDDMenuItemProps>;
3300
+ /** A modal window with overlay backdrop, based on the native <dialog> element. Internally renders an <nldd-inline-dialog> for the visual structure. */
3301
+ 'nldd-modal-dialog': DefineComponent<NLDDModalDialogProps>;
3302
+ 'nldd-multi-line-text-field': DefineComponent<NLDDMultiLineTextFieldProps>;
3303
+ /** A four-column layout with a primary sidebar, secondary sidebar, main content area, and inspector. The sidebars show navigation or lists, the main area shows primary content, and the inspector shows additional details or properties of the selection. Panes are shown automatically when content is slotted into them. */
3304
+ 'nldd-navigation-split-view': DefineComponent<NLDDNavigationSplitViewProps>;
3305
+ /** A numeric input field with decrement and increment buttons. */
3306
+ 'nldd-number-field': DefineComponent<NLDDNumberFieldProps>;
3307
+ /** A section with two equal columns side by side. The columns wrap automatically when they become smaller than 280px. Padding and gap adjust via container queries. */
3308
+ 'nldd-one-half-one-half-section': DefineComponent<NLDDOneHalfOneHalfSectionProps>;
3309
+ /** A section with a 1/3 sidebar on the left and 2/3 main content on the right. The columns wrap automatically when they become smaller than 280px. Padding and gap adjust via container queries. */
3310
+ 'nldd-one-third-two-thirds-section': DefineComponent<NLDDOneThirdTwoThirdsSectionProps>;
3311
+ /** A page layout with optional sticky header and footer. Without sticky-header, the host is the scroll container and the header is in normal flow. With sticky-header, the header becomes absolute and .page__scroll takes over scrolling. A ResizeObserver on the header sets padding-top on the scroll wrapper (only when not scrolled). In root-scroll mode (--context-scroll-mode: root, derived upstream by nldd-app-view) the page stops owning a scroller: the document scrolls and the sticky header/footer become position:sticky layers offset by --context-layer-top/bottom. The mode is read on connect/resize and reflected to [data-scroll] so the CSS can branch. */
3312
+ 'nldd-page': DefineComponent<NLDDPageProps>;
3313
+ /** The footer band at the bottom of a page. Hosts three optional rows in a fixed order: breadcrumbs (top), consumer-defined main content (middle), and a legal-bar (bottom). Dividers are drawn automatically between non-empty rows. Establishes its own container query (`page-footer-container`) so the responsive padding and gap react to the footer's own width, not the viewport. The host has `id="page-footer"` so a skip-link can target it directly. Use the sub-components `nldd-page-footer-legal-bar` and `nldd-page-footer-legal-bar-item` for the bottom row. */
3314
+ 'nldd-page-footer': DefineComponent<NLDDPageFooterProps>;
3315
+ /** Holds the legal links row at the bottom of a `nldd-page-footer`. Items in `start` render flush-left, items in `end` flush-right, separated by spacing only (no separators). On narrow containers the two groups wrap to their own rows with `start` above `end`. */
3316
+ 'nldd-page-footer-legal-bar': DefineComponent<NLDDPageFooterLegalBarProps>;
3317
+ /** A single entry in an `nldd-page-footer-legal-bar`. Renders as a link when `href` is set, as plain text otherwise. Uses the content color (not the link color) so the legal bar reads as a subdued utility row. */
3318
+ 'nldd-page-footer-legal-bar-item': DefineComponent<NLDDPageFooterLegalBarItemProps>;
3319
+ /** A pagination control for navigating between pages of content. */
3320
+ 'nldd-pagination': DefineComponent<NLDDPaginationProps>;
3321
+ /** A password input field with visibility toggle and validation states. */
3322
+ 'nldd-password-field': DefineComponent<NLDDPasswordFieldProps>;
3323
+ /** Een non-modal floating panel dat is verankerd aan een trigger-element. Gebouwd op de native Popover API (popover="auto") met Floating UI voor positionering. De browser regelt open/toggle/light-dismiss; deze component regelt alleen positionering en focus. Aanbevolen gebruik via popovertarget zodat de browser de toggle regelt: <nldd-button id="info-trigger" popovertarget="info-popover">Info</nldd-button> <nldd-popover id="info-popover" anchor="info-trigger" accessible-label="Info"> <nldd-container> <p>Inhoud van de popover.</p> </nldd-container> </nldd-popover> Voor een custom focus-target binnen de popover: zet `autofocus` op het gewenste child-element. Anders krijgt de popover-host zelf focus. */
3324
+ 'nldd-popover': DefineComponent<NLDDPopoverProps>;
3325
+ /** Exports both NLDDProgressBar and NLDDProgressBarSegmentIndicator. A progress bar that supports a single value (loading-style) or multiple segments (multi-stage progress, or distribution like storage usage). The consumer provides raw values; the component computes percentages from `max`. Two modes: - `progress` (default): segments sum toward `max`; remaining space is empty track. ARIA reads "X% voltooid". - `distribution`: segments fill the bar; ARIA enumerates segments. If the sum of segment values exceeds `max`, segments are normalized proportionally to fit and a warning is logged. */
3326
+ 'nldd-progress-bar': DefineComponent<NLDDProgressBarProps>;
3327
+ 'nldd-progress-bar-segment-indicator': DefineComponent<NLDDProgressBarSegmentIndicatorProps>;
3328
+ /** Exports both NLDDProgressCircle and NLDDProgressCircleSegmentIndicator. A circular progress indicator that mirrors the API of nldd-progress-bar: single-value or multi-segment, progress or distribution mode, 24 colors, fade transitions between determinate/indeterminate, indeterminate indicator. Visual differences vs the bar: - SVG arcs instead of rectangular bars. - Label below the circle (not above). - No center text; the consumer can wrap the circle if needed. - One combined tooltip on the whole circle showing all segment info (no per-segment tooltips). - Indeterminate uses a rotating elastic arc (Material-style) instead of the bar's Knight Rider scanner. */
3329
+ 'nldd-progress-circle': DefineComponent<NLDDProgressCircleProps>;
3330
+ 'nldd-progress-circle-segment-indicator': DefineComponent<NLDDProgressCircleSegmentIndicatorProps>;
3331
+ /** WAI-ARIA: Wrap radio buttons in a <fieldset>/<legend> or a container with role="radiogroup" and aria-labelledby for proper group semantics. <fieldset> <legend>Kies een optie</legend> <nldd-radio-button name="options" value="1">Optie 1</nldd-radio-button> <nldd-radio-button name="options" value="2">Optie 2</nldd-radio-button> </fieldset> */
3332
+ 'nldd-radio-button': DefineComponent<NLDDRadioButtonProps>;
3333
+ /** A radio button with an inline label. Use inside nldd-radio-button-group for keyboard navigation and group semantics. The group sets the name. Form-associated: the checked field submits its `value` under `name` (the inner nldd-radio-button sits in the shadow root and never joins the consumer's form; the field submits on its behalf). Unchecking siblings is the group's job, so exactly one value per group reaches the form. */
3334
+ 'nldd-radio-button-field': DefineComponent<NLDDRadioButtonFieldProps>;
3335
+ /** Groups nldd-radio-button-field elements, handles keyboard navigation, and forwards name and disabled state to all child fields. Use inside nldd-form-field which provides the group label. */
3336
+ 'nldd-radio-button-group': DefineComponent<NLDDRadioButtonGroupProps>;
3337
+ /** A container for rich text content that automatically applies responsive typography. Uses no shadow DOM so styles apply to all nested elements. Import nldd-rich-text.css globally in your application. Kinderen worden in drie zones geplaatst: tekst (headings, paragrafen, lijsten, blockquote, div/section) leest op de `main`-maat; media en tabellen (img, figure, video, iframe, table) krijgen het `wide`-accent; al het overige — codeblokken en élke component — krijgt de volledige `full`-span met `justify-self: start`, zodat de ruimte beschikbaar is maar niet geforceerd wordt. Per kind te overschrijven met `data-width="main" | "wide" | "full"`. In de linkse layout lezen wide en full als bleed naar rechts; met `centered` zijn ze symmetrisch. */
3338
+ 'nldd-rich-text': DefineComponent<NLDDRichTextProps>;
3339
+ /** A search input with a leading search icon, an optional dismiss button, and an optional search button. */
3340
+ 'nldd-search-field': DefineComponent<NLDDSearchFieldProps>;
3341
+ /** A horizontal group of mutually exclusive (radio) or multi-select (checkbox) options. Exports both NLDDSegmentedControl and NLDDSegmentedControlItem. */
3342
+ 'nldd-segmented-control': DefineComponent<NLDDSegmentedControlProps>;
3343
+ 'nldd-segmented-control-item': DefineComponent<NLDDSegmentedControlItemProps>;
3344
+ /** An overlay component that slides in from the side or bottom of the screen. Based on the native <dialog> element for built-in accessibility, focus management, and Escape key support. On small (sm) viewports the sheet always renders as a bottom sheet, regardless of the configured placement. Render the sheet at the document root (teleport/portal it to `document.body`), never inside a split view's content flow: as a slotted flex child it would steal pane height (see `nldd-split-view-pane`). */
3345
+ 'nldd-sheet': DefineComponent<NLDDSheetProps>;
3346
+ /** A horizontal split view with multiple equal panes side by side. The number of panes is set via the `panes` attribute. Each pane automatically gets a numbered slot: pane-1, pane-2, etc. Panes that do not fit the available width are automatically hidden. */
3347
+ 'nldd-side-by-side-split-view': DefineComponent<NLDDSideBySideSplitViewProps>;
3348
+ /** A page section with a left sidebar alongside the main content. - **Wide (section >= 1008px):** two columns. The sidebar is a sticky, scrollable tinted box (max-width 320px) beside the main content. Its sticky top/bottom insets default to 16px; override with `sticky-top` / `sticky-bottom` so it clears other sticky page elements (e.g. a sticky header). - **Narrow (section < 1008px):** the sidebar collapses behind a sheet (a left panel on md+ viewports, a bottom sheet on mobile), and the host reflects a `collapsed` attribute. The consumer owns the trigger: place any chrome (a button, a chosen-filters bar, …) wherever you want, show it only while collapsed (e.g. `nldd-sidebar-section[collapsed] .my-trigger { … }` or by reading `collapsed` / listening to `collapse-change`), and call `show()` / `toggle()` to open the sheet. Bind `aria-expanded` via the `open`/`close` events. The sheet gets a sticky title bar by default — the `sidebar-label` as title plus a "Sluit" button — overridable via the `sheet-top-title-bar` slot. The sidebar content lives in `slot="sidebar"`. Its slot outlet moves between the box (expanded) and the sheet (collapsed) so there is a single, never-duplicated copy — the light DOM (and its state) is preserved across the switch. The box <-> sheet switch follows the section's OWN width (a ResizeObserver on the host), not the viewport — so a sidebar-section in a narrow column or a split-view pane collapses to the sheet just like one in a narrow viewport, and the sidebar never stacks above or crowds the main. Set `no-collapse` to opt out: a narrow section then stacks the sidebar (full-width) above the main instead of using a sheet. Inherits block `padding` and `height` from PageSectionMixin. */
3349
+ 'nldd-sidebar-section': DefineComponent<NLDDSidebarSectionProps>;
3350
+ /** A basic section with responsive padding and gap based on container size. Contains optional header and footer slots. The padding and spacing between slots adjust automatically via container queries. */
3351
+ 'nldd-simple-section': DefineComponent<NLDDSimpleSectionProps>;
3352
+ /** Accessibility-patroon dat keyboard-gebruikers toestaat om content over te slaan. Wraps content in een default slot — zonder href focust het het eerste element na de skip-link in het DOM (nextElementSibling). Zorg dat er een focusbaar element na het component staat, anders heeft de skip-link geen effect. */
3353
+ 'nldd-skip-link': DefineComponent<NLDDSkipLinkProps>;
3354
+ /** Add explicit space between elements. Components in this design system have no margins of their own — all whitespace is set by a spacer. Use a single `size` attribute for whitespace that's the same at every viewport. Combine with `sm-size`, `md-size` and/or `lg-size` to override the size at specific breakpoints (mobile-first cascade is intentionally avoided — each breakpoint that needs a different value declares it explicitly): - `size` applies at every breakpoint that has no per-viewport override. - `sm-size` overrides at sm (max-width: 640px). - `md-size` overrides at md (641px–1007px). - `lg-size` overrides at lg (min-width: 1008px). Use `flexible` (in any of the four attributes) to fill the remaining space in a flex container. */
3355
+ 'nldd-spacer': DefineComponent<NLDDSpacerProps>;
3356
+ /** A cell component that provides fixed horizontal spacing within list items. */
3357
+ 'nldd-spacer-cell': DefineComponent<NLDDSpacerCellProps>;
3358
+ /** A split button combines a primary action button with a dropdown trigger. The main button performs the default action, while the icon button opens a menu or popover. Provide the dropdown by slotting an `nldd-menu` (with its `nldd-menu-item` / `nldd-menu-divider` children) or an `nldd-popover` directly: ```html <nldd-split-button text="Opslaan"> <nldd-menu> <nldd-menu-item text="Opslaan als…"></nldd-menu-item> </nldd-menu> </nldd-split-button> ``` The slotted overlay stays in the light DOM — no item-moving — so consumers keep their references and the full overlay API. The split-button anchors it to the chevron and opens it on click. When no overlay is slotted, the chevron dispatches `menu-click` and the consumer manages their own popover. */
3359
+ 'nldd-split-button': DefineComponent<NLDDSplitButtonProps>;
3360
+ /** A divider line between panels in a split view. The divider runs from edge to edge in the direction perpendicular to the orientation. An optional drag handle indicates that the divider is draggable (future functionality). */
3361
+ 'nldd-split-view-divider': DefineComponent<NLDDSplitViewDividerProps>;
3362
+ /** A simple pane container for use inside split views. The split view automatically sets context: whether a back button should be shown. The consumer sets `has-content` to indicate the pane has content. The consumer sets `back-text` on the `nldd-top-title-bar` inside the pane. The split view sets `hide-back` when the back button is not applicable. The pane automatically hides the back button via CSS when `hide-back` is active. The pane sets `--context-parent-background-color` which cascades down to all descendants. Set `background="tinted"` on a pane to give it a tinted background independently of sibling panes. Descendants such as `nldd-page` read `--context-parent-background-color` automatically. A pane stretches its slotted content to fill it (`::slotted(*) { flex-grow: 1 }`), so slot only layout content here. Overlays (`nldd-sheet`, popovers, dialogs, menus) belong at the document root — teleport/portal them to `document.body`. Do not leave an overlay as a light-DOM sibling of a split view: it gets slotted into the main pane and becomes an extra flex-grow child that steals pane height, so in document-scroll (root) mode a short page's sticky footer floats mid-screen instead of docking. */
3363
+ 'nldd-split-view-pane': DefineComponent<NLDDSplitViewPaneProps>;
3364
+ /** A vertical split view with multiple stacked panes. The number of panes is set via the `panes` attribute. Each pane automatically gets a numbered slot: pane-1, pane-2, etc. Panes that do not fit the available height are automatically hidden. */
3365
+ 'nldd-stacked-split-view': DefineComponent<NLDDStackedSplitViewProps>;
3366
+ /** Een smalle, paginabrede statusbalk (24px) met een diepe achtergrondkleur per variant. Gebruik voor persistente systeemtoestand: een storing, gepland onderhoud, een conceptweergave of een lopende opname. De balk toont bewust geen icoon en ondersteunt alleen tekst — de tekst zelf moet de status benoemen ("Storing: …", "Gepland onderhoud …"), zodat de betekenis niet alleen uit kleur volgt (WCAG 1.4.1). Houd de tekst kort: de balk toont één regel en kapt af met ellipsis, zeker op smallere schermen. Bij een lang bericht met veel informatie hoort alleen de kern in de balk; verwijs voor de rest naar een losse pagina of sheet (bijvoorbeeld via `href` of `button`) waar de gebruiker verder kan lezen. De hele balk kan klikbaar zijn: zet `href` (rendert een `<a>`) of `button` (rendert een `<button>`; luister naar het native `click` event). Zonder beide is de balk statisch. Bij interactie verschijnt een chevron als affordance. Maximaal één actie per balk; meerdere acties of links in lopende tekst horen in nldd-banner. role en aria-live worden automatisch gezet op basis van de variant: - critical → role="alert" (impliceert aria-live="assertive"; onderbreekt de screen reader) - overige → role="status" aria-live="polite" Niet overschrijfbaar — is een rustiger component nodig, kies dan een ander. Gebruik `critical` alleen voor een echte noodsituatie: role="alert" onderbreekt de screen reader bij élke wijziging van de inhoud, dus plaats er geen tekst in die regelmatig verandert (zoals een aftellende timer). */
3367
+ 'nldd-status-bar': DefineComponent<NLDDStatusBarProps>;
3368
+ /** Toont waar je staat in een proces van meerdere stappen: een rij bollen met een cijfer (of een vinkje op wat af is), een label eronder en een lijn die ze verbindt. De ouder houdt de waarheid vast: `current` (1-based) leidt de status van elk kind af — ervoor `past`, daarna `future`. Een kind kan dat overschrijven met een eigen `status`, voor flows die terugspringen of een stap overslaan. Alleen horizontaal. Wil je stappen onder elkaar, bouw dan een `nldd-list` met per rij een `nldd-timeline-track-cell` en een `nldd-title-cell`: verticale stappen dragen meestal meer dan een titel, en dat kan een lijstrij al. Onder de sm-breakpoint (container query, dus gemeten op het component zelf en niet op de viewport) klapt het om naar één regel tekst plus een segmentbalk. De volledige stappenlijst blijft dan in de DOM staan, alleen visueel verborgen, zodat hulpsoftware niet minder te horen krijgt dan een breed scherm laat zien. Toegankelijkheid: een `nav` met een label, daarin een `role="list"` met per stap een `role="listitem"`. De huidige stap krijgt `aria-current="step"` — het enige begrip dat WAI-ARIA hiervoor kent. "Afgerond" en "nog te doen" bestaan niet als ARIA-token en reizen daarom als visueel verborgen tekst mee. */
3369
+ 'nldd-step-indicator': DefineComponent<NLDDStepIndicatorProps>;
3370
+ /** Eén stap in een `nldd-step-indicator`. De ouder bepaalt de status en het volgnummer; die staan hier als interne state en niet als publieke API, op `status` na — dat overschrijft de afleiding uit `current`. */
3371
+ 'nldd-step-indicator-item': DefineComponent<NLDDStepIndicatorItemProps>;
3372
+ /** A numeric control with increment and decrement buttons. */
3373
+ 'nldd-stepper': DefineComponent<NLDDStepperProps>;
3374
+ /** A toggle control for on/off settings. Prefer nldd-switch-field for labeled usage — it combines the switch with a visible label. Direct use of nldd-switch requires an accessible-label attribute for screen reader accessibility. */
3375
+ 'nldd-switch': DefineComponent<NLDDSwitchProps>;
3376
+ /** A switch toggle with an inline label for use in forms. */
3377
+ 'nldd-switch-field': DefineComponent<NLDDSwitchFieldProps>;
3378
+ /** A horizontal navigation bar with mutually exclusive tabs. Exports both NLDDTabBar and NLDDTabBarItem. */
3379
+ 'nldd-tab-bar': DefineComponent<NLDDTabBarProps>;
3380
+ 'nldd-tab-bar-item': DefineComponent<NLDDTabBarItemProps>;
3381
+ /** Exports both NLDDTable and NLDDTableRow. A data table presented as a boxed surface (rounded corners, an inset border ring, a base or tinted fill) that aligns content into shared columns using a CSS grid + subgrid. Row dividers run full-bleed to the edges; the inline padding lives on the rows, so it insets the cell content but not the dividers. Column widths are defined ONCE on the table via the `columns` attribute (a CSS grid track list), like an HTML `<colgroup>`. Rows are `<nldd-table-row>` elements whose children are the existing `nldd-cell` family — every row uses `grid-template-columns: subgrid`, so all rows snap to the same columns. Header: put one `<nldd-table-row slot="header">` in the `header` slot. Its cells become column headers (role="columnheader"). Responsive: two complementary strategies. (1) Give columns a minimum width (e.g. `minmax(160px,1fr)`) — the table is its own scroll container, so it scrolls horizontally when too narrow (no wrapper needed). (2) Drop columns at breakpoints: provide `sm-columns`/`md-columns`/ `lg-columns` (shorter track lists) and hide the dropped columns' cells with `hide-below`/`hide-above` at the matching breakpoint. The table picks the track list for its own width via the standard sm/md/lg breakpoints. Selection and sorting are intentionally NOT built in: add a column with an `nldd-cell` + `nldd-checkbox` for selection, and drive sorting from an external control (e.g. a dropdown). */
3382
+ 'nldd-table': DefineComponent<NLDDTableProps>;
3383
+ 'nldd-table-row': DefineComponent<NLDDTableRowProps>;
3384
+ /** Een compacte label voor categorieën, statussen of metadata. Niet interactief. Voor interactieve chips (filter, dismiss) gebruik je <nldd-token>. */
3385
+ 'nldd-tag': DefineComponent<NLDDTagProps>;
3386
+ /** A cell component for displaying text content in lists with configurable alignment, size and color. This is the most fundamental list cell component. `vertical-alignment="center"` (default) stretches the cell to fill the full row height and centers its content within that space. Use `min-height` to set a minimum centered region. For strict top alignment without a minimum height, use `vertical-alignment="top"`. Each text region (overline, main text, supporting text) accepts either a string attribute or slotted DOM content. The slot is the source of truth: if the consumer provides slotted content, it replaces the attribute-based render for that region. Use slots when you need inline elements like `<nldd-tag>`, `<a>` or `<nldd-icon>` mixed with text. Note that `query` highlighting and `**bold**` parsing only apply to the attribute path — slotted content is rendered as-is. */
3387
+ 'nldd-text-cell': DefineComponent<NLDDTextCellProps>;
3388
+ /** 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. */
3389
+ 'nldd-text-editor': DefineComponent<NLDDTextEditorProps>;
3390
+ 'nldd-text-field': DefineComponent<NLDDTextFieldProps>;
3391
+ /** 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. */
3392
+ 'nldd-timeline-track-cell': DefineComponent<NLDDTimelineTrackCellProps>;
3393
+ /** A title bar with an optional overline, title, and subtitle on the left, and a slot for actions on the right. */
3394
+ 'nldd-title': DefineComponent<NLDDTitleProps>;
3395
+ /** A cell component for displaying a title with optional overline and subtitle in lists. `vertical-alignment="center"` (default) stretches the cell to fill the full row height and centers its content within that space. Use `min-height` to set a minimum centered region. For strict top alignment without a minimum height, use `vertical-alignment="top"`. Each text region (overline, title, supporting text) accepts either a string attribute or slotted DOM content. The slot is the source of truth: if the consumer provides slotted content, it replaces the attribute-based render for that region. Use slots when you need inline elements like `<nldd-tag>`, `<nldd-icon>` or other components mixed with text. Note that `query` highlighting and `**bold**` parsing only apply to the attribute path — slotted content is rendered as-is. */
3396
+ 'nldd-title-cell': DefineComponent<NLDDTitleCellProps>;
3397
+ /** A selectable button that toggles between selected and unselected. Available as a button (aria-pressed), checkbox, or radio input. */
3398
+ 'nldd-toggle-button': DefineComponent<NLDDToggleButtonProps>;
3399
+ /** Groups nldd-toggle-button elements and manages selection, keyboard navigation, and forwarding of type, name, size, and disabled state to all buttons. For type="radio" (single-select), arrow keys navigate between buttons and automatically select the focused one. For type="checkbox" (multi-select), multiple buttons can be selected simultaneously. */
3400
+ 'nldd-toggle-button-group': DefineComponent<NLDDToggleButtonGroupProps>;
3401
+ /** A token component representing a piece of data — such as a person in an address field or an active filter value. Optionally dismissable or interactive via a contextual menu. */
3402
+ 'nldd-token': DefineComponent<NLDDTokenProps>;
3403
+ /** A multi-select input that looks like a normal input field: chosen values show as dismissible tokens in a wrapping row, followed by an inline text input that stretches to fill the remaining space and wraps to a new line (growing the field) when it no longer fits. Options are supplied as a slotted nldd-menu, exactly like nldd-combo-box; the menu filters as you type, with a chevron picker button, arrow-key roving across the tokens and ElementInternals form participation. */
3404
+ 'nldd-token-field': DefineComponent<NLDDTokenFieldProps>;
3405
+ 'nldd-toolbar': DefineComponent<NLDDToolbarProps>;
3406
+ 'nldd-toolbar-item': DefineComponent<NLDDToolbarItemProps>;
3407
+ 'nldd-toolbar-title': DefineComponent<NLDDToolbarTitleProps>;
3408
+ /** Wrapper component dat een tooltip toont bij hover of focus op het child element. Gebruikt `display: contents` zodat het de layout van het child niet beïnvloedt. */
3409
+ 'nldd-tooltip': DefineComponent<NLDDTooltipProps>;
3410
+ /** De bovenste balk van een pagina: een logobalk met het Rijkslogo en een optioneel woordmerk, en daaronder de hoofdbalk met de websitetitel, een terugknop, de globale navigatie en de utility-navigatie. Op smalle breedtes verhuist de globale navigatie naar een menusheet achter de menuknop. */
3411
+ 'nldd-top-navigation-bar': DefineComponent<NLDDTopNavigationBarProps>;
3412
+ /** A toolbar for page and container headings with optional navigation and action buttons. The component has two states: - Default: the back button shows the previous page title as a text button - Compact (class `is-compact`): the back button is an icon button, a divider and the toolbar title are visible When `collapse-anchor` is set, the `is-compact` class is automatically applied as soon as the top of the anchor element reaches this bar's own top edge (the sticky header line). Measuring the bar rather than the page keeps it correct in both nested and root scroll modes; it also re-points at the live scroll target when the page switches mode. Without `collapse-anchor` the bar takes a static state: compact when `text` is set (so the title shows in the title-group), non-compact otherwise (so the `back-text` button stays visible). */
3413
+ 'nldd-top-title-bar': DefineComponent<NLDDTopTitleBarProps>;
3414
+ /** A section with 2/3 main content on the left and a 1/3 sidebar on the right. The columns wrap automatically when they become smaller than 280px. Padding and gap adjust via container queries. */
3415
+ 'nldd-two-thirds-one-third-section': DefineComponent<NLDDTwoThirdsOneThirdSectionProps>;
3416
+ /** Een zwevend venster gebaseerd op het native <dialog>-element. Kan modaal of niet-modaal worden weergegeven. Positioneerbaar via CSS-waarden. Geen eigen header — consumers gebruiken nldd-page met sticky-header binnenin voor een title bar. */
3417
+ 'nldd-window': DefineComponent<NLDDWindowProps>;
3418
+ }
3419
+ }
3420
+
3421
+ export {};