lintje 0.1.1 → 0.2.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 (177) hide show
  1. package/dist-elements/actions.js +1 -1
  2. package/dist-elements/charts.js +1 -1
  3. package/dist-elements/chunks/{base-rBLTcEIv.js → base-Bg-IFOPG.js} +134 -105
  4. package/dist-elements/chunks/{date-format-B5DPGjAw.js → date-format-mHtZyBys.js} +28 -2
  5. package/dist-elements/chunks/disclosure-BXTX04gM.js +4 -0
  6. package/dist-elements/chunks/{disclosure-CHasOudX.js → disclosure-CMXhX-Vb.js} +7 -7
  7. package/dist-elements/chunks/download-y528pIHP.js +230 -0
  8. package/dist-elements/chunks/{focus-trap-w3vCamJ6.js → focus-trap-9BnE-xWv.js} +1 -1
  9. package/dist-elements/chunks/{input-jQVTln7H.js → input-BtuNFSWk.js} +13 -13
  10. package/dist-elements/chunks/{player-Bq9YGnpt.js → player-DXOZEyEy.js} +24 -24
  11. package/dist-elements/chunks/{sentence-CLNJOeXz.js → sentence-BI3lwEuT.js} +3 -3
  12. package/dist-elements/chunks/{stagger-9hYzxhMG.js → stagger-qGD3wmhg.js} +145 -123
  13. package/dist-elements/core.js +1 -1
  14. package/dist-elements/custom-elements.json +436 -26
  15. package/dist-elements/feedback.js +1 -1
  16. package/dist-elements/guides/dashboard.md +1 -1
  17. package/dist-elements/guides/events.md +3 -2
  18. package/dist-elements/guides/loading.md +3 -3
  19. package/dist-elements/guides/start.md +1 -1
  20. package/dist-elements/inputs.js +1 -0
  21. package/dist-elements/layout.js +1 -1
  22. package/dist-elements/lintje.js +22659 -22216
  23. package/dist-elements/map.js +1 -1
  24. package/dist-elements/overlays.js +1 -1
  25. package/dist-elements/tag/activity-log.js +11 -11
  26. package/dist-elements/tag/ai-label.js +7 -7
  27. package/dist-elements/tag/announcement.js +19 -19
  28. package/dist-elements/tag/app-search.js +21 -21
  29. package/dist-elements/tag/audio-player.js +34 -34
  30. package/dist-elements/tag/badge.js +1 -1
  31. package/dist-elements/tag/breadcrumbs.js +11 -11
  32. package/dist-elements/tag/button.js +1 -1
  33. package/dist-elements/tag/card-list.js +1 -1
  34. package/dist-elements/tag/card.js +25 -25
  35. package/dist-elements/tag/chart.d.ts +1 -0
  36. package/dist-elements/tag/chart.js +1868 -0
  37. package/dist-elements/tag/chat-answer.js +28 -28
  38. package/dist-elements/tag/chat-composer.js +20 -20
  39. package/dist-elements/tag/chat-message.js +9 -9
  40. package/dist-elements/tag/chat-strip.js +16 -16
  41. package/dist-elements/tag/chat-suggestions.js +1 -1
  42. package/dist-elements/tag/chat.js +27 -27
  43. package/dist-elements/tag/checkbox.js +6 -6
  44. package/dist-elements/tag/code.js +8 -8
  45. package/dist-elements/tag/combobox.js +13 -13
  46. package/dist-elements/tag/confirm-dialog.js +6 -6
  47. package/dist-elements/tag/conflict-alert.js +5 -5
  48. package/dist-elements/tag/copy-button.js +7 -7
  49. package/dist-elements/tag/data-table.js +179 -179
  50. package/dist-elements/tag/date-input.js +34 -42
  51. package/dist-elements/tag/date-range.js +33 -33
  52. package/dist-elements/tag/description-list.js +20 -20
  53. package/dist-elements/tag/document-viewer.js +19 -19
  54. package/dist-elements/tag/drawer.js +7 -7
  55. package/dist-elements/tag/empty-state.js +11 -11
  56. package/dist-elements/tag/error-summary.js +8 -8
  57. package/dist-elements/tag/expander.js +7 -7
  58. package/dist-elements/tag/explainer.js +9 -9
  59. package/dist-elements/tag/field.js +4 -4
  60. package/dist-elements/tag/file-upload.js +20 -20
  61. package/dist-elements/tag/filter-bar.js +35 -35
  62. package/dist-elements/tag/filter-sheet.js +6 -6
  63. package/dist-elements/tag/filter-zone.js +21 -21
  64. package/dist-elements/tag/footer.js +1 -1
  65. package/dist-elements/tag/form-actions.js +7 -7
  66. package/dist-elements/tag/form-section.js +3 -3
  67. package/dist-elements/tag/form.js +4 -4
  68. package/dist-elements/tag/gallery.js +6 -6
  69. package/dist-elements/tag/grid-item.js +1 -1
  70. package/dist-elements/tag/grid.js +1 -1
  71. package/dist-elements/tag/hero.js +6 -6
  72. package/dist-elements/tag/highlight.js +6 -6
  73. package/dist-elements/tag/icon-button.js +1 -1
  74. package/dist-elements/tag/icon.js +1 -1
  75. package/dist-elements/tag/job-list.js +6 -6
  76. package/dist-elements/tag/kpi-row.js +7 -5
  77. package/dist-elements/tag/kpi.js +259 -69
  78. package/dist-elements/tag/level-meter.js +5 -5
  79. package/dist-elements/tag/list.js +28 -28
  80. package/dist-elements/tag/logo.js +9 -9
  81. package/dist-elements/tag/map.d.ts +1 -0
  82. package/dist-elements/tag/map.js +21910 -0
  83. package/dist-elements/tag/menu-button.js +48 -47
  84. package/dist-elements/tag/modal.js +9 -9
  85. package/dist-elements/tag/multiselect.js +18 -18
  86. package/dist-elements/tag/note.js +4 -4
  87. package/dist-elements/tag/notifications.js +24 -24
  88. package/dist-elements/tag/number-input.js +8 -8
  89. package/dist-elements/tag/page-header.js +13 -13
  90. package/dist-elements/tag/pagination.js +27 -27
  91. package/dist-elements/tag/popover.js +1 -1
  92. package/dist-elements/tag/progress-bar.js +1 -1
  93. package/dist-elements/tag/prose.js +4 -4
  94. package/dist-elements/tag/qr-code.js +6 -6
  95. package/dist-elements/tag/radio-group.js +7 -7
  96. package/dist-elements/tag/range.js +13 -13
  97. package/dist-elements/tag/recording-status.js +8 -8
  98. package/dist-elements/tag/repeater.js +1 -1
  99. package/dist-elements/tag/segmented.js +7 -7
  100. package/dist-elements/tag/select.js +6 -6
  101. package/dist-elements/tag/session-expiry.js +13 -13
  102. package/dist-elements/tag/shell.js +168 -168
  103. package/dist-elements/tag/shortcuts.js +8 -8
  104. package/dist-elements/tag/skeleton.js +1 -1
  105. package/dist-elements/tag/slot-picker.d.ts +1 -0
  106. package/dist-elements/tag/slot-picker.js +74 -0
  107. package/dist-elements/tag/sortable-list.js +11 -11
  108. package/dist-elements/tag/spinner.js +1 -1
  109. package/dist-elements/tag/split-pane.js +4 -4
  110. package/dist-elements/tag/status-dot.js +1 -1
  111. package/dist-elements/tag/stepper.js +13 -13
  112. package/dist-elements/tag/streaming-text.js +15 -15
  113. package/dist-elements/tag/sub-nav.js +26 -26
  114. package/dist-elements/tag/tabs.js +13 -13
  115. package/dist-elements/tag/tag-input.js +14 -14
  116. package/dist-elements/tag/text-editor.js +7 -7
  117. package/dist-elements/tag/text-input.js +10 -10
  118. package/dist-elements/tag/textarea.js +6 -6
  119. package/dist-elements/tag/tile.js +1 -1
  120. package/dist-elements/tag/time-input.js +136 -42
  121. package/dist-elements/tag/toast.js +10 -10
  122. package/dist-elements/tag/toggle.js +6 -6
  123. package/dist-elements/tag/toggletip.js +11 -11
  124. package/dist-elements/tag/tooltip.js +1 -1
  125. package/dist-elements/tag/transcript.js +31 -31
  126. package/dist-elements/tag/translator.js +7 -7
  127. package/dist-elements/tag/tree-view.js +12 -12
  128. package/dist-elements/tag/user-menu.js +31 -30
  129. package/dist-elements/tag/video-player.js +13 -13
  130. package/dist-elements/tokens.css +2 -0
  131. package/dist-elements/types/bundle/charts.d.ts +1 -1
  132. package/dist-elements/types/bundle/index.d.ts +1 -1
  133. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  134. package/dist-elements/types/bundle/map.d.ts +1 -1
  135. package/dist-elements/types/components/charts/{chart-tile/chart-tile.d.ts → chart/chart.d.ts} +7 -7
  136. package/dist-elements/types/components/charts/kpi/gauge.d.ts +18 -0
  137. package/dist-elements/types/components/charts/kpi/kpi.d.ts +28 -3
  138. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +1 -1
  139. package/dist-elements/types/components/index.d.ts +8 -5
  140. package/dist-elements/types/components/inputs/date-input/date-format.d.ts +4 -0
  141. package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +41 -0
  142. package/dist-elements/types/components/inputs/time-input/time-format.d.ts +4 -0
  143. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +25 -6
  144. package/dist-elements/types/components/map/{map-tile/map-tile.d.ts → map/map.d.ts} +10 -6
  145. package/dist-elements/types/components/shared/charts/histogram-chart/histogram-chart.d.ts +33 -0
  146. package/dist-elements/types/components/shared/charts/index.d.ts +3 -1
  147. package/dist-elements/types/components/shared/charts/map-chart/area.d.ts +16 -0
  148. package/dist-elements/types/components/shared/charts/map-chart/drawings.d.ts +6 -2
  149. package/dist-elements/types/components/shared/charts/map-chart/geo.d.ts +6 -0
  150. package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +40 -2
  151. package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +17 -3
  152. package/dist-elements/types/components/shared/charts/map-chart/map-legend.d.ts +26 -0
  153. package/dist-elements/types/components/shared/charts/map-chart/marks.d.ts +47 -0
  154. package/dist-elements/types/components/shared/charts/map-chart/reveal.d.ts +1 -1
  155. package/dist-elements/types/components/shared/charts/scatter-chart/scatter-chart.d.ts +29 -0
  156. package/dist-elements/types/components/shared/charts/shared/axes.d.ts +21 -4
  157. package/dist-elements/types/components/shared/charts/shared/chart-icons.d.ts +4 -3
  158. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +27 -15
  159. package/dist-elements/types/components/shared/charts/shared/types.d.ts +112 -6
  160. package/dist-elements/types/core/format.d.ts +5 -2
  161. package/dist-elements/types/icons/register.d.ts +1 -1
  162. package/dist-elements/types/primitives/shared/place.d.ts +1 -1
  163. package/dist-elements/types/primitives/tooltip/tooltip.d.ts +2 -0
  164. package/dist-elements/types/types.d.ts +37 -7
  165. package/dist-icons/functioneel-cirkelselectie.svg +1 -0
  166. package/dist-icons/functioneel-lasso.svg +1 -0
  167. package/dist-icons/functioneel-punaise-outline.svg +1 -0
  168. package/dist-icons/functioneel-punaise.svg +1 -0
  169. package/dist-icons/functioneel-rechthoekselectie.svg +1 -0
  170. package/dist-icons/functioneel-selectie.svg +1 -0
  171. package/package.json +1 -1
  172. package/dist-elements/chunks/disclosure-Z7Ny17sS.js +0 -4
  173. package/dist-elements/chunks/download-lFooAfD1.js +0 -226
  174. package/dist-elements/tag/chart-tile.d.ts +0 -1
  175. package/dist-elements/tag/chart-tile.js +0 -1474
  176. package/dist-elements/tag/map-tile.d.ts +0 -1
  177. package/dist-elements/tag/map-tile.js +0 -22292
