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
@@ -0,0 +1,144 @@
1
+ import { Gt as e, Jt as t, Kt as n, Yt as r, Zt as i, en as a, lt as o, nn as s, ut as c } from "../chunks/base-CbmWxUig.js";
2
+ import { n as l, r as u } from "../chunks/focus-trap-BwOxE5BX.js";
3
+ import { t as d } from "../chunks/dialog-close-u75fVEw4.js";
4
+ import { n as f, t as p } from "../chunks/controls-DxmnDSBr.js";
5
+ import { t as m } from "../chunks/dialog-DChINFxD.js";
6
+ //#region src/components/overlays/dialog/dialog.css?inline
7
+ var h = "/* `display: contents` keeps the host out of its parent's flex or grid layout. */\n:host { display: contents; }\n\n/* ------------------------------------------------------------------------ */\n\n/* Covers the whole viewport, above the shell's menu (z-index 30). */\n.lintje-dialog__scrim {\n position: fixed;\n z-index: 80;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--space-6);\n background: var(--color-overlay-page);\n animation: lintje-fade-in var(--dur-scrim) var(--ease-in-motion);\n}\n\n.lintje-dialog {\n width: min(440px, 100%);\n max-height: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--space-3);\n padding: var(--space-6);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 1px solid var(--color-border-strong);\n border-radius: var(--radius);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-modal) var(--ease-in-motion);\n}\n:host([wide]) .lintje-dialog { width: min(calc(15 * var(--space-10)), 100%); }\n/* The window takes focus only in an alert or when the trap pulls stray focus back; no ring. */\n.lintje-dialog:focus { outline: none; }\n\n.lintje-dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-4);\n}\n.lintje-dialog__heading { font: var(--text-h2); }\n/* The close button reaches into the padding, so it does not make the heading's line taller. */\n.lintje-dialog__close { margin: calc(var(--space-2) * -1) calc(var(--space-2) * -1) calc(var(--space-2) * -1) 0; }\n.lintje-dialog__close:hover { color: var(--color-text-primary); }\n\n/* A long form scrolls here; the padding keeps a field's focus ring inside the scroll box. */\n.lintje-dialog__body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n margin: calc(var(--focus-width) * -1) calc(var(--space-6) * -1);\n padding: var(--focus-width) var(--space-6);\n font: var(--text-body);\n}\n\n.lintje-dialog__footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-2) var(--space-4);\n margin-top: var(--space-3);\n}\n.lintje-dialog__footer[hidden] { display: none; }\n.lintje-dialog__note { font: var(--text-ui); }\n.lintje-dialog__actions {\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 buttons stack, the last (the answer) on top and the safe one at the bottom. */\n@media screen and (max-width: 767px) {\n .lintje-dialog__scrim { padding: var(--space-4); }\n .lintje-dialog { width: 100%; }\n .lintje-dialog__footer { flex-direction: column; align-items: stretch; }\n .lintje-dialog__actions { flex-direction: column-reverse; margin-left: 0; }\n}\n", g = "input:not([type=\"hidden\"], [type=\"checkbox\"], [type=\"radio\"]), select, textarea, [contenteditable]";
8
+ function _(e) {
9
+ return e.assignedNodes({ flatten: !0 }).some((e) => e.nodeType !== Node.TEXT_NODE || (e.textContent ?? "").trim() !== "");
10
+ }
11
+ var v = class extends t {
12
+ constructor(...t) {
13
+ super(...t), this.open = !1, this.heading = "", this.alert = !1, this.persistent = !1, this.wide = !1, this.busy = !1, this.footerSlotted = !1, this.#e = new n(this, e), this.#t = new m(() => this.ask("escape")), this.#n = new f("busy"), this.#r = new f("disabled"), this.#i = new p("block");
14
+ }
15
+ static {
16
+ this.styles = [
17
+ o,
18
+ i(d),
19
+ i(h)
20
+ ];
21
+ }
22
+ static {
23
+ this.properties = {
24
+ open: {
25
+ type: Boolean,
26
+ reflect: !0
27
+ },
28
+ heading: { type: String },
29
+ alert: {
30
+ type: Boolean,
31
+ reflect: !0
32
+ },
33
+ persistent: {
34
+ type: Boolean,
35
+ reflect: !0
36
+ },
37
+ wide: {
38
+ type: Boolean,
39
+ reflect: !0
40
+ },
41
+ busy: {
42
+ type: Boolean,
43
+ reflect: !0
44
+ },
45
+ footerSlotted: { state: !0 }
46
+ };
47
+ }
48
+ #e;
49
+ #t;
50
+ #n;
51
+ #r;
52
+ #i;
53
+ ask(e) {
54
+ this.busy || this.persistent && e !== "button" || this.emit("lintje-close", { reason: e });
55
+ }
56
+ get frame() {
57
+ return this.renderRoot.querySelector(".lintje-dialog");
58
+ }
59
+ get buttons() {
60
+ return Array.from(this.querySelectorAll(":scope > [slot=\"actions\"]"));
61
+ }
62
+ willUpdate(e) {
63
+ super.willUpdate(e), e.has("open") && this.open && (this.footerSlotted = this.querySelector(":scope > [slot=\"footer\"], :scope > [slot=\"actions\"]") !== null);
64
+ }
65
+ disconnectedCallback() {
66
+ this.#s(), super.disconnectedCallback();
67
+ }
68
+ updated(e) {
69
+ super.updated(e), this.open && !this.#t.held ? this.#a() : !this.open && this.#t.held && this.#s(), this.#c();
70
+ }
71
+ #a() {
72
+ let e = this.frame;
73
+ if (!e) return;
74
+ this.#t.hold(e);
75
+ let t = Array.from(this.querySelectorAll("*"), (e) => "updateComplete" in e ? e.updateComplete : null).filter((e) => e !== null);
76
+ Promise.all(t).then(() => {
77
+ this.open && this.#t.isTopmost() && this.#o();
78
+ });
79
+ }
80
+ #o() {
81
+ let e = this.frame;
82
+ if (!e) return;
83
+ let t = this.querySelector("[autofocus]");
84
+ if (t) return l(t).focus();
85
+ if (this.alert) return e.focus();
86
+ let n = this.renderRoot.querySelector(".lintje-dialog__body"), r = n ? u(n).find((e) => e.matches(g)) : void 0, i = this.renderRoot.querySelector(".lintje-dialog__close");
87
+ (r ?? i ?? e).focus();
88
+ }
89
+ #s() {
90
+ this.#t.release(), this.#n.release(), this.#r.release(), this.#i.release();
91
+ }
92
+ #c() {
93
+ if (!this.open) return;
94
+ let e = this.buttons;
95
+ if (this.busy) {
96
+ let t = e.filter((e) => ["primary", "danger"].includes(e.getAttribute("variant") ?? "")).at(-1) ?? e.at(-1);
97
+ this.#n.apply(t ? [t] : [], !0), this.#r.apply(e.filter((e) => e !== t), !0);
98
+ } else this.#n.release(), this.#r.release();
99
+ this.#e.matches ? this.#i.apply(e, !0) : this.#i.release();
100
+ }
101
+ onSlotChange() {
102
+ let e = this.renderRoot.querySelectorAll("slot[name]");
103
+ this.footerSlotted = Array.from(e).some(_), this.#c();
104
+ }
105
+ render() {
106
+ return this.open ? s`<div class="lintje-dialog__scrim" @click=${() => this.ask("scrim")}>
107
+ <div
108
+ class="lintje-dialog"
109
+ role=${this.alert ? "alertdialog" : "dialog"}
110
+ aria-modal="true"
111
+ aria-labelledby="lintje-dialog-heading"
112
+ aria-describedby=${this.alert ? "lintje-dialog-text" : a}
113
+ aria-busy=${this.busy ? "true" : a}
114
+ tabindex="-1"
115
+ @click=${(e) => e.stopPropagation()}
116
+ >
117
+ <header class="lintje-dialog__header">
118
+ <h2 id="lintje-dialog-heading" class="lintje-dialog__heading">${this.heading}</h2>
119
+ ${this.alert ? a : s`<button
120
+ type="button"
121
+ class="lintje-dialog-close lintje-dialog__close"
122
+ aria-label="Sluiten"
123
+ aria-disabled=${this.busy ? "true" : a}
124
+ @click=${() => this.ask("button")}
125
+ >
126
+ ${c("functioneel-kruis", { size: 16 })}
127
+ </button>`}
128
+ </header>
129
+ <div id="lintje-dialog-text" class="lintje-dialog__body"><slot></slot></div>
130
+ <div class="lintje-dialog__footer" ?hidden=${!this.footerSlotted}>
131
+ <div class="lintje-dialog__note">
132
+ <slot name="footer" @slotchange=${this.onSlotChange}></slot>
133
+ </div>
134
+ <div class="lintje-dialog__actions">
135
+ <slot name="actions" @slotchange=${this.onSlotChange}></slot>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </div>` : a;
140
+ }
141
+ };
142
+ r("lintje-dialog", v);
143
+ //#endregion
144
+ export { v as LintjeDialog };
@@ -1,7 +1,7 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, Z as i, et as a, j as o, qt as s, ut as c, zt as l } from "../chunks/base-Bg-IFOPG.js";
1
+ import { Jt as e, L as t, Yt as n, Zt as r, bt as i, en as a, lt as o, nn as s, st as c, ut as l } from "../chunks/base-CbmWxUig.js";
2
2
  import "./empty-state.js";
