lintje 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) 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-DRGvkF-r.js} +484 -309
  4. package/dist-elements/chunks/{controls-B1455oPG.js → controls-_4ac1Lpz.js} +7 -1
  5. package/dist-elements/chunks/{date-format-mHtZyBys.js → date-format-DxP9yfDp.js} +1 -1
  6. package/dist-elements/chunks/dialog-B7aRBtjy.js +28 -0
  7. package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
  8. package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DirPLy2E.js} +6 -6
  9. package/dist-elements/chunks/download-C68kcwPj.js +206 -0
  10. package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-Dv8zu64A.js} +1 -1
  11. package/dist-elements/chunks/input-BGMLam-O.js +195 -0
  12. package/dist-elements/chunks/input-lQTmOMOz.js +4 -0
  13. package/dist-elements/chunks/{player-DXOZEyEy.js → player-BApadXr8.js} +27 -27
  14. package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-0wO85ZdJ.js} +3 -3
  15. package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BB_gcxBI.js} +88 -74
  16. package/dist-elements/content.js +1 -0
  17. package/dist-elements/core.js +1 -1
  18. package/dist-elements/custom-elements.json +8858 -7715
  19. package/dist-elements/data-types.json +6900 -0
  20. package/dist-elements/feedback.js +2 -1
  21. package/dist-elements/frame.js +0 -2
  22. package/dist-elements/guides/dashboard.md +8 -0
  23. package/dist-elements/guides/events.md +4 -5
  24. package/dist-elements/guides/loading.md +10 -9
  25. package/dist-elements/guides/page-contents.md +110 -0
  26. package/dist-elements/guides/start.md +12 -0
  27. package/dist-elements/inputs.js +3 -1
  28. package/dist-elements/layout.js +1 -1
  29. package/dist-elements/lintje.js +8562 -7138
  30. package/dist-elements/overlays.js +2 -2
  31. package/dist-elements/skills/lintje/SKILL.md +1 -1
  32. package/dist-elements/tables.js +1 -1
  33. package/dist-elements/tag/activity-log.js +15 -15
  34. package/dist-elements/tag/ai-label.js +10 -10
  35. package/dist-elements/tag/announcement.js +36 -76
  36. package/dist-elements/tag/app-search.js +49 -49
  37. package/dist-elements/tag/audio-player.js +57 -57
  38. package/dist-elements/tag/badge.d.ts +1 -1
  39. package/dist-elements/tag/badge.js +1 -1
  40. package/dist-elements/tag/breadcrumbs.js +15 -15
  41. package/dist-elements/tag/button.d.ts +1 -1
  42. package/dist-elements/tag/button.js +1 -1
  43. package/dist-elements/tag/card-list.js +12 -12
  44. package/dist-elements/tag/card.js +39 -44
  45. package/dist-elements/tag/chart.js +1357 -787
  46. package/dist-elements/tag/chat-answer.js +49 -49
  47. package/dist-elements/tag/chat-composer.js +75 -71
  48. package/dist-elements/tag/chat-message.js +8 -8
  49. package/dist-elements/tag/chat-strip.js +22 -22
  50. package/dist-elements/tag/chat-suggestions.js +12 -12
  51. package/dist-elements/tag/chat.js +56 -56
  52. package/dist-elements/tag/checkbox-group.d.ts +1 -0
  53. package/dist-elements/tag/checkbox-group.js +60 -0
  54. package/dist-elements/tag/checkbox.js +9 -8
  55. package/dist-elements/tag/code.js +9 -9
  56. package/dist-elements/tag/combobox.js +19 -18
  57. package/dist-elements/tag/conflict-alert.js +12 -12
  58. package/dist-elements/tag/copy-button.js +14 -14
  59. package/dist-elements/tag/data-table.js +880 -532
  60. package/dist-elements/tag/date-input.js +30 -29
  61. package/dist-elements/tag/date-range.js +39 -38
  62. package/dist-elements/tag/description-list.js +29 -32
  63. package/dist-elements/tag/dialog.d.ts +1 -0
  64. package/dist-elements/tag/dialog.js +144 -0
  65. package/dist-elements/tag/document-viewer.js +23 -23
  66. package/dist-elements/tag/drawer.js +28 -32
  67. package/dist-elements/tag/empty-state.js +19 -30
  68. package/dist-elements/tag/error-page.d.ts +1 -0
  69. package/dist-elements/tag/error-page.js +109 -0
  70. package/dist-elements/tag/error-summary.js +10 -10
  71. package/dist-elements/tag/expander.js +8 -8
  72. package/dist-elements/tag/explainer.js +11 -11
  73. package/dist-elements/tag/field.js +5 -5
  74. package/dist-elements/tag/file-upload.js +35 -34
  75. package/dist-elements/tag/filter-bar.js +56 -56
  76. package/dist-elements/tag/filter-sheet.js +11 -11
  77. package/dist-elements/tag/filter-zone.js +31 -31
  78. package/dist-elements/tag/find.d.ts +1 -0
  79. package/dist-elements/tag/find.js +128 -0
  80. package/dist-elements/tag/footer.js +21 -21
  81. package/dist-elements/tag/form-actions.js +29 -25
  82. package/dist-elements/tag/form-section.js +6 -6
  83. package/dist-elements/tag/form.js +12 -12
  84. package/dist-elements/tag/gallery.js +14 -14
  85. package/dist-elements/tag/grid-item.d.ts +1 -1
  86. package/dist-elements/tag/grid-item.js +1 -1
  87. package/dist-elements/tag/grid.d.ts +1 -1
  88. package/dist-elements/tag/grid.js +1 -1
  89. package/dist-elements/tag/hero.js +12 -12
  90. package/dist-elements/tag/highlight.js +5 -5
  91. package/dist-elements/tag/icon-button.d.ts +1 -1
  92. package/dist-elements/tag/icon-button.js +1 -1
  93. package/dist-elements/tag/icon.d.ts +1 -1
  94. package/dist-elements/tag/icon.js +1 -1
  95. package/dist-elements/tag/job-list.js +22 -44
  96. package/dist-elements/tag/kpi-row.js +12 -10
  97. package/dist-elements/tag/kpi.js +149 -140
  98. package/dist-elements/tag/level-meter.js +11 -11
  99. package/dist-elements/tag/list.js +55 -55
  100. package/dist-elements/tag/logo.js +30 -30
  101. package/dist-elements/tag/map.js +702 -671
  102. package/dist-elements/tag/menu-button.js +70 -69
  103. package/dist-elements/tag/modal.js +28 -37
  104. package/dist-elements/tag/multiselect.js +35 -34
  105. package/dist-elements/tag/note.js +5 -5
  106. package/dist-elements/tag/notifications.js +36 -36
  107. package/dist-elements/tag/number-input.js +13 -12
  108. package/dist-elements/tag/page-header.js +140 -37
  109. package/dist-elements/tag/pagination.js +54 -49
  110. package/dist-elements/tag/popover.d.ts +1 -1
  111. package/dist-elements/tag/popover.js +1 -1
  112. package/dist-elements/tag/progress-bar.d.ts +1 -1
  113. package/dist-elements/tag/progress-bar.js +1 -1
  114. package/dist-elements/tag/prose.js +6 -6
  115. package/dist-elements/tag/qr-code.js +7 -7
  116. package/dist-elements/tag/radio-group.js +13 -12
  117. package/dist-elements/tag/range.js +23 -22
  118. package/dist-elements/tag/recording-status.js +14 -14
  119. package/dist-elements/tag/repeater.js +10 -10
  120. package/dist-elements/tag/segmented.js +14 -13
  121. package/dist-elements/tag/select.js +11 -10
  122. package/dist-elements/tag/shell.js +356 -339
  123. package/dist-elements/tag/skeleton.d.ts +1 -1
  124. package/dist-elements/tag/skeleton.js +1 -1
  125. package/dist-elements/tag/slot-picker.js +16 -15
  126. package/dist-elements/tag/sortable-list.js +14 -14
  127. package/dist-elements/tag/spinner.d.ts +1 -1
  128. package/dist-elements/tag/spinner.js +1 -1
  129. package/dist-elements/tag/split-pane.js +12 -12
  130. package/dist-elements/tag/status-dot.d.ts +1 -1
  131. package/dist-elements/tag/status-dot.js +1 -1
  132. package/dist-elements/tag/stepper.js +21 -21
  133. package/dist-elements/tag/streaming-text.js +13 -13
  134. package/dist-elements/tag/sub-nav.js +39 -38
  135. package/dist-elements/tag/tabs.js +38 -38
  136. package/dist-elements/tag/tag-input.js +20 -19
  137. package/dist-elements/tag/text-editor.js +25 -24
  138. package/dist-elements/tag/text-input.js +15 -14
  139. package/dist-elements/tag/textarea.js +15 -14
  140. package/dist-elements/tag/tile.d.ts +1 -1
  141. package/dist-elements/tag/tile.js +1 -1
  142. package/dist-elements/tag/time-input.js +20 -19
  143. package/dist-elements/tag/toast.js +32 -23
  144. package/dist-elements/tag/toggle.js +9 -8
  145. package/dist-elements/tag/toggletip.js +27 -27
  146. package/dist-elements/tag/token-value.d.ts +1 -0
  147. package/dist-elements/tag/token-value.js +75 -0
  148. package/dist-elements/tag/tooltip.d.ts +1 -1
  149. package/dist-elements/tag/tooltip.js +1 -1
  150. package/dist-elements/tag/transcript.js +48 -48
  151. package/dist-elements/tag/translator.js +13 -13
  152. package/dist-elements/tag/tree-view.js +13 -13
  153. package/dist-elements/tag/user-menu.js +37 -37
  154. package/dist-elements/tag/video-player.js +21 -21
  155. package/dist-elements/tokens.css +120 -96
  156. package/dist-elements/tokens.json +1244 -0
  157. package/dist-elements/types/bundle/actions.d.ts +3 -3
  158. package/dist-elements/types/bundle/content.d.ts +1 -0
  159. package/dist-elements/types/bundle/feedback.d.ts +6 -5
  160. package/dist-elements/types/bundle/frame.d.ts +0 -2
  161. package/dist-elements/types/bundle/index.d.ts +0 -10
  162. package/dist-elements/types/bundle/inputs.d.ts +2 -0
  163. package/dist-elements/types/bundle/layout.d.ts +3 -3
  164. package/dist-elements/types/bundle/overlays.d.ts +3 -3
  165. package/dist-elements/types/categories.d.ts +4 -0
  166. package/dist-elements/types/{primitives → components/actions}/button/button.d.ts +13 -10
  167. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +8 -9
  168. package/dist-elements/types/{icons → components/actions}/icon/icon.d.ts +4 -5
  169. package/dist-elements/types/{primitives → components/actions}/icon-button/icon-button.d.ts +8 -6
  170. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +16 -18
  171. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +10 -10
  172. package/dist-elements/types/components/charts/chart/chart.d.ts +6 -5
  173. package/dist-elements/types/components/charts/explainer/explainer.d.ts +1 -1
  174. package/dist-elements/types/components/charts/kpi/kpi.d.ts +19 -11
  175. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +2 -8
  176. package/dist-elements/types/components/charts/note/note.d.ts +2 -2
  177. package/dist-elements/types/components/chat/chat/chat.d.ts +9 -11
  178. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +10 -11
  179. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +10 -12
  180. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +7 -8
  181. package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
  182. package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
  183. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +15 -17
  184. package/dist-elements/types/components/content/code/code.d.ts +3 -4
  185. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +10 -11
  186. package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
  187. package/dist-elements/types/components/content/highlight/highlight.d.ts +5 -4
  188. package/dist-elements/types/components/content/prose/prose.d.ts +3 -4
  189. package/dist-elements/types/components/content/token-value/token-value.d.ts +42 -0
  190. package/dist-elements/types/components/content/transcript/transcript.d.ts +15 -28
  191. package/dist-elements/types/components/content/translator/translator.d.ts +12 -16
  192. package/dist-elements/types/components/content/video-player/video-player.d.ts +12 -14
  193. package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
  194. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +5 -9
  195. package/dist-elements/types/{primitives → components/feedback}/badge/badge.d.ts +10 -6
  196. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +4 -5
  197. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
  198. package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
  199. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
  200. package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
  201. package/dist-elements/types/{primitives → components/feedback}/progress-bar/progress-bar.d.ts +9 -7
  202. package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
  203. package/dist-elements/types/{primitives → components/feedback}/skeleton/skeleton.d.ts +2 -2
  204. package/dist-elements/types/{primitives → components/feedback}/spinner/spinner.d.ts +2 -3
  205. package/dist-elements/types/{primitives → components/feedback}/status-dot/status-dot.d.ts +5 -6
  206. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +12 -9
  207. package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
  208. package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
  209. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +7 -7
  210. package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
  211. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +6 -7
  212. package/dist-elements/types/components/forms/form/form.d.ts +5 -5
  213. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +10 -8
  214. package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
  215. package/dist-elements/types/components/forms/repeater/repeater.d.ts +15 -9
  216. package/dist-elements/types/components/forms/stepper/stepper.d.ts +6 -5
  217. package/dist-elements/types/components/frame/app-search/app-search.d.ts +7 -8
  218. package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
  219. package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
  220. package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
  221. package/dist-elements/types/components/frame/notifications/notifications.d.ts +7 -11
  222. package/dist-elements/types/components/frame/page-header/page-header.d.ts +13 -16
  223. package/dist-elements/types/components/frame/shell/shell.d.ts +15 -14
  224. package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
  225. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +13 -12
  226. package/dist-elements/types/components/index.d.ts +51 -12
  227. package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
  228. package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
  229. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +14 -8
  230. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +6 -6
  231. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +13 -8
  232. package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
  233. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +8 -10
  234. package/dist-elements/types/components/inputs/find/find.d.ts +51 -0
  235. package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
  236. package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
  237. package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
  238. package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
  239. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
  240. package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
  241. package/dist-elements/types/components/inputs/shared/input.d.ts +1 -1
  242. package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
  243. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +8 -6
  244. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +8 -8
  245. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +12 -7
  246. package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
  247. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +8 -9
  248. package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
  249. package/dist-elements/types/components/layout/expander/expander.d.ts +10 -11
  250. package/dist-elements/types/{primitives → components/layout}/grid/grid.d.ts +4 -4
  251. package/dist-elements/types/{primitives → components/layout}/grid-item/grid-item.d.ts +2 -2
  252. package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
  253. package/dist-elements/types/components/layout/tabs/tabs.d.ts +12 -10
  254. package/dist-elements/types/{primitives → components/layout}/tile/tile.d.ts +22 -10
  255. package/dist-elements/types/components/map/map/map.d.ts +12 -11
  256. package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
  257. package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
  258. package/dist-elements/types/components/overlays/modal/modal.d.ts +9 -14
  259. package/dist-elements/types/{primitives → components/overlays}/popover/popover.d.ts +7 -6
  260. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +4 -8
  261. package/dist-elements/types/{primitives → components/overlays}/tooltip/tooltip.d.ts +8 -8
  262. package/dist-elements/types/components/shared/announcement-block.d.ts +38 -0
  263. package/dist-elements/types/components/shared/charts/index.d.ts +5 -1
  264. package/dist-elements/types/components/shared/charts/kinds.d.ts +92 -0
  265. package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
  266. package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
  267. package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +1 -1
  268. package/dist-elements/types/components/shared/charts/radar-chart/radar-chart.d.ts +31 -0
  269. package/dist-elements/types/components/shared/charts/shared/axes.d.ts +3 -1
  270. package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
  271. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +12 -0
  272. package/dist-elements/types/components/shared/charts/shared/types.d.ts +62 -0
  273. package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
  274. package/dist-elements/types/components/shared/content-tile.d.ts +1 -1
  275. package/dist-elements/types/components/{forms/form → shared}/controls.d.ts +3 -2
  276. package/dist-elements/types/components/shared/dialog.d.ts +9 -0
  277. package/dist-elements/types/components/shared/empty-state-block.d.ts +26 -0
  278. package/dist-elements/types/components/shared/overflow.d.ts +58 -0
  279. package/dist-elements/types/components/shared/tone.d.ts +18 -0
  280. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +3 -4
  281. package/dist-elements/types/components/tables/card/card.d.ts +17 -23
  282. package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
  283. package/dist-elements/types/components/tables/data-table/actions.d.ts +1 -1
  284. package/dist-elements/types/components/tables/data-table/data-table.d.ts +88 -19
  285. package/dist-elements/types/components/tables/data-table/editing.d.ts +1 -1
  286. package/dist-elements/types/components/tables/data-table/filters.d.ts +15 -6
  287. package/dist-elements/types/components/tables/description-list/description-list.d.ts +13 -12
  288. package/dist-elements/types/components/tables/list/list.d.ts +13 -24
  289. package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
  290. package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
  291. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +5 -5
  292. package/dist-elements/types/core/focus.d.ts +1 -1
  293. package/dist-elements/types/core/media.d.ts +2 -2
  294. package/dist-elements/types/core/motion.d.ts +5 -0
  295. package/dist-elements/types/core/print.d.ts +15 -0
  296. package/dist-elements/types/core/shortcuts.d.ts +2 -2
  297. package/dist-elements/types/icons/register.d.ts +1 -1
  298. package/dist-elements/types/types.d.ts +70 -10
  299. package/dist-icons/functioneel-kolommen.svg +1 -0
  300. package/dist-icons/functioneel-trechter.svg +1 -0
  301. package/package.json +1 -1
  302. package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
  303. package/dist-elements/chunks/download-y528pIHP.js +0 -230
  304. package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
  305. package/dist-elements/tag/confirm-dialog.d.ts +0 -1
  306. package/dist-elements/tag/confirm-dialog.js +0 -118
  307. package/dist-elements/tag/session-expiry.d.ts +0 -1
  308. package/dist-elements/tag/session-expiry.js +0 -184
  309. package/dist-elements/tag/shortcuts.d.ts +0 -1
  310. package/dist-elements/tag/shortcuts.js +0 -104
  311. package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
  312. package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
  313. package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
  314. package/dist-elements/types/primitives/index.d.ts +0 -33
  315. /package/dist-elements/types/components/content/{audio-player → shared}/playback.d.ts +0 -0
  316. /package/dist-elements/types/components/content/{audio-player → shared}/player.d.ts +0 -0
  317. /package/dist-elements/types/components/{inputs/date-input → shared}/date-format.d.ts +0 -0
  318. /package/dist-elements/types/{primitives → components}/shared/grid-item-element.d.ts +0 -0
  319. /package/dist-elements/types/{primitives → components}/shared/length.d.ts +0 -0
  320. /package/dist-elements/types/{primitives → components}/shared/place.d.ts +0 -0
