lintje 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.md +1 -1
  2. package/dist-elements/actions.js +1 -1
  3. package/dist-elements/chunks/{base-CbmWxUig.js → base-DRGvkF-r.js} +90 -87
  4. package/dist-elements/chunks/{controls-DxmnDSBr.js → controls-_4ac1Lpz.js} +1 -1
  5. package/dist-elements/chunks/{date-format-mHtZyBys.js → date-format-DxP9yfDp.js} +1 -1
  6. package/dist-elements/chunks/{dialog-DChINFxD.js → dialog-B7aRBtjy.js} +2 -2
  7. package/dist-elements/chunks/{disclosure-DLkXPUpV.js → disclosure-DirPLy2E.js} +1 -1
  8. package/dist-elements/chunks/download-C68kcwPj.js +206 -0
  9. package/dist-elements/chunks/{focus-trap-BwOxE5BX.js → focus-trap-Dv8zu64A.js} +1 -1
  10. package/dist-elements/chunks/input-BGMLam-O.js +195 -0
  11. package/dist-elements/chunks/input-lQTmOMOz.js +4 -0
  12. package/dist-elements/chunks/{player-B8QXJ0Z5.js → player-BApadXr8.js} +2 -2
  13. package/dist-elements/chunks/{sentence-B19AyZBS.js → sentence-0wO85ZdJ.js} +1 -1
  14. package/dist-elements/chunks/{stagger-BHoOgy0g.js → stagger-BB_gcxBI.js} +55 -47
  15. package/dist-elements/content.js +1 -0
  16. package/dist-elements/core.js +1 -1
  17. package/dist-elements/custom-elements.json +7635 -6802
  18. package/dist-elements/data-types.json +130 -28
  19. package/dist-elements/feedback.js +1 -1
  20. package/dist-elements/guides/loading.md +3 -3
  21. package/dist-elements/inputs.js +1 -0
  22. package/dist-elements/layout.js +1 -1
  23. package/dist-elements/lintje.js +6301 -5732
  24. package/dist-elements/overlays.js +1 -1
  25. package/dist-elements/tag/activity-log.js +1 -1
  26. package/dist-elements/tag/ai-label.js +1 -1
  27. package/dist-elements/tag/announcement.js +2 -2
  28. package/dist-elements/tag/app-search.js +2 -2
  29. package/dist-elements/tag/audio-player.js +2 -2
  30. package/dist-elements/tag/badge.d.ts +1 -1
  31. package/dist-elements/tag/badge.js +1 -1
  32. package/dist-elements/tag/breadcrumbs.js +1 -1
  33. package/dist-elements/tag/button.d.ts +1 -1
  34. package/dist-elements/tag/button.js +1 -1
  35. package/dist-elements/tag/card-list.js +1 -1
  36. package/dist-elements/tag/card.js +1 -1
  37. package/dist-elements/tag/chart.js +721 -406
  38. package/dist-elements/tag/chat-answer.js +2 -2
  39. package/dist-elements/tag/chat-composer.js +1 -1
  40. package/dist-elements/tag/chat-message.js +1 -1
  41. package/dist-elements/tag/chat-strip.js +1 -1
  42. package/dist-elements/tag/chat-suggestions.js +1 -1
  43. package/dist-elements/tag/chat.js +1 -1
  44. package/dist-elements/tag/checkbox-group.js +3 -2
  45. package/dist-elements/tag/checkbox.js +3 -2
  46. package/dist-elements/tag/code.js +1 -1
  47. package/dist-elements/tag/combobox.js +11 -10
  48. package/dist-elements/tag/conflict-alert.js +1 -1
  49. package/dist-elements/tag/copy-button.js +1 -1
  50. package/dist-elements/tag/data-table.js +137 -137
  51. package/dist-elements/tag/date-input.js +14 -13
  52. package/dist-elements/tag/date-range.js +5 -4
  53. package/dist-elements/tag/description-list.js +1 -1
  54. package/dist-elements/tag/dialog.js +4 -4
  55. package/dist-elements/tag/document-viewer.js +1 -1
  56. package/dist-elements/tag/drawer.js +3 -3
  57. package/dist-elements/tag/empty-state.js +1 -1
  58. package/dist-elements/tag/error-page.js +1 -1
  59. package/dist-elements/tag/error-summary.js +2 -2
  60. package/dist-elements/tag/expander.js +2 -2
  61. package/dist-elements/tag/explainer.js +2 -2
  62. package/dist-elements/tag/field.js +1 -1
  63. package/dist-elements/tag/file-upload.js +4 -3
  64. package/dist-elements/tag/filter-bar.js +2 -2
  65. package/dist-elements/tag/filter-sheet.js +3 -3
  66. package/dist-elements/tag/filter-zone.js +2 -2
  67. package/dist-elements/tag/find.d.ts +1 -0
  68. package/dist-elements/tag/find.js +128 -0
  69. package/dist-elements/tag/footer.js +1 -1
  70. package/dist-elements/tag/form-actions.js +2 -2
  71. package/dist-elements/tag/form-section.js +2 -2
  72. package/dist-elements/tag/form.js +2 -2
  73. package/dist-elements/tag/gallery.js +1 -1
  74. package/dist-elements/tag/grid-item.d.ts +1 -1
  75. package/dist-elements/tag/grid-item.js +1 -1
  76. package/dist-elements/tag/grid.d.ts +1 -1
  77. package/dist-elements/tag/grid.js +1 -1
  78. package/dist-elements/tag/hero.js +1 -1
  79. package/dist-elements/tag/highlight.js +1 -1
  80. package/dist-elements/tag/icon-button.d.ts +1 -1
  81. package/dist-elements/tag/icon-button.js +1 -1
  82. package/dist-elements/tag/icon.d.ts +1 -1
  83. package/dist-elements/tag/icon.js +1 -1
  84. package/dist-elements/tag/job-list.js +1 -1
  85. package/dist-elements/tag/kpi-row.js +1 -1
  86. package/dist-elements/tag/kpi.js +61 -61
  87. package/dist-elements/tag/level-meter.js +1 -1
  88. package/dist-elements/tag/list.js +2 -2
  89. package/dist-elements/tag/logo.js +1 -1
  90. package/dist-elements/tag/map.js +148 -142
  91. package/dist-elements/tag/menu-button.js +1 -1
  92. package/dist-elements/tag/modal.js +2 -2
  93. package/dist-elements/tag/multiselect.js +4 -3
  94. package/dist-elements/tag/note.js +1 -1
  95. package/dist-elements/tag/notifications.js +2 -2
  96. package/dist-elements/tag/number-input.js +3 -2
  97. package/dist-elements/tag/page-header.js +1 -1
  98. package/dist-elements/tag/pagination.js +32 -32
  99. package/dist-elements/tag/popover.d.ts +1 -1
  100. package/dist-elements/tag/popover.js +1 -1
  101. package/dist-elements/tag/progress-bar.d.ts +1 -1
  102. package/dist-elements/tag/progress-bar.js +1 -1
  103. package/dist-elements/tag/prose.js +1 -1
  104. package/dist-elements/tag/qr-code.js +1 -1
  105. package/dist-elements/tag/radio-group.js +3 -2
  106. package/dist-elements/tag/range.js +3 -2
  107. package/dist-elements/tag/recording-status.js +1 -1
  108. package/dist-elements/tag/repeater.js +1 -1
  109. package/dist-elements/tag/segmented.js +3 -2
  110. package/dist-elements/tag/select.js +3 -2
  111. package/dist-elements/tag/shell.js +3 -3
  112. package/dist-elements/tag/skeleton.d.ts +1 -1
  113. package/dist-elements/tag/skeleton.js +1 -1
  114. package/dist-elements/tag/slot-picker.js +4 -3
  115. package/dist-elements/tag/sortable-list.js +1 -1
  116. package/dist-elements/tag/spinner.d.ts +1 -1
  117. package/dist-elements/tag/spinner.js +1 -1
  118. package/dist-elements/tag/split-pane.js +1 -1
  119. package/dist-elements/tag/status-dot.d.ts +1 -1
  120. package/dist-elements/tag/status-dot.js +1 -1
  121. package/dist-elements/tag/stepper.js +1 -1
  122. package/dist-elements/tag/streaming-text.js +1 -1
  123. package/dist-elements/tag/sub-nav.js +1 -1
  124. package/dist-elements/tag/tabs.js +1 -1
  125. package/dist-elements/tag/tag-input.js +11 -10
  126. package/dist-elements/tag/text-editor.js +3 -2
  127. package/dist-elements/tag/text-input.js +3 -2
  128. package/dist-elements/tag/textarea.js +3 -2
  129. package/dist-elements/tag/tile.d.ts +1 -1
  130. package/dist-elements/tag/tile.js +1 -1
  131. package/dist-elements/tag/time-input.js +7 -6
  132. package/dist-elements/tag/toast.js +2 -2
  133. package/dist-elements/tag/toggle.js +3 -2
  134. package/dist-elements/tag/toggletip.js +2 -2
  135. package/dist-elements/tag/token-value.d.ts +1 -0
  136. package/dist-elements/tag/token-value.js +75 -0
  137. package/dist-elements/tag/tooltip.d.ts +1 -1
  138. package/dist-elements/tag/tooltip.js +1 -1
  139. package/dist-elements/tag/transcript.js +1 -1
  140. package/dist-elements/tag/translator.js +1 -1
  141. package/dist-elements/tag/tree-view.js +1 -1
  142. package/dist-elements/tag/user-menu.js +1 -1
  143. package/dist-elements/tag/video-player.js +2 -2
  144. package/dist-elements/tokens.json +1244 -0
  145. package/dist-elements/types/bundle/actions.d.ts +3 -3
  146. package/dist-elements/types/bundle/content.d.ts +1 -0
  147. package/dist-elements/types/bundle/feedback.d.ts +5 -5
  148. package/dist-elements/types/bundle/index.d.ts +0 -10
  149. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  150. package/dist-elements/types/bundle/layout.d.ts +3 -3
  151. package/dist-elements/types/bundle/overlays.d.ts +2 -2
  152. package/dist-elements/types/categories.d.ts +4 -0
  153. package/dist-elements/types/{primitives → components/actions}/button/button.d.ts +1 -1
  154. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +2 -2
  155. package/dist-elements/types/{icons → components/actions}/icon/icon.d.ts +2 -2
  156. package/dist-elements/types/{primitives → components/actions}/icon-button/icon-button.d.ts +1 -1
  157. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +3 -3
  158. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +1 -1
  159. package/dist-elements/types/components/charts/chart/chart.d.ts +1 -1
  160. package/dist-elements/types/components/charts/explainer/explainer.d.ts +1 -1
  161. package/dist-elements/types/components/charts/kpi/kpi.d.ts +3 -3
  162. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -1
  163. package/dist-elements/types/components/charts/note/note.d.ts +1 -1
  164. package/dist-elements/types/components/chat/chat/chat.d.ts +1 -1
  165. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +3 -3
  166. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +2 -2
  167. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +1 -1
  168. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +5 -5
  169. package/dist-elements/types/components/content/code/code.d.ts +1 -1
  170. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +2 -2
  171. package/dist-elements/types/components/content/highlight/highlight.d.ts +1 -1
  172. package/dist-elements/types/components/content/prose/prose.d.ts +1 -1
  173. package/dist-elements/types/components/content/token-value/token-value.d.ts +42 -0
  174. package/dist-elements/types/components/content/transcript/transcript.d.ts +3 -3
  175. package/dist-elements/types/components/content/translator/translator.d.ts +1 -1
  176. package/dist-elements/types/components/content/video-player/video-player.d.ts +1 -1
  177. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +2 -2
  178. package/dist-elements/types/{primitives → components/feedback}/badge/badge.d.ts +2 -2
  179. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +1 -1
  180. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +2 -2
  181. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +1 -1
  182. package/dist-elements/types/{primitives → components/feedback}/progress-bar/progress-bar.d.ts +2 -2
  183. package/dist-elements/types/{primitives → components/feedback}/skeleton/skeleton.d.ts +1 -1
  184. package/dist-elements/types/{primitives → components/feedback}/spinner/spinner.d.ts +1 -1
  185. package/dist-elements/types/{primitives → components/feedback}/status-dot/status-dot.d.ts +2 -2
  186. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +2 -2
  187. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +2 -2
  188. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +1 -1
  189. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +1 -1
  190. package/dist-elements/types/components/forms/repeater/repeater.d.ts +2 -2
  191. package/dist-elements/types/components/forms/stepper/stepper.d.ts +1 -1
  192. package/dist-elements/types/components/frame/app-search/app-search.d.ts +1 -1
  193. package/dist-elements/types/components/frame/notifications/notifications.d.ts +2 -2
  194. package/dist-elements/types/components/frame/page-header/page-header.d.ts +1 -1
  195. package/dist-elements/types/components/frame/shell/shell.d.ts +1 -1
  196. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +2 -2
  197. package/dist-elements/types/components/index.d.ts +43 -3
  198. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +2 -2
  199. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +1 -1
  200. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +2 -2
  201. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +2 -2
  202. package/dist-elements/types/components/inputs/find/find.d.ts +51 -0
  203. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +1 -1
  204. package/dist-elements/types/components/inputs/shared/input.d.ts +1 -1
  205. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +1 -1
  206. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +2 -2
  207. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +1 -1
  208. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +1 -1
  209. package/dist-elements/types/components/layout/expander/expander.d.ts +1 -1
  210. package/dist-elements/types/{primitives → components/layout}/grid/grid.d.ts +1 -1
  211. package/dist-elements/types/{primitives → components/layout}/grid-item/grid-item.d.ts +1 -1
  212. package/dist-elements/types/components/layout/tabs/tabs.d.ts +1 -1
  213. package/dist-elements/types/{primitives → components/layout}/tile/tile.d.ts +6 -6
  214. package/dist-elements/types/components/map/map/map.d.ts +2 -2
  215. package/dist-elements/types/components/overlays/modal/modal.d.ts +2 -2
  216. package/dist-elements/types/{primitives → components/overlays}/popover/popover.d.ts +2 -2
  217. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +1 -1
  218. package/dist-elements/types/{primitives → components/overlays}/tooltip/tooltip.d.ts +2 -2
  219. package/dist-elements/types/components/shared/charts/index.d.ts +1 -0
  220. package/dist-elements/types/components/shared/charts/kinds.d.ts +6 -0
  221. package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +1 -1
  222. package/dist-elements/types/components/shared/charts/radar-chart/radar-chart.d.ts +31 -0
  223. package/dist-elements/types/components/shared/charts/shared/axes.d.ts +3 -1
  224. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +5 -0
  225. package/dist-elements/types/components/shared/charts/shared/types.d.ts +33 -0
  226. package/dist-elements/types/components/shared/content-tile.d.ts +1 -1
  227. package/dist-elements/types/components/{forms/form → shared}/controls.d.ts +3 -2
  228. package/dist-elements/types/components/shared/overflow.d.ts +1 -1
  229. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +1 -1
  230. package/dist-elements/types/components/tables/card/card.d.ts +4 -4
  231. package/dist-elements/types/components/tables/data-table/actions.d.ts +1 -1
  232. package/dist-elements/types/components/tables/data-table/data-table.d.ts +3 -3
  233. package/dist-elements/types/components/tables/data-table/editing.d.ts +1 -1
  234. package/dist-elements/types/components/tables/data-table/filters.d.ts +3 -3
  235. package/dist-elements/types/components/tables/description-list/description-list.d.ts +2 -2
  236. package/dist-elements/types/components/tables/list/list.d.ts +4 -4
  237. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +1 -1
  238. package/dist-elements/types/core/focus.d.ts +1 -1
  239. package/dist-elements/types/types.d.ts +7 -7
  240. package/package.json +1 -1
  241. package/dist-elements/chunks/download-Ct9q2anY.js +0 -206
  242. package/dist-elements/chunks/input-CRW_exv_.js +0 -195
  243. package/dist-elements/types/primitives/index.d.ts +0 -35
  244. /package/dist-elements/types/components/content/{audio-player → shared}/playback.d.ts +0 -0
  245. /package/dist-elements/types/components/content/{audio-player → shared}/player.d.ts +0 -0
  246. /package/dist-elements/types/{primitives → components}/shared/announcement-block.d.ts +0 -0
  247. /package/dist-elements/types/components/{inputs/date-input → shared}/date-format.d.ts +0 -0
  248. /package/dist-elements/types/{primitives → components}/shared/empty-state-block.d.ts +0 -0
  249. /package/dist-elements/types/{primitives → components}/shared/grid-item-element.d.ts +0 -0
  250. /package/dist-elements/types/{primitives → components}/shared/length.d.ts +0 -0
  251. /package/dist-elements/types/{primitives → components}/shared/place.d.ts +0 -0
  252. /package/dist-elements/types/{primitives → components}/shared/tone.d.ts +0 -0