3
3
  //#region src/components/content/document-viewer/document-viewer.css?inline
4
- var u = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-document-viewer {\n display: flex;\n flex-direction: column;\n height: 100%;\n border: 1px solid var(--color-border-default);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n}\n\n.lintje-document-viewer__toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-2) var(--space-4);\n padding: var(--space-1) var(--space-3);\n border-bottom: 1px solid var(--color-border-default);\n font: var(--text-ui);\n}\n.lintje-document-viewer__name {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 700;\n}\n.lintje-document-viewer__group { display: flex; align-items: center; gap: var(--space-1); }\n.lintje-document-viewer__button { height: var(--h-button); min-width: var(--h-button); }\n.lintje-document-viewer__figure { font-variant-numeric: tabular-nums; white-space: nowrap; }\n.lintje-document-viewer__zoom { min-width: 7ch; text-align: center; }\n\n.lintje-document-viewer__view {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n padding: var(--space-6);\n background: var(--color-bg-subtle);\n touch-action: pan-x pan-y pinch-zoom;\n}\n\n/* Auto margins centre the page; a wider page scrolls to its left edge instead of being cut. */\n.lintje-document-viewer__page {\n margin: 0 auto;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n}\n.lintje-document-viewer__page.is-fit { width: 100%; }\n.lintje-document-viewer__page.is-loading {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n}\n.lintje-document-viewer__image { display: block; width: 100%; height: auto; }\n\n.lintje-document-viewer__skeleton {\n display: block;\n width: 100%;\n max-width: 420px;\n margin: 0 auto;\n aspect-ratio: 210 / 297;\n}\n\n@media (max-width: 767px) {\n .lintje-document-viewer__name { flex-basis: 100%; }\n .lintje-document-viewer__view { padding: var(--space-2) 0; }\n}\n", d = 50, f = 400, p = 25;
4
+ var u = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-document-viewer {\n display: flex;\n flex-direction: column;\n height: 100%;\n border: 1px solid var(--color-border-default);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n}\n\n.lintje-document-viewer__toolbar {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-2) var(--space-4);\n padding: var(--space-1) var(--space-3);\n border-bottom: 1px solid var(--color-border-default);\n font: var(--text-ui);\n}\n.lintje-document-viewer__name {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 700;\n}\n.lintje-document-viewer__group { display: flex; align-items: center; gap: var(--space-1); }\n.lintje-document-viewer__button { height: var(--h-button); min-width: var(--h-button); }\n.lintje-document-viewer__figure { font-variant-numeric: tabular-nums; white-space: nowrap; }\n.lintje-document-viewer__zoom { min-width: 7ch; text-align: center; }\n\n.lintje-document-viewer__view {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n padding: var(--space-6);\n background: var(--color-bg-subtle);\n touch-action: pan-x pan-y pinch-zoom;\n}\n\n/* Auto margins centre the page; a wider page scrolls to its left edge instead of being cut. */\n.lintje-document-viewer__page {\n margin: 0 auto;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n}\n.lintje-document-viewer__page.is-fit { width: 100%; }\n.lintje-document-viewer__page.is-loading {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n}\n.lintje-document-viewer__image { display: block; width: 100%; height: auto; }\n\n.lintje-document-viewer__skeleton {\n display: block;\n width: 100%;\n max-width: 420px;\n margin: 0 auto;\n aspect-ratio: 210 / 297;\n}\n\n@media screen and (max-width: 767px) {\n .lintje-document-viewer__name { flex-basis: 100%; }\n .lintje-document-viewer__view { padding: var(--space-2) 0; }\n}\n", d = 50, f = 400, p = 25;
5
5
  function m(e) {
6
6
  if (e === "fit" || e == null || e === "") return "fit";
7
7
  let t = Number(String(e).replace("%", ""));
@@ -20,14 +20,14 @@ function _(e, t) {
20
20
  function v(e, t) {
21
21
  return `Pagina ${e} van ${Math.max(t, 1)}`;
22
22
  }
23
- var y = class extends l {
23
+ var y = class extends e {
24
24
  constructor(...e) {
25
25
  super(...e), this.pages = [], this.src = "", this.name = "", this.page = 1, this.zoom = "fit", this.loaded = !1, this.failed = !1, this.naturalWidth = 0, this.fitPercent = 100, this.said = "", this.shown = null;
26
26
  }
27
27
  static {
28
28
  this.styles = [
29
- e,
30
- r(o),
29
+ o,
30
+ r(t),
31
31
  r(u)
32
32
  ];
33
33
  }
@@ -141,26 +141,26 @@ var y = class extends l {
141
141
  let n = this.url;
142
142
  n !== this.shown && (this.shown = n, this.loaded = !1, this.failed = !1);
143
143
  }
144
- renderButton(e, t, r, o = {}) {
145
- let c = o.disabled ?? !1;
144
+ renderButton(e, t, n, r = {}) {
145
+ let i = r.disabled ?? !1;
146
146
  return s`<button
147
147
  type="button"
148
- class=${i({
148
+ class=${c({
149
149
  "lintje-icon-button": !0,
150
150
  "lintje-icon-button--flat": !0,
151
151
  "lintje-document-viewer__button": !0,
152
- "is-disabled": c
152
+ "is-disabled": i
153
153
  })}
154
154
  aria-label=${t}
155
155
  title=${t}
156
- aria-disabled=${c ? "true" : n}
156
+ aria-disabled=${i ? "true" : a}
157
157
  @click=${() => {
158
- c || r();
158
+ i || n();
159
159
  }}
160
160
  >
161
- ${a(e, {
161
+ ${l(e, {
162
162
  size: 18,
163
- flip: o.flip ? "horizontal" : void 0
163
+ flip: r.flip ? "horizontal" : void 0
164
164
  })}
165
165
  </button>`;
166
166
  }
@@ -213,29 +213,29 @@ var y = class extends l {
213
213
  >Downloaden</lintje-button
214
214
  >
215
215
  </lintje-empty-state>`;
216
- let e = this.count, t = _(this.page, e), r = this.url, a = this.zoom, o = a === "fit" || !this.naturalWidth ? null : `${this.naturalWidth * a / 100}px`;
217
- return s`${this.loaded ? n : s`<lintje-skeleton class="lintje-document-viewer__skeleton" height="auto"></lintje-skeleton>`}
216
+ let e = this.count, t = _(this.page, e), n = this.url, r = this.zoom, o = r === "fit" || !this.naturalWidth ? null : `${this.naturalWidth * r / 100}px`;
217
+ return s`${this.loaded ? a : s`<lintje-skeleton class="lintje-document-viewer__skeleton" height="auto"></lintje-skeleton>`}
218
218
  <div
219
- class=${i({
219
+ class=${c({
220
220
  "lintje-document-viewer__page": !0,
221
- "is-fit": a === "fit",
221
+ "is-fit": r === "fit",
222
222
  "is-loading": !this.loaded
223
223
  })}
224
224
  role="img"
225
225
  aria-label=${`${v(t, e)}${this.name ? ` van ${this.name}` : ""}`}
226
- ${c({ width: o })}
226
+ ${i({ width: o })}
227
227
  >
228
- ${r ? s`<img
228
+ ${n ? s`<img
229
229
  class="lintje-document-viewer__image"
230
- src=${r}
230
+ src=${n}
231
231
  alt=""
232
232
  @load=${this.onLoad}
233
233
  @error=${this.onError}
234
- />` : n}
234
+ />` : a}
235
235
  </div>
236
236
  ${this.texts?.[t - 1] ? s`<div class="visually-hidden lintje-document-viewer__text">
237
237
  ${this.texts[t - 1]}
238
- </div>` : n}`;
238
+ </div>` : a}`;
239
239
  }
240
240
  render() {
241
241
  return s`<div class="lintje-document-viewer" @keydown=${this.onKeydown}>
@@ -251,6 +251,6 @@ var y = class extends l {
251
251
  </div>`;
252
252
  }
253
253
  };
254
- t("lintje-document-viewer", y);
254
+ n("lintje-document-viewer", y);
255
255
  //#endregion
256
256
  export { y as LintjeDocumentViewer, f as ZOOM_MAX, d as ZOOM_MIN, p as ZOOM_STEP, _ as clampPage, v as pageLabel, m as parseZoom, h as stepZoom, g as zoomLabel };
@@ -1,18 +1,17 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, Nt as i, et as a, qt as o, zt as s } from "../chunks/base-Bg-IFOPG.js";
2
- import { r as c, t as l } from "../chunks/focus-trap-9BnE-xWv.js";
3
- import { t as u } from "../chunks/dialog-close-u75fVEw4.js";
1
+ import { Jt as e, Yt as t, Zt as n, en as r, lt as i, nn as a, ut as o } from "../chunks/base-CbmWxUig.js";
2
+ import { r as s } from "../chunks/focus-trap-BwOxE5BX.js";
3
+ import { t as c } from "../chunks/dialog-close-u75fVEw4.js";
4
+ import { t as l } from "../chunks/dialog-DChINFxD.js";
4
5
  //#region src/components/overlays/drawer/drawer.css?inline
5
- var d = ":host { display: contents; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The modal's z-index: above the shell's menu. */\n.lintje-drawer__scrim {\n position: fixed; inset: 0; z-index: 80;\n background: var(--color-overlay-page);\n animation: lintje-fade-in var(--dur-scrim) var(--ease-in-motion);\n}\n\n.lintje-drawer {\n position: fixed; top: 0; right: 0; bottom: 0; z-index: 81;\n width: min(480px, 100vw);\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border-left: 1px solid var(--color-border-strong);\n box-shadow: var(--shadow-popover);\n animation: lintje-drawer-in var(--dur-sheet) var(--ease-in-motion);\n}\n.lintje-drawer:focus { outline: none; }\n\n.lintje-drawer__header {\n display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3);\n padding: var(--space-5) var(--space-6);\n border-bottom: 1px solid var(--color-border-default);\n}\n.lintje-drawer__heading { min-width: 0; }\n.lintje-drawer__title { font: var(--text-h2); }\n.lintje-drawer__subtitle { font: var(--text-small); color: var(--color-text-muted); margin-top: var(--space-1); }\n/* No hover while the close button is unavailable. */\n.lintje-drawer__close:not([aria-disabled='true']):hover { color: var(--color-text-primary); }\n\n.lintje-drawer__body {\n flex: 1; min-height: 0; overflow-y: auto;\n padding: var(--space-5) var(--space-6);\n display: flex; flex-direction: column; gap: var(--space-4);\n}\n\n.lintje-drawer__footer {\n display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--space-2);\n padding: var(--space-3) var(--space-6);\n border-top: 1px solid var(--color-border-default);\n}\n\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-drawer-in {\n from { transform: translateX(100%); }\n to { transform: none; }\n}\n\n@media (max-width: 767px) {\n .lintje-drawer {\n inset: 0;\n width: 100%;\n border-left: 0;\n animation-name: lintje-sheet-in;\n }\n .lintje-drawer__header,\n .lintje-drawer__body,\n .lintje-drawer__footer { padding-left: var(--space-4); padding-right: var(--space-4); }\n}\n", f = "input:not([type=\"hidden\"]), select, textarea", p = "Zijpaneel", m = class extends s {
6
+ var u = ":host { display: contents; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The modal's z-index: above the shell's menu. */\n.lintje-drawer__scrim {\n position: fixed; inset: 0; z-index: 80;\n background: var(--color-overlay-page);\n animation: lintje-fade-in var(--dur-scrim) var(--ease-in-motion);\n}\n\n.lintje-drawer {\n position: fixed; top: 0; right: 0; bottom: 0; z-index: 81;\n width: min(480px, 100vw);\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border-left: 1px solid var(--color-border-strong);\n box-shadow: var(--shadow-popover);\n animation: lintje-drawer-in var(--dur-sheet) var(--ease-in-motion);\n}\n.lintje-drawer:focus { outline: none; }\n\n.lintje-drawer__header {\n display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3);\n padding: var(--space-5) var(--space-6);\n border-bottom: 1px solid var(--color-border-default);\n}\n.lintje-drawer__heading { min-width: 0; }\n.lintje-drawer__title { font: var(--text-h2); }\n.lintje-drawer__subtitle { font: var(--text-small); color: var(--color-text-muted); margin-top: var(--space-1); }\n/* No hover while the close button is unavailable. */\n.lintje-drawer__close:not([aria-disabled='true']):hover { color: var(--color-text-primary); }\n\n.lintje-drawer__body {\n flex: 1; min-height: 0; overflow-y: auto;\n padding: var(--space-5) var(--space-6);\n display: flex; flex-direction: column; gap: var(--space-4);\n}\n\n.lintje-drawer__footer {\n display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--space-2);\n padding: var(--space-3) var(--space-6);\n border-top: 1px solid var(--color-border-default);\n}\n\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-drawer-in {\n from { transform: translateX(100%); }\n to { transform: none; }\n}\n\n@media screen and (max-width: 767px) {\n .lintje-drawer {\n inset: 0;\n width: 100%;\n border-left: 0;\n animation-name: lintje-sheet-in;\n }\n .lintje-drawer__header,\n .lintje-drawer__body,\n .lintje-drawer__footer { padding-left: var(--space-4); padding-right: var(--space-4); }\n}\n", d = "input:not([type=\"hidden\"]), select, textarea", f = "Zijpaneel", p = class extends e {
6
7
  constructor(...e) {
7
- super(...e), this.open = !1, this.heading = "", this.busy = !1, this.footerSlotted = !1, this.#e = null, this.#t = new l(), this.#n = (e) => {
8
- e.key === "Escape" && this.#t.isTopmost() && this.close("escape");
9
- };
8
+ super(...e), this.open = !1, this.heading = "", this.busy = !1, this.footerSlotted = !1, this.#e = new l(() => this.close("escape"));
10
9
  }
11
10
  static {
12
11
  this.styles = [
13
- e,
14
- r(u),
15
- r(d)
12
+ i,
13
+ n(c),
14
+ n(u)
16
15
  ];
17
16
  }
18
17
  static {
@@ -31,8 +30,6 @@ var d = ":host { display: contents; }\n\n/* ------------------------------------
31
30
  };
32
31
  }
33
32
  #e;
34
- #t;
35
- #n;
36
33
  close(e) {
37
34
  this.busy || this.emit("lintje-close", { reason: e });
38
35
  }
@@ -47,55 +44,54 @@ var d = ":host { display: contents; }\n\n/* ------------------------------------
47
44
  super.willUpdate(e), e.has("open") && this.open && (this.footerSlotted = this.querySelector(":scope > [slot=\"footer\"]") !== null);
48
45
  }
49
46
  disconnectedCallback() {
50
- this.#i(), super.disconnectedCallback();
47
+ this.#n(), super.disconnectedCallback();
51
48
  }
52
49
  updated(e) {
53
- super.updated(e), this.open && !this.#e ? this.#r() : !this.open && this.#e && this.#i();
50
+ super.updated(e), this.open && !this.#e.held ? this.#t() : !this.open && this.#e.held && this.#n();
54
51
  }
55
52
  focusFirst() {
56
53
  let e = this.panel;
57
54
  if (!e) return;
58
- let t = this.renderRoot.querySelector(".lintje-drawer__body"), n = t ? c(t).find((e) => e.matches(f)) : void 0, r = this.renderRoot.querySelector(".lintje-drawer__close");
55
+ let t = this.renderRoot.querySelector(".lintje-drawer__body"), n = t ? s(t).find((e) => e.matches(d)) : void 0, r = this.renderRoot.querySelector(".lintje-drawer__close");
59
56
  (n ?? r ?? e).focus();
60
57
  }
61
- #r() {
62
- this.#e = i(), document.addEventListener("keydown", this.#n);
58
+ #t() {
63
59
  let e = this.panel;
64
- e && this.#t.activate(e, { focus: !1 });
60
+ e && this.#e.hold(e);
65
61
  let t = Array.from(this.querySelectorAll("*"), (e) => "updateComplete" in e ? e.updateComplete : null).filter((e) => e !== null);
66
62
  Promise.all(t).then(() => {
67
- this.open && this.#t.isTopmost() && this.focusFirst();
63
+ this.open && this.#e.isTopmost() && this.focusFirst();
68
64
  });
69
65
  }
70
- #i() {
71
- this.#e && (document.removeEventListener("keydown", this.#n), this.#e(), this.#e = null, this.#t.deactivate());
66
+ #n() {
67
+ this.#e.release();
72
68
  }
