lintje 0.2.0 → 0.3.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 (276) hide show
  1. package/README.md +2 -2
  2. package/dist-elements/actions.js +1 -1
  3. package/dist-elements/chunks/{base-Bg-IFOPG.js → base-CbmWxUig.js} +444 -272
  4. package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
  5. package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
  6. package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
  7. package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DLkXPUpV.js} +6 -6
  8. package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
  9. package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-BwOxE5BX.js} +1 -1
  10. package/dist-elements/chunks/input-CRW_exv_.js +195 -0
  11. package/dist-elements/chunks/{player-DXOZEyEy.js → player-B8QXJ0Z5.js} +26 -26
  12. package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-B19AyZBS.js} +3 -3
  13. package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BHoOgy0g.js} +81 -75
  14. package/dist-elements/core.js +1 -1
  15. package/dist-elements/custom-elements.json +980 -670
  16. package/dist-elements/data-types.json +6798 -0
  17. package/dist-elements/feedback.js +2 -1
  18. package/dist-elements/frame.js +0 -2
  19. package/dist-elements/guides/dashboard.md +8 -0
  20. package/dist-elements/guides/events.md +4 -5
  21. package/dist-elements/guides/loading.md +8 -7
  22. package/dist-elements/guides/page-contents.md +110 -0
  23. package/dist-elements/guides/start.md +12 -0
  24. package/dist-elements/inputs.js +2 -1
  25. package/dist-elements/layout.js +1 -1
  26. package/dist-elements/lintje.js +6975 -6120
  27. package/dist-elements/overlays.js +2 -2
  28. package/dist-elements/skills/lintje/SKILL.md +1 -1
  29. package/dist-elements/tables.js +1 -1
  30. package/dist-elements/tag/activity-log.js +15 -15
  31. package/dist-elements/tag/ai-label.js +10 -10
  32. package/dist-elements/tag/announcement.js +36 -76
  33. package/dist-elements/tag/app-search.js +49 -49
  34. package/dist-elements/tag/audio-player.js +57 -57
  35. package/dist-elements/tag/badge.js +1 -1
  36. package/dist-elements/tag/breadcrumbs.js +15 -15
  37. package/dist-elements/tag/button.js +1 -1
  38. package/dist-elements/tag/card-list.js +12 -12
  39. package/dist-elements/tag/card.js +39 -44
  40. package/dist-elements/tag/chart.js +1050 -795
  41. package/dist-elements/tag/chat-answer.js +49 -49
  42. package/dist-elements/tag/chat-composer.js +75 -71
  43. package/dist-elements/tag/chat-message.js +8 -8
  44. package/dist-elements/tag/chat-strip.js +22 -22
  45. package/dist-elements/tag/chat-suggestions.js +12 -12
  46. package/dist-elements/tag/chat.js +56 -56
  47. package/dist-elements/tag/checkbox-group.d.ts +1 -0
  48. package/dist-elements/tag/checkbox-group.js +59 -0
  49. package/dist-elements/tag/checkbox.js +8 -8
  50. package/dist-elements/tag/code.js +9 -9
  51. package/dist-elements/tag/combobox.js +18 -18
  52. package/dist-elements/tag/conflict-alert.js +12 -12
  53. package/dist-elements/tag/copy-button.js +14 -14
  54. package/dist-elements/tag/data-table.js +878 -530
  55. package/dist-elements/tag/date-input.js +30 -30
  56. package/dist-elements/tag/date-range.js +37 -37
  57. package/dist-elements/tag/description-list.js +29 -32
  58. package/dist-elements/tag/dialog.d.ts +1 -0
  59. package/dist-elements/tag/dialog.js +144 -0
  60. package/dist-elements/tag/document-viewer.js +23 -23
  61. package/dist-elements/tag/drawer.js +28 -32
  62. package/dist-elements/tag/empty-state.js +19 -30
  63. package/dist-elements/tag/error-page.d.ts +1 -0
  64. package/dist-elements/tag/error-page.js +109 -0
  65. package/dist-elements/tag/error-summary.js +10 -10
  66. package/dist-elements/tag/expander.js +8 -8
  67. package/dist-elements/tag/explainer.js +11 -11
  68. package/dist-elements/tag/field.js +5 -5
  69. package/dist-elements/tag/file-upload.js +34 -34
  70. package/dist-elements/tag/filter-bar.js +56 -56
  71. package/dist-elements/tag/filter-sheet.js +11 -11
  72. package/dist-elements/tag/filter-zone.js +31 -31
  73. package/dist-elements/tag/footer.js +21 -21
  74. package/dist-elements/tag/form-actions.js +29 -25
  75. package/dist-elements/tag/form-section.js +6 -6
  76. package/dist-elements/tag/form.js +12 -12
  77. package/dist-elements/tag/gallery.js +14 -14
  78. package/dist-elements/tag/grid-item.js +1 -1
  79. package/dist-elements/tag/grid.js +1 -1
  80. package/dist-elements/tag/hero.js +12 -12
  81. package/dist-elements/tag/highlight.js +5 -5
  82. package/dist-elements/tag/icon-button.js +1 -1
  83. package/dist-elements/tag/icon.js +1 -1
  84. package/dist-elements/tag/job-list.js +22 -44
  85. package/dist-elements/tag/kpi-row.js +12 -10
  86. package/dist-elements/tag/kpi.js +146 -137
  87. package/dist-elements/tag/level-meter.js +11 -11
  88. package/dist-elements/tag/list.js +55 -55
  89. package/dist-elements/tag/logo.js +30 -30
  90. package/dist-elements/tag/map.js +690 -665
  91. package/dist-elements/tag/menu-button.js +70 -69
  92. package/dist-elements/tag/modal.js +28 -37
  93. package/dist-elements/tag/multiselect.js +34 -34
  94. package/dist-elements/tag/note.js +5 -5
  95. package/dist-elements/tag/notifications.js +36 -36
  96. package/dist-elements/tag/number-input.js +12 -12
  97. package/dist-elements/tag/page-header.js +140 -37
  98. package/dist-elements/tag/pagination.js +53 -48
  99. package/dist-elements/tag/popover.js +1 -1
  100. package/dist-elements/tag/progress-bar.js +1 -1
  101. package/dist-elements/tag/prose.js +6 -6
  102. package/dist-elements/tag/qr-code.js +7 -7
  103. package/dist-elements/tag/radio-group.js +12 -12
  104. package/dist-elements/tag/range.js +22 -22
  105. package/dist-elements/tag/recording-status.js +14 -14
  106. package/dist-elements/tag/repeater.js +10 -10
  107. package/dist-elements/tag/segmented.js +13 -13
  108. package/dist-elements/tag/select.js +10 -10
  109. package/dist-elements/tag/shell.js +356 -339
  110. package/dist-elements/tag/skeleton.js +1 -1
  111. package/dist-elements/tag/slot-picker.js +14 -14
  112. package/dist-elements/tag/sortable-list.js +14 -14
  113. package/dist-elements/tag/spinner.js +1 -1
  114. package/dist-elements/tag/split-pane.js +12 -12
  115. package/dist-elements/tag/status-dot.js +1 -1
  116. package/dist-elements/tag/stepper.js +21 -21
  117. package/dist-elements/tag/streaming-text.js +13 -13
  118. package/dist-elements/tag/sub-nav.js +39 -38
  119. package/dist-elements/tag/tabs.js +38 -38
  120. package/dist-elements/tag/tag-input.js +19 -19
  121. package/dist-elements/tag/text-editor.js +24 -24
  122. package/dist-elements/tag/text-input.js +14 -14
  123. package/dist-elements/tag/textarea.js +14 -14
  124. package/dist-elements/tag/tile.js +1 -1
  125. package/dist-elements/tag/time-input.js +19 -19
  126. package/dist-elements/tag/toast.js +32 -23
  127. package/dist-elements/tag/toggle.js +8 -8
  128. package/dist-elements/tag/toggletip.js +27 -27
  129. package/dist-elements/tag/tooltip.js +1 -1
  130. package/dist-elements/tag/transcript.js +48 -48
  131. package/dist-elements/tag/translator.js +13 -13
  132. package/dist-elements/tag/tree-view.js +13 -13
  133. package/dist-elements/tag/user-menu.js +37 -37
  134. package/dist-elements/tag/video-player.js +21 -21
  135. package/dist-elements/tokens.css +120 -96
  136. package/dist-elements/types/bundle/feedback.d.ts +1 -0
  137. package/dist-elements/types/bundle/frame.d.ts +0 -2
  138. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  139. package/dist-elements/types/bundle/overlays.d.ts +1 -1
  140. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
  141. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
  142. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
  143. package/dist-elements/types/components/charts/chart/chart.d.ts +5 -4
  144. package/dist-elements/types/components/charts/kpi/kpi.d.ts +16 -8
  145. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
  146. package/dist-elements/types/components/charts/note/note.d.ts +1 -1
  147. package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
  148. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +7 -8
  149. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
  150. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
  151. package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
  152. package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
  153. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
  154. package/dist-elements/types/components/content/code/code.d.ts +2 -3
  155. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
  156. package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
  157. package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
  158. package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
  159. package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
  160. package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
  161. package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
  162. package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
  163. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
  164. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
  165. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
  166. package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
  167. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
  168. package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
  169. package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
  170. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
  171. package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
  172. package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
  173. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
  174. package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
  175. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
  176. package/dist-elements/types/components/forms/form/form.d.ts +5 -5
  177. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
  178. package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
  179. package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
  180. package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
  181. package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
  182. package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
  183. package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
  184. package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
  185. package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
  186. package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
  187. package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
  188. package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
  189. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
  190. package/dist-elements/types/components/index.d.ts +8 -9
  191. package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
  192. package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
  193. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
  194. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
  195. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
  196. package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
  197. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
  198. package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
  199. package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
  200. package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
  201. package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
  202. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
  203. package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
  204. package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
  205. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
  206. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
  207. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
  208. package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
  209. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +7 -8
  210. package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
  211. package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
  212. package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
  213. package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
  214. package/dist-elements/types/components/map/map/map.d.ts +10 -9
  215. package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
  216. package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
  217. package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
  218. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
  219. package/dist-elements/types/components/shared/charts/index.d.ts +4 -1
  220. package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
  221. package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
  222. package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
  223. package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
  224. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +7 -0
  225. package/dist-elements/types/components/shared/charts/shared/types.d.ts +29 -0
  226. package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
  227. package/dist-elements/types/components/shared/dialog.d.ts +9 -0
  228. package/dist-elements/types/components/shared/overflow.d.ts +58 -0
  229. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
  230. package/dist-elements/types/components/tables/card/card.d.ts +14 -20
  231. package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
  232. package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
  233. package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
  234. package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
  235. package/dist-elements/types/components/tables/list/list.d.ts +9 -20
  236. package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
  237. package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
  238. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
  239. package/dist-elements/types/core/media.d.ts +2 -2
  240. package/dist-elements/types/core/motion.d.ts +5 -0
  241. package/dist-elements/types/core/print.d.ts +15 -0
  242. package/dist-elements/types/core/shortcuts.d.ts +2 -2
  243. package/dist-elements/types/icons/icon/icon.d.ts +2 -3
  244. package/dist-elements/types/icons/register.d.ts +1 -1
  245. package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
  246. package/dist-elements/types/primitives/button/button.d.ts +12 -9
  247. package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
  248. package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
  249. package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
  250. package/dist-elements/types/primitives/index.d.ts +3 -1
  251. package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
  252. package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
  253. package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
  254. package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
  255. package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
  256. package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
  257. package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
  258. package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
  259. package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
  260. package/dist-elements/types/primitives/tooltip/tooltip.d.ts +6 -6
  261. package/dist-elements/types/types.d.ts +70 -10
  262. package/dist-icons/functioneel-kolommen.svg +1 -0
  263. package/dist-icons/functioneel-trechter.svg +1 -0
  264. package/package.json +1 -1
  265. package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
  266. package/dist-elements/chunks/download-y528pIHP.js +0 -230
  267. package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
  268. package/dist-elements/tag/confirm-dialog.d.ts +0 -1
  269. package/dist-elements/tag/confirm-dialog.js +0 -118
  270. package/dist-elements/tag/session-expiry.d.ts +0 -1
  271. package/dist-elements/tag/session-expiry.js +0 -184
  272. package/dist-elements/tag/shortcuts.d.ts +0 -1
  273. package/dist-elements/tag/shortcuts.js +0 -104
  274. package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
  275. package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
  276. package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