package/README.md CHANGED
@@ -95,7 +95,7 @@ opent.
95
95
 
96
96
  | | |
97
97
  |---|---|
98
- | [`examples/styleguide/`](examples/styleguide/) | de styleguide: een pagina per element, met zijn voorbeelden, hun code en zijn referentie — properties, events, slots en de velden van `data` |
98
+ | [`examples/styleguide/`](examples/styleguide/) | de styleguide: de tokens met hun waarde en commentaar, en een pagina per element, met zijn voorbeelden, hun code en zijn referentie — properties, events, slots en de velden van `data` |
99
99
  | [`docs/guides/`](docs/guides/start.md) | de elementen gebruiken op een eigen pagina: [een eerste pagina](docs/guides/start.md), [laden](docs/guides/loading.md), [thema's](docs/guides/theming.md), [eigen iconen](docs/guides/icons.md), [events](docs/guides/events.md), [een dashboard](docs/guides/dashboard.md), [een inhoudsopgave op de pagina](docs/guides/page-contents.md) |
100
100
  | [`docs/DESIGN_SYSTEM.md`](docs/DESIGN_SYSTEM.md) | de uitgangspunten en besluiten van het ontwerp |
101
101
  | [`CONTRIBUTING.md`](CONTRIBUTING.md) | bijdragen, en het recept voor een component |
@@ -1,4 +1,4 @@
1
- import "./chunks/base-CbmWxUig.js";
1
+ import "./chunks/base-DRGvkF-r.js";
2
2
  import "./tag/logo.js";
3
3
  import "./tag/qr-code.js";
4
4
  import "./tag/menu-button.js";
@@ -1,5 +1,5 @@
1
1
  //#region src/core/version.ts
2
- var e = "0.3.0", t = globalThis, n = t.ShadowRoot && (t.ShadyCSS === void 0 || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, r = Symbol(), i = /* @__PURE__ */ new WeakMap(), a = class {
2
+ var e = "0.4.0", t = globalThis, n = t.ShadowRoot && (t.ShadyCSS === void 0 || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, r = Symbol(), i = /* @__PURE__ */ new WeakMap(), a = class {
3
3
  constructor(e, t, n) {
4
4
  if (this._$cssResult$ = !0, n !== r) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
5
5
  this.cssText = e, this.t = t;
@@ -1486,7 +1486,7 @@ var yn = class extends j {
1486
1486
  };
1487
1487
  M("lintje-badge", yn);
1488
1488
  //#endregion
1489
- //#region src/primitives/button/button.css?inline
1489
+ //#region src/components/actions/button/button.css?inline
1490
1490
  var bn = "/*\n * Above the divider: what the element itself needs (`lintje-button` is the box the page lays\n * out). Below it: the block's own BEM CSS, in the shadow root.\n */\n:host {\n display: inline-flex;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n:host(.lintje-button--block),\n:host([block]) { display: flex; }\n:host([block]) .lintje-button { width: 100%; }\n:host([span]) .lintje-button { width: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-button {\n /* Never wider than its place: in a narrow cell the label is cut with an ellipsis. */\n max-width: 100%;\n min-width: 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n height: var(--h-button);\n padding: 0 var(--space-4);\n border: 1px solid transparent;\n font-family: var(--font-ui);\n font-size: 1rem;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--radius);\n transition: background var(--dur-hover) var(--ease-in-motion),\n color var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-button__label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.lintje-button--compact { height: var(--h-button-compact); padding: 0 var(--space-3); }\n.lintje-button--chrome { height: var(--h-button-chrome); padding: 0 14px; }\n/* The compact and chrome button reach the 48 px target through a transparent hit area, 4 px out\n on each side. A row of them keeps 8 px between the boxes, so hit areas never overlap. */\n.lintje-button--compact::after,\n.lintje-button--chrome::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n\n/* The 1 px border is transparent, so the primary fill fills it in light; in dark it draws the\n tint, the only thing that separates a #0E3B6E box from a #282828 page (1.31:1). */\n.lintje-button--primary {\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n border-color: var(--color-action-primary-border);\n}\n.lintje-button--primary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-action-primary-hover); }\n\n.lintje-button--secondary {\n background: var(--color-bg-surface);\n color: var(--color-accent-text);\n border-color: var(--color-action-secondary-border);\n}\n.lintje-button--secondary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-selected); }\n\n.lintje-button--tertiary {\n background: transparent;\n color: var(--color-text-primary);\n border-color: var(--color-border-strong);\n}\n.lintje-button--tertiary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-subtle); }\n\n/* The destructive weight; in dark the border is the red's tint, the only thing reaching 3:1. */\n.lintje-button--danger {\n background: var(--color-action-danger);\n color: var(--color-text-on-fill);\n border-color: var(--color-action-danger-border);\n}\n.lintje-button--danger:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-action-danger-hover); }\n\n/* `danger-secondary`: the quieter destructive form, for a row where the fill would shout. The\n colour is `--color-action-danger-text`. The hover is the tertiary's `--color-bg-subtle`:\n the red word on `--color-error-bg` was 3.96:1 in light. */\n.lintje-button--danger-secondary {\n background: var(--color-bg-surface);\n color: var(--color-action-danger-text);\n border-color: var(--color-action-danger-text);\n}\n.lintje-button--danger-secondary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-subtle); }\n\n.lintje-button--link {\n height: auto;\n padding: 0;\n color: var(--color-link);\n text-decoration: underline;\n background: none;\n}\n.lintje-button--link:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { color: var(--color-link-hover); }\n/* The link reaches the text target (24 px) through a transparent hit area. */\n.lintje-button--link::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target-text)) / 2)) 0;\n}\n\n/* Disabled is `aria-disabled`: the button keeps its tab order and focus ring. A busy button is\n not `is-disabled`: it keeps its variant's colours. Native `<button>`s with these classes get\n the look from `:disabled` or `aria-disabled`, without the class. */\n.lintje-button.is-disabled,\n.lintje-button:disabled,\n.lintje-button[aria-disabled='true']:not(.is-busy) {\n opacity: 1;\n cursor: not-allowed;\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n border-color: var(--color-border-default);\n}\n.lintje-button--link.is-disabled,\n.lintje-button--link:disabled,\n.lintje-button--link[aria-disabled='true']:not(.is-busy) {\n background: none;\n border-color: transparent;\n text-decoration: none;\n}\n\n/* --- Busy --------------------------------------------------------------- */\n/*\n * An action that round-trips. The button keeps its width: label and icons only lose their ink,\n * and the ring is drawn over the middle, so nothing re-flows. The label is transparent, not\n * `visibility: hidden`, so the focused button keeps its name.\n */\n.lintje-button.is-busy { cursor: progress; }\n.lintje-button.is-busy .lintje-button__label { opacity: 0; }\n.lintje-button.is-busy .lintje-button__icon { visibility: hidden; }\n.lintje-button__busy {\n position: absolute;\n top: 50%; left: 50%;\n width: 16px; height: 16px;\n margin: -8px 0 0 -8px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n opacity: 0.85;\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n/* Reduced motion: the ring stands still; `aria-busy` carries the state. */\n@media (prefers-reduced-motion: reduce) {\n .lintje-button__busy { animation: none; }\n}\n\n/* Forced colours: `aria-disabled` is not grayed out by the browser. */\n@media (forced-colors: active) {\n .lintje-button.is-disabled,\n .lintje-button:disabled,\n .lintje-button[aria-disabled='true']:not(.is-busy) { color: GrayText; border-color: GrayText; }\n}\n", xn = "/*\n * Adopted by a control that has nothing to say on paper: a button, a question box, a bar of\n * actions. What the reader chose stays in the elements that show it; what to press does not.\n * `!important`, so a page's own `display` on the tag does not bring it back.\n */\n@media print {\n :host { display: none !important; }\n}\n", Sn = "lintje-button-reason", Cn = class extends j {
1491
1491
  static {
1492
1492
  this.styles = [
@@ -1658,7 +1658,7 @@ function kn(e) {
1658
1658
  return t !== null && On(t, e);
1659
1659
  }
1660
1660
  //#endregion
1661
- //#region src/primitives/shared/tone.ts
1661
+ //#region src/components/shared/tone.ts
1662
1662
  var An = {
1663
1663
  success: "functioneel-cirkel-vinkje",
1664
1664
  warning: "functioneel-waarschuwing",
@@ -1752,10 +1752,10 @@ function qn() {
1752
1752
  };
1753
1753
  }
1754
1754
  //#endregion
1755
- //#region src/primitives/popover/popover.css?inline
1755
+ //#region src/components/overlays/popover/popover.css?inline
1756
1756
  var Jn = ":host { display: contents; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* Fixed, not absolute: an `overflow` ancestor would cut it off. z-index 85: above the scrim (80),\n below the tooltip (90). */\n.lintje-popover {\n position: fixed;\n z-index: 85;\n max-width: calc(100vw - var(--space-4));\n max-height: var(--lintje-popover-space, none);\n overflow: auto;\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n font: var(--text-ui);\n animation: lintje-popover-in var(--dur-popover) var(--ease-in-motion);\n}\n";
1757
1757
  //#endregion
1758
- //#region src/primitives/popover/popover.ts
1758
+ //#region src/components/overlays/popover/popover.ts
1759
1759
  function Yn(e, t) {
1760
1760
  return e ? {
1761
1761
  top: e.top === null ? null : `${e.top}px`,
@@ -1851,7 +1851,7 @@ function Zn(e) {
1851
1851
  return e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && !e.altKey;
1852
1852
  }
1853
1853
  //#endregion
1854
- //#region src/primitives/spinner/spinner.css?inline
1854
+ //#region src/components/feedback/spinner/spinner.css?inline
1855
1855
  var Qn = ":host { display: inline-flex; vertical-align: middle; }\n:host([stacked]) { display: flex; justify-content: center; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-spinner {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n.lintje-spinner--stacked { flex-direction: column; gap: var(--space-3); }\n\n/* A line on a surface (3:1): the accent line, not the fill. */\n.lintje-spinner__ring {\n flex: none;\n width: 1rem; height: 1rem;\n border: 2px solid var(--color-accent-line);\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n/* 16, 24 and 40 px: 1, 1.5 and 2.5rem, so the ring grows with the text beside it. */\n.lintje-spinner--24 .lintje-spinner__ring { width: 1.5rem; height: 1.5rem; }\n.lintje-spinner--40 .lintje-spinner__ring { width: 2.5rem; height: 2.5rem; border-width: 3px; }\n.lintje-spinner--current .lintje-spinner__ring {\n border-color: currentColor;\n border-top-color: transparent;\n}\n\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-spinner__ring { animation: none; }\n}\n\n/* Forced colours: the ring draws in CanvasText with its open quarter in Canvas, so it still turns. */\n@media (forced-colors: active) {\n .lintje-spinner__ring,\n .lintje-spinner--current .lintje-spinner__ring {\n border-color: CanvasText;\n border-top-color: Canvas;\n }\n}\n", $n = class extends j {
1856
1856
  constructor(...e) {
1857
1857
  super(...e), this.size = 16, this.stacked = !1, this.current = !1, this.filled = null, this.#e = 0;
@@ -1908,7 +1908,7 @@ var Qn = ":host { display: inline-flex; vertical-align: middle; }\n:host([stacke
1908
1908
  };
1909
1909
  M("lintje-spinner", $n);
1910
1910
  //#endregion
1911
- //#region src/primitives/tooltip/tooltip.css?inline
1911
+ //#region src/components/overlays/tooltip/tooltip.css?inline
1912
1912
  var er = "/* A box of its own for the pointer and focus to enter; inline, so flow is unchanged. */\n:host { display: inline-flex; vertical-align: middle; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The pointer can rest on it, to read it at a larger zoom; Escape takes it away. */\n.lintje-tooltip {\n position: fixed;\n z-index: 90;\n max-width: 15rem;\n padding: var(--space-2) var(--space-3);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n font: var(--text-small);\n animation: lintje-fade-in var(--dur-hover) var(--ease-in-motion);\n}\n", tr = 300, nr = 150;
1913
1913
  function rr(e) {
1914
1914
  return e ? {
@@ -2000,7 +2000,7 @@ var ir = class extends j {
2000
2000
  };
2001
2001
  M("lintje-tooltip", ir);
2002
2002
  //#endregion
2003
- //#region src/primitives/icon-button/icon-button.css?inline
2003
+ //#region src/components/actions/icon-button/icon-button.css?inline
2004
2004
  var ar = "/* Above the divider: what the element itself needs. Below it: the block's own BEM CSS. */\n:host {\n display: inline-flex;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-icon-button {\n position: relative;\n width: var(--h-icon-button);\n height: var(--h-icon-button);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n border-radius: var(--radius);\n transition: opacity var(--dur-hover) var(--ease-in-motion),\n background var(--dur-hover) var(--ease-in-motion);\n}\n/* The target reaches `--h-target` through a transparent hit area; 100 % is the box's own size,\n so the label variant's wider box only grows it upwards and downwards. */\n.lintje-icon-button::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2));\n}\n/* Without a file for its icon the label becomes the text; the square grows as wide as the word. */\n.lintje-icon-button--text { width: auto; min-width: var(--h-icon-button); padding: 0 var(--space-3); }\n.lintje-icon-button__label { font-size: 0.875rem; font-weight: 700; white-space: nowrap; }\n\n/* The box is a line (3:1), the glyph stands in for a word (4.5:1): different tokens. */\n.lintje-icon-button--outlined {\n border: 1px solid var(--color-accent-line);\n background: var(--color-bg-surface);\n color: var(--color-accent-text);\n}\n.lintje-icon-button--outlined:not(.is-disabled):hover { background: var(--color-bg-selected); }\n\n.lintje-icon-button--flat { background: transparent; color: var(--color-text-primary); }\n.lintje-icon-button--flat:not(.is-disabled):hover { background: var(--color-bg-subtle); }\n\n/* Tile actions stand back in the muted text colour, never below 3:1; hover and focus darken them. */\n.lintje-icon-button--tile { background: transparent; color: var(--color-text-muted); }\n.lintje-icon-button--tile:not(.is-disabled):hover, .lintje-icon-button--tile:focus-visible { color: var(--color-text-primary); }\n\n/* The active button takes the primary-fill border, so the square keeps an edge in dark. */\n.lintje-icon-button.is-active {\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n border-color: var(--color-action-primary-border);\n}\n\n/* Live: it listens or speaks now. The primary fill with its border, and bars that move beside\n the icon, so the state is never colour alone; the box grows to hold them. */\n.lintje-icon-button.is-live {\n width: auto;\n gap: var(--space-2);\n padding: 0 var(--space-3);\n border: 1px solid var(--color-action-primary-border);\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n}\n.lintje-icon-button.is-live:not(.is-disabled):hover { background: var(--color-action-primary-hover); }\n.lintje-icon-button__waves { display: inline-flex; align-items: center; gap: 2px; height: 16px; }\n.lintje-icon-button__wave {\n width: 2px;\n height: 100%;\n background: currentColor;\n animation: lintje-icon-button-wave var(--dur-wave) var(--ease-in-motion) infinite alternate;\n}\n.lintje-icon-button__wave:nth-child(2) { animation-delay: calc(var(--dur-wave) * -0.5); }\n.lintje-icon-button__wave:nth-child(3) { animation-delay: calc(var(--dur-wave) * -0.25); }\n.lintje-icon-button__wave:nth-child(4) { animation-delay: calc(var(--dur-wave) * -0.75); }\n@keyframes lintje-icon-button-wave {\n from { transform: scaleY(0.25); }\n to { transform: scaleY(1); }\n}\n/* Without motion the bars stand still at different heights: still a wave, never a pulse. */\n@media (prefers-reduced-motion: reduce) {\n .lintje-icon-button__wave { animation: none; transform: scaleY(0.5); }\n .lintje-icon-button__wave:nth-child(2) { transform: scaleY(1); }\n .lintje-icon-button__wave:nth-child(4) { transform: scaleY(0.75); }\n}\n\n/* Disabled is `aria-disabled`: tab order and focus ring stay. After is-active, so it loses the fill. */\n.lintje-icon-button.is-disabled { cursor: not-allowed; color: var(--color-text-disabled); }\n.lintje-icon-button--outlined.is-disabled { background: var(--color-bg-surface); border-color: var(--color-border-default); }\n\n/* Forced colours: the active fill is dropped, so its border turns Highlight. */\n@media (forced-colors: active) {\n .lintje-icon-button.is-active,\n .lintje-icon-button.is-live { border-color: Highlight; }\n .lintje-icon-button.is-disabled { color: GrayText; border-color: GrayText; }\n}\n";
2005
2005
  //#endregion
2006
2006
  //#region src/core/length.ts
@@ -2013,7 +2013,7 @@ function sr() {
2013
2013
  return Number.isFinite(e) && e > 0 ? e : 16;
2014
2014
  }
2015
2015
  //#endregion
2016
- //#region src/primitives/shared/grid-item-element.ts
2016
+ //#region src/components/shared/grid-item-element.ts
2017
2017
  var cr = A("/* `min-width: auto` is the default; tiles hold long words and wide tables that would overflow. */\n:host {\n min-width: 0;\n}\n:host(lintje-grid-item) {\n display: block;\n}\n:host([span]) {\n grid-column: span var(--lintje-span, 1);\n}\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n :host([span='4']) { grid-column: span 6; }\n :host([span='8']) { grid-column: span 12; }\n}\n@media screen and (max-width: 767px) {\n :host([span]) { grid-column: span 1; }\n}\n"), lr = class extends j {
2018
2018
  static {
2019
2019
  this.properties = { span: {
@@ -2086,13 +2086,13 @@ function _r(e, t) {
2086
2086
  </button>` : T}`;
2087
2087
  }
2088
2088
  //#endregion
2089
- //#region src/primitives/shared/length.ts
2089
+ //#region src/components/shared/length.ts
2090
2090
  var vr = /^-?\d+(?:\.\d+)?$/;
2091
2091
  function yr(e) {
2092
2092
  if (e !== void 0) return typeof e == "number" || vr.test(e) ? `${e}px` : e;
2093
2093
  }
2094
2094
  //#endregion
2095
- //#region src/primitives/icon-button/icon-button.ts
2095
+ //#region src/components/actions/icon-button/icon-button.ts
2096
2096
  var br = class extends j {
2097
2097
  static {
2098
2098
  this.styles = [
@@ -2165,7 +2165,7 @@ var br = class extends j {
2165
2165
  };
2166
2166
  M("lintje-icon-button", br);
2167
2167
  //#endregion
2168
- //#region src/primitives/status-dot/status-dot.css?inline
2168
+ //#region src/components/feedback/status-dot/status-dot.css?inline
2169
2169
  var xr = ":host { display: inline-flex; vertical-align: middle; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-status { display: inline-flex; align-items: center; gap: var(--space-2); font: var(--text-small); }\n.lintje-status__dot { border-radius: var(--radius-round); flex: none; display: block; }\n.lintje-status__dot--success { background: var(--color-success); }\n.lintje-status__dot--warning { background: var(--color-warning); }\n.lintje-status__dot--attention { background: var(--color-attention); }\n.lintje-status__dot--error { background: var(--color-error); }\n.lintje-status__dot--info { background: var(--color-info); }\n.lintje-status__dot--busy { background: var(--color-action-primary); }\n.lintje-status__dot--neutral { background: var(--color-text-muted); }\n.lintje-status__dot--subtle { background: var(--color-text-muted); }\n.lintje-status__dot--live { background: var(--color-error); }\n\n/* Forced colours: the dot's fill is dropped, so it keeps its drawing as one CanvasText dot. */\n@media (forced-colors: active) {\n .lintje-status__dot { forced-color-adjust: none; background: CanvasText; }\n}\n", Sr = {
2170
2170
  complete: "success",
2171
2171
  delayed: "warning",
@@ -2209,7 +2209,7 @@ var xr = ":host { display: inline-flex; vertical-align: middle; }\n:host([hidden
2209
2209
  };
2210
2210
  M("lintje-status-dot", wr);
2211
2211
  //#endregion
2212
- //#region src/primitives/skeleton/skeleton.css?inline
2212
+ //#region src/components/feedback/skeleton/skeleton.css?inline
2213
2213
  var Tr = "/* The size is on the host so a percentage has a box to resolve against. */\n:host { display: block; }\n:host(lintje-skeleton) .lintje-skeleton { width: 100%; height: 100%; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-skeleton {\n display: block;\n background: linear-gradient(90deg,\n var(--color-bg-subtle) 25%,\n var(--color-border-default) 37%,\n var(--color-bg-subtle) 63%);\n background-size: 200% 100%;\n animation: lintje-shimmer var(--dur-skeleton) linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-skeleton { animation: none; background: var(--color-bg-subtle); }\n}\n\n/* Forced colours: the gradient is dropped, so the placeholder keeps a 1 px GrayText line. */\n@media (forced-colors: active) {\n .lintje-skeleton { outline: 1px solid GrayText; outline-offset: -1px; }\n}\n", Er = class extends j {
2214
2214
  constructor(...e) {
2215
2215
  super(...e), this.width = "100%", this.height = 12;
@@ -2232,7 +2232,7 @@ var Tr = "/* The size is on the host so a percentage has a box to resolve agains
2232
2232
  };
2233
2233
  M("lintje-skeleton", Er);
2234
2234
  //#endregion
2235
- //#region src/primitives/shared/empty-state-block.ts
2235
+ //#region src/components/shared/empty-state-block.ts
2236
2236
  var Dr = A(".lintje-empty-state {\n display: flex; flex-direction: column; align-items: center;\n gap: var(--space-2);\n padding: var(--space-8) var(--space-4);\n text-align: center;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__icon { color: var(--color-text-muted); }\n.lintje-empty-state__heading {\n margin: var(--space-1) 0 0;\n font: var(--text-tile-title);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__text {\n max-width: 280px;\n margin: 0;\n color: var(--color-text-muted);\n}\n.lintje-empty-state__action { margin-top: var(--space-2); }\n\n.lintje-empty-state--compact {\n display: block;\n padding: var(--space-4);\n text-align: left;\n color: var(--color-text-muted);\n}\n\n/* Phone: the action runs the full width. */\n@media screen and (max-width: 767px) {\n .lintje-empty-state:not(.lintje-empty-state--compact) .lintje-empty-state__action {\n align-self: stretch;\n }\n}\n");
2237
2237
  function Or(e, t) {
2238
2238
  switch (t) {
@@ -2263,7 +2263,7 @@ function Ar(e) {
2263
2263
  </div>`}`;
2264
2264
  }
2265
2265
  //#endregion
2266
- //#region src/primitives/tile/tile.css?inline
2266
+ //#region src/components/layout/tile/tile.css?inline
2267
2267
  var jr = "/*\n * Above the divider: the host, the grid item the tile fills by its height or, when the host has\n * only a floor, by `min-height: inherit`. Below it: the block's BEM CSS.\n */\n:host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-tile {\n height: 100%;\n min-height: inherit;\n}\n/* On paper a tile stays on one sheet where it fits, unless it is `breakable`. */\n@media print { :host(:not([breakable])) { break-inside: avoid; } }\n.lintje-chart-state {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n justify-content: center;\n align-items: center;\n min-width: 0;\n}\n.lintje-chart-state--empty { text-align: center; gap: var(--space-3); }\n.lintje-chart-state--empty .lintje-empty-state--compact { text-align: center; font: var(--text-small); }\n/* An announcement measures as a container, so it has no width of its own to centre by. */\n.lintje-chart-state--error { justify-content: flex-start; align-items: stretch; gap: var(--space-4); }\n.lintje-chart-state__last-known { font: var(--text-small); color: var(--color-text-muted); text-align: center; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-tile {\n display: flex;\n flex-direction: column;\n gap: 14px;\n min-width: 0;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-radius: var(--radius);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n}\n\n.lintje-tile__head {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: var(--space-4);\n}\n.lintje-tile__heading { min-width: 0; }\n/* With an icon the heading becomes two columns, which centres the icon on the title's line and\n keeps the subtitle under the title text. */\n.lintje-tile__heading--icon {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n}\n/* Only the placement is the tile's; the alignment is `.lintje-leading-icon`. */\n.lintje-tile__icon { grid-row: 1; }\n.lintje-tile__heading--icon .lintje-tile__title,\n.lintje-tile__heading--icon .lintje-tile__sub { grid-column: 2; }\n.lintje-tile__title { font: var(--text-tile-title); color: var(--color-text-primary); }\n.lintje-tile__sub { font: var(--text-tile-sub); color: var(--color-text-muted); margin-top: 2px; }\n/* The actions are 40 px icon buttons beside a title of one line: they stand out above and below\n it, so the head is the title's height and a tile without a subtitle keeps no empty band. */\n.lintje-tile__actions {\n display: flex; gap: var(--space-2); flex: none;\n margin-block: calc(var(--space-2) * -1);\n}\n/* Expand and download appear only while the tile is hovered or holds keyboard focus; without\n hover they stay visible. The tile only hides the action; how the visible action looks is the\n icon button's own. */\n.lintje-tile:not(:hover):not(:focus-within) lintje-icon-button[variant='tile'] { opacity: 0; }\n@media (hover: none) {\n .lintje-tile:not(:hover):not(:focus-within) lintje-icon-button[variant='tile'] { opacity: 1; }\n}\n\n.lintje-tile__intro { font: var(--text-small); color: var(--color-text-secondary); }\n\n/* Body and content are flex columns, so slotted content can place itself in a taller tile. */\n.lintje-tile__body { flex: 1; min-height: 0; min-width: 0; display: flex; flex-direction: column; }\n.lintje-tile__content { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n/* A tile with a height of its own scrolls what does not fit (`content-scroll`). */\n:host([content-scroll]) .lintje-tile__content { overflow: auto; }\n.lintje-tile__body--aside { flex-direction: row; gap: var(--space-5); align-items: stretch; }\n.lintje-tile__body--aside .lintje-tile__content { flex: 1; min-width: 0; }\n.lintje-tile__aside { flex: none; display: flex; flex-direction: column; justify-content: center; }\n/* On a phone the content keeps its full width and the key figure leads above it. */\n@media screen and (max-width: 767px) {\n .lintje-tile__body--aside { flex-direction: column; }\n}\n\n.lintje-tile__footnote {\n font: var(--text-meta);\n color: var(--color-text-muted);\n border-top: 1px solid var(--color-border-default);\n padding-top: var(--space-2);\n margin-top: auto;\n}\n\n/* Flush: the rows' lines reach the frame, and what they draw keeps the heading's indent through\n --lintje-inset, as does a pager under them. The last row's line is the footnote's rule. */\n.lintje-tile--flush .lintje-tile__body {\n margin-inline: calc(var(--tile-pad-x) * -1);\n --lintje-inset: var(--tile-pad-x);\n}\n.lintje-tile--flush .lintje-tile__footnote { border-top: 0; padding-top: 0; }\n/* Without a footnote the last row's line is the frame's: no empty strip under it. A pager under\n the rows gives the strip back through --lintje-inset-end. */\n.lintje-tile--flush:has(> .lintje-tile__footnote[hidden]) > .lintje-tile__body {\n margin-bottom: calc(var(--tile-pad-y) * -1 - 1px);\n --lintje-inset-end: calc(var(--tile-pad-y) + 1px);\n}\n\n/* Enlarging and downloading are for the screen. A tile split over two sheets is a block:\n Chromium sizes a flex column that breaks too short, and what follows overlaps its rows. */\n@media print {\n .lintje-tile__actions { display: none; }\n :host([breakable]) .lintje-tile { display: block; }\n :host([breakable]) .lintje-tile > :not(:first-child) { margin-top: 14px; }\n}\n", Mr = "Gegevens laden…", Nr = class e extends lr {
2268
2268
  constructor(...e) {
2269
2269
  super(...e), this.footnoteSlotted = !1, this.asideSlotted = !1, this.legendBelow = !1, this.expandable = !1, this.download = !1, this.state = "ready", this.contentHeight = "var(--chart-h-main)", this.contentScroll = !1, this.flush = !1, this.breakable = !1, this.filled = null, this.#e = 0;
@@ -2437,7 +2437,7 @@ var jr = "/*\n * Above the divider: the host, the grid item the tile fills by it
2437
2437
  };
2438
2438
  M("lintje-tile", Nr);
2439
2439
  //#endregion
2440
- //#region src/primitives/grid/grid.css?inline
2440
+ //#region src/components/layout/grid/grid.css?inline
2441
2441
  var Pr = "/*\n * Written with `:host(…)` and `::slotted()`: a selector from outside cannot reach into an item's\n * own root. An item's width comes from `--lintje-span`, so a media rule can override `grid-column`.\n */\n\n/* --- The grid ------------------------------------------------------------ */\n:host {\n display: grid;\n grid-template-columns: repeat(var(--lintje-grid-columns, 12), minmax(0, 1fr));\n gap: var(--grid-gutter);\n align-items: stretch;\n}\n:host([hidden]) { display: none; }\n\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n :host([variant='kpi-row']) { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n}\n@media screen and (max-width: 767px) {\n :host { grid-template-columns: minmax(0, 1fr); }\n :host([variant='kpi-row']) { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n\n/* --- Every item its column ------------------------------------------------ */\n\n::slotted([span]) {\n min-width: 0;\n grid-column: span var(--lintje-span, 1);\n}\n\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n ::slotted([span='4']) { grid-column: span 6; }\n ::slotted([span='8']) { grid-column: span 12; }\n}\n@media screen and (max-width: 767px) {\n ::slotted([span]) { grid-column: span 1; }\n}\n", Fr = class extends j {
2442
2442
  constructor(...e) {
2443
2443
  super(...e), this.columns = 12;
@@ -2463,7 +2463,7 @@ var Pr = "/*\n * Written with `:host(…)` and `::slotted()`: a selector from ou
2463
2463
  };
2464
2464
  M("lintje-grid", Fr);
2465
2465
  //#endregion
2466
- //#region src/primitives/grid-item/grid-item.ts
2466
+ //#region src/components/layout/grid-item/grid-item.ts
2467
2467
  var Ir = class extends lr {
2468
2468
  static {
2469
2469
  this.styles = cr;
@@ -2493,7 +2493,7 @@ function Hr(e) {
2493
2493
  Rr.delete(e), X?.unobserve(e);
2494
2494
  }
2495
2495
  //#endregion
2496
- //#region src/icons/icon/icon.css?inline
2496
+ //#region src/components/actions/icon/icon.css?inline
2497
2497
  var Ur = "/* `<lintje-icon>`'s own box: the host is the flex child; the glyph inside is a plain block. */\n:host {\n display: inline-flex;\n flex: none;\n}\n:host([hidden]) { display: none; }\n.lintje-icon {\n display: block;\n}\n", Wr = Object.keys(Ft), Gr = class extends j {
2498
2498
  constructor(...e) {
2499
2499
  super(...e), this.size = 16, this.lazy = !1, this.#e = null, this.#t = !1;
@@ -2556,7 +2556,7 @@ function Jr() {
2556
2556
  return typeof matchMedia < "u" && matchMedia("(prefers-reduced-motion: reduce)").matches;
2557
2557
  }
2558
2558
  //#endregion
2559
- //#region src/primitives/progress-bar/progress-bar.css?inline
2559
+ //#region src/components/feedback/progress-bar/progress-bar.css?inline
2560
2560
  var Yr = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-progress { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }\n.lintje-progress__head {\n display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;\n gap: var(--space-1) var(--space-4);\n font: var(--text-small);\n}\n.lintje-progress__label { font-weight: 700; color: var(--color-text-primary); }\n.lintje-progress__detail { color: var(--color-text-muted); }\n.lintje-progress__mark { margin-right: var(--space-1); vertical-align: -0.125em; }\n.lintje-progress--done .lintje-progress__mark { color: var(--color-success-line); }\n.lintje-progress--error .lintje-progress__mark { color: var(--color-error-line); }\n.lintje-progress--paused .lintje-progress__mark { color: var(--color-text-muted); }\n\n/* The accent LINE, not the fill colour, keeps 3:1 on the dark surface. */\n.lintje-progress__track { height: 6px; background: var(--color-border-default); overflow: hidden; }\n.lintje-progress__fill {\n height: 100%;\n background: var(--color-accent-line);\n transition: width var(--dur-base) var(--ease-in-motion);\n}\n\n.lintje-progress--done .lintje-progress__fill { background: var(--color-success); }\n.lintje-progress--error .lintje-progress__fill { background: var(--color-error); }\n.lintje-progress--error .lintje-progress__label { color: var(--color-error-text); }\n.lintje-progress--paused .lintje-progress__fill { background: var(--color-text-muted); }\n\n.lintje-progress__track.is-indeterminate .lintje-progress__fill {\n width: 30%;\n animation: lintje-progress-slide var(--dur-skeleton) linear infinite alternate;\n}\n@keyframes lintje-progress-slide {\n from { margin-left: 0; }\n to { margin-left: 70%; }\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-progress__fill { transition: none; }\n .lintje-progress__track.is-indeterminate .lintje-progress__fill { animation: none; margin-left: 35%; }\n}\n\n/* Forced colours: the browser drops fills, so the track keeps a CanvasText edge and the fill\n draws as Highlight. */\n@media (forced-colors: active) {\n .lintje-progress__track { outline: 1px solid CanvasText; outline-offset: -1px; }\n .lintje-progress__fill { forced-color-adjust: none; background: Highlight; }\n}\n", Xr = class extends j {
2561
2561
  constructor(...e) {
2562
2562
  super(...e), this.label = "", this.hideLabel = !1, this.state = "busy";
@@ -2683,7 +2683,46 @@ var Zr = (e, t, n) => {
2683
2683
  }
2684
2684
  return this.ut = o, zn(e, c), w;
2685
2685
  }
2686
- }), $r = R(class extends z {
2686
+ });
2687
+ //#endregion
2688
+ //#region src/core/format.ts
2689
+ function Z(e, t = 0) {
2690
+ return e.toLocaleString("nl-NL", {
2691
+ minimumFractionDigits: t,
2692
+ maximumFractionDigits: t
2693
+ });
2694
+ }
2695
+ function $r(e) {
2696
+ return Math.abs(e) >= 1e6 ? `${Z(e / 1e6, 1)} mln` : Math.abs(e) >= 1e4 ? `${Math.round(e / 1e3)}k` : Z(e);
2697
+ }
2698
+ function ei(e, t) {
2699
+ let n = Z(e);
2700
+ return ni(n, t) ? n : $r(e);
2701
+ }
2702
+ var ti = 6.5;
2703
+ function ni(e, t) {
2704
+ return e.length * ti <= t;
2705
+ }
2706
+ var ri = "'RijksSans', 'Source Sans 3', sans-serif", Q;
2707
+ function ii(e, t, n = "") {
2708
+ if (ai(e, n) <= t) return e;
2709
+ let r = e.length;
2710
+ for (; r > 1;) {
2711
+ --r;
2712
+ let i = `${e.slice(0, r).trimEnd()}…`;
2713
+ if (ai(i, n) <= t) return i;
2714
+ }
2715
+ return "…";
2716
+ }
2717
+ function ai(e, t = "", n = 400) {
2718
+ return Q === void 0 && (Q = typeof document > "u" ? null : document.createElement("canvas").getContext("2d") ?? null), Q ? (Q.font = `${n} 12px ${t.trim() || ri}`, Q.measureText(e).width) : e.length * ti;
2719
+ }
2720
+ function oi(e, t = 0) {
2721
+ return `${Z(e, t)}%`;
2722
+ }
2723
+ //#endregion
2724
+ //#region node_modules/lit-html/directives/live.js
2725
+ var si = R(class extends z {
2687
2726
  constructor(e) {
2688
2727
  if (super(e), e.type !== L.PROPERTY && e.type !== L.ATTRIBUTE && e.type !== L.BOOLEAN_ATTRIBUTE) throw Error("The `live` directive is not allowed on child or event bindings");
2689
2728
  if (!In(e)) throw Error("`live` bindings can only contain a single expression");
@@ -2701,48 +2740,48 @@ var Zr = (e, t, n) => {
2701
2740
  } else if (e.type === L.ATTRIBUTE && n.getAttribute(r) === t + "") return w;
2702
2741
  return zn(e), t;
2703
2742
  }
2704
- }), Z = (e, t) => {
2743
+ }), $ = (e, t) => {
2705
2744
  let n = e._$AN;
2706
2745
  if (n === void 0) return !1;
2707
- for (let e of n) e._$AO?.(t, !1), Z(e, t);
2746
+ for (let e of n) e._$AO?.(t, !1), $(e, t);
2708
2747
  return !0;
2709
- }, ei = (e) => {
2748
+ }, ci = (e) => {
2710
2749
  let t, n;
2711
2750
  do {
2712
2751
  if ((t = e._$AM) === void 0) break;
2713
2752
  n = t._$AN, n.delete(e), e = t;
2714
2753
  } while (n?.size === 0);
2715
- }, ti = (e) => {
2754
+ }, li = (e) => {
2716
2755
  for (let t; t = e._$AM; e = t) {
2717
2756
  let n = t._$AN;
2718
2757
  if (n === void 0) t._$AN = n = /* @__PURE__ */ new Set();
2719
2758
  else if (n.has(e)) break;
2720
- n.add(e), ii(t);
2759
+ n.add(e), fi(t);
2721
2760
  }
2722
2761
  };
2723
- function ni(e) {
2724
- this._$AN === void 0 ? this._$AM = e : (ei(this), this._$AM = e, ti(this));
2762
+ function ui(e) {
2763
+ this._$AN === void 0 ? this._$AM = e : (ci(this), this._$AM = e, li(this));
2725
2764
  }
2726
- function ri(e, t = !1, n = 0) {
2765
+ function di(e, t = !1, n = 0) {
2727
2766
  let r = this._$AH, i = this._$AN;
2728
2767
  if (i !== void 0 && i.size !== 0) {
2729
2768
  if (t) {
2730
- if (Array.isArray(r)) for (let e = n; e < r.length; e++) Z(r[e], !1), ei(r[e]);
2731
- else r != null && (Z(r, !1), ei(r));
2732
- } else Z(this, e);
2769
+ if (Array.isArray(r)) for (let e = n; e < r.length; e++) $(r[e], !1), ci(r[e]);
2770
+ else r != null && ($(r, !1), ci(r));
2771
+ } else $(this, e);
2733
2772
  }
2734
2773
  }
2735
- var ii = (e) => {
2736
- e.type == L.CHILD && (e._$AP ??= ri, e._$AQ ??= ni);
2737
- }, ai = class extends z {
2774
+ var fi = (e) => {
2775
+ e.type == L.CHILD && (e._$AP ??= di, e._$AQ ??= ui);
2776
+ }, pi = class extends z {
2738
2777
  constructor() {
2739
2778
  super(...arguments), this._$AN = void 0;
2740
2779
  }
2741
2780
  _$AT(e, t, n) {
2742
- super._$AT(e, t, n), ti(this), this.isConnected = e._$AU;
2781
+ super._$AT(e, t, n), li(this), this.isConnected = e._$AU;
2743
2782
  }
2744
2783
  _$AO(e, t = !0) {
2745
- e !== this.isConnected && (this.isConnected = e, e ? this.reconnected?.() : this.disconnected?.()), t && (Z(this, e), ei(this));
2784
+ e !== this.isConnected && (this.isConnected = e, e ? this.reconnected?.() : this.disconnected?.()), t && ($(this, e), ci(this));
2746
2785
  }
2747
2786
  setValue(e) {
2748
2787
  if (In(this._$Ct)) this._$Ct._$AI(e, this);
@@ -2753,7 +2792,7 @@ var ii = (e) => {
2753
2792
  }
2754
2793
  disconnected() {}
2755
2794
  reconnected() {}
2756
- }, oi = /* @__PURE__ */ new WeakMap(), si = R(class extends ai {
2795
+ }, mi = /* @__PURE__ */ new WeakMap(), hi = R(class extends pi {
2757
2796
  render(e) {
2758
2797
  return T;
2759
2798
  }
@@ -2764,13 +2803,13 @@ var ii = (e) => {
2764
2803
  rt(e) {
2765
2804
  if (this.G !== void 0) {
2766
2805
  if (this.isConnected || (e = void 0), typeof this.G == "function") {
2767
- let t = this.ht ?? globalThis, n = oi.get(t);
2768
- n === void 0 && (n = /* @__PURE__ */ new WeakMap(), oi.set(t, n)), n.get(this.G) !== void 0 && this.G.call(this.ht, void 0), n.set(this.G, e), e !== void 0 && this.G.call(this.ht, e);
2806
+ let t = this.ht ?? globalThis, n = mi.get(t);
2807
+ n === void 0 && (n = /* @__PURE__ */ new WeakMap(), mi.set(t, n)), n.get(this.G) !== void 0 && this.G.call(this.ht, void 0), n.set(this.G, e), e !== void 0 && this.G.call(this.ht, e);
2769
2808
  } else this.G.value = e;
2770
2809
  }
2771
2810
  }
2772
2811
  get lt() {
2773
- return typeof this.G == "function" ? oi.get(this.ht ?? globalThis)?.get(this.G) : this.G?.value;
2812
+ return typeof this.G == "function" ? mi.get(this.ht ?? globalThis)?.get(this.G) : this.G?.value;
2774
2813
  }
2775
2814
  disconnected() {
2776
2815
  this.lt === this.ct && this.rt(void 0);
@@ -2778,55 +2817,19 @@ var ii = (e) => {
2778
2817
  reconnected() {
2779
2818
  this.rt(this.ct);
2780
2819
  }
2781
- }), ci = /* @__PURE__ */ new Set(), li = !1;
2782
- function ui() {
2783
- for (let e of ci) e();
2820
+ }), gi = /* @__PURE__ */ new Set(), _i = !1;
2821
+ function vi() {
2822
+ for (let e of gi) e();
2784
2823
  }
2785
- function di(e) {
2786
- return !li && typeof window < "u" && (window.addEventListener("beforeprint", ui), li = !0), ci.add(e), () => ci.delete(e);
2787
- }
2788
- var fi = /* @__PURE__ */ new Set(), pi = null;
2789
- function mi(e) {
2790
- for (let t of fi) t(e.matches);
2791
- }
2792
- function hi(e) {
2793
- return !pi && typeof matchMedia < "u" && (pi = matchMedia("print"), pi.addEventListener("change", mi)), fi.add(e), () => fi.delete(e);
2794
- }
2795
- //#endregion
2796
- //#region src/core/format.ts
2797
- function Q(e, t = 0) {
2798
- return e.toLocaleString("nl-NL", {
2799
- minimumFractionDigits: t,
2800
- maximumFractionDigits: t
2801
- });
2802
- }
2803
- function gi(e) {
2804
- return Math.abs(e) >= 1e6 ? `${Q(e / 1e6, 1)} mln` : Math.abs(e) >= 1e4 ? `${Math.round(e / 1e3)}k` : Q(e);
2805
- }
2806
- function _i(e, t) {
2807
- let n = Q(e);
2808
- return yi(n, t) ? n : gi(e);
2809
- }
2810
- var vi = 6.5;
2811
- function yi(e, t) {
2812
- return e.length * vi <= t;
2813
- }
2814
- var bi = "'RijksSans', 'Source Sans 3', sans-serif", $;
2815
- function xi(e, t, n = "") {
2816
- if (Si(e, n) <= t) return e;
2817
- let r = e.length;
2818
- for (; r > 1;) {
2819
- --r;
2820
- let i = `${e.slice(0, r).trimEnd()}…`;
2821
- if (Si(i, n) <= t) return i;
2822
- }
2823
- return "…";
2824
+ function yi(e) {
2825
+ return !_i && typeof window < "u" && (window.addEventListener("beforeprint", vi), _i = !0), gi.add(e), () => gi.delete(e);
2824
2826
  }
2825
- function Si(e, t = "", n = 400) {
2826
- return $ === void 0 && ($ = typeof document > "u" ? null : document.createElement("canvas").getContext("2d") ?? null), $ ? ($.font = `${n} 12px ${t.trim() || bi}`, $.measureText(e).width) : e.length * vi;
2827
+ var bi = /* @__PURE__ */ new Set(), xi = null;
2828
+ function Si(e) {
2829
+ for (let t of bi) t(e.matches);
2827
2830
  }
2828
- function Ci(e, t = 0) {
2829
- return `${Q(e, t)}%`;
2831
+ function Ci(e) {
2832
+ return !xi && typeof matchMedia < "u" && (xi = matchMedia("print"), xi.addEventListener("change", Si)), bi.add(e), () => bi.delete(e);
2830
2833
  }
2831
2834
  //#endregion
2832
2835
  //#region src/tokens/colors.ts
@@ -2856,4 +2859,4 @@ function Ei(e) {
2856
2859
  return `var(--color-chart-${e})`;
2857
2860
  }
2858
2861
  //#endregion
2859
- export { Dn as $, Ue as $t, Cr as A, Nt as At, nr as B, ht as Bt, Fr as C, R as Ct, Er as D, Pt as Dt, kr as E, Ft as Et, cr as F, _t as Ft, qn as G, et as Gt, Zn as H, lt as Ht, or as I, dt as It, An as J, j as Jt, Un as K, it as Kt, ar as L, ft as Lt, mr as M, Ct as Mt, hr as N, Mt as Nt, Tr as O, St as Ot, lr as P, gt as Pt, kn as Q, Ve as Qt, ir as R, mt as Rt, Ir as S, Lt as St, Dr as T, L as Tt, Xn as U, st as Ut, $n as V, ct as Vt, Gn as W, ot as Wt, Mn as X, We as Xt, Nn as Y, M as Yt, wn as Z, A as Zt, Kr as _, an as _t, gi as a, e as an, _n as at, Wr as b, B as bt, Ci as c, pn as ct, di as d, mn as dt, T as en, On as et, hi as f, nn as ft, Xr as g, rn as gt, Qr as h, tn as ht, yi as i, o as in, yn as it, br as j, jt, wr as k, kt, Si as l, G as lt, $r as m, cn as mt, Ei as n, C as nn, xn as nt, _i as o, vn as ot, si as p, en as pt, Hn as q, tt as qt, Ti as r, Ce as rn, bn as rt, Q as s, q as st, wi as t, Ie as tn, Cn as tt, xi as u, K as ut, qr as v, sn as vt, Nr as w, z as wt, Gr as x, zt as xt, Jr as y, $t as yt, tr as z, pt as zt };
2862
+ export { Dn as $, Ue as $t, Cr as A, Nt as At, nr as B, ht as Bt, Fr as C, R as Ct, Er as D, Pt as Dt, kr as E, Ft as Et, cr as F, _t as Ft, qn as G, et as Gt, Zn as H, lt as Ht, or as I, dt as It, An as J, j as Jt, Un as K, it as Kt, ar as L, ft as Lt, mr as M, Ct as Mt, hr as N, Mt as Nt, Tr as O, St as Ot, lr as P, gt as Pt, kn as Q, Ve as Qt, ir as R, mt as Rt, Ir as S, Lt as St, Dr as T, L as Tt, Xn as U, st as Ut, $n as V, ct as Vt, Gn as W, ot as Wt, Mn as X, We as Xt, Nn as Y, M as Yt, wn as Z, A as Zt, Kr as _, an as _t, Ci as a, e as an, _n as at, Wr as b, B as bt, ni as c, pn as ct, Z as d, mn as dt, T as en, On as et, oi as f, nn as ft, Xr as g, rn as gt, Qr as h, tn as ht, yi as i, o as in, yn as it, br as j, jt, wr as k, kt, $r as l, G as lt, ii as m, cn as mt, Ei as n, C as nn, xn as nt, hi as o, vn as ot, ai as p, en as pt, Hn as q, tt as qt, Ti as r, Ce as rn, bn as rt, si as s, q as st, wi as t, Ie as tn, Cn as tt, ei as u, K as ut, qr as v, sn as vt, Nr as w, z as wt, Gr as x, zt as xt, Jr as y, $t as yt, tr as z, pt as zt };
@@ -1,4 +1,4 @@
1
- //#region src/components/forms/form/controls.ts
1
+ //#region src/components/shared/controls.ts
2
2
  var e = /* @__PURE__ */ new Set([
3
3
  "input",
4
4
  "select",
@@ -1,4 +1,4 @@
1
- //#region src/components/inputs/date-input/date-format.ts
1
+ //#region src/components/shared/date-format.ts
2
2
  var e = /^(\d{4})-(\d{2})-(\d{2})$/, t = /^(\d{1,2})[-./](\d{1,2})[-./](\d{2}|\d{4})$/, n = (e, t = 2) => String(e).padStart(t, "0");
3
3
  function r(e, t) {
4
4
  return new Date(Date.UTC(e, t, 0)).getUTCDate();
@@ -1,5 +1,5 @@
1
- import { Ht as e } from "./base-CbmWxUig.js";
2
- import { t } from "./focus-trap-BwOxE5BX.js";
1
+ import { Ht as e } from "./base-DRGvkF-r.js";
2
+ import { t } from "./focus-trap-Dv8zu64A.js";
3
3
  //#region src/components/shared/dialog.ts
4
4
  var n = class {
5
5
  #e = new t();
@@ -1,4 +1,4 @@
1
- import { dt as e, en as t, nn as n, ut as r } from "./base-CbmWxUig.js";
1
+ import { dt as e, en as t, nn as n, ut as r } from "./base-DRGvkF-r.js";
2
2
  //#region src/components/shared/disclosure.ts
3
3
  var i = 0;
4
4
  function a() {