@@ -1,195 +0,0 @@
1
- import { Gt as e, O as t, Z as n, et as r, qt as i } from "./base-Bg-IFOPG.js";
2
- import { d as a, s as o, u as s } from "./controls-B1455oPG.js";
3
- //#region src/components/inputs/shared/field-foot.ts
4
- function c(t, n, r) {
5
- return n ? r.errorId : t ? r.hintId : e;
6
- }
7
- function l(t, n, a, o = !0) {
8
- return n ? i`<span id=${a.errorId} class="lintje-field__error" role=${o ? "alert" : e}
9
- >${r("functioneel-waarschuwing", { size: 14 })}${n}</span
10
- >` : t ? i`<span id=${a.hintId} class="lintje-field__hint">${t}</span>` : e;
11
- }
12
- //#endregion
13
- //#region src/components/inputs/shared/input.ts
14
- var u = "(niet verplicht)", d = "afwijkend van standaard", f = class extends t {
15
- static {
16
- this.properties = {
17
- name: { type: String },
18
- label: { type: String },
19
- hideLabel: {
20
- type: Boolean,
21
- attribute: "hide-label"
22
- },
23
- hint: { type: String },
24
- error: { type: String },
25
- disabled: {
26
- type: Boolean,
27
- reflect: !0
28
- },
29
- modified: {
30
- type: Boolean,
31
- reflect: !0
32
- },
33
- required: {
34
- type: Boolean,
35
- reflect: !0
36
- },
37
- optional: { type: Boolean },
38
- layout: {
39
- type: String,
40
- reflect: !0
41
- },
42
- resetLabel: {
43
- type: String,
44
- attribute: "reset-label"
45
- }
46
- };
47
- }
48
- static {
49
- this.formAssociated = !0;
50
- }
51
- #e;
52
- #t;
53
- constructor() {
54
- super(), this.name = "", this.label = "", this.hideLabel = !1, this.disabled = !1, this.modified = !1, this.required = !1, this.optional = !1, this.internals = typeof this.attachInternals == "function" ? this.attachInternals() : null, this.#t = !1, this.addController({ hostUpdated: () => this.syncForm() });
55
- }
56
- get postedValue() {
57
- return s(this);
58
- }
59
- syncForm() {
60
- if (this.#t || (this.#t = !0, this.#e = structuredClone(s(this))), !this.internals) return;
61
- let e = new FormData();
62
- if (this.name && !this.disabled) for (let [t, n] of o(this.name, this.postedValue)) e.append(t, n);
63
- this.internals.setFormValue(e);
64
- }
65
- formResetCallback() {
66
- a(this, structuredClone(this.#e));
67
- }
68
- formDisabledCallback(e) {
69
- this.disabled = e;
70
- }
71
- get labelId() {
72
- return "lintje-input-label";
73
- }
74
- get controlId() {
75
- return "lintje-input-control";
76
- }
77
- focusControl(e) {
78
- if (this.disabled) return;
79
- let t = this.renderRoot;
80
- (t.querySelector(`#${this.controlId}`) ?? t.querySelector("input[type=\"radio\"]:checked:not(:disabled)") ?? [...t.querySelectorAll("input, select, button, textarea")].find((e) => !e.disabled))?.focus(e);
81
- }
82
- focus(e) {
83
- this.focusControl(e);
84
- }
85
- get hintId() {
86
- return "lintje-input-hint";
87
- }
88
- get errorId() {
89
- return "lintje-input-error";
90
- }
91
- get footMessage() {
92
- return this.error ?? "";
93
- }
94
- get describedBy() {
95
- return c(this.hint, this.footMessage, {
96
- hintId: this.hintId,
97
- errorId: this.errorId
98
- });
99
- }
100
- commit(e) {
101
- this.announce(e);
102
- }
103
- announce(e, t = e) {
104
- this.disabled || (this.emitLocal("lintje-change", e), this.name && this.emit("lintje-values-change", { [this.name]: t }));
105
- }
106
- renderLabel(t, r = e) {
107
- let a = () => this.focusControl();
108
- if (this.hideLabel) {
109
- let e = this.renderLabelSuffix();
110
- return t ? i`<label id=${this.labelId} for=${t} class="visually-hidden">${this.label} ${e}</label>` : i`<span id=${this.labelId} class="visually-hidden" @click=${a}>${this.label} ${e}</span>`;
111
- }
112
- let o = n({
113
- "lintje-label": !0,
114
- "is-modified": this.modified
115
- }), s = this.modified ? i`<span class="lintje-label__dot"><span class="visually-hidden">${d}</span></span>` : e, c = this.renderLabelSuffix();
116
- return t ? i`<label id=${this.labelId} for=${t} class=${o}>${this.label} ${c} ${s} ${r}</label>` : i`<span id=${this.labelId} class=${o} @click=${a}>${this.label} ${c} ${s} ${r}</span>`;
117
- }
118
- renderLabelSuffix() {
119
- return this.isOptional ? i`<span class="lintje-label__optional">${u}</span>` : e;
120
- }
121
- get isOptional() {
122
- return this.optional && !this.required;
123
- }
124
- get labelSuffixText() {
125
- return [this.isOptional ? u : "", this.modified && !this.hideLabel ? d : ""].filter(Boolean).map((e) => ` ${e}`).join("");
126
- }
127
- get labelText() {
128
- return this.label ? `${this.label}${this.labelSuffixText}` : "";
129
- }
130
- renderFoot() {
131
- let e = l(this.hint, this.footMessage, {
132
- hintId: this.hintId,
133
- errorId: this.errorId
134
- });
135
- return !this.modified || !this.resetLabel ? e : i`${e}<button
136
- type="button"
137
- class="lintje-field__reset"
138
- ?disabled=${this.disabled}
139
- @click=${() => {
140
- this.focusControl(), this.emitLocal("lintje-reset");
141
- }}
142
- >
143
- ${this.resetLabel}
144
- </button>`;
145
- }
146
- }, p = class extends f {
147
- constructor(...e) {
148
- super(...e), this.readonly = !1, this.initialValue = void 0;
149
- }
150
- static {
151
- this.properties = {
152
- name: {
153
- type: String,
154
- reflect: !0
155
- },
156
- readonly: {
157
- type: Boolean,
158
- reflect: !0
159
- }
160
- };
161
- }
162
- get nativeControl() {
163
- return this.renderRoot.querySelector(`#${this.controlId}`);
164
- }
165
- announce(e, t = e) {
166
- this.readonly || super.announce(e, t);
167
- }
168
- firstUpdated(e) {
169
- super.firstUpdated(e), this.initialValue = this.value;
170
- }
171
- syncForm() {}
172
- updated(e) {
173
- super.updated(e);
174
- let t = this.internals;
175
- if (!t) return;
176
- t.setFormValue(this.disabled ? null : this.formValue);
177
- let n = this.nativeControl;
178
- this.required && !this.disabled && !this.readonly && this.formValue === "" && n ? t.setValidity({ valueMissing: !0 }, n.validationMessage || "Vul dit veld in.", n) : t.setValidity({});
179
- }
180
- submitOnEnter(e, t) {
181
- if (e.key !== "Enter" || e.isComposing || this.readonly || this.disabled) return;
182
- t();
183
- let n = this.internals?.form;
184
- n && typeof n.requestSubmit == "function" && setTimeout(() => {
185
- e.defaultPrevented || n.requestSubmit();
186
- });
187
- }
188
- formResetCallback() {
189
- this.value = this.initialValue;
190
- let e = this.nativeControl;
191
- e && (e.value = this.formValue), this.requestUpdate();
192
- }
193
- }, m = "/*\n * The fields' own boxes and the `.lintje-choice` rules of the checkbox, radio and toggle.\n * `lintje-data-table` adopts this sheet too for its selectable rows' checkbox; the\n * `:host(lintje-multiselect)` blocks do not match there.\n */\n:host(lintje-multiselect) {\n display: block;\n min-width: 0;\n width: 180px;\n}\n:host(lintje-range) {\n display: block;\n min-width: 0;\n width: 180px;\n}\n:host(lintje-text-input),\n:host(lintje-number-input),\n:host(lintje-checkbox),\n:host(lintje-toggle),\n:host(lintje-radio-group) {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* --- */\n\n/* Order matters in every field sheet: disabled wins over read-only, read-only over error, at\n equal specificity. A disabled control cannot be in error, so its rule sets the whole border. */\n\n.lintje-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }\n.lintje-label {\n display: flex; align-items: baseline; gap: var(--space-2);\n font-size: 0.875rem; font-weight: 700; color: var(--color-text-primary);\n padding: 0;\n}\n.lintje-label.is-modified { color: var(--color-accent-text); }\n.lintje-label__dot {\n width: 6px; height: 6px; border-radius: var(--radius-round);\n background: var(--color-attention);\n flex: none; align-self: center;\n}\n:host([disabled]) .lintje-label { color: var(--color-text-disabled); }\n.lintje-label__optional { font-weight: 400; color: var(--color-text-muted); }\n:host([disabled]) .lintje-label__optional { color: var(--color-text-disabled); }\n/* A value and its unit stay together when a long label wraps. */\n.lintje-field__value { font-weight: 400; color: var(--color-text-muted); white-space: nowrap; }\n.lintje-field__hint { font: var(--text-meta); color: var(--color-text-muted); }\n.lintje-field__error {\n display: flex; align-items: center; gap: 6px;\n font: var(--text-meta); color: var(--color-error-text); font-weight: 700;\n}\n\n/* --- A setting's row: name and hint on the left, the control on the right ----- */\n/* A row reads its own width, not the screen's: in a drawer it stays a column. */\n:host([layout='row']) { width: 100%; container-type: inline-size; }\n@container (min-width: 35rem) {\n :host([layout='row']) .lintje-field {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, calc(8 * var(--space-10)));\n gap: var(--space-1) var(--space-8);\n align-items: center;\n }\n :host([layout='row']) .lintje-field > * { grid-column: 2; }\n /* Regular weight: the bold above it is the section's heading, the grey under it the hint. */\n :host([layout='row']) .lintje-field > .lintje-label {\n grid-column: 1; grid-row: 1;\n font: var(--text-ui);\n }\n :host([layout='row']) .lintje-field > .lintje-field__hint,\n :host([layout='row']) .lintje-field > .lintje-field__error { grid-column: 1; grid-row: 2; align-self: start; }\n :host([layout='row']) .lintje-field > .lintje-field__reset { grid-column: 1; grid-row: 3; }\n /* A switch is its own label: the row is the label, the switch stands at its right edge. */\n :host([layout='row']) .lintje-field > .lintje-choice {\n grid-column: 1 / -1; grid-row: 1;\n flex-direction: row-reverse; justify-content: space-between;\n }\n}\n\n/* Back to the default: a link, so it stays quieter than the field it belongs to. */\n.lintje-field__reset {\n align-self: flex-start;\n justify-self: start;\n min-height: var(--h-target);\n padding: 0;\n border: 0;\n background: none;\n color: var(--color-link);\n font: var(--text-meta);\n font-weight: 700;\n text-decoration: underline;\n cursor: pointer;\n}\n.lintje-field__reset:hover { color: var(--color-link-hover); }\n\n/* --- Checkbox, radio, toggle ---------------------------------------------- */\n.lintje-choice {\n display: flex; align-items: center; gap: 10px;\n min-height: var(--h-target);\n font-size: 1rem;\n cursor: pointer;\n}\n.lintje-choice__input { position: absolute; opacity: 0; width: 0; height: 0; }\n.lintje-choice__label.is-modified { color: var(--color-accent-text); font-weight: 700; }\n\n.lintje-choice__box {\n width: 24px; height: 24px; flex: none;\n display: flex; align-items: center; justify-content: center;\n border: 2px solid var(--color-border-choice);\n background: var(--color-bg-surface);\n color: var(--color-action-primary-text); font-size: 0.875rem; font-weight: 700; line-height: 1;\n transition: background-color var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n/* The mark is always drawn and grows in when the box is checked, so checking and unchecking both move. */\n.lintje-choice__mark {\n opacity: 0; transform: scale(0.4);\n transition: opacity var(--dur-hover) var(--ease-in-motion),\n transform var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-choice__input:checked ~ .lintje-choice__box .lintje-choice__mark,\n.lintje-choice__input:indeterminate ~ .lintje-choice__box .lintje-choice__mark {\n opacity: 1; transform: none;\n}\n/* The border takes the primary-fill border: in dark the tint, so the box is no dark square. */\n.lintje-choice__input:checked ~ .lintje-choice__box,\n.lintje-choice__input:indeterminate ~ .lintje-choice__box {\n background: var(--color-accent); border-color: var(--color-action-primary-border);\n}\n.lintje-choice__input:focus-visible ~ .lintje-choice__box,\n.lintje-choice__input:focus-visible ~ .lintje-choice__radio,\n.lintje-choice__input:focus-visible ~ .lintje-choice__switch {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n}\n\n.lintje-choice__radio {\n width: 24px; height: 24px; flex: none;\n border: 2px solid var(--color-border-choice);\n border-radius: 50%;\n background: var(--color-bg-surface);\n display: flex; align-items: center; justify-content: center;\n}\n/* Ring and dot take the line accent: the dot stands on the surface by itself, so the primary\n fill would sink into the dark surface. */\n.lintje-choice__input:checked ~ .lintje-choice__radio { border-color: var(--color-accent-line); }\n.lintje-choice__input:checked ~ .lintje-choice__radio::after {\n content: ''; width: 12px; height: 12px; border-radius: 50%; background: var(--color-accent-line);\n}\n\n/* Off: edged with the field's edge (3:1, WCAG 1.4.11) as an inset ring, keeping the box size. */\n.lintje-choice__switch {\n box-sizing: border-box;\n width: 40px; height: 22px; flex: none;\n border-radius: 11px;\n /* Off is a filled track, not a pale one with a ring: the fill alone reaches 3:1. */\n background: var(--color-border-field);\n display: flex; align-items: center;\n padding: 2px;\n transition: background var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-choice__knob {\n width: 18px; height: 18px; display: block;\n border-radius: 50%;\n background: var(--color-bg-surface);\n transition: transform var(--dur-hover) var(--ease-in-motion);\n}\n/* An inset ring, not a border: a border would eat into the knob's inset and travel. */\n.lintje-choice__input:checked ~ .lintje-choice__switch {\n background: var(--color-accent);\n box-shadow: inset 0 0 0 1px var(--color-action-primary-border);\n}\n.lintje-choice__input:checked ~ .lintje-choice__switch .lintje-choice__knob { transform: translateX(18px); }\n\n.lintje-choice.is-disabled { color: var(--color-text-disabled); cursor: not-allowed; }\n.lintje-choice__input:disabled ~ .lintje-choice__box,\n.lintje-choice__input:disabled ~ .lintje-choice__radio {\n border-color: var(--color-border-strong);\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n}\n.lintje-choice__input:disabled:checked ~ .lintje-choice__box {\n background: var(--color-border-strong);\n}\n.lintje-choice__input:disabled:checked ~ .lintje-choice__radio::after {\n background: var(--color-border-strong);\n}\n/* After the checked rule, so a disabled switch also loses its inset ring. */\n.lintje-choice__input:disabled ~ .lintje-choice__switch { background: var(--color-border-default); box-shadow: none; }\n\n/* --- Stacked in the filter sheet ----------------------------------------- */\n:host([stacked]) {\n width: 100%;\n --h-control: var(--h-touch);\n}\n\n/* --- Forced colours ------------------------------------------------------- */\n/* Fills and box-shadows are dropped: the dot, pill and knob keep their drawing in system\n colours. The pill takes a 1 px border and gives up 1 px of its inset, so the knob's travel stays. */\n@media (forced-colors: active) {\n .lintje-label__dot { forced-color-adjust: none; background: CanvasText; }\n\n .lintje-choice__input:focus-visible ~ .lintje-choice__box,\n .lintje-choice__input:focus-visible ~ .lintje-choice__radio,\n .lintje-choice__input:focus-visible ~ .lintje-choice__switch { outline-color: Highlight; }\n\n .lintje-choice__input:checked ~ .lintje-choice__box,\n .lintje-choice__input:indeterminate ~ .lintje-choice__box,\n .lintje-choice__input:checked ~ .lintje-choice__radio { border-color: Highlight; }\n .lintje-choice__radio::after { forced-color-adjust: none; }\n .lintje-choice__input:checked ~ .lintje-choice__radio::after { background: Highlight; }\n\n .lintje-choice__switch { border: 1px solid CanvasText; padding: 1px; }\n .lintje-choice__input:checked ~ .lintje-choice__switch { border-color: Highlight; }\n .lintje-choice__knob { forced-color-adjust: none; background: CanvasText; }\n .lintje-choice__input:checked ~ .lintje-choice__switch .lintje-choice__knob { background: Highlight; }\n\n .lintje-choice__input:disabled ~ .lintje-choice__box,\n .lintje-choice__input:disabled ~ .lintje-choice__radio,\n .lintje-choice__input:disabled ~ .lintje-choice__switch { border-color: GrayText; }\n .lintje-choice__input:disabled:checked ~ .lintje-choice__radio::after,\n .lintje-choice__input:disabled ~ .lintje-choice__switch .lintje-choice__knob { background: GrayText; }\n .lintje-choice.is-disabled { color: GrayText; }\n}\n";
194
- //#endregion
195
- export { l as a, c as i, p as n, f as r, m as t };
@@ -1 +0,0 @@
1
- export * from '../types/components/overlays/confirm-dialog/confirm-dialog.js'
@@ -1,118 +0,0 @@
1
- import { Bt as e, Gt as t, Ht as n, It as r, Lt as i, Nt as a, qt as o, zt as s } from "../chunks/base-Bg-IFOPG.js";
2
- import { n as c, t as l } from "../chunks/focus-trap-9BnE-xWv.js";
3
- import { t as u } from "../chunks/confirm-dialog-D5EVGuil.js";
4
- //#region src/components/overlays/confirm-dialog/confirm-dialog.ts
5
- var d = class extends s {
6
- constructor(...e) {
7
- super(...e), this.open = !1, this.heading = "", this.confirmLabel = "Bevestigen", this.cancelLabel = "Annuleren", this.tone = "danger", this.busy = !1, this.#e = new i(this, r), this.#t = null, this.#n = new l(), this.#r = (e) => {
8
- e.key === "Escape" && this.#n.isTopmost() && this.cancel("escape");
9
- };
10
- }
11
- static {
12
- this.styles = n(u);
13
- }
14
- static {
15
- this.properties = {
16
- open: {
17
- type: Boolean,
18
- reflect: !0
19
- },
20
- heading: { type: String },
21
- confirmLabel: {
22
- type: String,
23
- attribute: "confirm-label"
24
- },
25
- cancelLabel: {
26
- type: String,
27
- attribute: "cancel-label"
28
- },
29
- actionLabel: {
30
- type: String,
31
- attribute: "action-label"
32
- },
33
- tone: {
34
- type: String,
35
- reflect: !0
36
- },
37
- busy: {
38
- type: Boolean,
39
- reflect: !0
40
- }
41
- };
42
- }
43
- #e;
44
- #t;
45
- #n;
46
- #r;
47
- cancel(e) {
48
- this.busy || this.emit("lintje-close", { reason: e });
49
- }
50
- disconnectedCallback() {
51
- this.#a(), super.disconnectedCallback();
52
- }
53
- updated(e) {
54
- super.updated(e), this.open && !this.#t ? this.#i() : !this.open && this.#t && this.#a();
55
- }
56
- async #i() {
57
- this.#t = a(), document.addEventListener("keydown", this.#r);
58
- let e = this.renderRoot.querySelector(".lintje-confirm-dialog");
59
- if (!e) return;
60
- this.#n.activate(e, { focus: !1 });
61
- let t = this.renderRoot.querySelector(".lintje-confirm-dialog__cancel");
62
- t && (await t.updateComplete, this.open && this.#n.isTopmost() && c(t).focus());
63
- }
64
- #a() {
65
- this.#t && (document.removeEventListener("keydown", this.#r), this.#t(), this.#t = null, this.#n.deactivate());
66
- }
67
- render() {
68
- if (!this.open) return t;
69
- let e = this.#e.matches;
70
- return o`<div class="lintje-confirm-dialog__scrim" @click=${() => this.cancel("scrim")}>
71
- <div
72
- class="lintje-confirm-dialog"
73
- role="alertdialog"
74
- aria-modal="true"
75
- aria-labelledby="lintje-confirm-dialog-heading"
76
- aria-describedby="lintje-confirm-dialog-text"
77
- tabindex="-1"
78
- @click=${(e) => e.stopPropagation()}
79
- >
80
- <h2 id="lintje-confirm-dialog-heading" class="lintje-confirm-dialog__heading">
81
- ${this.heading}
82
- </h2>
83
- <div id="lintje-confirm-dialog-text" class="lintje-confirm-dialog__text">
84
- <slot></slot>
85
- </div>
86
- <div class="lintje-confirm-dialog__actions">
87
- ${this.actionLabel ? o`<lintje-button
88
- class="lintje-confirm-dialog__action"
89
- variant="tertiary"
90
- ?block=${e}
91
- ?disabled=${this.busy}
92
- @click=${() => this.emit("lintje-action")}
93
- >${this.actionLabel}</lintje-button
94
- >` : t}
95
- <lintje-button
96
- class="lintje-confirm-dialog__cancel"
97
- variant="secondary"
98
- ?block=${e}
99
- ?disabled=${this.busy}
100
- @click=${() => this.cancel("cancel")}
101
- >${this.cancelLabel}</lintje-button
102
- >
103
- <lintje-button
104
- class="lintje-confirm-dialog__confirm"
105
- variant=${this.tone === "primary" ? "primary" : "danger"}
106
- ?block=${e}
107
- ?busy=${this.busy}
108
- @click=${() => this.emit("lintje-confirm")}
109
- >${this.confirmLabel}</lintje-button
110
- >
111
- </div>
112
- </div>
113
- </div>`;
114
- }
115
- };
116
- e("lintje-confirm-dialog", d);
117
- //#endregion
118
- export { d as LintjeConfirmDialog };
@@ -1 +0,0 @@
1
- export * from '../types/components/frame/session-expiry/session-expiry.js'
@@ -1,184 +0,0 @@
1
- import { Bt as e, Gt as t, Ht as n, It as r, Lt as i, Nt as a, qt as o, zt as s } from "../chunks/base-Bg-IFOPG.js";
2
- import { n as c, t as l } from "../chunks/focus-trap-9BnE-xWv.js";
3
- import "./announcement.js";
4
- import { t as u } from "../chunks/confirm-dialog-D5EVGuil.js";
5
- //#region src/components/frame/session-expiry/session-expiry.css?inline
6
- var d = "/* The warning is a fixed window in `confirm-dialog.css`'s frame. */\n:host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n@media (max-width: 767px) {\n .lintje-session-expiry__primary { order: 1; }\n .lintje-session-expiry__logout { order: 2; }\n}\n", f = 20;
7
- function p(e, t, n, r = !1) {
8
- if (r) return "expired";
9
- if (e === null || Number.isNaN(e)) return "active";
10
- let i = e - t;
11
- return i <= 0 ? "expired" : i <= n * 1e3 ? "warning" : "active";
12
- }
13
- function m(e) {
14
- let t = Math.max(1, Math.ceil(e / 6e4));
15
- return `Je sessie verloopt over ${t} ${t === 1 ? "minuut" : "minuten"}`;
16
- }
17
- function h(e) {
18
- let t = new Date(e);
19
- return Number.isNaN(t.getTime()) ? null : t.toLocaleTimeString("nl-NL", {
20
- hour: "2-digit",
21
- minute: "2-digit"
22
- });
23
- }
24
- var g = class extends s {
25
- constructor(...e) {
26
- super(...e), this.warnBefore = 120, this.restoredReason = "logout", this.busy = !1, this.expired = !1, this.now = Date.now, this.clock = 0, this.#e = new i(this, r), this.#t = null, this.#n = null, this.#r = new l(), this.#i = null, this.#a = (e) => {
27
- e.key === "Escape" && this.#r.isTopmost() && (e.stopPropagation(), e.preventDefault());
28
- };
29
- }
30
- static {
31
- this.styles = [n(u), n(d)];
32
- }
33
- static {
34
- this.properties = {
35
- expiresAt: {
36
- type: String,
37
- attribute: "expires-at"
38
- },
39
- warnBefore: {
40
- type: Number,
41
- attribute: "warn-before"
42
- },
43
- restoredAt: {
44
- type: String,
45
- attribute: "restored-at"
46
- },
47
- restoredReason: {
48
- type: String,
49
- attribute: "restored-reason"
50
- },
51
- busy: {
52
- type: Boolean,
53
- reflect: !0
54
- },
55
- expired: {
56
- type: Boolean,
57
- reflect: !0
58
- },
59
- now: { attribute: !1 },
60
- clock: { state: !0 }
61
- };
62
- }
63
- #e;
64
- #t;
65
- #n;
66
- #r;
67
- #i;
68
- #a;
69
- get phase() {
70
- let e = this.expiresAt ? new Date(this.expiresAt).getTime() : null, t = Number.isFinite(this.warnBefore) ? this.warnBefore : 120;
71
- return p(e, this.clock, Math.max(20, t), this.expired);
72
- }
73
- connectedCallback() {
74
- super.connectedCallback(), this.clock = this.now(), this.#o();
75
- }
76
- disconnectedCallback() {
77
- this.#s(), this.#c(), super.disconnectedCallback();
78
- }
79
- willUpdate(e) {
80
- super.willUpdate(e), (e.has("expiresAt") || e.has("now")) && (this.clock = this.now());
81
- }
82
- #o() {
83
- if (!this.expiresAt || !this.isConnected) return this.#s();
84
- this.#t === null && (this.#t = setInterval(() => this.clock = this.now(), 1e3));
85
- }
86
- #s() {
87
- this.#t !== null && clearInterval(this.#t), this.#t = null;
88
- }
89
- updated(e) {
90
- super.updated(e), e.has("expiresAt") && this.#o();
91
- let t = this.phase;
92
- if (t === "active") this.#c();
93
- else {
94
- if (!this.#n) {
95
- this.#n = a(), document.addEventListener("keydown", this.#a, !0);
96
- let e = this.renderRoot.querySelector(".lintje-session-expiry");
97
- e && this.#r.activate(e, { focus: !1 });
98
- }
99
- if (this.#i !== t) {
100
- this.#i = t;
101
- let e = this.renderRoot.querySelector(".lintje-session-expiry__primary");
102
- e && e.updateComplete.then(() => {
103
- this.#r.isTopmost() && c(e).focus();
104
- });
105
- }
106
- }
107
- }
108
- #c() {
109
- this.#i = null, this.#n && (document.removeEventListener("keydown", this.#a, !0), this.#n(), this.#n = null, this.#r.deactivate());
110
- }
111
- renderRestored() {
112
- if (!this.restoredAt) return t;
113
- let e = h(this.restoredAt), n = this.restoredReason === "reload" ? {
114
- kind: "ok",
115
- text: e ? `Je concept van ${e} is teruggezet.` : "Je concept is teruggezet."
116
- } : {
117
- kind: "ok",
118
- title: "Je concept is teruggezet.",
119
- text: e ? `Het is van ${e}, van voor het afmelden.` : "Het is van voor het afmelden."
120
- };
121
- return o`<lintje-announcement compact .data=${n}>
122
- <lintje-button slot="action" variant="link" @click=${() => this.emit("lintje-draft-discard")}
123
- >Concept weggooien</lintje-button
124
- >
125
- </lintje-announcement>`;
126
- }
127
- renderDialog(e) {
128
- if (e === "active") return t;
129
- let n = this.#e.matches, r = e === "expired", i = this.expiresAt ? new Date(this.expiresAt).getTime() : this.clock;
130
- return o`<div class="lintje-confirm-dialog__scrim">
131
- <div
132
- class="lintje-confirm-dialog lintje-session-expiry"
133
- role="alertdialog"
134
- aria-modal="true"
135
- aria-labelledby="lintje-session-expiry-heading"
136
- tabindex="-1"
137
- aria-describedby="lintje-session-expiry-text"
138
- >
139
- <h2 id="lintje-session-expiry-heading" class="lintje-confirm-dialog__heading">
140
- ${r ? "Je bent afgemeld" : m(i - this.clock)}
141
- </h2>
142
- <div id="lintje-session-expiry-text" class="lintje-confirm-dialog__text">
143
- ${r ? o`<slot name="expired"
144
- >Je sessie is verlopen. Meld je opnieuw aan; je komt terug op deze pagina.</slot
145
- >` : o`<slot
146
- >Je invoer wordt bewaard in deze browser. Blijf aangemeld om door te werken.</slot
147
- >`}
148
- </div>
149
- <div class="lintje-confirm-dialog__actions">
150
- ${r ? o`<lintje-button
151
- class="lintje-session-expiry__primary"
152
- variant="primary"
153
- ?block=${n}
154
- @click=${() => this.emit("lintje-login")}
155
- >Opnieuw aanmelden</lintje-button
156
- >` : o`<lintje-button
157
- class="lintje-session-expiry__logout"
158
- variant="tertiary"
159
- ?block=${n}
160
- ?disabled=${this.busy}
161
- @click=${() => this.emit("lintje-logout")}
162
- >Afmelden</lintje-button
163
- >
164
- <lintje-button
165
- class="lintje-session-expiry__primary"
166
- variant="primary"
167
- ?block=${n}
168
- ?busy=${this.busy}
169
- @click=${() => {
170
- this.busy || this.emit("lintje-session-extend");
171
- }}
172
- >Aangemeld blijven</lintje-button
173
- >`}
174
- </div>
175
- </div>
176
- </div>`;
177
- }
178
- render() {
179
- return o`${this.renderRestored()}${this.renderDialog(this.phase)}`;
180
- }
181
- };
182
- e("lintje-session-expiry", g);
183
- //#endregion
184
- export { g as LintjeSessionExpiry, f as MIN_WARNING, h as clockTime, p as sessionPhase, m as warningTitle };
@@ -1 +0,0 @@
1
- export * from '../types/components/frame/shortcuts/shortcuts.js'
@@ -1,104 +0,0 @@
1
- import { Bt as e, Ct as t, Gt as n, Ht as r, Nt as i, St as a, qt as o, vt as s, wt as c, xt as l, yt as u, zt as d } from "../chunks/base-Bg-IFOPG.js";
2
- import { t as f } from "../chunks/focus-trap-9BnE-xWv.js";
3
- import { t as p } from "../chunks/key-CuuOw1KE.js";
4
- import "./toggle.js";
5
- import { t as m } from "../chunks/confirm-dialog-D5EVGuil.js";
6
- //#region src/components/frame/shortcuts/shortcuts.css?inline
7
- var h = "/* The frame is `confirm-dialog.css`. The host takes no space: a closed overview renders nothing. */\n:host { display: contents; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The window takes focus when it opens so Escape and the screen reader start there. */\n\n.lintje-shortcuts__list {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n margin: 0;\n font: var(--text-ui);\n}\n.lintje-shortcuts__what,\n.lintje-shortcuts__keys {\n margin: 0;\n padding: var(--space-2) 0;\n border-bottom: 1px solid var(--color-border-default);\n}\n.lintje-shortcuts__keys {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--space-1);\n padding-left: var(--space-4);\n}\n.lintje-shortcuts__what:nth-last-of-type(1),\n.lintje-shortcuts__keys:nth-last-of-type(1) { border-bottom: 0; }\n\n/* The switch for the one-character keys, under the list. */\n.lintje-shortcuts__setting { display: block; margin-top: var(--space-4); }\n", g = class extends d {
8
- constructor(...e) {
9
- super(...e), this.open = !1, this.heading = "Sneltoetsen", this.list = [], this.characterKeys = !0, this.#e = null, this.#t = null, this.#n = new f(), this.#r = (e) => {
10
- e.key === "Escape" && this.#n.isTopmost() && this.close("escape");
11
- };
12
- }
13
- static {
14
- this.styles = [
15
- r(m),
16
- r(p),
17
- r(h)
18
- ];
19
- }
20
- static {
21
- this.properties = {
22
- open: {
23
- type: Boolean,
24
- reflect: !0
25
- },
26
- heading: { type: String },
27
- list: { state: !0 },
28
- characterKeys: { state: !0 }
29
- };
30
- }
31
- #e;
32
- #t;
33
- #n;
34
- #r;
35
- connectedCallback() {
36
- super.connectedCallback(), this.#e = a({
37
- keys: "?",
38
- description: "Dit overzicht",
39
- handler: () => {
40
- this.open || this.emit("lintje-open");
41
- }
42
- });
43
- }
44
- disconnectedCallback() {
45
- this.#e?.(), this.#e = null, this.#a(), super.disconnectedCallback();
46
- }
47
- close(e) {
48
- this.emit("lintje-close", { reason: e });
49
- }
50
- willUpdate(e) {
51
- super.willUpdate(e), e.has("open") && this.open && (this.list = c(), this.characterKeys = s());
52
- }
53
- updated(e) {
54
- super.updated(e), this.open && !this.#t ? this.#i() : !this.open && this.#t && this.#a();
55
- }
56
- #i() {
57
- this.#t = i(), document.addEventListener("keydown", this.#r);
58
- let e = this.renderRoot.querySelector(".lintje-confirm-dialog");
59
- e && this.#n.activate(e);
60
- }
61
- #a() {
62
- this.#t && (document.removeEventListener("keydown", this.#r), this.#t(), this.#t = null, this.#n.deactivate());
63
- }
64
- renderRow(e) {
65
- return o`<dt class="lintje-shortcuts__what">${e.description}</dt>
66
- <dd class="lintje-shortcuts__keys">
67
- ${l(e.keys).map((e) => o`<kbd class="lintje-key">${e}</kbd>`)}
68
- </dd>`;
69
- }
70
- onCharacterKeys(e) {
71
- this.characterKeys = e.detail, t(e.detail);
72
- }
73
- renderSetting() {
74
- return this.list.some((e) => u(e.keys)) ? o`<lintje-toggle
75
- class="lintje-shortcuts__setting"
76
- label="Sneltoetsen van één teken"
77
- hint="Uit werken alleen de sneltoetsen met Ctrl, Alt of Cmd."
78
- .checked=${this.characterKeys}
79
- @lintje-change=${this.onCharacterKeys}
80
- ></lintje-toggle>` : n;
81
- }
82
- render() {
83
- return this.open ? o`<div class="lintje-confirm-dialog__scrim" @click=${() => this.close("scrim")}>
84
- <div
85
- class="lintje-confirm-dialog lintje-shortcuts"
86
- role="dialog"
87
- aria-modal="true"
88
- aria-labelledby="lintje-shortcuts-heading"
89
- tabindex="-1"
90
- @click=${(e) => e.stopPropagation()}
91
- >
92
- <h2 id="lintje-shortcuts-heading" class="lintje-confirm-dialog__heading">${this.heading}</h2>
93
- <dl class="lintje-shortcuts__list">${this.list.map((e) => this.renderRow(e))}</dl>
94
- ${this.renderSetting()}
95
- <div class="lintje-confirm-dialog__actions">
96
- <lintje-button variant="secondary" @click=${() => this.close("button")}>Sluiten</lintje-button>
97
- </div>
98
- </div>
99
- </div>` : n;
100
- }
101
- };
102
- e("lintje-shortcuts", g);
103
- //#endregion
104
- export { g as LintjeShortcuts };
@@ -1,55 +0,0 @@
1
- /**
2
- * `<lintje-session-expiry>` — the warning before the session runs out, the notice after it, and
3
- * the "Je concept is teruggezet" announcement (`restored-at`).
4
- *
5
- * The window is a `role="alertdialog"` in `<lintje-confirm-dialog>`'s frame (its stylesheet).
6
- * Escape and the scrim do nothing, because the session runs out either way. The element never
7
- * calls a server: the host sets `busy`, moves `expires-at` or sets `expired`.
8
- *
9
- * Events: `lintje-session-extend`, `lintje-logout`, `lintje-login`, `lintje-draft-discard`.
10
- */
11
- import { type PropertyDeclarations, type PropertyValues, type TemplateResult } from 'lit';
12
- import { LintjeElement } from '../../../core/element.js';
13
- import '../../feedback/announcement/announcement.js';
14
- import '../../../primitives/button/button.js';
15
- export type SessionPhase = 'active' | 'warning' | 'expired';
16
- export type RestoredReason = 'logout' | 'reload';
17
- /** The shortest warning, in seconds: time to read the question and answer it. */
18
- export declare const MIN_WARNING = 20;
19
- /** Where the session stands at `now`. Without an `expiresAt` it is active, unless `expired`. */
20
- export declare function sessionPhase(expiresAt: number | null, now: number, warnBeforeSeconds: number, expired?: boolean): SessionPhase;
21
- export declare function warningTitle(remainingMs: number): string;
22
- /** "10:42", or null for a moment that does not parse. */
23
- export declare function clockTime(moment: string): string | null;
24
- export declare class LintjeSessionExpiry extends LintjeElement {
25
- #private;
26
- static styles: import("lit").CSSResult[];
27
- static properties: PropertyDeclarations;
28
- /** When the session ends, as an ISO moment. */
29
- expiresAt?: string;
30
- /** Seconds before the end that the warning opens; at least `MIN_WARNING`. */
31
- warnBefore: number;
32
- /** When the restored draft was saved; set, the announcement shows. */
33
- restoredAt?: string;
34
- /** Why the draft came back; it picks the announcement's words. */
35
- restoredReason: RestoredReason;
36
- busy: boolean;
37
- /** The host's word that the session is gone (extending failed). */
38
- expired: boolean;
39
- /** The clock, read once a second while there is an `expires-at`. A test replaces it. */
40
- now: () => number;
41
- protected clock: number;
42
- get phase(): SessionPhase;
43
- connectedCallback(): void;
44
- disconnectedCallback(): void;
45
- protected willUpdate(changed: PropertyValues<this>): void;
46
- protected updated(changed: PropertyValues<this>): void;
47
- private renderRestored;
48
- private renderDialog;
49
- protected render(): TemplateResult;
50
- }
51
- declare global {
52
- interface HTMLElementTagNameMap {
53
- 'lintje-session-expiry': LintjeSessionExpiry;
54
- }
55
- }