@@ -1,26 +1,26 @@
1
- import { $ as e, B as t, Bt as n, G as r, Gt as i, Ht as a, I as o, Kt as s, Z as c, et as l, j as u, q as d, zt as f } from "../chunks/base-rBLTcEIv.js";
2
- //#region src/components/actions/menu-button/menu-button.css?inline
3
- var p = "/* The host is the trigger's box, with the busy sentence beside it; the menu is a fixed popover\n and takes no space. */\n:host {\n display: inline-flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2) var(--space-3);\n min-width: 0;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-menu-button__trigger.lintje-button--secondary.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-button--tertiary.is-open { background: var(--color-bg-subtle); }\n.lintje-menu-button__trigger.lintje-icon-button--outlined.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-icon-button--flat.is-open { background: var(--color-bg-subtle); }\n\n\n.lintje-menu-button__trigger.lintje-button { padding-right: var(--space-3); }\n.lintje-menu-button__trigger--flat.lintje-button { padding: 0 var(--space-2); border-color: transparent; }\n/* Split: two halves of one button, the page showing through the 1 px between them. */\n.lintje-menu-button__split { display: inline-flex; gap: 1px; min-width: 0; }\n.lintje-menu-button__split .lintje-menu-button__trigger--split.lintje-button { width: var(--h-button); padding: 0; }\n/* Busy, a split button's ring takes its icon's square: the label stays and nothing moves. */\n.lintje-menu-button__busy {\n flex: none;\n width: 16px; height: 16px;\n margin: 2px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n.lintje-menu-button__split .is-working { cursor: progress; }\n@media (prefers-reduced-motion: reduce) {\n .lintje-menu-button__busy { animation: none; }\n}\n.lintje-menu-button__trigger.lintje-button--primary.is-open { background: var(--color-action-primary-hover); }\n/* Disabled, like the link button, it only loses its ink. */\n.lintje-menu-button__trigger--flat.lintje-button.is-disabled { background: none; border-color: transparent; }\n\n/* Without a sentence the live region stays in the tree but takes no room, and no gap. */\n.lintje-menu-button__status { position: absolute; }\n.lintje-menu-button__status.is-busy {\n position: static;\n display: flex; align-items: center; gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* The breadcrumbs' \"…\" sits in a line of text, so it reaches the 48 px target upwards and\n downwards only, through a transparent hit area. */\n.lintje-menu-button__trigger--ellipsis {\n position: relative;\n display: inline-flex; align-items: center; justify-content: center;\n min-width: var(--h-chip-field); height: var(--h-chip-field);\n padding: 0 var(--space-2);\n background: var(--color-bg-subtle);\n color: var(--color-accent-text);\n font: var(--text-small);\n font-weight: 700;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu-button__trigger--ellipsis::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-menu-button__trigger--ellipsis:hover:not(.is-disabled),\n.lintje-menu-button__trigger--ellipsis.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger--ellipsis.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n\n.lintje-menu {\n display: flex; flex-direction: column;\n min-width: 240px;\n padding: var(--space-1) 0;\n}\n\n.lintje-menu__row {\n display: flex; align-items: center; gap: var(--space-2);\n width: 100%;\n height: var(--h-control);\n padding: 0 var(--space-4);\n font: var(--text-ui);\n color: var(--color-text-primary);\n text-align: left;\n text-decoration: none;\n white-space: nowrap;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu__row:hover:not(.is-disabled) { background: var(--color-bg-subtle); }\n.lintje-menu__icon { flex: none; }\n.lintje-menu__slot { width: 16px; height: 16px; }\n.lintje-menu__check { color: var(--color-accent-text); }\n/* One of a choice: the form's radio, at the size of the menu's icons. */\n.lintje-menu__radio {\n box-sizing: border-box;\n width: 16px; height: 16px;\n border: 2px solid var(--color-border-choice);\n border-radius: var(--radius-round);\n background: var(--color-bg-surface);\n display: inline-flex; align-items: center; justify-content: center;\n}\n.lintje-menu__radio.is-checked { border-color: var(--color-accent-line); }\n.lintje-menu__radio.is-checked::after {\n content: '';\n width: 6px; height: 6px;\n border-radius: var(--radius-round);\n background: var(--color-accent);\n}\n@media (forced-colors: active) {\n .lintje-menu__radio.is-checked::after { forced-color-adjust: none; background: Highlight; }\n}\n.lintje-menu__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.lintje-menu__hint {\n flex: none;\n margin-left: var(--space-4);\n font-family: var(--font-mono);\n font-size: 0.875rem;\n color: var(--color-text-muted);\n}\n\n.lintje-menu__row.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n.lintje-menu__row.is-disabled .lintje-menu__hint { color: var(--color-text-disabled); }\n.lintje-menu__row.is-danger { color: var(--color-error-text); font-weight: 700; }\n\n.lintje-menu__separator {\n height: 1px;\n margin: var(--space-1) 0;\n background: var(--color-border-default);\n}\n\n.lintje-menu__tip { display: flex; }\n\n/* The heading stands in line with the labels: the row's padding, the icon and the gap. */\n/* A group's name stands at the menu's edge, over the checks and circles of its rows. */\n.lintje-menu__heading {\n padding: var(--space-1) var(--space-4);\n font: var(--text-small);\n font-weight: 700;\n color: var(--color-text-muted);\n}\n\n@media (max-width: 767px) {\n .lintje-menu__row { height: var(--h-touch); }\n}\n\n/* Forced colours: the disabled \"…\" is `aria-disabled`, so the browser does not gray it. */\n@media (forced-colors: active) {\n .lintje-menu-button__trigger--ellipsis.is-disabled { color: GrayText; }\n}\n", m = (e) => e !== "separator" && !("heading" in e), h = 0;
4
- function g(e, t, n) {
1
+ import { $ as e, B as t, Bt as n, G as r, Gt as i, Ht as a, I as o, Z as s, et as c, j as l, q as u, qt as d, zt as f } from "../chunks/base-Bg-IFOPG.js";
2
+ //#region src/components/shared/menu.css?inline
3
+ var p = "/* The rows of a menu, in the popover of a menu button, the user menu or a map's select button.\n The trigger is the owner's. */\n\n.lintje-menu {\n display: flex; flex-direction: column;\n min-width: 240px;\n padding: var(--space-1) 0;\n}\n\n.lintje-menu__row {\n display: flex; align-items: center; gap: var(--space-2);\n width: 100%;\n height: var(--h-control);\n padding: 0 var(--space-4);\n font: var(--text-ui);\n color: var(--color-text-primary);\n text-align: left;\n text-decoration: none;\n white-space: nowrap;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu__row:hover:not(.is-disabled) { background: var(--color-bg-subtle); }\n.lintje-menu__icon { flex: none; }\n.lintje-menu__slot { width: 16px; height: 16px; }\n.lintje-menu__check { color: var(--color-accent-text); }\n/* One of a choice: the form's radio, at the size of the menu's icons. */\n.lintje-menu__radio {\n box-sizing: border-box;\n width: 16px; height: 16px;\n border: 2px solid var(--color-border-choice);\n border-radius: var(--radius-round);\n background: var(--color-bg-surface);\n display: inline-flex; align-items: center; justify-content: center;\n}\n.lintje-menu__radio.is-checked { border-color: var(--color-accent-line); }\n.lintje-menu__radio.is-checked::after {\n content: '';\n width: 6px; height: 6px;\n border-radius: var(--radius-round);\n background: var(--color-accent);\n}\n@media (forced-colors: active) {\n .lintje-menu__radio.is-checked::after { forced-color-adjust: none; background: Highlight; }\n}\n.lintje-menu__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }\n.lintje-menu__hint {\n flex: none;\n margin-left: var(--space-4);\n font-family: var(--font-mono);\n font-size: 0.875rem;\n color: var(--color-text-muted);\n}\n\n.lintje-menu__row.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n.lintje-menu__row.is-disabled .lintje-menu__hint { color: var(--color-text-disabled); }\n.lintje-menu__row.is-danger { color: var(--color-error-text); font-weight: 700; }\n\n.lintje-menu__separator {\n height: 1px;\n margin: var(--space-1) 0;\n background: var(--color-border-default);\n}\n\n.lintje-menu__tip { display: flex; }\n\n/* The heading stands in line with the labels: the row's padding, the icon and the gap. */\n/* A group's name stands at the menu's edge, over the checks and circles of its rows. */\n.lintje-menu__heading {\n padding: var(--space-1) var(--space-4);\n font: var(--text-small);\n font-weight: 700;\n color: var(--color-text-muted);\n}\n\n@media (max-width: 767px) {\n .lintje-menu__row { height: var(--h-touch); }\n}\n", m = "/* The host is the trigger's box, with the busy sentence beside it; the menu is a fixed popover\n and takes no space. */\n:host {\n display: inline-flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2) var(--space-3);\n min-width: 0;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-menu-button__trigger.lintje-button--secondary.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-button--tertiary.is-open { background: var(--color-bg-subtle); }\n.lintje-menu-button__trigger.lintje-icon-button--outlined.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger.lintje-icon-button--flat.is-open { background: var(--color-bg-subtle); }\n\n\n.lintje-menu-button__trigger.lintje-button { padding-right: var(--space-3); }\n.lintje-menu-button__trigger--flat.lintje-button { padding: 0 var(--space-2); border-color: transparent; }\n/* Split: two halves of one button, the page showing through the 1 px between them. */\n.lintje-menu-button__split { display: inline-flex; gap: 1px; min-width: 0; }\n.lintje-menu-button__split .lintje-menu-button__trigger--split.lintje-button { width: var(--h-button); padding: 0; }\n/* Busy, a split button's ring takes its icon's square: the label stays and nothing moves. */\n.lintje-menu-button__busy {\n flex: none;\n width: 16px; height: 16px;\n margin: 2px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n.lintje-menu-button__split .is-working { cursor: progress; }\n@media (prefers-reduced-motion: reduce) {\n .lintje-menu-button__busy { animation: none; }\n}\n.lintje-menu-button__trigger.lintje-button--primary.is-open { background: var(--color-action-primary-hover); }\n/* Disabled, like the link button, it only loses its ink. */\n.lintje-menu-button__trigger--flat.lintje-button.is-disabled { background: none; border-color: transparent; }\n\n/* Without a sentence the live region stays in the tree but takes no room, and no gap. */\n.lintje-menu-button__status { position: absolute; }\n.lintje-menu-button__status.is-busy {\n position: static;\n display: flex; align-items: center; gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* The breadcrumbs' \"…\" sits in a line of text, so it reaches the 48 px target upwards and\n downwards only, through a transparent hit area. */\n.lintje-menu-button__trigger--ellipsis {\n position: relative;\n display: inline-flex; align-items: center; justify-content: center;\n min-width: var(--h-chip-field); height: var(--h-chip-field);\n padding: 0 var(--space-2);\n background: var(--color-bg-subtle);\n color: var(--color-accent-text);\n font: var(--text-small);\n font-weight: 700;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-menu-button__trigger--ellipsis::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-menu-button__trigger--ellipsis:hover:not(.is-disabled),\n.lintje-menu-button__trigger--ellipsis.is-open { background: var(--color-bg-selected); }\n.lintje-menu-button__trigger--ellipsis.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n\n/* Forced colours: the disabled \"…\" is `aria-disabled`, so the browser does not gray it. */\n@media (forced-colors: active) {\n .lintje-menu-button__trigger--ellipsis.is-disabled { color: GrayText; }\n}\n", h = (e) => e !== "separator" && !("heading" in e), g = 0;
4
+ function _(e, t, n) {
5
5
  let r = [], i = null, a = () => {
6
6
  if (!i) return;
7
7
  let e = `${t}-group-${r.length}`;
8
- r.push(s`<div class="lintje-menu__group" role="group" aria-labelledby=${e}>
8
+ r.push(d`<div class="lintje-menu__group" role="group" aria-labelledby=${e}>
9
9
  <div class="lintje-menu__heading" id=${e} role="presentation">${i.heading}</div>
10
10
  ${i.rows}
11
11
  </div>`), i = null;
12
12
  };
13
- for (let t of e) t === "separator" ? (a(), r.push(s`<div class="lintje-menu__separator" role="separator"></div>`)) : m(t) ? i ? i.rows.push(n(t)) : r.push(n(t)) : (a(), i = {
13
+ for (let t of e) t === "separator" ? (a(), r.push(d`<div class="lintje-menu__separator" role="separator"></div>`)) : h(t) ? i ? i.rows.push(n(t)) : r.push(n(t)) : (a(), i = {
14
14
  heading: t.heading,
15
15
  rows: []
16
16
  });
17
17
  return a(), r;
18
18
  }
19
- function _(e, t, n) {
19
+ function v(e, t, n) {
20
20
  let r = e.length;
21
21
  return r === 0 ? -1 : ((t + n) % r + r) % r;
22
22
  }
23
- function v(e, t, n) {
23
+ function y(e, t, n) {
24
24
  let r = n.toLocaleLowerCase("nl"), i = e.length;
25
25
  for (let n = 1; n <= i; n++) {
26
26
  let a = (t + n) % i, o = e[a];
@@ -28,13 +28,14 @@ function v(e, t, n) {
28
28
  }
29
29
  return -1;
30
30
  }
31
- var y = class extends f {
31
+ var b = class extends f {
32
32
  static {
33
33
  this.styles = [
34
34
  e,
35
- a(d),
36
35
  a(u),
37
- a(p)
36
+ a(l),
37
+ a(p),
38
+ a(m)
38
39
  ];
39
40
  }
40
41
  static {
@@ -81,7 +82,7 @@ var y = class extends f {
81
82
  return this.disabled || !!this.busyLabel;
82
83
  }
83
84
  get rows() {
84
- return this.items.filter(m);
85
+ return this.items.filter(h);
85
86
  }
86
87
  get trigger() {
87
88
  return this.renderRoot.querySelector(".lintje-menu-button__trigger");
@@ -91,13 +92,13 @@ var y = class extends f {
91
92
  }
92
93
  show(e) {
93
94
  let t = this.rows;
94
- this.pendingFocus = _(t, e === "first" ? -1 : t.length, e === "first" ? 1 : -1), this.open = !0;
95
+ this.pendingFocus = v(t, e === "first" ? -1 : t.length, e === "first" ? 1 : -1), this.open = !0;
95
96
  }
96
97
  hide(e) {
97
98
  this.open = !1, e && this.trigger?.focus();
98
99
  }
99
100
  constructor() {
100
- super(), this.label = "", this.accessibleLabel = "", this.variant = "secondary", this.icon = !1, this.leadingIcon = "", this.disabled = !1, this.busyLabel = "", this.placement = "bottom-start", this.items = [], this.open = !1, this.split = !1, this.action = "", this.menuId = `lintje-menu-${++h}`, this.pendingFocus = null, this.onFocusOut = (e) => {
101
+ super(), this.label = "", this.accessibleLabel = "", this.variant = "secondary", this.icon = !1, this.leadingIcon = "", this.disabled = !1, this.busyLabel = "", this.placement = "bottom-start", this.items = [], this.open = !1, this.split = !1, this.action = "", this.menuId = `lintje-menu-${++g}`, this.pendingFocus = null, this.onFocusOut = (e) => {
101
102
  let t = e.relatedTarget;
102
103
  this.open && t && !r(t, this) && !r(this, t) && this.hide(!1);
103
104
  }, this.onTriggerKeydown = (e) => {
@@ -108,16 +109,16 @@ var y = class extends f {
108
109
  let t = this.rows, n = this.currentRow();
109
110
  switch (e.key) {
110
111
  case "ArrowDown":
111
- e.preventDefault(), this.focusRow(_(t, n, 1));
112
+ e.preventDefault(), this.focusRow(v(t, n, 1));
112
113
  return;
113
114
  case "ArrowUp":
114
- e.preventDefault(), this.focusRow(_(t, n < 0 ? t.length : n, -1));
115
+ e.preventDefault(), this.focusRow(v(t, n < 0 ? t.length : n, -1));
115
116
  return;
116
117
  case "Home":
117
- e.preventDefault(), this.focusRow(_(t, -1, 1));
118
+ e.preventDefault(), this.focusRow(v(t, -1, 1));
118
119
  return;
119
120
  case "End":
120
- e.preventDefault(), this.focusRow(_(t, t.length, -1));
121
+ e.preventDefault(), this.focusRow(v(t, t.length, -1));
121
122
  return;
122
123
  case "Tab":
123
124
  e.shiftKey || this.trigger?.focus(), this.hide(!1);
@@ -127,7 +128,7 @@ var y = class extends f {
127
128
  t instanceof HTMLAnchorElement && (e.preventDefault(), t.click());
128
129
  return;
129
130
  }
130
- default: e.key.length === 1 && e.key !== " " && !e.ctrlKey && !e.metaKey && this.focusRow(v(t, n, e.key));
131
+ default: e.key.length === 1 && e.key !== " " && !e.ctrlKey && !e.metaKey && this.focusRow(y(t, n, e.key));
131
132
  }
132
133
  }, this.addEventListener("focusout", this.onFocusOut);
133
134
  }
@@ -159,10 +160,10 @@ var y = class extends f {
159
160
  }
160
161
  renderSplit() {
161
162
  let e = this.disabled ? "true" : i, t = !!this.busyLabel, n = this.variant === "flat" ? "tertiary" : this.variant;
162
- return s`<span class="lintje-menu-button__split">
163
+ return d`<span class="lintje-menu-button__split">
163
164
  <button
164
165
  type="button"
165
- class=${c({
166
+ class=${s({
166
167
  "lintje-button": !0,
167
168
  [`lintje-button--${n}`]: !0,
168
169
  "lintje-menu-button__main": !0,
@@ -175,7 +176,7 @@ var y = class extends f {
175
176
  this.unavailable || this.emit("lintje-action", this.action);
176
177
  }}
177
178
  >
178
- ${t ? s`<span class="lintje-menu-button__busy" aria-hidden="true"></span>` : this.leadingIcon ? l(this.leadingIcon, {
179
+ ${t ? d`<span class="lintje-menu-button__busy" aria-hidden="true"></span>` : this.leadingIcon ? c(this.leadingIcon, {
179
180
  size: 20,
180
181
  className: "lintje-button__icon"
181
182
  }) : i}
@@ -183,7 +184,7 @@ var y = class extends f {
183
184
  </button>
184
185
  <button
185
186
  type="button"
186
- class=${c({
187
+ class=${s({
187
188
  "lintje-button": !0,
188
189
  [`lintje-button--${n}`]: !0,
189
190
  "lintje-menu-button__trigger": !0,
@@ -200,7 +201,7 @@ var y = class extends f {
200
201
  @click=${this.onTriggerClick}
201
202
  @keydown=${this.onTriggerKeydown}
202
203
  >
203
- ${l("functioneel-delta-omlaag", {
204
+ ${c("functioneel-delta-omlaag", {
204
205
  size: 20,
205
206
  rotate: this.open ? 180 : void 0,
206
207
  className: "lintje-button__icon"
@@ -215,9 +216,9 @@ var y = class extends f {
215
216
  "is-open": this.open,
216
217
  "is-disabled": this.unavailable
217
218
  }, t = this.unavailable ? "true" : i;
218
- return this.icon ? s`<button
219
+ return this.icon ? d`<button
219
220
  type="button"
220
- class=${c({
221
+ class=${s({
221
222
  ...e,
222
223
  "lintje-icon-button": !0,
223
224
  "lintje-icon-button--outlined": this.variant !== "tertiary",
@@ -232,10 +233,10 @@ var y = class extends f {
232
233
  @click=${this.onTriggerClick}
233
234
  @keydown=${this.onTriggerKeydown}
234
235
  >
235
- ${l("functioneel-meer", { size: 16 })}
236
- </button>` : this.variant === "ellipsis" ? s`<button
236
+ ${c("functioneel-meer", { size: 16 })}
237
+ </button>` : this.variant === "ellipsis" ? d`<button
237
238
  type="button"
238
- class=${c({
239
+ class=${s({
239
240
  ...e,
240
241
  "lintje-menu-button__trigger--ellipsis": !0
241
242
  })}
@@ -248,9 +249,9 @@ var y = class extends f {
248
249
  @keydown=${this.onTriggerKeydown}
249
250
  >
250
251
  …
251
- </button>` : s`<button
252
+ </button>` : d`<button
252
253
  type="button"
253
- class=${c({
254
+ class=${s({
254
255
  ...e,
255
256
  "lintje-button": !0,
256
257
  [`lintje-button--${this.variant === "flat" ? "tertiary" : this.variant}`]: !0,
@@ -264,12 +265,12 @@ var y = class extends f {
264
265
  @click=${this.onTriggerClick}
265
266
  @keydown=${this.onTriggerKeydown}
266
267
  >
267
- ${this.leadingIcon ? l(this.leadingIcon, {
268
+ ${this.leadingIcon ? c(this.leadingIcon, {
268
269
  size: 16,
269
270
  className: "lintje-button__icon"
270
271
  }) : i}
271
272
  <span class="lintje-button__label">${this.label}</span>
272
- ${l("functioneel-delta-omlaag", {
273
+ ${c("functioneel-delta-omlaag", {
273
274
  size: 16,
274
275
  rotate: this.open ? 180 : void 0,
275
276
  className: "lintje-button__icon"
@@ -277,33 +278,33 @@ var y = class extends f {
277
278
  </button>`;
278
279
  }
279
280
  renderRow(e) {
280
- let t = c({
281
+ let t = s({
281
282
  "lintje-menu__row": !0,
282
283
  "focus-inset": !0,
283
284
  "is-danger": !!e.danger,
284
285
  "is-disabled": !!e.disabled
285
286
  }), n = e.checked !== void 0, r = n ? e.radio ? "menuitemradio" : "menuitemcheckbox" : "menuitem", a = i;
286
- n && e.radio ? a = s`<span
287
- class=${c({
287
+ n && e.radio ? a = d`<span
288
+ class=${s({
288
289
  "lintje-menu__icon": !0,
289
290
  "lintje-menu__radio": !0,
290
291
  "is-checked": !!e.checked
291
292
  })}
292
- ></span>` : n ? a = e.checked ? l("functioneel-vinkje", {
293
+ ></span>` : n ? a = e.checked ? c("functioneel-vinkje", {
293
294
  size: 16,
294
295
  className: "lintje-menu__icon lintje-menu__check"
295
- }) : s`<span class="lintje-menu__icon lintje-menu__slot"></span>` : e.icon && (a = l(e.icon, {
296
+ }) : d`<span class="lintje-menu__icon lintje-menu__slot"></span>` : e.icon && (a = c(e.icon, {
296
297
  size: 16,
297
298
  className: "lintje-menu__icon"
298
299
  }));
299
- let o = s`${a}<span class="lintje-menu__label">${e.label}</span>${e.hint ? s`<span class="lintje-menu__hint">${e.hint}</span>` : i}`, u = e.href && !e.disabled ? s`<a
300
+ let o = d`${a}<span class="lintje-menu__label">${e.label}</span>${e.hint ? d`<span class="lintje-menu__hint">${e.hint}</span>` : i}`, l = e.href && !e.disabled ? d`<a
300
301
  class=${t}
301
302
  role="menuitem"
302
303
  tabindex="-1"
303
304
  href=${e.href}
304
305
  @click=${(t) => this.choose(e, t)}
305
306
  >${o}</a
306
- >` : s`<button
307
+ >` : d`<button
307
308
  type="button"
308
309
  class=${t}
309
310
  role=${r}
@@ -314,11 +315,11 @@ var y = class extends f {
314
315
  >
315
316
  ${o}
316
317
  </button>`;
317
- return e.disabled && e.reason ? s`<lintje-tooltip class="lintje-menu__tip" text=${e.reason}>${u}</lintje-tooltip>` : u;
318
+ return e.disabled && e.reason ? d`<lintje-tooltip class="lintje-menu__tip" text=${e.reason}>${l}</lintje-tooltip>` : l;
318
319
  }
319
320
  render() {
320
321
  let e = !!this.busyLabel;
321
- return s`${this.renderTrigger()}<lintje-popover
322
+ return d`${this.renderTrigger()}<lintje-popover
322
323
  id=${this.menuId}
323
324
  panel-role="menu"
324
325
  label=${t(this.accessibleLabel || this.label || void 0)}
@@ -326,18 +327,18 @@ var y = class extends f {
326
327
  ?open=${this.open}
327
328
  @lintje-close=${this.onPopoverClose}
328
329
  >
329
- <div class="lintje-menu" @keydown=${this.onMenuKeydown}>${g(this.items, this.menuId, (e) => this.renderRow(e))}</div>
330
+ <div class="lintje-menu" @keydown=${this.onMenuKeydown}>${_(this.items, this.menuId, (e) => this.renderRow(e))}</div>
330
331
  </lintje-popover
331
332
  ><div
332
- class=${c({
333
+ class=${s({
333
334
  "lintje-menu-button__status": !0,
334
335
  "is-busy": e && !this.split,
335
336
  "visually-hidden": e && this.split
336
337
  })}
337
338
  role="status"
338
- >${e ? s`<lintje-spinner></lintje-spinner><span>${this.busyLabel}</span>` : i}</div>`;
339
+ >${e ? d`<lintje-spinner></lintje-spinner><span>${this.busyLabel}</span>` : i}</div>`;
339
340
  }
340
341
  };
341
- n("lintje-menu-button", y);
342
+ n("lintje-menu-button", b);
342
343
  //#endregion
343
- export { y as LintjeMenuButton, _ as nextRow, g as renderMenuEntries, v as rowByLetter, p as t };
344
+ export { b as LintjeMenuButton, p as n, v as nextRow, _ as renderMenuEntries, y as rowByLetter, m as t };
@@ -1,5 +1,5 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, Kt as i, Nt as a, et as o, zt as s } from "../chunks/base-rBLTcEIv.js";
2
- import { t as c } from "../chunks/focus-trap-w3vCamJ6.js";
1
+ import { $ as e, Bt as t, Gt as n, Ht as r, Nt as i, et as a, qt as o, zt as s } from "../chunks/base-Bg-IFOPG.js";
2
+ import { t as c } from "../chunks/focus-trap-9BnE-xWv.js";
3
3
  import { t as l } from "../chunks/dialog-close-u75fVEw4.js";
4
4
  //#region src/components/overlays/modal/modal.css?inline
5
5
  var u = "/* `display: contents` keeps the host out of its parent's flex or grid layout. */\n:host {\n display: contents;\n}\n\n/* ------------------------------------------------------------------------ */\n\n/* Covers the whole viewport, above the shell's menu (z-index 30). */\n.lintje-modal__scrim {\n position: fixed; z-index: 80;\n inset: 0;\n background: var(--color-overlay-page);\n display: flex; align-items: center; justify-content: center;\n padding: var(--space-6);\n animation: lintje-fade-in var(--dur-scrim) var(--ease-in-motion);\n}\n.lintje-modal {\n width: min(1200px, 100%);\n height: 100%;\n max-height: 100%;\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-strong);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-modal) var(--ease-in-motion);\n}\n.lintje-modal:focus { outline: none; }\n\n.lintje-modal__header {\n display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4);\n padding: var(--space-5) var(--space-6);\n border-bottom: 1px solid var(--color-border-default);\n}\n.lintje-modal__title { font: var(--text-h2); }\n.lintje-modal__subtitle { font: var(--text-tile-sub); color: var(--color-text-muted); margin-top: var(--space-1); }\n.lintje-modal__close:hover { color: var(--color-text-primary); }\n\n.lintje-modal__body {\n flex: 1; min-height: 0; overflow: auto;\n padding: var(--space-5) var(--space-6);\n /* LintjeModal sets --chart-h-expanded on this body; a chart reads its own height token. */\n --chart-h-main: var(--chart-h-expanded);\n --chart-h-small: var(--chart-h-expanded);\n}\n\n.lintje-modal__footer {\n display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);\n padding: var(--space-3) var(--space-6);\n border-top: 1px solid var(--color-border-default);\n font: var(--text-meta); color: var(--color-text-muted);\n}\n.lintje-modal__actions { display: flex; gap: var(--space-2); }\n.lintje-modal__actions[hidden] { display: none; }\n/* Narrow: a dialog with a form, as high as it needs and as wide as a form reads. */\n:host([narrow]) .lintje-modal { width: min(calc(15 * var(--space-10)), 100%); height: auto; }\n/* A form's dialog has a title of one line: the close button stands in line with it. */\n:host([narrow]) .lintje-modal__header { align-items: center; padding-block: var(--space-4); }\n:host([narrow]) .lintje-modal__footer { font: var(--text-ui); color: var(--color-text-primary); }\n\n@media (max-width: 767px) {\n .lintje-modal__scrim { padding: 0; align-items: stretch; }\n .lintje-modal { max-height: 100%; height: 100%; }\n .lintje-modal__body { --chart-h-main: 320px; --chart-h-small: 320px; }\n}\n", d = class extends s {
@@ -60,7 +60,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
60
60
  this.emit("lintje-close");
61
61
  }
62
62
  #a() {
63
- this.#e = a(), document.addEventListener("keydown", this.#r);
63
+ this.#e = i(), document.addEventListener("keydown", this.#r);
64
64
  let e = this.renderRoot.querySelector(".lintje-modal");
65
65
  e && this.#t.activate(e);
66
66
  }
@@ -68,7 +68,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
68
68
  this.#e && (this.#n?.disconnect(), this.#n = null, document.removeEventListener("keydown", this.#r), this.#e(), this.#e = null, this.#t.deactivate());
69
69
  }
70
70
  render() {
71
- return this.open ? i`<div class="lintje-modal__scrim" @click=${() => this.close()}>
71
+ return this.open ? o`<div class="lintje-modal__scrim" @click=${() => this.close()}>
72
72
  <div
73
73
  class="lintje-modal"
74
74
  role="dialog"
@@ -80,7 +80,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
80
80
  <header class="lintje-modal__header">
81
81
  <div>
82
82
  <h2 class="lintje-modal__title">${this.heading}</h2>
83
- ${this.subtitle ? i`<p class="lintje-modal__subtitle">${this.subtitle}</p>` : n}
83
+ ${this.subtitle ? o`<p class="lintje-modal__subtitle">${this.subtitle}</p>` : n}
84
84
  </div>
85
85
  <button
86
86
  type="button"
@@ -88,7 +88,7 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
88
88
  aria-label="Sluiten"
89
89
  @click=${() => this.close()}
90
90
  >
91
- ${o("functioneel-kruis", { size: 16 })}
91
+ ${a("functioneel-kruis", { size: 16 })}
92
92
  </button>
93
93
  </header>
94
94
 
@@ -101,15 +101,15 @@ var u = "/* `display: contents` keeps the host out of its parent's flex or grid
101
101
  <span><slot name="footer" @slotchange=${this.onFooterSlotChange}></slot></span>
102
102
  <div class="lintje-modal__actions" ?hidden=${!this.csv && !this.png && !this.actionsSlotted}>
103
103
  <slot name="actions" @slotchange=${this.onActionsSlotChange}></slot>
104
- ${this.csv || this.png ? i`
105
- ${this.csv ? i`<lintje-button
104
+ ${this.csv || this.png ? o`
105
+ ${this.csv ? o`<lintje-button
106
106
  variant="tertiary"
107
107
  size="compact"
108
108
  icon="functioneel-downloaden"
109
109
  @click=${() => this.emit("lintje-download-csv")}
110
110
  >CSV</lintje-button
111
111
  >` : n}
112
- ${this.png ? i`<lintje-button
112
+ ${this.png ? o`<lintje-button
113
113
  variant="tertiary"
114
114
  size="compact"
115
115
  icon="functioneel-downloaden"
@@ -1,6 +1,6 @@
1
- import { $ as e, Bt as t, G as n, Gt as r, Ht as i, Kt as a, U as o, W as s, Z as c, et as l, ut as u } from "../chunks/base-rBLTcEIv.js";
2
- import "../chunks/focus-trap-w3vCamJ6.js";
3
- import { r as d, t as f } from "../chunks/input-jQVTln7H.js";
1
+ import { $ as e, Bt as t, G as n, Gt as r, Ht as i, U as a, W as o, Z as s, et as c, qt as l, ut as u } from "../chunks/base-Bg-IFOPG.js";
2
+ import "../chunks/focus-trap-9BnE-xWv.js";
3
+ import { r as d, t as f } from "../chunks/input-BtuNFSWk.js";
4
4
  import "./checkbox.js";
5
5
  //#region src/components/inputs/multiselect/multiselect.css?inline
6
6
  var p = "/* The multi-select's trigger, chips and list. */\n\n/* --- Multi-select --------------------------------------------------------- */\n.lintje-multiselect { position: relative; }\n.lintje-multiselect__field {\n display: flex; align-items: center; gap: 6px; flex-wrap: nowrap;\n width: 100%; min-height: var(--h-control);\n padding: 0 var(--space-2);\n border: 1px solid var(--color-border-field);\n background: var(--color-bg-surface);\n text-align: left;\n overflow: hidden;\n}\n.lintje-multiselect__shown { display: contents; }\n.lintje-multiselect__field.is-error { border: 2px solid var(--color-error); }\n.lintje-multiselect__field:disabled {\n border: 1px solid var(--color-border-strong);\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n cursor: not-allowed;\n}\n.lintje-multiselect__summary {\n flex: 1 1 auto; min-width: 0;\n padding-left: var(--space-1);\n font: var(--text-ui);\n overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n}\n.lintje-multiselect__placeholder { color: var(--color-text-placeholder); font-size: 1rem; padding-left: 6px; }\n.lintje-multiselect__chip {\n display: inline-flex; align-items: center; gap: 6px;\n height: var(--h-chip-field);\n padding: 0 0 0 var(--space-2);\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border-default);\n font-size: 0.875rem; white-space: nowrap;\n /* The label shortens with an ellipsis, the cross and counter never shrink; the whole\n selection is in the field's `title`. */\n flex: 0 1 auto; min-width: 0;\n}\n.lintje-multiselect__chip-label { overflow: hidden; text-overflow: ellipsis; min-width: 2ch; }\n/* A transparent hit area reaches the target height, not sideways: the label opens the list. */\n.lintje-multiselect__chip-remove {\n position: relative;\n flex: none;\n width: var(--space-6); align-self: stretch;\n display: flex; align-items: center; justify-content: center;\n cursor: pointer; color: var(--color-text-muted); font-size: 1rem;\n}\n.lintje-multiselect__chip-remove::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((var(--h-chip-field) - var(--h-target)) / 2)) 0;\n}\n.lintje-multiselect__overflow { font-size: 0.875rem; color: var(--color-text-muted); flex: none; }\n.lintje-multiselect__scrim { position: fixed; inset: 0; z-index: 45; }\n/* Fixed to the viewport: an absolute popover is cut off by a scrolling box around it. A column,\n so the list shrinks when the room is short. */\n.lintje-multiselect__popover {\n position: fixed; z-index: 46;\n min-width: 260px;\n max-height: var(--lintje-multiselect-space, none);\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n animation: lintje-popover-in var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-multiselect__search { flex: none; padding: var(--space-2); border-bottom: 1px solid var(--color-border-default); }\n.lintje-multiselect__search-input {\n width: 100%; height: var(--h-control); padding: 0 var(--space-2);\n border: 1px solid var(--color-border-field);\n background: var(--color-bg-surface); color: var(--color-text-primary); font-size: 1rem;\n}\n.lintje-multiselect__search-input::placeholder { color: var(--color-text-placeholder); opacity: 1; }\n.lintje-multiselect__list {\n flex: 1 1 auto; min-height: 0;\n max-height: 220px; overflow-y: auto;\n padding: var(--space-2);\n display: flex; flex-direction: column; gap: 2px;\n}\n/* The `lintje-checkbox` row reads `--h-target` in its shadow root: point it at the option height. */\n.lintje-multiselect__option { --h-target: var(--h-option); }\n.lintje-multiselect__no-results { font: var(--text-small); color: var(--color-text-muted); padding: var(--space-2); }\n.lintje-multiselect__footer {\n flex: none;\n display: flex; align-items: center; justify-content: space-between;\n padding: var(--space-2) var(--space-3);\n border-top: 1px solid var(--color-border-default);\n font: var(--text-small); color: var(--color-text-muted);\n}\n.lintje-multiselect__clear {\n min-height: var(--h-target);\n color: var(--color-link); font-weight: 700; text-decoration: underline;\n}\n", m = 4, h = 8, g = 260, _ = 180, v = "lintje-multiselect-value", y = "lintje-multiselect-shown";
@@ -21,7 +21,7 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
21
21
  super(...e), this.placeholder = "Kies één of meer…", this.stacked = !1, this.open = !1, this.query = "", this.anchor = null, this.news = "", this.reflowFrame = 0, this.onOutsideClick = (e) => {
22
22
  this.open && (e.composedPath().includes(this) || (this.open = !1));
23
23
  }, this.onEscape = (e) => {
24
- this.open && e.key === "Escape" && s(this) && (e.stopPropagation(), this.close());
24
+ this.open && e.key === "Escape" && o(this) && (e.stopPropagation(), this.close());
25
25
  }, this.onReflow = () => {
26
26
  this.open && !this.reflowFrame && (this.reflowFrame = requestAnimationFrame(() => {
27
27
  this.reflowFrame = 0, this.measure();
@@ -58,7 +58,7 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
58
58
  return this.renderRoot.querySelector(".lintje-multiselect__field");
59
59
  }
60
60
  async close() {
61
- let e = this.renderRoot.querySelector(".lintje-multiselect__popover"), t = e !== null && o(e);
61
+ let e = this.renderRoot.querySelector(".lintje-multiselect__popover"), t = e !== null && a(e);
62
62
  this.open = !1, this.query = "", await this.updateComplete, t && this.trigger?.focus();
63
63
  }
64
64
  onFocusOut(e) {
@@ -109,23 +109,23 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
109
109
  let t = this.selected ?? [];
110
110
  this.choose(t.includes(e) ? t.filter((t) => t !== e) : [...t, e]);
111
111
  }
112
- checkbox(e, t, n, i, o) {
113
- return a`<lintje-checkbox
112
+ checkbox(e, t, n, i, a) {
113
+ return l`<lintje-checkbox
114
114
  class="lintje-multiselect__option"
115
115
  label=${e}
116
- hint=${o ?? r}
116
+ hint=${a ?? r}
117
117
  ?checked=${t}
118
118
  ?indeterminate=${n && !t}
119
119
  @lintje-change=${(e) => i(e.detail)}
120
120
  ></lintje-checkbox>`;
121
121
  }
122
122
  render() {
123
- let e = this.options ?? [], t = this.selected ?? [], n = this.query.trim().toLowerCase(), i = e.filter((e) => x(e).toLowerCase().includes(n)), o = t.length === e.length, s = t.length > 0 && !o, d = t.slice(0, 2), f = t.length - d.length, p = t.map((t) => e.find((e) => e.value === t)?.label ?? t);
124
- return a`<div class="lintje-field lintje-multiselect" @focusout=${this.onFocusOut}>
123
+ let e = this.options ?? [], t = this.selected ?? [], n = this.query.trim().toLowerCase(), i = e.filter((e) => x(e).toLowerCase().includes(n)), a = t.length === e.length, o = t.length > 0 && !a, d = t.slice(0, 2), f = t.length - d.length, p = t.map((t) => e.find((e) => e.value === t)?.label ?? t);
124
+ return l`<div class="lintje-field lintje-multiselect" @focusout=${this.onFocusOut}>
125
125
  ${this.renderLabel()}
126
126
  <button
127
127
  type="button"
128
- class=${c({
128
+ class=${s({
129
129
  "lintje-multiselect__field": !0,
130
130
  "is-error": !!this.error
131
131
  })}
@@ -142,9 +142,9 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
142
142
  >
143
143
  <span id=${v} class="visually-hidden">${this.valueText(p)}</span>
144
144
  <!-- What the button shows is part of its name, so a voice command can use it (WCAG 2.5.3). -->
145
- <span id=${y} class="lintje-multiselect__shown"> ${this.summary ? a`<span class="lintje-multiselect__summary">${this.summary}</span>${l("functioneel-delta-omlaag", { size: 16 })}` : r}
146
- ${t.length === 0 && !this.summary ? a`<span class="lintje-multiselect__placeholder">${this.placeholder}</span>` : r}
147
- ${(this.summary ? [] : d).map((t) => a`<span class="lintje-multiselect__chip">
145
+ <span id=${y} class="lintje-multiselect__shown"> ${this.summary ? l`<span class="lintje-multiselect__summary">${this.summary}</span>${c("functioneel-delta-omlaag", { size: 16 })}` : r}
146
+ ${t.length === 0 && !this.summary ? l`<span class="lintje-multiselect__placeholder">${this.placeholder}</span>` : r}
147
+ ${(this.summary ? [] : d).map((t) => l`<span class="lintje-multiselect__chip">
148
148
  <span class="lintje-multiselect__chip-label"
149
149
  >${e.find((e) => e.value === t)?.label}</span
150
150
  >
@@ -160,11 +160,11 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
160
160
  >×</span
161
161
  >
162
162
  </span>`)}
163
- ${f > 0 && !this.summary ? a`<span class="lintje-multiselect__overflow">+${f}</span>` : r}</span
163
+ ${f > 0 && !this.summary ? l`<span class="lintje-multiselect__overflow">+${f}</span>` : r}</span
164
164
  >
165
165
  </button>
166
166
 
167
- ${this.open ? a`<span
167
+ ${this.open ? l`<span
168
168
  class="lintje-multiselect__scrim"
169
169
  @click=${() => void this.close()}
170
170
  ></span>
@@ -184,9 +184,9 @@ var S = (e) => e === 1 ? "1 resultaat" : `${e} resultaten`, C = class extends d
184
184
  />
185
185
  </div>
186
186
  <div class="lintje-multiselect__list">
187
- ${this.checkbox(`Alles selecteren (${e.length})`, o, s, (t) => this.choose(t ? e.map((e) => e.value) : []))}
187
+ ${this.checkbox(`Alles selecteren (${e.length})`, a, o, (t) => this.choose(t ? e.map((e) => e.value) : []))}
188
188
  ${i.map((e) => this.checkbox(x(e), t.includes(e.value), !1, () => this.toggleOption(e.value), e.description))}
189
- ${i.length === 0 ? a`<p class="lintje-multiselect__no-results">
189
+ ${i.length === 0 ? l`<p class="lintje-multiselect__no-results">
190
190
  Geen waarde met “${this.query}”.
191
191
  </p>` : r}
192
192
  </div>
@@ -1,8 +1,8 @@
1
- import { Bt as e, Gt as t, Ht as n, Kt as r, O as i, k as a } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, Ht as n, O as r, k as i, qt as a } from "../chunks/base-Bg-IFOPG.js";
2
2
  //#region src/components/charts/note/note.css?inline
3
- var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-note { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-note {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n display: flex; flex-direction: column; gap: var(--space-2);\n min-width: 0;\n}\n.lintje-note__header { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\n.lintje-note__title { font: var(--text-tile-title); }\n.lintje-note__date { font: var(--text-tile-sub); color: var(--color-text-muted); }\n.lintje-note__text { font: var(--text-small); line-height: 1.55; color: var(--color-text-secondary); }\n.lintje-note__author { font: var(--text-meta); color: var(--color-text-muted); }\n", s = class extends i {
3
+ var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-note { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-note {\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n display: flex; flex-direction: column; gap: var(--space-2);\n min-width: 0;\n}\n.lintje-note__header { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }\n.lintje-note__title { font: var(--text-tile-title); }\n.lintje-note__date { font: var(--text-tile-sub); color: var(--color-text-muted); }\n.lintje-note__text { font: var(--text-small); line-height: 1.55; color: var(--color-text-secondary); }\n.lintje-note__author { font: var(--text-meta); color: var(--color-text-muted); }\n", s = class extends r {
4
4
  static {
5
- this.styles = [a, n(o)];
5
+ this.styles = [i, n(o)];
6
6
  }
7
7
  static {
8
8
  this.properties = { data: { attribute: !1 } };
@@ -12,7 +12,7 @@ var o = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
12
12
  }
13
13
  render() {
14
14
  let e = this.data;
15
- return e ? r`<section class="lintje-note">
15
+ return e ? a`<section class="lintje-note">
16
16
  <header class="lintje-note__header">
17
17
  <h3 class="lintje-note__title">${e.title ?? "Toelichting analist"}</h3>
18
18
  <span class="lintje-note__date">${e.date}</span>