@@ -1,5 +1,5 @@
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";
1
+ import { Gt as e, I as t, Jt as n, Kt as r, Q as i, Ut as a, Yt as o, Zt as s, en as c, lt as l, nn as u, st as d, ut as f } from "../chunks/base-CbmWxUig.js";
2
+ import { t as p } from "../chunks/sentence-B19AyZBS.js";
3
3
  function m(e) {
4
4
  return e.open;
5
5
  }
@@ -28,18 +28,18 @@ function g(e) {
28
28
  }
29
29
  //#endregion
30
30
  //#region src/components/filters/filter-zone/filter-zone.css?inline
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
- 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 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 = () => {
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), print 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/* On paper the sentence stands at the paper's edge, in line with the content under it. */\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 .lintje-filter-bar__header,\n .lintje-filter-bar__summary,\n .lintje-summary-bar { padding-inline: 0; }\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 n {
32
+ constructor(...t) {
33
+ super(...t), 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 r(this, e), 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 && c(e) || this.act({
35
+ e && i(e) || this.act({
36
36
  type: "page-scrolled",
37
37
  distance: this.pageScroll() - this.#t
38
38
  });
39
39
  };
40
40
  }
41
41
  static {
42
- this.styles = [e, i(_)];
42
+ this.styles = [l, s(_)];
43
43
  }
44
44
  static {
45
45
  this.properties = {
@@ -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 && c(t);
86
+ this.#e = this.#e || t != null && i(t);
87
87
  }
88
88
  updated(e) {
89
- this.#e && (this.#e = !1, c(this) || this.renderRoot.querySelector(".lintje-filter-toggle")?.focus());
89
+ this.#e && (this.#e = !1, i(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;
@@ -99,9 +99,9 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
99
99
  this.report(!1);
100
100
  return;
101
101
  }
102
- let i = t(r, "--h-topbar", 56);
102
+ let a = t(r, "--h-topbar", 56);
103
103
  this.observer = new IntersectionObserver(([e]) => this.report(!e.isIntersecting), {
104
- rootMargin: `-${i}px 0px 0px 0px`,
104
+ rootMargin: `-${a}px 0px 0px 0px`,
105
105
  threshold: 0
106
106
  }), this.observer.observe(r);
107
107
  }
@@ -110,14 +110,14 @@ 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 = s(), 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 = a(), i = r && r !== document.scrollingElement ? r : document.scrollingElement;
114
114
  if (!e || !n || !i) return !0;
115
- let a = t(e, "--h-topbar", 56);
115
+ let o = t(e, "--h-topbar", 56);
116
116
  return g({
117
117
  scrollHeight: i.scrollHeight,
118
118
  viewportHeight: i.clientHeight,
119
119
  lost: n.offsetHeight - t(n, "--h-contextbar", 48),
120
- threshold: this.pageScroll() + e.getBoundingClientRect().top - a
120
+ threshold: this.pageScroll() + e.getBoundingClientRect().top - o
121
121
  });
122
122
  }
123
123
  get state() {
@@ -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 = s();
136
+ let e = a();
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 = s();
141
+ let t = a();
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 d`<div class="lintje-filter-bar lintje-filter-bar--mobile">
145
+ if (this.mobile.matches) return u`<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 d`
149
+ return u`
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 ? d`<div class="lintje-filter-bar__placeholder" aria-hidden="true"></div>` : r}
155
+ ${t ? u`<div class="lintje-filter-bar__placeholder" aria-hidden="true"></div>` : c}
156
156
  <div
157
- class=${l({
157
+ class=${d({
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 d`
183
+ return u`
184
184
  <div class="lintje-filter-bar__header">
185
- ${u("functioneel-filters", { size: 16 })}
185
+ ${f("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 ? d`<span class="lintje-filter-bar__counter">
189
+ ${this.modified > 0 ? u`<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>
@@ -196,13 +196,13 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
196
196
  @click=${() => this.emitLocal("lintje-filters-reset")}
197
197
  >
198
198
  Herstel standaard
199
- </button>` : r}
199
+ </button>` : c}
200
200
  ${this.renderToggle(!0)}
201
201
  </div>
202
202
  `;
203
203
  }
204
204
  renderSummaryBar() {
205
- return d`<div
205
+ return u`<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 ? d`<span class="lintje-summary-bar__counter">
221
+ ${this.modified > 0 ? u`<span class="lintje-summary-bar__counter">
222
222
  <span class="lintje-summary-bar__dot"></span>
223
223
  ${this.modified} afwijkend ·
224
224
  <button
@@ -228,14 +228,14 @@ var _ = "/*\n * The filter zone's own box: header, controls row, sentence and su
228
228
  >
229
229
  herstel
230
230
  </button>
231
- </span>` : r}
231
+ </span>` : c}
232
232
  ${this.renderToggle(!1)}
233
233
  </div>`;
234
234
  }
235
235
  renderToggle(e) {
236
- return d`<button
236
+ return u`<button
237
237
  type="button"
238
- class=${l({
238
+ class=${d({
239
239
  "lintje-filter-toggle": !0,
240
240
  "is-expanded": e
241
241
  })}
@@ -245,13 +245,13 @@ 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
- ${u("functioneel-delta-omlaag", {
248
+ ${f("functioneel-delta-omlaag", {
249
249
  size: 16,
250
250
  className: "lintje-filter-toggle__chevron"
251
251
  })}
252
252
  </button>`;
253
253
  }
254
254
  };
255
- n("lintje-filter-zone", v);
255
+ o("lintje-filter-zone", v);
256
256
  //#endregion
257
257
  export { v as LintjeFilterZone };
@@ -1,43 +1,43 @@
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";
1
+ import { H as e, Jt as t, Yt as n, Zt as r, en as i, nn as a, nt as o } from "../chunks/base-CbmWxUig.js";
2
2
  //#region src/components/frame/footer/footer.css?inline
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 {
3
+ var s = ":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 screen and (max-width: 767px) {\n .lintje-footer__inner { padding-top: var(--space-8); }\n .lintje-footer__columns { grid-template-columns: minmax(0, 1fr); }\n}\n", c = class extends t {
4
4
  static {
5
- this.styles = n(o);
5
+ this.styles = [r(s), r(o)];
6
6
  }
7
7
  static {
8
8
  this.properties = { data: { attribute: !1 } };
9
9
  }
10
- onLink(e, t) {
11
- r(e) && this.followLink(t, e);
10
+ onLink(t, n) {
11
+ e(t) && this.followLink(n, t);
12
12
  }
13
13
  link(e, t) {
14
- return i`<a class=${t} href=${e.href} @click=${(t) => this.onLink(t, e.href)}
14
+ return a`<a class=${t} href=${e.href} @click=${(t) => this.onLink(t, e.href)}
15
15
  >${e.label}</a
16
16
  >`;
17
17
  }
18
18
  render() {
19
- let e = this.data ?? {}, n = e.columns ?? [], r = e.links ?? [];
20
- return i`<footer class="lintje-footer">
19
+ let e = this.data ?? {}, t = e.columns ?? [], n = e.links ?? [];
20
+ return a`<footer class="lintje-footer">
21
21
  <div class="lintje-footer__inner">
22
- ${e.tagline ? i`<p class="lintje-footer__tagline">${e.tagline}</p>` : t}
23
- ${n.length ? i`<div class="lintje-footer__columns">
24
- ${n.map((e) => i`<section class="lintje-footer__column">
22
+ ${e.tagline ? a`<p class="lintje-footer__tagline">${e.tagline}</p>` : i}
23
+ ${t.length ? a`<div class="lintje-footer__columns">
24
+ ${t.map((e) => a`<section class="lintje-footer__column">
25
25
  <h2 class="lintje-footer__heading">${e.heading}</h2>
26
26
  <ul class="lintje-footer__list">
27
- ${e.links.map((e) => i`<li>${this.link(e, "lintje-footer__link")}</li>`)}
27
+ ${e.links.map((e) => a`<li>${this.link(e, "lintje-footer__link")}</li>`)}
28
28
  </ul>
29
29
  </section>`)}
30
- </div>` : t}
31
- ${r.length || e.note ? i`<div class="lintje-footer__bottom">
32
- ${r.length ? i`<ul class="lintje-footer__meta">
33
- ${r.map((e) => i`<li>${this.link(e, "lintje-footer__meta-link")}</li>`)}
34
- </ul>` : t}
35
- ${e.note ? i`<p class="lintje-footer__note">${e.note}</p>` : t}
36
- </div>` : t}
30
+ </div>` : i}
31
+ ${n.length || e.note ? a`<div class="lintje-footer__bottom">
32
+ ${n.length ? a`<ul class="lintje-footer__meta">
33
+ ${n.map((e) => a`<li>${this.link(e, "lintje-footer__meta-link")}</li>`)}
34
+ </ul>` : i}
35
+ ${e.note ? a`<p class="lintje-footer__note">${e.note}</p>` : i}
36
+ </div>` : i}
37
37
  </div>
38
38
  </footer>`;
39
39
  }
40
40
  };
41
- e("lintje-footer", s);
41
+ n("lintje-footer", c);
42
42
  //#endregion
43
- export { s as LintjeFooter };
43
+ export { c as LintjeFooter };
@@ -1,8 +1,8 @@
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
- import { n as u, t as d } from "../chunks/controls-B1455oPG.js";
1
+ import { Gt as e, Jt as t, Kt as n, Ut as r, Yt as i, Zt as a, en as o, lt as s, nn as c, nt as l, ut as u } from "../chunks/base-CbmWxUig.js";
2
+ import { n as d, t as f } from "../chunks/controls-DxmnDSBr.js";
3
3
  //#region src/components/forms/form-actions/form-actions.css?inline
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";
5
- function h(e) {
4
+ var p = "/* 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 screen and (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", m = "Wijzigingen nog niet opgeslagen", h = "Bezig met opslaan";
5
+ function g(e) {
6
6
  if (!e) return "";
7
7
  if (typeof e == "string" && /^\d{1,2}:\d{2}$/.test(e)) return e;
8
8
  let t = e instanceof Date ? e : new Date(e);
@@ -10,25 +10,29 @@ function h(e) {
10
10
  let n = (e) => String(e).padStart(2, "0");
11
11
  return `${n(t.getHours())}:${n(t.getMinutes())}`;
12
12
  }
13
- var g = /* @__PURE__ */ new Map(), _ = null;
14
- function v() {
15
- let e = Math.max(0, ...g.values());
16
- if (g.size === 0) {
17
- _ && (_.element.style.scrollPaddingBottom = _.before), _ = null;
13
+ var _ = /* @__PURE__ */ new Map(), v = null;
14
+ function y() {
15
+ let e = Math.max(0, ..._.values());
16
+ if (_.size === 0) {
17
+ v && (v.element.style.scrollPaddingBottom = v.before), v = null;
18
18
  return;
19
19
  }
20
- let t = o();
21
- t && (_?.element !== t && (_ && (_.element.style.scrollPaddingBottom = _.before), _ = {
20
+ let t = r();
21
+ t && (v?.element !== t && (v && (v.element.style.scrollPaddingBottom = v.before), v = {
22
22
  element: t,
23
23
  before: t.style.scrollPaddingBottom
24
24
  }), t.style.scrollPaddingBottom = `${e}px`);
25
25
  }
26
- var y = class extends l {
27
- constructor(...e) {
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;
26
+ var b = class extends t {
27
+ constructor(...t) {
28
+ super(...t), this.state = "", this.#e = new n(this, e), this.#t = new d("busy"), this.#n = new d("disabled"), this.#r = new f("block"), this.#i = null;
29
29
  }
30
30
  static {
31
- this.styles = [e, r(f)];
31
+ this.styles = [
32
+ s,
33
+ a(p),
34
+ a(l)
35
+ ];
32
36
  }
33
37
  static {
34
38
  this.properties = {
@@ -48,8 +52,8 @@ var y = class extends l {
48
52
  #r;
49
53
  #i;
50
54
  connectedCallback() {
51
- super.connectedCallback(), g.set(this, this.offsetHeight), v(), typeof ResizeObserver < "u" && (this.#i = new ResizeObserver(() => {
52
- this.isConnected && (g.set(this, this.offsetHeight), v());
55
+ super.connectedCallback(), _.set(this, this.offsetHeight), y(), typeof ResizeObserver < "u" && (this.#i = new ResizeObserver(() => {
56
+ this.isConnected && (_.set(this, this.offsetHeight), y());
53
57
  }), this.#i.observe(this));
54
58
  }
55
59
  get buttons() {
@@ -60,7 +64,7 @@ var y = class extends l {
60
64
  return e.filter((e) => e.getAttribute("variant") === "primary").at(-1) ?? e.at(-1) ?? null;
61
65
  }
62
66
  disconnectedCallback() {
63
- this.#i?.disconnect(), this.#i = null, g.delete(this), v(), this.#t.release(), this.#n.release(), this.#r.release(), super.disconnectedCallback();
67
+ this.#i?.disconnect(), this.#i = null, _.delete(this), y(), this.#t.release(), this.#n.release(), this.#r.release(), super.disconnectedCallback();
64
68
  }
65
69
  updated() {
66
70
  this.#a();
@@ -73,19 +77,19 @@ var y = class extends l {
73
77
  this.#e.matches ? this.#r.apply(this.buttons, !0) : this.#r.release();
74
78
  }
75
79
  renderStatus() {
76
- let e = h(this.savedAt);
80
+ let e = g(this.savedAt);
77
81
  switch (this.state) {
78
- case "dirty": return c`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${p}`;
79
- case "busy": return c`${m}`;
82
+ case "dirty": return c`<span class="lintje-form-actions__dot" aria-hidden="true"></span>${m}`;
83
+ case "busy": return c`${h}`;
80
84
  case "saved":
81
85
  case "draft": {
82
86
  let t = this.state === "draft" ? "Concept opgeslagen" : "Opgeslagen";
83
- return c`${s("functioneel-vinkje", {
87
+ return c`${u("functioneel-vinkje", {
84
88
  size: 16,
85
89
  className: "lintje-form-actions__check"
86
90
  })}${e ? `${t} om ${e}` : t}`;
87
91
  }
88
- default: return n;
92
+ default: return o;
89
93
  }
90
94
  }
91
95
  render() {
@@ -97,6 +101,6 @@ var y = class extends l {
97
101
  </div>`;
98
102
  }
99
103
  };
100
- t("lintje-form-actions", y);
104
+ i("lintje-form-actions", b);
101
105
  //#endregion
102
- export { y as LintjeFormActions, h as clockTime };
106
+ export { b as LintjeFormActions, g as clockTime };
@@ -1,7 +1,7 @@
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
- import { a as o, n as s } from "../chunks/controls-B1455oPG.js";
1
+ import { Jt as e, Yt as t, Zt as n, en as r, nn as i, st as a } from "../chunks/base-CbmWxUig.js";
2
+ import { a as o, n as s } from "../chunks/controls-DxmnDSBr.js";
3
3
  //#region src/components/forms/form-section/form-section.css?inline
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 {
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 e {
5
5
  constructor(...e) {
6
6
  super(...e), this.heading = "", this.variant = "plain", this.disabled = !1, this.#e = new s("disabled");
7
7
  }
@@ -34,11 +34,11 @@ var c = "/* Slotted children keep clear of the sticky top bar when the error sum
34
34
  }
35
35
  render() {
36
36
  return i`<fieldset
37
- class=${r({
37
+ class=${a({
38
38
  "lintje-form-section": !0,
39
39
  "lintje-form-section--tile": this.variant === "tile"
40
40
  })}
41
- aria-describedby=${this.description ? "lintje-form-section-description" : t}
41
+ aria-describedby=${this.description ? "lintje-form-section-description" : r}
42
42
  ?disabled=${this.disabled}
43
43
  >
44
44
  <legend class="lintje-form-section__legend">
@@ -57,6 +57,6 @@ var c = "/* Slotted children keep clear of the sticky top bar when the error sum
57
57
  </fieldset>`;
58
58
  }
59
59
  };
60
- e("lintje-form-section", l);
60
+ t("lintje-form-section", l);
61
61
  //#endregion
62
62
  export { l as LintjeFormSection };
@@ -1,5 +1,5 @@
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
- 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";
1
+ import { Gt as e, Jt as t, Kt as n, Q as r, Yt as i, Z as a, Zt as o, en as s, nn as c } from "../chunks/base-CbmWxUig.js";
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-DxmnDSBr.js";
3
3
  import "./error-summary.js";
4
4
  import "./form-actions.js";
5
5
  //#region src/components/forms/form/form.css?inline
@@ -28,9 +28,9 @@ function S(e, t, n = Date.now()) {
28
28
  return null;
29
29
  }
30
30
  }
31
- var C = class extends c {
32
- constructor(...e) {
33
- super(...e), this.values = {}, this.busy = !1, this.draftTtl = 24, this.dirty = !1, this.phase = "", this.#e = {}, this.#t = !1, this.#n = !1, this.#r = null, this.#i = !1, this.#a = null, this.#o = new MutationObserver((e) => {
31
+ var C = class extends t {
32
+ constructor(...t) {
33
+ super(...t), this.values = {}, this.busy = !1, this.draftTtl = 24, this.dirty = !1, this.phase = "", this.#e = {}, this.#t = !1, this.#n = !1, this.#r = null, this.#i = !1, this.#a = null, this.#o = new MutationObserver((e) => {
34
34
  let t = [], n = [];
35
35
  for (let r of e) {
36
36
  for (let e of r.addedNodes) t.push(...f(e));
@@ -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 a(this, i), this.#c = new p("disabled"), this.#l = new p("stacked"), this.#u = (e) => {
45
+ }), this.#s = new n(this, e), 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);
@@ -68,7 +68,7 @@ var C = class extends c {
68
68
  }, this.#h = "", this.#E = [], this.#D = !1, this.#O = !1;
69
69
  }
70
70
  static {
71
- this.styles = r(g);
71
+ this.styles = o(g);
72
72
  }
73
73
  static {
74
74
  this.properties = {
@@ -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 = o(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 = r(this) ? a() : null), e.has("dirty") && (this.dirty ? window.addEventListener("beforeunload", this.#m) : window.removeEventListener("beforeunload", this.#m));
247
247
  }
248
248
  #E;
249
249
  #D;
@@ -260,7 +260,7 @@ var C = class extends c {
260
260
  #A() {
261
261
  let e = this.#a;
262
262
  this.#a = null, e && requestAnimationFrame(() => {
263
- let t = n();
263
+ let t = a();
264
264
  t && t !== document.body || e.isConnected && e.focus();
265
265
  });
266
266
  }
@@ -275,10 +275,10 @@ 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 s`<form
278
+ return c`<form
279
279
  class="lintje-form"
280
280
  novalidate
281
- aria-busy=${this.busy ? "true" : t}
281
+ aria-busy=${this.busy ? "true" : s}
282
282
  @submit=${(e) => {
283
283
  e.preventDefault(), this.submit();
284
284
  }}
@@ -297,6 +297,6 @@ var C = class extends c {
297
297
  </form>`;
298
298
  }
299
299
  };
300
- e("lintje-form", C);
300
+ i("lintje-form", C);
301
301
  //#endregion
302
302
  export { _ as DRAFT_PREFIX, C as LintjeForm, S as readDraft };
@@ -1,6 +1,6 @@
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";
1
+ import { Jt as e, Yt as t, Zt as n, en as r, nn as i, st as a } from "../chunks/base-CbmWxUig.js";
2
2
  //#region src/components/content/gallery/gallery.css?inline
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 {
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 e {
4
4
  constructor(...e) {
5
5
  super(...e), this.items = [], this.selected = 0, this.label = "Afbeeldingen", this.spoken = "";
6
6
  }
@@ -26,35 +26,35 @@ var o = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
26
26
  }
27
27
  render() {
28
28
  let e = this.items;
29
- if (!e.length) return t;
30
- let n = this.shown, a = e[n];
29
+ if (!e.length) return r;
30
+ let t = this.shown, n = e[t];
31
31
  return i`<div class="lintje-gallery">
32
32
  <figure class="lintje-gallery__figure">
33
- <img class="lintje-gallery__image" src=${a.src} alt=${a.alt} />
34
- ${a.caption ? i`<figcaption class="lintje-gallery__caption">${a.caption}</figcaption>` : t}
33
+ <img class="lintje-gallery__image" src=${n.src} alt=${n.alt} />
34
+ ${n.caption ? i`<figcaption class="lintje-gallery__caption">${n.caption}</figcaption>` : r}
35
35
  </figure>
36
36
  ${e.length > 1 ? i`<ul class="lintje-gallery__thumbs" aria-label=${this.label}>
37
- ${e.map((a, o) => i`<li>
37
+ ${e.map((n, o) => i`<li>
38
38
  <button
39
39
  type="button"
40
- class=${r({
40
+ class=${a({
41
41
  "lintje-gallery__thumb": !0,
42
- "is-selected": o === n
42
+ "is-selected": o === t
43
43
  })}
44
- aria-current=${o === n ? "true" : t}
44
+ aria-current=${o === t ? "true" : r}
45
45
  @click=${() => this.choose(o)}
46
46
  >
47
- <img class="lintje-gallery__thumb-image" src=${a.src} alt="" />
47
+ <img class="lintje-gallery__thumb-image" src=${n.src} alt="" />
48
48
  <span class="visually-hidden"
49
- >Afbeelding ${o + 1} van ${e.length}: ${a.caption || a.alt}</span
49
+ >Afbeelding ${o + 1} van ${e.length}: ${n.caption || n.alt}</span
50
50
  >
51
51
  </button>
52
52
  </li>`)}
53
53
  </ul>
54
- <span class="visually-hidden" role="status">${this.spoken}</span>` : t}
54
+ <span class="visually-hidden" role="status">${this.spoken}</span>` : r}
55
55
  </div>`;
56
56
  }
57
57
  };
58
- e("lintje-gallery", s);
58
+ t("lintje-gallery", s);
59
59
  //#endregion
60
60
  export { s as LintjeGallery };
@@ -1 +1 @@
1
- export { y as LintjeGridItem } from "../chunks/base-Bg-IFOPG.js";
1
+ export { S as LintjeGridItem } from "../chunks/base-CbmWxUig.js";
@@ -1 +1 @@
1
- export { b as LintjeGrid } from "../chunks/base-Bg-IFOPG.js";
1
+ export { C as LintjeGrid } from "../chunks/base-CbmWxUig.js";