73
69
  render() {
74
- if (!this.open) return n;
70
+ if (!this.open) return r;
75
71
  let e = this.heading.trim() !== "";
76
- return o`<div class="lintje-drawer__scrim" @click=${() => this.close("scrim")}></div>
72
+ return a`<div class="lintje-drawer__scrim" @click=${() => this.close("scrim")}></div>
77
73
  <div
78
74
  class="lintje-drawer"
79
75
  role="dialog"
80
76
  aria-modal="true"
81
- aria-labelledby=${e ? "lintje-drawer-title" : n}
82
- aria-label=${e ? n : p}
83
- aria-busy=${this.busy ? "true" : n}
77
+ aria-labelledby=${e ? "lintje-drawer-title" : r}
78
+ aria-label=${e ? r : f}
79
+ aria-busy=${this.busy ? "true" : r}
84
80
  tabindex="-1"
85
81
  >
86
82
  <header class="lintje-drawer__header">
87
83
  <div class="lintje-drawer__heading">
88
- ${e ? o`<h2 id="lintje-drawer-title" class="lintje-drawer__title">${this.heading}</h2>` : n}
89
- ${this.subtitle ? o`<p class="lintje-drawer__subtitle">${this.subtitle}</p>` : n}
84
+ ${e ? a`<h2 id="lintje-drawer-title" class="lintje-drawer__title">${this.heading}</h2>` : r}
85
+ ${this.subtitle ? a`<p class="lintje-drawer__subtitle">${this.subtitle}</p>` : r}
90
86
  </div>
91
87
  <button
92
88
  type="button"
93
89
  class="lintje-dialog-close lintje-drawer__close"
94
90
  aria-label="Sluiten"
95
- aria-disabled=${this.busy ? "true" : n}
91
+ aria-disabled=${this.busy ? "true" : r}
96
92
  @click=${() => this.close("button")}
97
93
  >
98
- ${a("functioneel-kruis", { size: 16 })}
94
+ ${o("functioneel-kruis", { size: 16 })}
99
95
  </button>
100
96
  </header>
101
97
  <div class="lintje-drawer__body"><slot></slot></div>
@@ -105,6 +101,6 @@ var d = ":host { display: contents; }\n\n/* ------------------------------------
105
101
  </div>`;
106
102
  }
107
103
  };
108
- t("lintje-drawer", m);
104
+ t("lintje-drawer", p);
109
105
  //#endregion
110
- export { m as LintjeDrawer };
106
+ export { p as LintjeDrawer };
@@ -1,11 +1,15 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, et as i, qt as a, zt as o } from "../chunks/base-Bg-IFOPG.js";
1
+ import { E as e, Jt as t, T as n, Yt as r, Zt as i, lt as a, nn as o } from "../chunks/base-CbmWxUig.js";
2
2
  //#region src/components/feedback/empty-state/empty-state.css?inline
3
- var s = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-empty-state {\n display: flex; flex-direction: column; align-items: center;\n gap: var(--space-2);\n padding: var(--space-8) var(--space-4);\n text-align: center;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__icon { color: var(--color-text-muted); }\n.lintje-empty-state__heading {\n margin: var(--space-1) 0 0;\n font: var(--text-tile-title);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__text {\n max-width: 280px;\n margin: 0;\n color: var(--color-text-muted);\n}\n.lintje-empty-state__action { margin-top: var(--space-2); }\n\n.lintje-empty-state--compact {\n display: block;\n padding: var(--space-4);\n text-align: left;\n color: var(--color-text-muted);\n}\n\n/* Phone: the action runs the full width. */\n@media (max-width: 767px) {\n .lintje-empty-state:not(.lintje-empty-state--compact) .lintje-empty-state__action {\n align-self: stretch;\n }\n}\n", c = class extends o {
3
+ var s = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n", c = class extends t {
4
4
  constructor(...e) {
5
5
  super(...e), this.compact = !1, this.level = 3, this.status = !1, this.slotted = !1, this.filled = !1, this.#e = 0;
6
6
  }
7
7
  static {
8
- this.styles = [e, r(s)];
8
+ this.styles = [
9
+ a,
10
+ i(s),
11
+ n
12
+ ];
9
13
  }
10
14
  static {
11
15
  this.properties = {
@@ -35,35 +39,20 @@ var s = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: non
35
39
  let t = e.target.assignedNodes({ flatten: !0 });
36
40
  this.slotted = t.some((e) => e.nodeType !== Node.TEXT_NODE || (e.textContent ?? "").trim() !== "");
37
41
  }
38
- renderHeading() {
39
- if (!this.heading) return n;
40
- let e = this.heading;
41
- switch (this.level) {
42
- case 2: return a`<h2 class="lintje-empty-state__heading">${e}</h2>`;
43
- case 4: return a`<h4 class="lintje-empty-state__heading">${e}</h4>`;
44
- case 5: return a`<h5 class="lintje-empty-state__heading">${e}</h5>`;
45
- case 6: return a`<h6 class="lintje-empty-state__heading">${e}</h6>`;
46
- default: return a`<h3 class="lintje-empty-state__heading">${e}</h3>`;
47
- }
48
- }
49
42
  render() {
50
- let e = this.status ? "status" : n, t = this.status && !this.filled;
51
- return this.compact ? a`<div class="lintje-empty-state lintje-empty-state--compact" role=${e}>
52
- ${t ? n : a`${this.text ?? n} <slot></slot>`}
53
- </div>` : a`<div class="lintje-empty-state" role=${e}>${t ? n : this.content()}</div>`;
54
- }
55
- content() {
56
- return a`${this.icon ? i(this.icon, {
57
- size: 40,
58
- className: "lintje-empty-state__icon"
59
- }) : n}
60
- ${this.renderHeading()}
61
- ${this.text ? a`<p class="lintje-empty-state__text">${this.text}</p>` : n}
62
- <div class="lintje-empty-state__action" ?hidden=${!this.slotted}>
63
- <slot @slotchange=${this.onSlotChange}></slot>
64
- </div>`;
43
+ return e({
44
+ heading: this.heading,
45
+ text: this.text,
46
+ icon: this.icon,
47
+ level: this.level,
48
+ compact: this.compact,
49
+ status: this.status,
50
+ filled: this.filled,
51
+ action: o`<slot @slotchange=${this.onSlotChange}></slot>`,
52
+ actionShown: this.slotted
53
+ });
65
54
  }
66
55
  };
67
- t("lintje-empty-state", c);
56
+ r("lintje-empty-state", c);
68
57
  //#endregion
69
58
  export { c as LintjeEmptyState };
@@ -0,0 +1 @@
1
+ export * from '../types/components/feedback/error-page/error-page.js'
@@ -0,0 +1,109 @@
1
+ import { H as e, Jt as t, Yt as n, Zt as r, en as i, lt as a, nn as o, st as s, ut as c } from "../chunks/base-CbmWxUig.js";
2
+ import "./copy-button.js";
3
+ import "./description-list.js";
4
+ //#region src/components/feedback/error-page/error-page.css?inline
5
+ var l = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* --- */\n\n.lintje-error-page {\n display: flex; flex-direction: column;\n gap: var(--space-6);\n max-width: var(--w-text);\n padding: var(--space-10) 0;\n font: var(--text-body);\n color: var(--color-text-primary);\n}\n.lintje-error-page__head { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-error-page__code {\n display: flex; align-items: center; gap: var(--space-2);\n margin: 0;\n font: var(--text-small);\n color: var(--color-text-muted);\n}\n.lintje-error-page__mark--error { color: var(--color-error-line); }\n.lintje-error-page__heading {\n margin: 0;\n font: var(--text-h1);\n color: var(--color-text-primary);\n overflow-wrap: anywhere;\n}\n.lintje-error-page__text { margin: 0; }\n.lintje-error-page__reference {\n display: flex; flex-direction: column; align-items: flex-start;\n gap: var(--space-3);\n}\n.lintje-error-page__pairs { align-self: stretch; }\n\n.lintje-error-page__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }\n.lintje-error-page__actions.is-empty { display: none; }\n\n.lintje-error-page__links { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-error-page__links-heading { margin: 0; font: var(--text-h2); }\n.lintje-error-page__list {\n margin: 0; padding: 0;\n list-style: none;\n border-top: 1px solid var(--color-border-default);\n}\n.lintje-error-page__item { border-bottom: 1px solid var(--color-border-default); }\n.lintje-error-page__link {\n display: flex; align-items: center; gap: var(--space-2);\n min-height: var(--h-target);\n color: var(--color-link);\n text-decoration: none;\n}\n.lintje-error-page__link:hover { color: var(--color-link-hover); text-decoration: underline; }\n\n@media screen and (max-width: 767px) {\n .lintje-error-page { padding: var(--space-8) 0; }\n .lintje-error-page__heading { font: var(--text-h1-mobile); }\n .lintje-error-page__actions { flex-direction: column; align-items: stretch; }\n}\n";
6
+ //#endregion
7
+ //#region src/components/feedback/error-page/error-page.ts
8
+ function u(e) {
9
+ let t = Number(e);
10
+ return t === 401 || t === 403 ? {
11
+ icon: "gebruiksvoorwerpen-hangslot-dicht",
12
+ tone: "lock"
13
+ } : t >= 500 && t < 600 ? {
14
+ icon: "functioneel-foutmelding",
15
+ tone: "error"
16
+ } : null;
17
+ }
18
+ var d = class extends t {
19
+ constructor(...e) {
20
+ super(...e), this.level = 2, this.links = [], this.hasActions = !1;
21
+ }
22
+ static {
23
+ this.styles = [a, r(l)];
24
+ }
25
+ static {
26
+ this.properties = {
27
+ code: { type: String },
28
+ heading: { type: String },
29
+ text: { type: String },
30
+ level: { type: Number },
31
+ links: { attribute: !1 },
32
+ reference: { type: String },
33
+ occurred: { type: String },
34
+ hasActions: { state: !0 }
35
+ };
36
+ }
37
+ follow(t, n) {
38
+ e(t) && this.followLink(n, t);
39
+ }
40
+ renderCode() {
41
+ if (!this.code) return i;
42
+ let e = u(this.code);
43
+ return o`<p class="lintje-error-page__code">
44
+ ${e ? c(e.icon, {
45
+ size: 16,
46
+ className: `lintje-error-page__mark lintje-error-page__mark--${e.tone}`
47
+ }) : i}Foutcode ${this.code}
48
+ </p>`;
49
+ }
50
+ renderHeading() {
51
+ return this.heading ? this.level === 1 ? o`<h1 class="lintje-error-page__heading">${this.heading}</h1>` : o`<h2 class="lintje-error-page__heading">${this.heading}</h2>` : i;
52
+ }
53
+ renderReference() {
54
+ if (!this.reference) return i;
55
+ let e = [{
56
+ label: "Referentie",
57
+ value: this.reference
58
+ }];
59
+ return this.occurred && e.push({
60
+ label: "Tijdstip",
61
+ value: this.occurred
62
+ }), o`<div class="lintje-error-page__reference">
63
+ <lintje-description-list
64
+ class="lintje-error-page__pairs"
65
+ .items=${e}
66
+ ></lintje-description-list>
67
+ <lintje-copy-button text=${this.reference}></lintje-copy-button>
68
+ </div>`;
69
+ }
70
+ renderLinks() {
71
+ if (this.links.length === 0) return i;
72
+ let e = "Verder naar";
73
+ return o`<nav class="lintje-error-page__links" aria-labelledby="links-heading">
74
+ ${this.level === 1 ? o`<h2 id="links-heading" class="lintje-error-page__links-heading">${e}</h2>` : o`<h3 id="links-heading" class="lintje-error-page__links-heading">${e}</h3>`}
75
+ <ul class="lintje-error-page__list">
76
+ ${this.links.map((e) => o`<li class="lintje-error-page__item">
77
+ <a
78
+ class="lintje-error-page__link"
79
+ href=${e.href}
80
+ @click=${(t) => this.follow(t, e.href)}
81
+ >${c("functioneel-delta-rechts", { size: 16 })}${e.label}</a
82
+ >
83
+ </li>`)}
84
+ </ul>
85
+ </nav>`;
86
+ }
87
+ render() {
88
+ return o`<div class="lintje-error-page">
89
+ <div class="lintje-error-page__head">${this.renderCode()}${this.renderHeading()}</div>
90
+ ${this.text ? o`<p class="lintje-error-page__text">${this.text}</p>` : i}
91
+ <slot></slot>
92
+ ${this.renderReference()}
93
+ <slot
94
+ name="actions"
95
+ class=${s({
96
+ "lintje-error-page__actions": !0,
97
+ "is-empty": !this.hasActions
98
+ })}
99
+ @slotchange=${(e) => {
100
+ this.hasActions = e.target.assignedElements().length > 0;
101
+ }}
102
+ ></slot>
103
+ ${this.renderLinks()}
104
+ </div>`;
105
+ }
106
+ };
107
+ n("lintje-error-page", d);
108
+ //#endregion
109
+ export { d as LintjeErrorPage };
@@ -1,7 +1,7 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, et as i, qt as a, zt as o } from "../chunks/base-Bg-IFOPG.js";
2
- import { c as s, i as c, o as l } from "../chunks/controls-B1455oPG.js";
1
+ import { Jt as e, Yt as t, Zt as n, en as r, lt as i, nn as a, ut as o } from "../chunks/base-CbmWxUig.js";
2
+ import { c as s, i as c, o as l } from "../chunks/controls-DxmnDSBr.js";
3
3
  //#region src/components/forms/error-summary/error-summary.css?inline
4
- var u = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The frame takes the focus after a failed attempt and keeps its own red under the ring. */\n.lintje-error-summary {\n display: flex;\n align-items: flex-start;\n gap: var(--space-3);\n padding: var(--space-4) var(--space-5);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 2px solid var(--color-error);\n border-radius: var(--radius);\n}\n.lintje-error-summary__icon {\n flex: none;\n margin-top: 2px;\n color: var(--color-error);\n}\n.lintje-error-summary__body { min-width: 0; }\n.lintje-error-summary__heading {\n margin: 0 0 var(--space-1);\n font: var(--text-tile-title);\n}\n\n.lintje-error-summary__list {\n margin: 0;\n padding-left: var(--space-5);\n list-style: disc;\n font: var(--text-ui);\n}\n.lintje-error-summary__link {\n color: var(--color-link);\n text-decoration: underline;\n transition: color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-error-summary__link:hover { color: var(--color-link-hover); }\n\n.lintje-error-summary__message {\n margin: 0;\n font: var(--text-ui);\n}\n\n@media (max-width: 767px) {\n .lintje-error-summary { padding: var(--space-3) var(--space-4); }\n}\n";
4
+ var u = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The frame takes the focus after a failed attempt and keeps its own red under the ring. */\n.lintje-error-summary {\n display: flex;\n align-items: flex-start;\n gap: var(--space-3);\n padding: var(--space-4) var(--space-5);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 2px solid var(--color-error);\n border-radius: var(--radius);\n}\n.lintje-error-summary__icon {\n flex: none;\n margin-top: 2px;\n color: var(--color-error);\n}\n.lintje-error-summary__body { min-width: 0; }\n.lintje-error-summary__heading {\n margin: 0 0 var(--space-1);\n font: var(--text-tile-title);\n}\n\n.lintje-error-summary__list {\n margin: 0;\n padding-left: var(--space-5);\n list-style: disc;\n font: var(--text-ui);\n}\n.lintje-error-summary__link {\n color: var(--color-link);\n text-decoration: underline;\n transition: color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-error-summary__link:hover { color: var(--color-link-hover); }\n\n.lintje-error-summary__message {\n margin: 0;\n font: var(--text-ui);\n}\n\n@media screen and (max-width: 767px) {\n .lintje-error-summary { padding: var(--space-3) var(--space-4); }\n}\n";
5
5
  //#endregion
6
6
  //#region src/components/forms/error-summary/error-summary.ts
7
7
  function d(e) {
@@ -20,12 +20,12 @@ function m(e, t) {
20
20
  }
21
21
  return n.nodeType === Node.DOCUMENT_NODE ? f(n, t) : null;
22
22
  }
23
- var h = class extends o {
23
+ var h = class extends e {
24
24
  constructor(...e) {
25
25
  super(...e), this.items = [];
26
26
  }
27
27
  static {
28
- this.styles = [e, r(u)];
28
+ this.styles = [i, n(u)];
29
29
  }
30
30
  static {
31
31
  this.properties = {
@@ -47,7 +47,7 @@ var h = class extends o {
47
47
  n && (n.scrollIntoView?.({ block: "center" }), l(n, { preventScroll: !0 }));
48
48
  }
49
49
  render() {
50
- if (!this.hasErrors) return n;
50
+ if (!this.hasErrors) return r;
51
51
  let e = this.heading ?? (this.items.length ? d(this.items.length) : "Opslaan is niet gelukt");
52
52
  return a`<div
53
53
  class="lintje-error-summary"
@@ -55,7 +55,7 @@ var h = class extends o {
55
55
  aria-labelledby="lintje-error-summary-heading"
56
56
  tabindex="-1"
57
57
  >
58
- ${i("functioneel-waarschuwing", {
58
+ ${o("functioneel-waarschuwing", {
59
59
  size: 20,
60
60
  className: "lintje-error-summary__icon"
61
61
  })}
@@ -70,13 +70,13 @@ var h = class extends o {
70
70
  >${e.label ? `${e.label}: ${e.message}` : e.message}</a
71
71
  >` : e.message}
72
72
  </li>`)}
73
- </ul>` : n}
73
+ </ul>` : r}
74
74
  ${this.message ? a`<p class="lintje-error-summary__message">
75
75
  ${this.message}
76
76
  ${this.retry ? a`<lintje-button variant="link" @click=${() => this.emit("lintje-retry")}
77
77
  >${this.retry}</lintje-button
78
- >` : n}
79
- </p>` : n}
78
+ >` : r}
79
+ </p>` : r}
80
80
  </div>
81
81
  </div>`;
82
82
  }