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,5 +1,5 @@
1
- import { $ as e, A as t, Bt as n, Gt as r, Ht as i, It as a, Kt as o, Lt as s, Pt as c, U as l, Z as u, et as d, zt as f } from "../chunks/base-rBLTcEIv.js";
2
- import { t as p } from "../chunks/sentence-CLNJOeXz.js";
1
+ import { $ as e, A as t, Bt as n, Gt as r, Ht as i, It as a, Lt as o, Pt as s, U as c, Z as l, et as u, qt as d, zt as f } from "../chunks/base-Bg-IFOPG.js";
2
+ import { t as p } from "../chunks/sentence-BI3lwEuT.js";
3
3
  function m(e) {
4
4
  return e.open;
5
5
  }
@@ -30,9 +30,9 @@ function g(e) {
30
30
  //#region src/components/filters/filter-zone/filter-zone.css?inline
31
31
  var _ = "/*\n * The filter zone's own box: header, controls row, sentence and summary bar. Rules that reach\n * into a control live in `filter-layout.css`, adopted by the elements that own the controls.\n */\n:host {\n display: block;\n}\n\n/* --- */\n\n.lintje-filter-bar {\n background: var(--color-bg-filter);\n border-top: 1px solid var(--color-border-filter);\n}\n\n.lintje-filter-bar__header {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n /* An inset shadow, not a border: a border would shift the toggle half a pixel off the\n summary bar's. */\n box-shadow: inset 0 -1px 0 var(--color-border-filter);\n}\n.lintje-filter-bar__title { font-size: 1rem; font-weight: 700; }\n.lintje-filter-bar__hint { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-filter-bar__spacer { flex: 1; }\n\n.lintje-filter-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-primary);\n}\n.lintje-filter-bar__dot {\n width: 8px; height: 8px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-filter-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n\n/* --- Opening and closing -------------------------------------------------- */\n/* `0fr -> 1fr` transitions to the content height without measuring it in JS. The body stays\n in the DOM, so the fade is a transition, not a keyframe. */\n.lintje-filter-bar__body {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body { grid-template-rows: 1fr; }\n\n.lintje-filter-bar__body-inner {\n min-height: 0;\n overflow: hidden;\n opacity: 0;\n /* Closed, out of the tab order and the accessibility tree; hiding waits for the collapse. */\n visibility: hidden;\n transition:\n opacity var(--dur-collapse) var(--ease-in-motion),\n visibility 0s linear var(--dur-collapse);\n}\n.lintje-filter-bar.is-open .lintje-filter-bar__body-inner {\n opacity: 1;\n visibility: visible;\n transition: opacity var(--dur-collapse) var(--ease-in-motion), visibility 0s;\n}\n/* Standing open, nothing clips: popovers hang out of the zone. */\n.lintje-filter-bar.is-settled .lintje-filter-bar__body-inner { overflow: visible; }\n\n.lintje-filter-bar__header,\n.lintje-summary-bar {\n animation: lintje-fade-in var(--dur-collapse) var(--ease-in-motion);\n}\n\n/* Aligned at the top: what a control carries below its box (the range's ticks) hangs below the\n line instead of pushing its neighbours down. */\n.lintje-filter-bar__controls {\n display: flex;\n gap: var(--grid-gutter);\n padding: 14px calc(var(--space-6) + var(--page-gutter)) 18px;\n align-items: flex-start;\n flex-wrap: wrap;\n}\n\n@media (min-width: 1440px) {\n .lintje-filter-bar__controls { flex-wrap: nowrap; }\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-filter-bar__controls { display: grid; grid-template-columns: 1fr 1fr; }\n}\n\n.lintje-filter-bar__summary {\n display: flex; align-items: center; gap: 10px;\n padding: 0 calc(var(--space-6) + var(--page-gutter)) 14px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n\n/* --- Collapsed summary bar (48 px) -------------------------------------- */\n.lintje-summary-bar {\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: var(--space-4);\n height: var(--h-contextbar);\n padding: 0 calc(var(--space-6) + var(--page-gutter));\n}\n.lintje-summary-bar__sentence {\n display: flex; align-items: center; gap: 10px;\n font: var(--text-ui);\n color: var(--color-text-primary);\n min-width: 0;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n text-align: left;\n padding: 0 6px; margin: 0 -6px;\n height: 100%;\n}\n.lintje-summary-bar__sentence:hover { background: var(--color-bg-subtle); }\n.lintje-summary-bar__sentence .lintje-filter-summary__text { overflow: hidden; text-overflow: ellipsis; }\n.lintje-summary-bar__spacer { flex: 1; }\n.lintje-summary-bar__counter {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-small); color: var(--color-text-muted); flex: none;\n}\n.lintje-summary-bar__dot {\n width: 6px; height: 6px; border-radius: 50%;\n background: var(--color-attention); flex: none;\n}\n.lintje-summary-bar__reset {\n display: flex; align-items: center;\n min-height: var(--h-target);\n font-size: 0.875rem; font-weight: 700;\n color: var(--color-link); text-decoration: underline;\n margin: 0 var(--space-2);\n}\n/* --- The one filter toggle ----------------------------------------------- */\n/* Last in the row in both states, so the second click lands on the toggle again. */\n.lintje-filter-toggle {\n position: relative;\n display: flex; align-items: center; gap: var(--space-2);\n height: var(--h-button-compact);\n padding: 0 var(--space-3);\n border: 1px solid var(--color-border-strong);\n background: transparent;\n font-size: 0.875rem; font-weight: 400;\n color: var(--color-text-primary);\n flex: none;\n transition: background var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-filter-toggle:hover { background: var(--color-bg-subtle); }\n/* A transparent hit area above and below reaches the full target height. */\n.lintje-filter-toggle::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n.lintje-filter-toggle__chevron {\n transform-origin: 50% 50%;\n transition: transform var(--dur-collapse) var(--ease-in-motion);\n}\n.lintje-filter-toggle.is-expanded .lintje-filter-toggle__chevron { transform: rotate(180deg); }\n\n/* Before the filter bar: 1 px tall for the observer, -1 px margin so layout is unchanged. */\n.lintje-filter-bar__sentinel { height: 1px; margin-bottom: -1px; }\n/* Scrolled: the collapsed zone sticks below the top bar. */\n.lintje-filter-bar.is-sticky {\n position: sticky;\n top: var(--h-topbar);\n z-index: 19;\n box-shadow: inset 0 -1px 0 var(--color-border-filter), var(--shadow-sticky);\n /* Stuck, the top bar's line is the separator; this one goes transparent, keeping its pixel. */\n border-top-color: transparent;\n}\n\n/* Stuck and expanded: the zone unfolds where it stands; the z-index stays under the menu's 30. */\n.lintje-filter-bar.is-stuck-open {\n max-height: calc(100vh - var(--h-topbar));\n}\n/* Only when the panel does not fit (`LintjeFilterZone` measures it): scrolling clips popovers. */\n.lintje-filter-bar.is-stuck-open.is-scrollable { overflow-y: auto; }\n\n/* --- Mobile -------------------------------------------------------------- */\n.lintje-filter-bar--mobile {\n border-bottom: 1px solid var(--color-border-default);\n padding: var(--space-3) var(--space-4);\n box-shadow: var(--shadow-sticky);\n position: sticky;\n top: var(--h-mobile-header);\n z-index: 19;\n}\n.lintje-filter-bar__mobile-summary {\n display: flex; align-items: flex-start; gap: 10px;\n font: var(--text-ui); line-height: 1.4;\n}\n.lintje-filter-bar__mobile-summary .lintje-filter-summary__icon { margin-top: 2px; }\n\n/* --- Pinned instead of sticky ---------------------------------------------- */\n.lintje-filter-bar--fixed.is-sticky {\n position: fixed;\n left: var(--lintje-shell-left, 0px);\n right: 0;\n}\n.lintje-filter-bar__placeholder { height: var(--h-contextbar); }\n\n/* --- More than four filters ------------------------------------------------ */\n/* The one-line rule from 1440 px fits four controls; more wrap. */\n.lintje-filter-bar--wrap .lintje-filter-bar__controls { flex-wrap: wrap; }\n\n\n@media print {\n .lintje-filter-bar.is-sticky, .lintje-filter-bar--fixed.is-sticky { position: static; box-shadow: none; }\n .lintje-filter-toggle, .lintje-filter-bar__reset, .lintje-filter-bar__counter { display: none; }\n}\n\n/* Forced colours drop the fill and the inset shadow, so the row takes a real border. */\n@media (forced-colors: active) {\n .lintje-filter-bar__header { border-bottom: 1px solid CanvasText; }\n}\n", v = class extends f {
32
32
  constructor(...e) {
33
- super(...e), this.total = 0, this.modified = 0, this.open = !1, this.scrolled = !1, this.settled = !0, this.scrollable = !1, this.stick = "sticky", this.sentence = [], this.mobile = new s(this, a), this.observer = null, this.observed = void 0, this.wasExpanded = void 0, this.onResize = () => this.measureOverflow(), this.#e = !1, this.#t = 0, this.#n = null, this.onPageScroll = () => {
33
+ super(...e), this.total = 0, this.modified = 0, this.open = !1, this.scrolled = !1, this.settled = !0, this.scrollable = !1, this.stick = "sticky", this.sentence = [], this.mobile = new o(this, a), this.observer = null, this.observed = void 0, this.wasExpanded = void 0, this.onResize = () => this.measureOverflow(), this.#e = !1, this.#t = 0, this.#n = null, this.onPageScroll = () => {
34
34
  let e = this.renderRoot.querySelector(".lintje-filter-bar__body");
35
- e && l(e) || this.act({
35
+ e && c(e) || this.act({
36
36
  type: "page-scrolled",
37
37
  distance: this.pageScroll() - this.#t
38
38
  });
@@ -83,10 +83,10 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
83
83
  willUpdate(e) {
84
84
  if (super.willUpdate(e), !e.has("open") && !e.has("modified")) return;
85
85
  let t = this.renderRoot.querySelector(".lintje-filter-bar__header, .lintje-summary-bar");
86
- this.#e = this.#e || t != null && l(t);
86
+ this.#e = this.#e || t != null && c(t);
87
87
  }
88
88
  updated(e) {
89
- this.#e && (this.#e = !1, l(this) || this.renderRoot.querySelector(".lintje-filter-toggle")?.focus());
89
+ this.#e && (this.#e = !1, c(this) || this.renderRoot.querySelector(".lintje-filter-toggle")?.focus());
90
90
  let n = !this.mobile.matches && m(this.state);
91
91
  if (n !== this.wasExpanded) {
92
92
  let e = this.wasExpanded === void 0;
@@ -110,7 +110,7 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
110
110
  }
111
111
  canPin() {
112
112
  if (this.stick !== "fixed" || this.scrolled) return !0;
113
- let e = this.renderRoot.querySelector(".lintje-filter-bar__sentinel"), n = this.renderRoot.querySelector(".lintje-filter-bar"), r = c(), i = r && r !== document.scrollingElement ? r : document.scrollingElement;
113
+ let e = this.renderRoot.querySelector(".lintje-filter-bar__sentinel"), n = this.renderRoot.querySelector(".lintje-filter-bar"), r = s(), i = r && r !== document.scrollingElement ? r : document.scrollingElement;
114
114
  if (!e || !n || !i) return !0;
115
115
  let a = t(e, "--h-topbar", 56);
116
116
  return g({
@@ -133,28 +133,28 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
133
133
  #t;
134
134
  #n;
135
135
  pageScroll() {
136
- let e = c();
136
+ let e = s();
137
137
  return e && e !== document.scrollingElement ? e.scrollTop : window.scrollY;
138
138
  }
139
139
  watchPageScroll(e) {
140
140
  if (this.#n?.removeEventListener("scroll", this.onPageScroll), this.#n = null, !e || this.mobile.matches) return;
141
- let t = c();
141
+ let t = s();
142
142
  this.#n = t && t !== document.scrollingElement ? t : window, this.#t = this.pageScroll(), this.#n.addEventListener("scroll", this.onPageScroll, { passive: !0 });
143
143
  }
144
144
  render() {
145
- if (this.mobile.matches) return o`<div class="lintje-filter-bar lintje-filter-bar--mobile">
145
+ if (this.mobile.matches) return d`<div class="lintje-filter-bar lintje-filter-bar--mobile">
146
146
  <p class="lintje-filter-bar__mobile-summary">${p(this.sentence)}</p>
147
147
  </div>`;
148
148
  let e = m(this.state), t = this.scrolled && this.stick === "fixed";
149
- return o`
149
+ return d`
150
150
  <!-- The sentinel sits before the zone, not after it. After the zone it moves along
151
151
  when the zone collapses (461 -> 334 px), so when scrolling back up the threshold
152
152
  releases 127 px later than it triggered. Before the zone it stays put, and the
153
153
  threshold triggers the moment the bar touches the top bar. -->
154
154
  <div class="lintje-filter-bar__sentinel" aria-hidden="true"></div>
155
- ${t ? o`<div class="lintje-filter-bar__placeholder" aria-hidden="true"></div>` : r}
155
+ ${t ? d`<div class="lintje-filter-bar__placeholder" aria-hidden="true"></div>` : r}
156
156
  <div
157
- class=${u({
157
+ class=${l({
158
158
  "lintje-filter-bar": !0,
159
159
  "is-open": e,
160
160
  "is-settled": e && this.settled,
@@ -180,13 +180,13 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
180
180
  `;
181
181
  }
182
182
  renderHeader() {
183
- return o`
183
+ return d`
184
184
  <div class="lintje-filter-bar__header">
185
- ${d("functioneel-filters", { size: 16 })}
185
+ ${u("functioneel-filters", { size: 16 })}
186
186
  <span class="lintje-filter-bar__title">Filters</span>
187
187
  <span class="lintje-filter-bar__hint">gelden voor alle cijfers op deze pagina</span>
188
188
  <span class="lintje-filter-bar__spacer"></span>
189
- ${this.modified > 0 ? o`<span class="lintje-filter-bar__counter">
189
+ ${this.modified > 0 ? d`<span class="lintje-filter-bar__counter">
190
190
  <span class="lintje-filter-bar__dot"></span>
191
191
  ${this.modified} van ${this.total} afwijkend
192
192
  </span>
@@ -202,7 +202,7 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
202
202
  `;
203
203
  }
204
204
  renderSummaryBar() {
205
- return o`<div
205
+ return d`<div
206
206
  class="lintje-summary-bar"
207
207
  @click=${(e) => {
208
208
  e.target.closest("button") || this.act({ type: "expand" });
@@ -218,7 +218,7 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
218
218
  ${p(this.sentence)}
219
219
  </button>
220
220
  <span class="lintje-summary-bar__spacer"></span>
221
- ${this.modified > 0 ? o`<span class="lintje-summary-bar__counter">
221
+ ${this.modified > 0 ? d`<span class="lintje-summary-bar__counter">
222
222
  <span class="lintje-summary-bar__dot"></span>
223
223
  ${this.modified} afwijkend ·
224
224
  <button
@@ -233,9 +233,9 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
233
233
  </div>`;
234
234
  }
235
235
  renderToggle(e) {
236
- return o`<button
236
+ return d`<button
237
237
  type="button"
238
- class=${u({
238
+ class=${l({
239
239
  "lintje-filter-toggle": !0,
240
240
  "is-expanded": e
241
241
  })}
@@ -245,7 +245,7 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
245
245
  @click=${() => this.act({ type: e ? "collapse" : "expand" })}
246
246
  >
247
247
  Filters
248
- ${d("functioneel-delta-omlaag", {
248
+ ${u("functioneel-delta-omlaag", {
249
249
  size: 16,
250
250
  className: "lintje-filter-toggle__chevron"
251
251
  })}
@@ -1,4 +1,4 @@
1
- import { Bt as e, Gt as t, Ht as n, I as r, Kt as i, zt as a } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, Ht as n, I as r, qt as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
2
2
  //#region src/components/frame/footer/footer.css?inline
3
3
  var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-footer {\n background: var(--color-footer-bg);\n color: var(--color-footer-text);\n font: var(--text-ui);\n}\n.lintje-footer :focus-visible { outline-color: var(--color-footer-focus); }\n\n/* The text keeps to the content column, as the bars above the page do. */\n.lintje-footer__inner {\n display: flex; flex-direction: column;\n gap: var(--space-8);\n padding: var(--space-10) calc(var(--page-pad-x) + var(--page-gutter)) var(--space-8);\n}\n\n.lintje-footer__tagline { margin: 0; font: var(--text-h2); }\n\n.lintje-footer__columns {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--w-footer-column)), 1fr));\n gap: var(--space-8) var(--grid-gutter);\n}\n.lintje-footer__column { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n.lintje-footer__heading {\n margin: 0;\n font-size: var(--label-size); font-weight: var(--label-weight);\n letter-spacing: var(--label-tracking); text-transform: uppercase;\n}\n.lintje-footer__list,\n.lintje-footer__meta { list-style: none; margin: 0; padding: 0; }\n.lintje-footer__list { display: flex; flex-direction: column; gap: var(--space-3); }\n\n.lintje-footer__link,\n.lintje-footer__meta-link {\n display: inline-flex; align-items: center;\n min-height: var(--h-touch);\n color: inherit;\n text-decoration: none;\n}\n/* A list of text links keeps the house style's rhythm: a line high, 12 px apart. */\n.lintje-footer__link { min-height: var(--h-target-text); }\n.lintje-footer__link:hover,\n.lintje-footer__meta-link:hover { text-decoration: underline; text-underline-offset: 0.2em; }\n\n/* The links every page carries, apart from the columns by a line. */\n.lintje-footer__bottom {\n display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;\n gap: var(--space-2) var(--space-6);\n padding-top: var(--space-4);\n border-top: 1px solid var(--color-footer-line);\n}\n.lintje-footer__meta { display: flex; flex-wrap: wrap; gap: 0 var(--space-6); }\n.lintje-footer__meta-link { font: var(--text-small); }\n/* The full text colour: a muted one would fall under 4.5:1 on the theme's fill. */\n.lintje-footer__note { margin: 0; font: var(--text-small); }\n\n@media (max-width: 767px) {\n .lintje-footer__inner { padding-top: var(--space-8); }\n .lintje-footer__columns { grid-template-columns: minmax(0, 1fr); }\n}\n", s = class extends a {
4
4
  static {
@@ -1,4 +1,4 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, It as i, Kt as a, Lt as o, Pt as s, et as c, zt as l } from "../chunks/base-rBLTcEIv.js";
1
+ import { $ as e, Bt as t, Gt as n, Ht as r, It as i, Lt as a, Pt as o, et as s, qt as c, zt as l } from "../chunks/base-Bg-IFOPG.js";
2
2
  import { n as u, t as d } from "../chunks/controls-B1455oPG.js";
3
3
  //#region src/components/forms/form-actions/form-actions.css?inline
4
4
  var f = "/* The host is the sticky box. z-index 20: above the form, below the shell's menu (30) and popovers (46). */\n:host {\n display: block;\n min-width: 0;\n position: sticky;\n bottom: 0;\n z-index: 20;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-form-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-3) var(--space-4);\n padding: var(--space-3) var(--space-6);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-top: 2px solid var(--color-accent-line);\n}\n\n/* The words carry the state; the dot and the check only support it (rule 13). */\n.lintje-form-actions__status {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n min-width: 0;\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-form-actions__dot {\n flex: none;\n width: 6px;\n height: 6px;\n border-radius: var(--radius-round);\n background: var(--color-attention);\n}\n.lintje-form-actions__check {\n flex: none;\n color: var(--color-success);\n}\n\n.lintje-form-actions__buttons {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--space-2);\n margin-left: auto;\n}\n\n/* Phone: the bar sets `block` on each button, so it fills its row. */\n@media (max-width: 767px) {\n .lintje-form-actions {\n flex-direction: column;\n align-items: stretch;\n }\n .lintje-form-actions__buttons {\n flex-direction: column-reverse;\n margin-left: 0;\n }\n}\n\n/* Forced colours: the dot is a fill only, which the palette drops; it keeps its drawing. */\n@media (forced-colors: active) {\n .lintje-form-actions__dot { forced-color-adjust: none; background: CanvasText; }\n}\n", p = "Wijzigingen nog niet opgeslagen", m = "Bezig met opslaan";
@@ -17,7 +17,7 @@ function v() {
17
17
  _ && (_.element.style.scrollPaddingBottom = _.before), _ = null;
18
18
  return;
19
19
  }
20
- let t = s();
20
+ let t = o();
21
21
  t && (_?.element !== t && (_ && (_.element.style.scrollPaddingBottom = _.before), _ = {
22
22
  element: t,
23
23
  before: t.style.scrollPaddingBottom
@@ -25,7 +25,7 @@ function v() {
25
25
  }
26
26
  var y = class extends l {
27
27
  constructor(...e) {
28
- super(...e), this.state = "", this.#e = new o(this, i), this.#t = new u("busy"), this.#n = new u("disabled"), this.#r = new d("block"), this.#i = null;
28
+ super(...e), this.state = "", this.#e = new a(this, i), this.#t = new u("busy"), this.#n = new u("disabled"), this.#r = new d("block"), this.#i = null;
29
29
  }
30
30
  static {
31
31
  this.styles = [e, r(f)];
@@ -75,12 +75,12 @@ var y = class extends l {
75
75
  renderStatus() {
76
76
  let e = h(this.savedAt);
77
77
  switch (this.state) {
78
- case "dirty": return a`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${p}`;
79
- case "busy": return a`${m}`;
78
+ case "dirty": return c`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${p}`;
79
+ case "busy": return c`${m}`;
80
80
  case "saved":
81
81
  case "draft": {
82
82
  let t = this.state === "draft" ? "Concept opgeslagen" : "Opgeslagen";
83
- return a`${c("functioneel-vinkje", {
83
+ return c`${s("functioneel-vinkje", {
84
84
  size: 16,
85
85
  className: "lintje-form-actions__check"
86
86
  })}${e ? `${t} om ${e}` : t}`;
@@ -89,7 +89,7 @@ var y = class extends l {
89
89
  }
90
90
  }
91
91
  render() {
92
- return a`<div class="lintje-form-actions">
92
+ return c`<div class="lintje-form-actions">
93
93
  <div class="lintje-form-actions__status" role="status">${this.renderStatus()}</div>
94
94
  <div class="lintje-form-actions__buttons">
95
95
  <slot @slotchange=${() => this.#a()}></slot>
@@ -1,4 +1,4 @@
1
- import { Bt as e, Gt as t, Ht as n, Kt as r, Z as i, zt as a } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, Ht as n, Z as r, qt as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
2
2
  import { a as o, n as s } from "../chunks/controls-B1455oPG.js";
3
3
  //#region src/components/forms/form-section/form-section.css?inline
4
4
  var c = "/* Slotted children keep clear of the sticky top bar when the error summary scrolls to them. */\n:host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n::slotted(*) { scroll-margin-top: var(--h-sticky); }\n\n/* ------------------------------------------------------------------------ */\n\n/* The legend floats at full width so it lays out as a block, not on the fieldset's border. */\n.lintje-form-section {\n margin: 0;\n padding: 0;\n min-width: 0;\n border: 0;\n}\n.lintje-form-section__legend {\n float: left;\n width: 100%;\n padding: 0;\n font: var(--text-h2);\n color: var(--color-text-primary);\n}\n.lintje-form-section__description {\n clear: both;\n padding-top: var(--space-2);\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-form-section__fields {\n clear: both;\n display: flex;\n flex-direction: column;\n gap: var(--space-5);\n padding-top: var(--space-5);\n}\n\n/* Setting rows read as a list: a line between two of them. */\n.lintje-form-section__fields ::slotted([layout='row']:not(:first-child)) {\n padding-top: var(--space-5);\n border-top: 1px solid var(--color-border-default);\n}\n\n.lintje-form-section--tile {\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.lintje-form-section--tile .lintje-form-section__legend { font: var(--text-tile-title); }\n/* The heading takes the legend's look; it is there for the outline, not to restyle. */\n.lintje-form-section__heading { margin: 0; font: inherit; color: inherit; }\n", l = class extends a {
@@ -33,8 +33,8 @@ var c = "/* Slotted children keep clear of the sticky top bar when the error sum
33
33
  this.disabled ? this.#e.apply(o(this), !0) : this.#e.release();
34
34
  }
35
35
  render() {
36
- return r`<fieldset
37
- class=${i({
36
+ return i`<fieldset
37
+ class=${r({
38
38
  "lintje-form-section": !0,
39
39
  "lintje-form-section--tile": this.variant === "tile"
40
40
  })}
@@ -1,4 +1,4 @@
1
- import { Bt as e, Gt as t, H as n, Ht as r, It as i, Kt as a, Lt as o, U as s, zt as c } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, H as n, Ht as r, It as i, Lt as a, U as o, qt as s, zt as c } from "../chunks/base-Bg-IFOPG.js";
2
2
  import { c as l, d as u, i as d, l as f, n as p, r as m, u as h } from "../chunks/controls-B1455oPG.js";
3
3
  import "./error-summary.js";
4
4
  import "./form-actions.js";
@@ -42,7 +42,7 @@ var C = class extends c {
42
42
  let t = d(e);
43
43
  !this.contains(e) && !r.has(t) && this.forget(t);
44
44
  }
45
- }), this.#s = new o(this, i), this.#c = new p("disabled"), this.#l = new p("stacked"), this.#u = (e) => {
45
+ }), this.#s = new a(this, i), this.#c = new p("disabled"), this.#l = new p("stacked"), this.#u = (e) => {
46
46
  let t = e.target;
47
47
  if (t === this) return;
48
48
  let n = d(t);
@@ -243,7 +243,7 @@ var C = class extends c {
243
243
  return t;
244
244
  }
245
245
  willUpdate(e) {
246
- super.willUpdate(e), this.#n || (this.#n = !0, this.#g(), this.#b(Object.keys(this.#e).length ? "dirty" : "")), e.has("savedAt") && this.hasUpdated && this.savedAt && this.phase !== "saved" && this.#y(), e.has("errors") && (this.#E = this.#T()), e.has("busy") && this.busy && (this.#a = s(this) ? n() : null), e.has("dirty") && (this.dirty ? window.addEventListener("beforeunload", this.#m) : window.removeEventListener("beforeunload", this.#m));
246
+ super.willUpdate(e), this.#n || (this.#n = !0, this.#g(), this.#b(Object.keys(this.#e).length ? "dirty" : "")), e.has("savedAt") && this.hasUpdated && this.savedAt && this.phase !== "saved" && this.#y(), e.has("errors") && (this.#E = this.#T()), e.has("busy") && this.busy && (this.#a = o(this) ? n() : null), e.has("dirty") && (this.dirty ? window.addEventListener("beforeunload", this.#m) : window.removeEventListener("beforeunload", this.#m));
247
247
  }
248
248
  #E;
249
249
  #D;
@@ -275,7 +275,7 @@ var C = class extends c {
275
275
  for (let n of this.querySelectorAll("lintje-form-actions")) n.state = e, n.savedAt = t;
276
276
  }
277
277
  render() {
278
- return a`<form
278
+ return s`<form
279
279
  class="lintje-form"
280
280
  novalidate
281
281
  aria-busy=${this.busy ? "true" : t}
@@ -1,4 +1,4 @@
1
- import { Bt as e, Gt as t, Ht as n, Kt as r, Z as i, zt as a } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, Ht as n, Z as r, qt as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
2
2
  //#region src/components/content/gallery/gallery.css?inline
3
3
  var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-gallery { display: flex; flex-direction: column; gap: var(--space-3); }\n\n.lintje-gallery__figure { margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }\n/* A screen whole, on the subtle surface: a screenshot is never cropped. */\n.lintje-gallery__image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: contain;\n background: var(--color-bg-subtle);\n border: 1px solid var(--color-border-default);\n box-sizing: border-box;\n}\n.lintje-gallery__caption { font: var(--text-small); color: var(--color-text-muted); }\n\n.lintje-gallery__thumbs {\n list-style: none; margin: 0; padding: 0;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(var(--w-gallery-thumb), 1fr));\n gap: var(--space-2);\n}\n.lintje-gallery__thumb {\n display: block;\n width: 100%;\n padding: 0;\n border: 1px solid var(--color-border-default);\n background: var(--color-bg-subtle);\n cursor: pointer;\n}\n.lintje-gallery__thumb:hover { border-color: var(--color-border-heavy); }\n/* The chosen one carries the selected edge, and aria-current says it in words. */\n.lintje-gallery__thumb.is-selected { outline: 2px solid var(--color-accent-line); outline-offset: -2px; }\n.lintje-gallery__thumb:focus-visible { outline: var(--focus-width) solid var(--color-focus); outline-offset: var(--focus-offset); }\n.lintje-gallery__thumb-image {\n display: block;\n width: 100%;\n aspect-ratio: 16 / 10;\n object-fit: cover;\n object-position: top left;\n}\n\n@media (forced-colors: active) {\n .lintje-gallery__thumb.is-selected { outline-color: Highlight; }\n}\n", s = class extends a {
4
4
  constructor(...e) {
@@ -28,16 +28,16 @@ var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
28
28
  let e = this.items;
29
29
  if (!e.length) return t;
30
30
  let n = this.shown, a = e[n];
31
- return r`<div class="lintje-gallery">
31
+ return i`<div class="lintje-gallery">
32
32
  <figure class="lintje-gallery__figure">
33
33
  <img class="lintje-gallery__image" src=${a.src} alt=${a.alt} />
34
- ${a.caption ? r`<figcaption class="lintje-gallery__caption">${a.caption}</figcaption>` : t}
34
+ ${a.caption ? i`<figcaption class="lintje-gallery__caption">${a.caption}</figcaption>` : t}
35
35
  </figure>
36
- ${e.length > 1 ? r`<ul class="lintje-gallery__thumbs" aria-label=${this.label}>
37
- ${e.map((a, o) => r`<li>
36
+ ${e.length > 1 ? i`<ul class="lintje-gallery__thumbs" aria-label=${this.label}>
37
+ ${e.map((a, o) => i`<li>
38
38
  <button
39
39
  type="button"
40
- class=${i({
40
+ class=${r({
41
41
  "lintje-gallery__thumb": !0,
42
42
  "is-selected": o === n
43
43
  })}
@@ -1 +1 @@
1
- export { y as LintjeGridItem } from "../chunks/base-rBLTcEIv.js";
1
+ export { y as LintjeGridItem } from "../chunks/base-Bg-IFOPG.js";
@@ -1 +1 @@
1
- export { b as LintjeGrid } from "../chunks/base-rBLTcEIv.js";
1
+ export { b as LintjeGrid } from "../chunks/base-Bg-IFOPG.js";
@@ -1,4 +1,4 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, I as i, Kt as a, Z as o, et as s, zt as c } from "../chunks/base-rBLTcEIv.js";
1
+ import { $ as e, Bt as t, Gt as n, Ht as r, I as i, Z as a, et as o, qt as s, zt as c } from "../chunks/base-Bg-IFOPG.js";
2
2
  //#region src/components/frame/hero/hero.css?inline
3
3
  var l = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The side padding is the content column's, taken of the full width the band stands in. */\n.lintje-hero__band {\n padding: calc(var(--space-10) + var(--space-4)) calc(var(--page-pad-x) + var(--page-gutter))\n calc(var(--space-10) + var(--space-2));\n background: var(--color-hero-bg);\n color: var(--color-hero-text);\n}\n/* With an aside the text keeps its column and the picture takes the room to its right. */\n.lintje-hero.has-aside .lintje-hero__band {\n display: flex;\n align-items: center;\n gap: var(--space-10);\n}\n.lintje-hero.has-overlap .lintje-hero__band {\n padding-bottom: calc(var(--space-10) + var(--space-2) + var(--hero-overlap));\n}\n.lintje-hero__band :focus-visible { outline-color: var(--color-hero-focus); }\n\n.lintje-hero__body {\n flex: 1 1 auto;\n min-width: 0;\n display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-6);\n}\n\n.lintje-hero__aside {\n flex: 0 1 var(--w-hero-aside);\n min-width: 0;\n display: flex; justify-content: flex-end;\n}\n.lintje-hero__aside ::slotted(*) { max-width: 100%; }\n/* A picture keeps its proportions when the column narrows it. */\n.lintje-hero__aside ::slotted(img) { height: auto; }\n.lintje-hero:not(.has-aside) .lintje-hero__aside { display: none; }\n\n/* Below 1024 px the text needs the room; the picture only supports it. */\n@media (max-width: 1023px) {\n .lintje-hero.has-aside .lintje-hero__band { display: block; }\n .lintje-hero__aside { display: none; }\n .lintje-hero__panel { margin-top: var(--space-8); }\n}\n\n/* Content beside the text takes the other half from 1024 px; below it, it follows the text. */\n.lintje-hero:not(.has-panel) .lintje-hero__panel { display: none; }\n.lintje-hero__panel { display: flex; flex-direction: column; min-width: 0; }\n.lintje-hero__panel ::slotted(*) { flex: 1 1 auto; }\n.lintje-hero.has-panel .lintje-hero__aside { display: none; }\n@media (min-width: 1024px) {\n .lintje-hero.has-panel .lintje-hero__band {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n align-items: stretch;\n gap: var(--space-10);\n }\n}\n.lintje-hero__heading { display: flex; flex-direction: column; gap: var(--space-3); }\n.lintje-hero__title { margin: 0; font: var(--text-h1-display); }\n.lintje-hero__description {\n margin: 0;\n max-width: var(--w-text);\n font-size: 1.25rem;\n line-height: 1.4;\n text-wrap: pretty;\n}\n\n.lintje-hero__action {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n min-height: var(--h-touch);\n color: inherit;\n font-weight: 700;\n text-decoration: underline;\n text-underline-offset: 0.2em;\n}\n.lintje-hero__action:hover { text-decoration-thickness: 2px; }\n\n/* Pulled up by the room the band keeps for it; without content it takes no space. */\n.lintje-hero__overlap {\n position: relative;\n margin-top: calc(-1 * var(--hero-overlap));\n padding: 0 calc(var(--page-pad-x) + var(--page-gutter));\n}\n.lintje-hero:not(.has-overlap) .lintje-hero__overlap { display: none; }\n\n@media (max-width: 767px) {\n .lintje-hero__band { padding-top: var(--space-8); padding-bottom: var(--space-8); }\n .lintje-hero.has-overlap .lintje-hero__band {\n padding-bottom: calc(var(--space-8) + var(--hero-overlap));\n }\n .lintje-hero__title { font: var(--text-h1); }\n .lintje-hero__description { font-size: 1.125rem; }\n}\n", u = class extends c {
4
4
  constructor(...e) {
@@ -31,8 +31,8 @@ var l = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
31
31
  this.href && i(e) && this.followLink(this.href, e);
32
32
  }
33
33
  render() {
34
- return a`<div
35
- class=${o({
34
+ return s`<div
35
+ class=${a({
36
36
  "lintje-hero": !0,
37
37
  "has-overlap": this.hasOverlap,
38
38
  "has-aside": this.hasAside,
@@ -44,11 +44,11 @@ var l = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
44
44
  <slot name="status"></slot>
45
45
  <div class="lintje-hero__heading">
46
46
  <h2 class="lintje-hero__title">${this.heading}</h2>
47
- ${this.description ? a`<p class="lintje-hero__description">${this.description}</p>` : n}
47
+ ${this.description ? s`<p class="lintje-hero__description">${this.description}</p>` : n}
48
48
  </div>
49
49
  <slot></slot>
50
- ${this.action && this.href ? a`<a class="lintje-hero__action" href=${this.href} @click=${this.onAction}
51
- >${this.action}${s("functioneel-delta-rechts", { size: 16 })}</a
50
+ ${this.action && this.href ? s`<a class="lintje-hero__action" href=${this.href} @click=${this.onAction}
51
+ >${this.action}${o("functioneel-delta-rechts", { size: 16 })}</a
52
52
  >` : n}
53
53
  </div>
54
54
  <div class="lintje-hero__aside">
@@ -1,4 +1,4 @@
1
- import { Bt as e, Ht as t, Kt as n, Z as r, zt as i } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Ht as t, Z as n, qt as r, zt as i } from "../chunks/base-Bg-IFOPG.js";
2
2
  //#region src/components/content/highlight/highlight.css?inline
3
3
  var a = ":host { display: inline; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* `clone`: a marking that wraps paints its fill and line on every line it covers. */\n.lintje-highlight {\n font: inherit;\n color: var(--color-text-primary);\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n}\n\n.lintje-highlight--uncertain {\n background: var(--color-attention-bg);\n border-bottom: 2px dotted var(--color-attention);\n}\n\n.lintje-highlight--term {\n background: var(--color-bg-selected);\n border: 0;\n border-bottom: 2px solid var(--color-accent-line);\n padding: 0;\n}\n.lintje-highlight--control { cursor: help; }\n.lintje-highlight--control:hover { background: var(--color-bg-subtle); }\n\n.lintje-highlight--match {\n background: var(--color-warning);\n color: var(--color-text-on-light-fill);\n}\n.lintje-highlight--match.is-current { outline: 2px solid var(--color-text-primary); }\n\n.lintje-highlight--removed {\n background: var(--color-error-bg);\n text-decoration: line-through;\n}\n.lintje-highlight--added {\n background: var(--color-success-bg);\n text-decoration: underline;\n}\n\n/* Forced colours: a match is only a fill, so it takes the system's marking colours. */\n@media (forced-colors: active) {\n .lintje-highlight--match { forced-color-adjust: none; background: Mark; color: MarkText; }\n .lintje-highlight--match.is-current { outline-color: CanvasText; }\n}\n", o = {
4
4
  uncertain: "lage zekerheid",
@@ -32,7 +32,7 @@ var a = ":host { display: inline; }\n:host([hidden]) { display: none; }\n\n/* --
32
32
  return this.kind === "term" && !!this.explanation;
33
33
  }
34
34
  get classes() {
35
- return r({
35
+ return n({
36
36
  "lintje-highlight": !0,
37
37
  [`lintje-highlight--${this.kind}`]: !0,
38
38
  "lintje-highlight--control": this.isControl,
@@ -42,14 +42,14 @@ var a = ":host { display: inline; }\n:host([hidden]) { display: none; }\n\n/* --
42
42
  render() {
43
43
  let e = this.kind;
44
44
  if (e === "removed" || e === "added") {
45
- let t = n`<span class="visually-hidden">${this.label || s[e]}: </span>`;
46
- return e === "removed" ? n`<del class=${this.classes}>${t}<slot></slot></del>` : n`<ins class=${this.classes}>${t}<slot></slot></ins>`;
45
+ let t = r`<span class="visually-hidden">${this.label || s[e]}: </span>`;
46
+ return e === "removed" ? r`<del class=${this.classes}>${t}<slot></slot></del>` : r`<ins class=${this.classes}>${t}<slot></slot></ins>`;
47
47
  }
48
- if (this.isControl) return n`<lintje-tooltip text=${this.explanation}
48
+ if (this.isControl) return r`<lintje-tooltip text=${this.explanation}
49
49
  ><button type="button" class=${this.classes}><slot></slot></button
50
50
  ></lintje-tooltip>`;
51
51
  let t = e === "match" && this.current ? "huidig zoekresultaat" : o[e] ?? "markering";
52
- return n`<mark class=${this.classes}
52
+ return r`<mark class=${this.classes}
53
53
  ><span class="visually-hidden">begin markering ${t}, </span><slot></slot
54
54
  ><span class="visually-hidden">, einde markering</span></mark
55
55
  >`;
@@ -1 +1 @@
1
- export { D as LintjeIconButton } from "../chunks/base-rBLTcEIv.js";
1
+ export { D as LintjeIconButton } from "../chunks/base-Bg-IFOPG.js";
@@ -1 +1 @@
1
- export { gt as ICONS, _ as ICON_NAMES, v as LintjeIcon } from "../chunks/base-rBLTcEIv.js";
1
+ export { gt as ICONS, _ as ICON_NAMES, v as LintjeIcon } from "../chunks/base-Bg-IFOPG.js";
@@ -1,4 +1,4 @@
1
- import { Bt as e, Gt as t, Ht as n, Kt as r, U as i, zt as a } from "../chunks/base-rBLTcEIv.js";
1
+ import { Bt as e, Gt as t, Ht as n, U as r, qt as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
2
2
  import "./list.js";
3
3
  //#region src/components/feedback/job-list/job-list.css?inline
4
4
  var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The rows are the work list's (`lintje-list`); the job list adds no look of its own. */\n.lintje-job-list { display: block; }\n", s = {
@@ -103,14 +103,14 @@ var f = class extends a {
103
103
  willUpdate(e) {
104
104
  if (super.willUpdate(e), !e.has("jobs")) return;
105
105
  let t = this.renderRoot.querySelector("lintje-list");
106
- this.emptiedWithFocus = !this.jobs?.length && !!(t && i(t));
107
- let n = this.known.size === 0, r = [], a = /* @__PURE__ */ new Map();
106
+ this.emptiedWithFocus = !this.jobs?.length && !!(t && r(t));
107
+ let n = this.known.size === 0, i = [], a = /* @__PURE__ */ new Map();
108
108
  for (let e of this.jobs ?? []) {
109
109
  a.set(e.id, e.state);
110
110
  let t = this.known.get(e.id);
111
- !n && t !== e.state && r.push(l(e));
111
+ !n && t !== e.state && i.push(l(e));
112
112
  }
113
- this.known = a, r.length ? this.spoken = r.join(" ") : this.emptiedWithFocus && (this.spoken = "Er staan geen taken meer in de lijst.");
113
+ this.known = a, i.length ? this.spoken = i.join(" ") : this.emptiedWithFocus && (this.spoken = "Er staan geen taken meer in de lijst.");
114
114
  }
115
115
  updated(e) {
116
116
  if (super.updated(e), !this.emptiedWithFocus) return;
@@ -128,7 +128,7 @@ var f = class extends a {
128
128
  }
129
129
  render() {
130
130
  let e = this.jobs ?? [];
131
- return r`${e.length ? r`<lintje-list
131
+ return i`${e.length ? i`<lintje-list
132
132
  class="lintje-job-list"
133
133
  heading-level=${this.headingLevel}
134
134
  .items=${e.map((t) => d(t, e.every((e) => e.state === "done")))}
@@ -1,9 +1,9 @@
1
- import { Bt as e, Gt as t, Ht as n, Kt as r, O as i, k as a, ut as o } 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, ut as o } from "../chunks/base-Bg-IFOPG.js";
2
2
  import "./kpi.js";
3
3
  //#region src/components/charts/kpi-row/kpi-row.css?inline
4
- var s = "/* The KPIs render in this root, so these rules reach the items directly (no `::slotted()`). */\n:host { display: block; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-grid {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--grid-gutter);\n align-items: stretch;\n /* A view's held `min-height` is taken by the grid too, so the items fill the held box. */\n min-height: inherit;\n}\n\n/* Lower bound 768 on purpose: the one-column rule below it has lower specificity. */\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-grid > [style*='span 4'] { grid-column: span 6 !important; }\n .lintje-grid > [style*='span 8'] { grid-column: span 12 !important; }\n}\n/* Grid sets grid-template-columns inline, so only !important beats it. */\n@media (max-width: 767px) {\n .lintje-grid { grid-template-columns: minmax(0, 1fr) !important; }\n .lintje-grid > * { grid-column: span 1 !important; }\n}\n\n/* After the fallback rules above, so at equal specificity this wins on source order. */\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-grid--kpi-row { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }\n .lintje-grid--kpi-row > * { grid-column: span 1 !important; }\n}\n@media (max-width: 767px) {\n .lintje-grid--kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }\n .lintje-grid--kpi-row > * { grid-column: span 1 !important; }\n}\n", c = class extends i {
4
+ var s = "/* The KPIs render in this root, so these rules reach the items directly (no `::slotted()`). */\n:host { display: block; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-grid {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--grid-gutter);\n align-items: stretch;\n /* A view's held `min-height` is taken by the grid too, so the items fill the held box. */\n min-height: inherit;\n}\n\n/* Lower bound 768 on purpose: the one-column rule below it has lower specificity. */\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-grid > [style*='span 4'] { grid-column: span 6 !important; }\n .lintje-grid > [style*='span 8'] { grid-column: span 12 !important; }\n}\n/* Grid sets grid-template-columns inline, so only !important beats it. */\n@media (max-width: 767px) {\n .lintje-grid { grid-template-columns: minmax(0, 1fr) !important; }\n .lintje-grid > * { grid-column: span 1 !important; }\n}\n\n/* After the fallback rules above, so at equal specificity this wins on source order. */\n@media (min-width: 768px) and (max-width: 1023px) {\n .lintje-grid--kpi-row { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }\n .lintje-grid--kpi-row > * { grid-column: span 1 !important; }\n}\n@media (max-width: 767px) {\n .lintje-grid--kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }\n .lintje-grid--kpi-row > * { grid-column: span 1 !important; }\n}\n", c = class extends r {
5
5
  static {
6
- this.styles = [a, n(s)];
6
+ this.styles = [i, n(s)];
7
7
  }
8
8
  static {
9
9
  this.properties = { data: { attribute: !1 } };
@@ -13,11 +13,11 @@ var s = "/* The KPIs render in this root, so these rules reach the items directl
13
13
  }
14
14
  render() {
15
15
  let e = this.data?.kpis ?? [], n = this.data?.columns ?? 5;
16
- return r`<div
16
+ return a`<div
17
17
  class="lintje-grid lintje-grid--kpi-row"
18
18
  ${o({ gridTemplateColumns: `repeat(${n}, minmax(0, 1fr))` })}
19
19
  >
20
- ${e.map((e, n) => r`<lintje-kpi
20
+ ${e.map((e, n) => a`<lintje-kpi
21
21
  index=${n}
22
22
  label=${e.label}
23
23
  icon=${e.icon ?? t}
@@ -25,6 +25,8 @@ var s = "/* The KPIs render in this root, so these rules reach the items directl
25
25
  .suffix=${e.suffix}
26
26
  .items=${e.items}
27
27
  .trend=${e.trend}
28
+ .sparkline=${e.sparkline}
29
+ .gauge=${e.gauge}
28
30
  .note=${e.note}
29
31
  .detail=${e.detail}
30
32
  layout=${e.layout ?? "row"}