lintje 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/README.md +2 -2
  2. package/dist-elements/actions.js +1 -1
  3. package/dist-elements/chunks/{base-Bg-IFOPG.js → base-CbmWxUig.js} +444 -272
  4. package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
  5. package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
  6. package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
  7. package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DLkXPUpV.js} +6 -6
  8. package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
  9. package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-BwOxE5BX.js} +1 -1
  10. package/dist-elements/chunks/input-CRW_exv_.js +195 -0
  11. package/dist-elements/chunks/{player-DXOZEyEy.js → player-B8QXJ0Z5.js} +26 -26
  12. package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-B19AyZBS.js} +3 -3
  13. package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BHoOgy0g.js} +81 -75
  14. package/dist-elements/core.js +1 -1
  15. package/dist-elements/custom-elements.json +980 -670
  16. package/dist-elements/data-types.json +6798 -0
  17. package/dist-elements/feedback.js +2 -1
  18. package/dist-elements/frame.js +0 -2
  19. package/dist-elements/guides/dashboard.md +8 -0
  20. package/dist-elements/guides/events.md +4 -5
  21. package/dist-elements/guides/loading.md +8 -7
  22. package/dist-elements/guides/page-contents.md +110 -0
  23. package/dist-elements/guides/start.md +12 -0
  24. package/dist-elements/inputs.js +2 -1
  25. package/dist-elements/layout.js +1 -1
  26. package/dist-elements/lintje.js +6975 -6120
  27. package/dist-elements/overlays.js +2 -2
  28. package/dist-elements/skills/lintje/SKILL.md +1 -1
  29. package/dist-elements/tables.js +1 -1
  30. package/dist-elements/tag/activity-log.js +15 -15
  31. package/dist-elements/tag/ai-label.js +10 -10
  32. package/dist-elements/tag/announcement.js +36 -76
  33. package/dist-elements/tag/app-search.js +49 -49
  34. package/dist-elements/tag/audio-player.js +57 -57
  35. package/dist-elements/tag/badge.js +1 -1
  36. package/dist-elements/tag/breadcrumbs.js +15 -15
  37. package/dist-elements/tag/button.js +1 -1
  38. package/dist-elements/tag/card-list.js +12 -12
  39. package/dist-elements/tag/card.js +39 -44
  40. package/dist-elements/tag/chart.js +1050 -795
  41. package/dist-elements/tag/chat-answer.js +49 -49
  42. package/dist-elements/tag/chat-composer.js +75 -71
  43. package/dist-elements/tag/chat-message.js +8 -8
  44. package/dist-elements/tag/chat-strip.js +22 -22
  45. package/dist-elements/tag/chat-suggestions.js +12 -12
  46. package/dist-elements/tag/chat.js +56 -56
  47. package/dist-elements/tag/checkbox-group.d.ts +1 -0
  48. package/dist-elements/tag/checkbox-group.js +59 -0
  49. package/dist-elements/tag/checkbox.js +8 -8
  50. package/dist-elements/tag/code.js +9 -9
  51. package/dist-elements/tag/combobox.js +18 -18
  52. package/dist-elements/tag/conflict-alert.js +12 -12
  53. package/dist-elements/tag/copy-button.js +14 -14
  54. package/dist-elements/tag/data-table.js +878 -530
  55. package/dist-elements/tag/date-input.js +30 -30
  56. package/dist-elements/tag/date-range.js +37 -37
  57. package/dist-elements/tag/description-list.js +29 -32
  58. package/dist-elements/tag/dialog.d.ts +1 -0
  59. package/dist-elements/tag/dialog.js +144 -0
  60. package/dist-elements/tag/document-viewer.js +23 -23
  61. package/dist-elements/tag/drawer.js +28 -32
  62. package/dist-elements/tag/empty-state.js +19 -30
  63. package/dist-elements/tag/error-page.d.ts +1 -0
  64. package/dist-elements/tag/error-page.js +109 -0
  65. package/dist-elements/tag/error-summary.js +10 -10
  66. package/dist-elements/tag/expander.js +8 -8
  67. package/dist-elements/tag/explainer.js +11 -11
  68. package/dist-elements/tag/field.js +5 -5
  69. package/dist-elements/tag/file-upload.js +34 -34
  70. package/dist-elements/tag/filter-bar.js +56 -56
  71. package/dist-elements/tag/filter-sheet.js +11 -11
  72. package/dist-elements/tag/filter-zone.js +31 -31
  73. package/dist-elements/tag/footer.js +21 -21
  74. package/dist-elements/tag/form-actions.js +29 -25
  75. package/dist-elements/tag/form-section.js +6 -6
  76. package/dist-elements/tag/form.js +12 -12
  77. package/dist-elements/tag/gallery.js +14 -14
  78. package/dist-elements/tag/grid-item.js +1 -1
  79. package/dist-elements/tag/grid.js +1 -1
  80. package/dist-elements/tag/hero.js +12 -12
  81. package/dist-elements/tag/highlight.js +5 -5
  82. package/dist-elements/tag/icon-button.js +1 -1
  83. package/dist-elements/tag/icon.js +1 -1
  84. package/dist-elements/tag/job-list.js +22 -44
  85. package/dist-elements/tag/kpi-row.js +12 -10
  86. package/dist-elements/tag/kpi.js +146 -137
  87. package/dist-elements/tag/level-meter.js +11 -11
  88. package/dist-elements/tag/list.js +55 -55
  89. package/dist-elements/tag/logo.js +30 -30
  90. package/dist-elements/tag/map.js +690 -665
  91. package/dist-elements/tag/menu-button.js +70 -69
  92. package/dist-elements/tag/modal.js +28 -37
  93. package/dist-elements/tag/multiselect.js +34 -34
  94. package/dist-elements/tag/note.js +5 -5
  95. package/dist-elements/tag/notifications.js +36 -36
  96. package/dist-elements/tag/number-input.js +12 -12
  97. package/dist-elements/tag/page-header.js +140 -37
  98. package/dist-elements/tag/pagination.js +53 -48
  99. package/dist-elements/tag/popover.js +1 -1
  100. package/dist-elements/tag/progress-bar.js +1 -1
  101. package/dist-elements/tag/prose.js +6 -6
  102. package/dist-elements/tag/qr-code.js +7 -7
  103. package/dist-elements/tag/radio-group.js +12 -12
  104. package/dist-elements/tag/range.js +22 -22
  105. package/dist-elements/tag/recording-status.js +14 -14
  106. package/dist-elements/tag/repeater.js +10 -10
  107. package/dist-elements/tag/segmented.js +13 -13
  108. package/dist-elements/tag/select.js +10 -10
  109. package/dist-elements/tag/shell.js +356 -339
  110. package/dist-elements/tag/skeleton.js +1 -1
  111. package/dist-elements/tag/slot-picker.js +14 -14
  112. package/dist-elements/tag/sortable-list.js +14 -14
  113. package/dist-elements/tag/spinner.js +1 -1
  114. package/dist-elements/tag/split-pane.js +12 -12
  115. package/dist-elements/tag/status-dot.js +1 -1
  116. package/dist-elements/tag/stepper.js +21 -21
  117. package/dist-elements/tag/streaming-text.js +13 -13
  118. package/dist-elements/tag/sub-nav.js +39 -38
  119. package/dist-elements/tag/tabs.js +38 -38
  120. package/dist-elements/tag/tag-input.js +19 -19
  121. package/dist-elements/tag/text-editor.js +24 -24
  122. package/dist-elements/tag/text-input.js +14 -14
  123. package/dist-elements/tag/textarea.js +14 -14
  124. package/dist-elements/tag/tile.js +1 -1
  125. package/dist-elements/tag/time-input.js +19 -19
  126. package/dist-elements/tag/toast.js +32 -23
  127. package/dist-elements/tag/toggle.js +8 -8
  128. package/dist-elements/tag/toggletip.js +27 -27
  129. package/dist-elements/tag/tooltip.js +1 -1
  130. package/dist-elements/tag/transcript.js +48 -48
  131. package/dist-elements/tag/translator.js +13 -13
  132. package/dist-elements/tag/tree-view.js +13 -13
  133. package/dist-elements/tag/user-menu.js +37 -37
  134. package/dist-elements/tag/video-player.js +21 -21
  135. package/dist-elements/tokens.css +120 -96
  136. package/dist-elements/types/bundle/feedback.d.ts +1 -0
  137. package/dist-elements/types/bundle/frame.d.ts +0 -2
  138. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  139. package/dist-elements/types/bundle/overlays.d.ts +1 -1
  140. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
  141. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
  142. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
  143. package/dist-elements/types/components/charts/chart/chart.d.ts +5 -4
  144. package/dist-elements/types/components/charts/kpi/kpi.d.ts +16 -8
  145. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
  146. package/dist-elements/types/components/charts/note/note.d.ts +1 -1
  147. package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
  148. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +7 -8
  149. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
  150. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
  151. package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
  152. package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
  153. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
  154. package/dist-elements/types/components/content/code/code.d.ts +2 -3
  155. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
  156. package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
  157. package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
  158. package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
  159. package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
  160. package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
  161. package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
  162. package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
  163. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
  164. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
  165. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
  166. package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
  167. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
  168. package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
  169. package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
  170. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
  171. package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
  172. package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
  173. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
  174. package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
  175. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
  176. package/dist-elements/types/components/forms/form/form.d.ts +5 -5
  177. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
  178. package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
  179. package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
  180. package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
  181. package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
  182. package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
  183. package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
  184. package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
  185. package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
  186. package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
  187. package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
  188. package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
  189. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
  190. package/dist-elements/types/components/index.d.ts +8 -9
  191. package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
  192. package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
  193. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
  194. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
  195. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
  196. package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
  197. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
  198. package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
  199. package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
  200. package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
  201. package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
  202. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
  203. package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
  204. package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
  205. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
  206. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
  207. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
  208. package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
  209. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +7 -8
  210. package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
  211. package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
  212. package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
  213. package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
  214. package/dist-elements/types/components/map/map/map.d.ts +10 -9
  215. package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
  216. package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
  217. package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
  218. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
  219. package/dist-elements/types/components/shared/charts/index.d.ts +4 -1
  220. package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
  221. package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
  222. package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
  223. package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
  224. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +7 -0
  225. package/dist-elements/types/components/shared/charts/shared/types.d.ts +29 -0
  226. package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
  227. package/dist-elements/types/components/shared/dialog.d.ts +9 -0
  228. package/dist-elements/types/components/shared/overflow.d.ts +58 -0
  229. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
  230. package/dist-elements/types/components/tables/card/card.d.ts +14 -20
  231. package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
  232. package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
  233. package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
  234. package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
  235. package/dist-elements/types/components/tables/list/list.d.ts +9 -20
  236. package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
  237. package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
  238. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
  239. package/dist-elements/types/core/media.d.ts +2 -2
  240. package/dist-elements/types/core/motion.d.ts +5 -0
  241. package/dist-elements/types/core/print.d.ts +15 -0
  242. package/dist-elements/types/core/shortcuts.d.ts +2 -2
  243. package/dist-elements/types/icons/icon/icon.d.ts +2 -3
  244. package/dist-elements/types/icons/register.d.ts +1 -1
  245. package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
  246. package/dist-elements/types/primitives/button/button.d.ts +12 -9
  247. package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
  248. package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
  249. package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
  250. package/dist-elements/types/primitives/index.d.ts +3 -1
  251. package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
  252. package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
  253. package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
  254. package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
  255. package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
  256. package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
  257. package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
  258. package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
  259. package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
  260. package/dist-elements/types/primitives/tooltip/tooltip.d.ts +6 -6
  261. package/dist-elements/types/types.d.ts +70 -10
  262. package/dist-icons/functioneel-kolommen.svg +1 -0
  263. package/dist-icons/functioneel-trechter.svg +1 -0
  264. package/package.json +1 -1
  265. package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
  266. package/dist-elements/chunks/download-y528pIHP.js +0 -230
  267. package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
  268. package/dist-elements/tag/confirm-dialog.d.ts +0 -1
  269. package/dist-elements/tag/confirm-dialog.js +0 -118
  270. package/dist-elements/tag/session-expiry.d.ts +0 -1
  271. package/dist-elements/tag/session-expiry.js +0 -184
  272. package/dist-elements/tag/shortcuts.d.ts +0 -1
  273. package/dist-elements/tag/shortcuts.js +0 -104
  274. package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
  275. package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
  276. package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
@@ -1,5 +1,5 @@
1
- import { Bt as e, Gt as t, Ht as n, U as r, qt as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
2
- import { n as o } from "../chunks/focus-trap-9BnE-xWv.js";
1
+ import { Jt as e, Q as t, Yt as n, Zt as r, en as i, nn as a } from "../chunks/base-CbmWxUig.js";
2
+ import { n as o } from "../chunks/focus-trap-BwOxE5BX.js";
3
3
  import { t as s } from "../chunks/copied-7BXYVkXT.js";
4
4
  import "./announcement.js";
5
5
  import "./prose.js";
@@ -10,7 +10,7 @@ import "./chart.js";
10
10
  import "./chat-strip.js";
11
11
  import "./chat-suggestions.js";
12
12
  //#region src/components/chat/chat-answer/chat-answer.css?inline
13
- var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-answer { display: flex; flex-direction: column; gap: var(--space-6); min-width: 0; }\n.lintje-chat-answer__body { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n\n.lintje-chat-answer__lead { font-weight: 700; }\n\n/* The dashboard's 12-column grid, so two tiles with a `span` stand side by side. */\n.lintje-chat-answer__blocks {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--space-3) var(--grid-gutter);\n min-width: 0;\n}\n.lintje-chat-answer__blocks > :not([span]) { grid-column: 1 / -1; }\n@media (max-width: 767px) {\n .lintje-chat-answer__blocks { grid-template-columns: minmax(0, 1fr); }\n}\n\n.lintje-chat-answer__stopped,\n.lintje-chat-answer__note,\n.lintje-chat-answer__reasons-label { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-chat-answer__status { align-self: flex-start; }\n.lintje-chat-answer__retry { margin-top: var(--space-2); }\n\n/* The gap keeps the hit areas apart; the margin aligns the first glyph with the text's edge. */\n.lintje-chat-answer__actions {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n margin-left: calc((16px - var(--h-icon-button)) / 2);\n color: var(--color-text-primary);\n}\n.lintje-chat-answer__note { margin-left: var(--space-2); }\n.lintje-chat-answer__reasons {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n animation: lintje-fade-in var(--dur-base) var(--ease-in-motion) both;\n}\n.lintje-chat-answer__reasons-label { margin-right: var(--space-1); }\n", u = [
13
+ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-answer { display: flex; flex-direction: column; gap: var(--space-6); min-width: 0; }\n.lintje-chat-answer__body { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n\n.lintje-chat-answer__lead { font-weight: 700; }\n\n/* The dashboard's 12-column grid, so two tiles with a `span` stand side by side. */\n.lintje-chat-answer__blocks {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--space-3) var(--grid-gutter);\n min-width: 0;\n}\n.lintje-chat-answer__blocks > :not([span]) { grid-column: 1 / -1; }\n@media screen and (max-width: 767px) {\n .lintje-chat-answer__blocks { grid-template-columns: minmax(0, 1fr); }\n}\n\n.lintje-chat-answer__stopped,\n.lintje-chat-answer__note,\n.lintje-chat-answer__reasons-label { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-chat-answer__status { align-self: flex-start; }\n.lintje-chat-answer__retry { margin-top: var(--space-2); }\n\n/* The gap keeps the hit areas apart; the margin aligns the first glyph with the text's edge. */\n.lintje-chat-answer__actions {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n margin-left: calc((16px - var(--h-icon-button)) / 2);\n color: var(--color-text-primary);\n}\n.lintje-chat-answer__note { margin-left: var(--space-2); }\n.lintje-chat-answer__reasons {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n animation: lintje-fade-in var(--dur-base) var(--ease-in-motion) both;\n}\n.lintje-chat-answer__reasons-label { margin-right: var(--space-1); }\n", u = [
14
14
  "Klopt niet",
15
15
  "Niet wat ik vroeg",
16
16
  "Onduidelijk"
@@ -23,12 +23,12 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
23
23
  label: "Kies wat je wilt doen",
24
24
  hint: "Of stel een andere vraag in het veld."
25
25
  }
26
- }, f = class extends a {
26
+ }, f = class extends e {
27
27
  constructor(...e) {
28
28
  super(...e), this.state = "ready", this.current = !1, this.rating = null, this.reasonGiven = !1, this.note = "", this.spoken = [], this.#e = !1, this.#t = 0, this.#n = "";
29
29
  }
30
30
  static {
31
- this.styles = n(l);
31
+ this.styles = r(l);
32
32
  }
33
33
  static {
34
34
  this.properties = {
@@ -101,8 +101,8 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
101
101
  });
102
102
  }
103
103
  giveReason(e) {
104
- let t = this.renderRoot.querySelector(".lintje-chat-answer__reasons"), n = this.renderRoot.querySelector("[label=\"Slecht antwoord\"]");
105
- t && n && r(t) && o(n).focus(), this.reasonGiven = !0, this.say("Bedankt, doorgegeven."), this.emit("lintje-answer-rate", {
104
+ let n = this.renderRoot.querySelector(".lintje-chat-answer__reasons"), r = this.renderRoot.querySelector("[label=\"Slecht antwoord\"]");
105
+ n && r && t(n) && o(r).focus(), this.reasonGiven = !0, this.say("Bedankt, doorgegeven."), this.emit("lintje-answer-rate", {
106
106
  ...this.detail,
107
107
  rating: "down",
108
108
  reason: e
@@ -112,50 +112,50 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
112
112
  this.emit("lintje-answer-retry", this.detail);
113
113
  }
114
114
  render() {
115
- let e = this.state, n = e === "ready", r = d[e];
116
- return i`<article class="lintje-chat-answer">
115
+ let e = this.state, t = e === "ready", n = d[e];
116
+ return a`<article class="lintje-chat-answer">
117
117
  <div class="lintje-chat-answer__body">
118
118
  ${e === "error" ? this.renderError() : this.renderText()}
119
119
  <div class="visually-hidden" role="status" aria-atomic="false">
120
- ${this.spoken.map((e) => i`<p>${e}</p>`)}
120
+ ${this.spoken.map((e) => a`<p>${e}</p>`)}
121
121
  </div>
122
- ${n && this.strip ? i`<lintje-chat-strip
123
- turn-id=${this.turnId ?? t}
122
+ ${t && this.strip ? a`<lintje-chat-strip
123
+ turn-id=${this.turnId ?? i}
124
124
  .items=${this.strip.items}
125
125
  .details=${this.strip.details}
126
- details-label=${this.strip.detailsLabel ?? t}
126
+ details-label=${this.strip.detailsLabel ?? i}
127
127
  ?disabled=${!this.current}
128
- ></lintje-chat-strip>` : t}
128
+ ></lintje-chat-strip>` : i}
129
129
  ${this.renderBlocks()}
130
- ${e === "streaming" ? i`<lintje-spinner
130
+ ${e === "streaming" ? a`<lintje-spinner
131
131
  class="lintje-chat-answer__status"
132
132
  label=${this.status ?? "Antwoord schrijven"}
133
- ></lintje-spinner>` : t}
134
- ${e === "stopped" ? i`<p class="lintje-chat-answer__stopped">Antwoord gestopt.</p>` : t}
135
- ${n ? this.renderActions() : t}
133
+ ></lintje-spinner>` : i}
134
+ ${e === "stopped" ? a`<p class="lintje-chat-answer__stopped">Antwoord gestopt.</p>` : i}
135
+ ${t ? this.renderActions() : i}
136
136
  </div>
137
- ${r && this.current ? i`<lintje-chat-suggestions
137
+ ${n && this.current ? a`<lintje-chat-suggestions
138
138
  kind="choice"
139
- turn-id=${this.turnId ?? t}
140
- label=${r.label}
141
- hint=${r.hint}
139
+ turn-id=${this.turnId ?? i}
140
+ label=${n.label}
141
+ hint=${n.hint}
142
142
  .items=${this.choices}
143
- ></lintje-chat-suggestions>` : t}
144
- ${n && this.current ? i`<lintje-chat-suggestions
145
- turn-id=${this.turnId ?? t}
143
+ ></lintje-chat-suggestions>` : i}
144
+ ${t && this.current ? a`<lintje-chat-suggestions
145
+ turn-id=${this.turnId ?? i}
146
146
  label="Jij, als vervolgvraag"
147
147
  .items=${this.followUps}
148
- ></lintje-chat-suggestions>` : t}
148
+ ></lintje-chat-suggestions>` : i}
149
149
  </article>`;
150
150
  }
151
151
  renderText() {
152
- return i`<lintje-prose
152
+ return a`<lintje-prose
153
153
  class="lintje-chat-answer__text"
154
- aria-live=${this.#e ? "off" : t}
155
- aria-busy=${this.state === "streaming" ? "true" : t}
154
+ aria-live=${this.#e ? "off" : i}
155
+ aria-busy=${this.state === "streaming" ? "true" : i}
156
156
  >
157
157
  <p>
158
- <span class="visually-hidden">Assistent: </span>${this.lead ? i`<strong class="lintje-chat-answer__lead">${this.lead}</strong> ` : t}${this.text ?? t}
158
+ <span class="visually-hidden">Assistent: </span>${this.lead ? a`<strong class="lintje-chat-answer__lead">${this.lead}</strong> ` : i}${this.text ?? i}
159
159
  </p>
160
160
  </lintje-prose>`;
161
161
  }
@@ -166,43 +166,43 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
166
166
  title: this.error?.title ?? "Het antwoord is niet geladen",
167
167
  text: this.error?.text ?? "Je vraag staat er nog: probeer het opnieuw, of stel een kortere vraag."
168
168
  };
169
- return i`<span class="visually-hidden">Assistent: </span>
169
+ return a`<span class="visually-hidden">Assistent: </span>
170
170
  <lintje-announcement .data=${e}>
171
- ${this.current ? i`<lintje-button
171
+ ${this.current ? a`<lintje-button
172
172
  class="lintje-chat-answer__retry"
173
173
  slot="action"
174
174
  variant="secondary"
175
175
  icon="functioneel-refresh"
176
176
  @click=${() => this.retry()}
177
177
  >Opnieuw proberen</lintje-button
178
- >` : t}
178
+ >` : i}
179
179
  </lintje-announcement>`;
180
180
  }
181
181
  renderBlocks() {
182
182
  let e = this.blocks ?? [];
183
- return e.length ? i`<div
183
+ return e.length ? a`<div
184
184
  class="lintje-chat-answer__blocks"
185
- aria-busy=${this.state === "streaming" ? "true" : t}
185
+ aria-busy=${this.state === "streaming" ? "true" : i}
186
186
  >
187
187
  ${e.map((e) => {
188
188
  switch (e.kind) {
189
- case "prose": return i`<lintje-prose .html=${e.html} .text=${e.text}></lintje-prose>`;
190
- case "kpi-row": return i`<lintje-kpi-row .data=${e.data}></lintje-kpi-row>`;
191
- case "chart": return i`<lintje-chart
192
- span=${e.data.span ?? t}
189
+ case "prose": return a`<lintje-prose .html=${e.html} .text=${e.text}></lintje-prose>`;
190
+ case "kpi-row": return a`<lintje-kpi-row .data=${e.data}></lintje-kpi-row>`;
191
+ case "chart": return a`<lintje-chart
192
+ span=${e.data.span ?? i}
193
193
  .data=${e.data}
194
194
  ></lintje-chart>`;
195
- case "data-table": return i`<lintje-data-table
196
- span=${e.data.span ?? t}
195
+ case "data-table": return a`<lintje-data-table
196
+ span=${e.data.span ?? i}
197
197
  .data=${e.data}
198
198
  ></lintje-data-table>`;
199
199
  }
200
200
  })}
201
- </div>` : t;
201
+ </div>` : i;
202
202
  }
203
203
  renderActions() {
204
204
  let e = this.rating === "down" && !this.reasonGiven;
205
- return i`<div class="lintje-chat-answer__actions">
205
+ return a`<div class="lintje-chat-answer__actions">
206
206
  <lintje-icon-button
207
207
  icon="functioneel-kopieren"
208
208
  label="Antwoord kopiëren"
@@ -225,29 +225,29 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
225
225
  ?active=${this.rating === "down"}
226
226
  @click=${() => this.rate("down")}
227
227
  ></lintje-icon-button>
228
- ${this.current ? i`<lintje-icon-button
228
+ ${this.current ? a`<lintje-icon-button
229
229
  icon="functioneel-refresh"
230
230
  label="Opnieuw beantwoorden"
231
231
  variant="flat"
232
232
  @click=${() => this.retry()}
233
- ></lintje-icon-button>` : t}
233
+ ></lintje-icon-button>` : i}
234
234
  <span class="lintje-chat-answer__note" role="status">${this.note}</span>
235
235
  </div>
236
- ${e ? i`<div
236
+ ${e ? a`<div
237
237
  class="lintje-chat-answer__reasons"
238
238
  role="group"
239
239
  aria-labelledby="reasons"
240
240
  >
241
241
  <span id="reasons" class="lintje-chat-answer__reasons-label">Wat was er mis?</span>
242
- ${u.map((e) => i`<lintje-button
242
+ ${u.map((e) => a`<lintje-button
243
243
  variant="tertiary"
244
244
  size="compact"
245
245
  @click=${() => this.giveReason(e)}
246
246
  >${e}</lintje-button
247
247
  >`)}
248
- </div>` : t}`;
248
+ </div>` : i}`;
249
249
  }
250
250
  };
251
- e("lintje-chat-answer", f);
251
+ n("lintje-chat-answer", f);
252
252
  //#endregion
253
253
  export { f as LintjeChatAnswer };
@@ -1,9 +1,9 @@
1
- import { Bt as e, Gt as t, Ht as n, Lt as r, U as i, Z as a, qt as o, ut as s, zt as c } from "../chunks/base-Bg-IFOPG.js";
1
+ import { Jt as e, Kt as t, Q as n, Yt as r, Zt as i, bt as a, en as o, nn as s, nt as c, st as l } from "../chunks/base-CbmWxUig.js";
2
2
  import "./radio-group.js";
3
- import { t as l } from "../chunks/key-CuuOw1KE.js";
3
+ import { t as u } from "../chunks/key-CuuOw1KE.js";
4
4
  import "./multiselect.js";
5
5
  //#region src/components/chat/shared/chat-terms.ts
6
- function u(e, t = []) {
6
+ function d(e, t = []) {
7
7
  let n = [], r = 0;
8
8
  for (let i of [...t].sort((e, t) => e.start - t.start)) i.start < r || i.end <= i.start || i.end > e.length || (i.start > r && n.push({ text: e.slice(r, i.start) }), n.push({
9
9
  text: e.slice(i.start, i.end),
@@ -11,8 +11,8 @@ function u(e, t = []) {
11
11
  }), r = i.end);
12
12
  return r < e.length && n.push({ text: e.slice(r) }), n;
13
13
  }
14
- var d = /[\p{L}\p{N}]/u;
15
- function f(e, t = [], n) {
14
+ var f = /[\p{L}\p{N}]/u;
15
+ function p(e, t = [], n) {
16
16
  let r = e.toLowerCase(), i = t.flatMap((e) => [e.label, ...e.aliases ?? []].map((t) => ({
17
17
  word: t,
18
18
  term: e
@@ -21,7 +21,7 @@ function f(e, t = [], n) {
21
21
  let i = t.toLowerCase();
22
22
  for (let t = r.indexOf(i); t !== -1; t = r.indexOf(i, t + 1)) {
23
23
  let r = t + i.length;
24
- if (t > 0 && d.test(e[t - 1]) || r < e.length && d.test(e[r]) || a.some((e) => t < e.end && r > e.start)) continue;
24
+ if (t > 0 && f.test(e[t - 1]) || r < e.length && f.test(e[r]) || a.some((e) => t < e.end && r > e.start)) continue;
25
25
  let s = o.source !== void 0 && n !== void 0 && !n.includes(o.source);
26
26
  a.push({
27
27
  start: t,
@@ -33,10 +33,10 @@ function f(e, t = [], n) {
33
33
  }
34
34
  return a.sort((e, t) => e.start - t.start);
35
35
  }
36
- function p(e, t = e.length) {
36
+ function m(e, t = e.length) {
37
37
  return /\S*$/.exec(e.slice(0, t))?.[0] ?? "";
38
38
  }
39
- function m(e, t = []) {
39
+ function h(e, t = []) {
40
40
  let n = e.toLowerCase();
41
41
  return n ? t.filter((e) => {
42
42
  let t = e.label.toLowerCase();
@@ -45,7 +45,7 @@ function m(e, t = []) {
45
45
  }
46
46
  //#endregion
47
47
  //#region src/components/chat/chat-composer/chat-composer.css?inline
48
- var h = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-composer { position: relative; }\n\n/* The frame is the field, so it takes the field's resting border (3:1). */\n.lintje-chat-composer__frame {\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-field);\n}\n\n/* Grows with the text and scrolls at four lines, the captions with it. A line this tall leaves\n a term's caption room above the word. */\n.lintje-chat-composer__field {\n position: relative;\n max-height: calc(var(--h-control) * 4 + var(--space-5));\n overflow-y: auto;\n}\n.lintje-chat-composer__input {\n display: block;\n min-height: calc(var(--h-control) + var(--space-5));\n padding: var(--space-3) var(--space-4) var(--space-2);\n font: var(--text-body);\n line-height: var(--h-control);\n color: var(--color-text-primary);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.lintje-chat-composer__input.is-empty::before {\n /* The field's `aria-placeholder` says it; the empty alternative keeps it from being read twice. */\n content: attr(data-placeholder);\n content: attr(data-placeholder) / '';\n position: absolute;\n color: var(--color-text-placeholder);\n opacity: 1;\n pointer-events: none;\n}\n/* The frame takes the ring; without `:has()` the field keeps its own. */\n@supports selector(:has(*)) {\n .lintje-chat-composer__input:focus-visible { outline: none; }\n .lintje-chat-composer__frame:has(.lintje-chat-composer__input:focus-visible) {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n }\n}\n\n/* Dashed gray marks an uncertain term: ambiguous, or of a source that is switched off. */\n.lintje-chat-composer__input::highlight(lintje-term) {\n background-color: var(--color-term-bg);\n text-decoration: underline solid var(--color-term-line);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n.lintje-chat-composer__input::highlight(lintje-term-uncertain) {\n text-decoration: underline dashed var(--color-border-suggestion);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n\n.lintje-chat-composer__captions { position: absolute; inset: 0; pointer-events: none; }\n.lintje-chat-composer__caption {\n position: absolute;\n transform: translateY(-100%);\n font-size: var(--label-size); font-weight: var(--label-weight);\n line-height: 1;\n letter-spacing: var(--label-tracking); text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden; text-overflow: ellipsis;\n color: var(--color-accent-text);\n}\n.lintje-chat-composer__caption.is-uncertain { color: var(--color-text-muted); }\n\n.lintje-chat-composer__bar {\n display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;\n gap: var(--space-2);\n padding: var(--space-2);\n}\n.lintje-chat-composer__sources { flex: 0 1 auto; width: auto; min-width: 0; }\n.lintje-chat-composer__hint {\n flex: 1 1 auto; min-width: 0;\n font: var(--text-meta);\n color: var(--color-text-muted);\n text-align: right;\n}\n\n/* A joined group is drawn at the target height itself, so both halves are as tall as \"Versturen\". */\n.lintje-chat-composer__send { position: relative; flex: none; display: flex; gap: 1px; }\n.lintje-chat-composer__send-half { --h-icon-button: var(--h-button); }\n\n.lintje-chat-composer__scrim { position: fixed; inset: 0; z-index: 45; }\n.lintje-chat-composer__options {\n position: absolute; right: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 320px; max-width: calc(100vw - 2 * var(--space-4));\n display: flex; flex-direction: column; gap: var(--space-4);\n padding: var(--space-4);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n color: var(--color-text-primary);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__shortcuts { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-chat-composer__shortcuts-label { font: var(--text-small); font-weight: 700; }\n.lintje-chat-composer__keys {\n display: grid; grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--space-2) var(--space-3);\n margin: 0;\n font: var(--text-ui);\n}\n.lintje-chat-composer__key { margin: 0; }\n\n.lintje-chat-composer__completions {\n position: absolute; left: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 360px; max-width: 100%;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__completion {\n display: flex; align-items: center; justify-content: space-between;\n gap: var(--space-3);\n min-height: var(--h-option);\n padding: 0 var(--space-3);\n border-bottom: 1px solid var(--color-border-default);\n font: var(--text-ui);\n color: var(--color-text-primary);\n cursor: pointer;\n}\n.lintje-chat-composer__completion:last-child { border-bottom: 0; }\n.lintje-chat-composer__completion:hover,\n.lintje-chat-composer__completion.is-active { background: var(--color-bg-subtle); }\n.lintje-chat-composer__completion-kind { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* A phone: the field stays at 1rem, since a smaller size makes iOS zoom in on focus. */\n@media (max-width: 767px) {\n .lintje-chat-composer__input { padding: var(--space-3) var(--space-3) var(--space-1); }\n .lintje-chat-composer__hint:not(:empty) { flex-basis: 100%; order: -1; text-align: left; }\n}\n\n/* Forced colours drop the chosen completion's fill, so it takes an outline. */\n@media (forced-colors: active) {\n .lintje-chat-composer__completion.is-active { outline: 1px solid Highlight; outline-offset: -1px; }\n}\n", g = [
48
+ var g = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-composer { position: relative; }\n\n/* The frame is the field, so it takes the field's resting border (3:1). */\n.lintje-chat-composer__frame {\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-field);\n}\n\n/* Grows with the text and scrolls at four lines, the captions with it. A line this tall leaves\n a term's caption room above the word. */\n.lintje-chat-composer__field {\n position: relative;\n max-height: calc(var(--h-control) * 4 + var(--space-5));\n overflow-y: auto;\n}\n.lintje-chat-composer__input {\n display: block;\n min-height: calc(var(--h-control) + var(--space-5));\n padding: var(--space-3) var(--space-4) var(--space-2);\n font: var(--text-body);\n line-height: var(--h-control);\n color: var(--color-text-primary);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.lintje-chat-composer__input.is-empty::before {\n /* The field's `aria-placeholder` says it; the empty alternative keeps it from being read twice. */\n content: attr(data-placeholder);\n content: attr(data-placeholder) / '';\n position: absolute;\n color: var(--color-text-placeholder);\n opacity: 1;\n pointer-events: none;\n}\n/* The frame takes the ring; without `:has()` the field keeps its own. */\n@supports selector(:has(*)) {\n .lintje-chat-composer__input:focus-visible { outline: none; }\n .lintje-chat-composer__frame:has(.lintje-chat-composer__input:focus-visible) {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n }\n}\n\n/* Dashed gray marks an uncertain term: ambiguous, or of a source that is switched off. */\n.lintje-chat-composer__input::highlight(lintje-term) {\n background-color: var(--color-term-bg);\n text-decoration: underline solid var(--color-term-line);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n.lintje-chat-composer__input::highlight(lintje-term-uncertain) {\n text-decoration: underline dashed var(--color-border-suggestion);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n\n.lintje-chat-composer__captions { position: absolute; inset: 0; pointer-events: none; }\n.lintje-chat-composer__caption {\n position: absolute;\n transform: translateY(-100%);\n font-size: var(--label-size); font-weight: var(--label-weight);\n line-height: 1;\n letter-spacing: var(--label-tracking); text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden; text-overflow: ellipsis;\n color: var(--color-accent-text);\n}\n.lintje-chat-composer__caption.is-uncertain { color: var(--color-text-muted); }\n\n.lintje-chat-composer__bar {\n display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;\n gap: var(--space-2);\n padding: var(--space-2);\n}\n.lintje-chat-composer__sources { flex: 0 1 auto; width: auto; min-width: 0; }\n.lintje-chat-composer__hint {\n flex: 1 1 auto; min-width: 0;\n font: var(--text-meta);\n color: var(--color-text-muted);\n text-align: right;\n}\n\n/* A joined group is drawn at the target height itself, so both halves are as tall as \"Versturen\". */\n.lintje-chat-composer__send { position: relative; flex: none; display: flex; gap: 1px; }\n.lintje-chat-composer__send-half { --h-icon-button: var(--h-button); }\n\n.lintje-chat-composer__scrim { position: fixed; inset: 0; z-index: 45; }\n.lintje-chat-composer__options {\n position: absolute; right: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 320px; max-width: calc(100vw - 2 * var(--space-4));\n display: flex; flex-direction: column; gap: var(--space-4);\n padding: var(--space-4);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n color: var(--color-text-primary);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__shortcuts { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-chat-composer__shortcuts-label { font: var(--text-small); font-weight: 700; }\n.lintje-chat-composer__keys {\n display: grid; grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--space-2) var(--space-3);\n margin: 0;\n font: var(--text-ui);\n}\n.lintje-chat-composer__key { margin: 0; }\n\n.lintje-chat-composer__completions {\n position: absolute; left: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 360px; max-width: 100%;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__completion {\n display: flex; align-items: center; justify-content: space-between;\n gap: var(--space-3);\n min-height: var(--h-option);\n padding: 0 var(--space-3);\n border-bottom: 1px solid var(--color-border-default);\n font: var(--text-ui);\n color: var(--color-text-primary);\n cursor: pointer;\n}\n.lintje-chat-composer__completion:last-child { border-bottom: 0; }\n.lintje-chat-composer__completion:hover,\n.lintje-chat-composer__completion.is-active { background: var(--color-bg-subtle); }\n.lintje-chat-composer__completion-kind { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* A phone: the field stays at 1rem, since a smaller size makes iOS zoom in on focus. */\n@media screen and (max-width: 767px) {\n .lintje-chat-composer__input { padding: var(--space-3) var(--space-3) var(--space-1); }\n .lintje-chat-composer__hint:not(:empty) { flex-basis: 100%; order: -1; text-align: left; }\n}\n\n/* Forced colours drop the chosen completion's fill, so it takes an outline. */\n@media (forced-colors: active) {\n .lintje-chat-composer__completion.is-active { outline: 1px solid Highlight; outline-offset: -1px; }\n}\n", _ = [
49
49
  {
50
50
  value: "auto",
51
51
  label: "Automatisch (de assistent kiest)"
@@ -62,29 +62,29 @@ var h = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
62
62
  value: "table",
63
63
  label: "Als tabel"
64
64
  }
65
- ], _ = [{
65
+ ], v = [{
66
66
  value: "enter",
67
67
  label: "Enter (Shift+Enter: nieuwe regel)"
68
68
  }, {
69
69
  value: "ctrl-enter",
70
70
  label: "Ctrl+Enter (Enter: nieuwe regel)"
71
- }], v = "lintje-chat-send-key", y = {
71
+ }], y = "lintje-chat-send-key", b = {
72
72
  enter: "Enter verstuurt, Shift+Enter begint een nieuwe regel.",
73
73
  "ctrl-enter": "Ctrl+Enter verstuurt, Enter begint een nieuwe regel."
74
74
  };
75
- function b() {
75
+ function x() {
76
76
  try {
77
- return localStorage.getItem(v) === "ctrl-enter" ? "ctrl-enter" : "enter";
77
+ return localStorage.getItem(y) === "ctrl-enter" ? "ctrl-enter" : "enter";
78
78
  } catch {
79
79
  return "enter";
80
80
  }
81
81
  }
82
- var x = "lintje-term", S = "lintje-term-uncertain", C = () => typeof CSS < "u" && "highlights" in CSS && typeof Highlight < "u";
83
- function w(e) {
82
+ var S = "lintje-term", C = "lintje-term-uncertain", w = () => typeof CSS < "u" && "highlights" in CSS && typeof Highlight < "u";
83
+ function T(e) {
84
84
  let t = CSS.highlights.get(e);
85
85
  return t || (t = new Highlight(), CSS.highlights.set(e, t)), t;
86
86
  }
87
- function T(e) {
87
+ function E(e) {
88
88
  let t = [], n = "", r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT);
89
89
  for (let e = r.nextNode(); e; e = r.nextNode()) e.nodeType === Node.TEXT_NODE ? (t.push({
90
90
  node: e,
@@ -95,7 +95,7 @@ function T(e) {
95
95
  nodes: t
96
96
  };
97
97
  }
98
- function E(e, t) {
98
+ function D(e, t) {
99
99
  for (let n = e.nodes.length - 1; n >= 0; n--) {
100
100
  let { node: r, start: i } = e.nodes[n];
101
101
  if (t >= i && t <= i + r.data.length) return {
@@ -105,12 +105,16 @@ function E(e, t) {
105
105
  }
106
106
  return null;
107
107
  }
108
- var D = class extends c {
108
+ var O = class extends e {
109
109
  constructor(...e) {
110
- super(...e), this.variant = "ask", this.text = "", this.placeholder = "Stel een vraag over de gegevens", this.busy = !1, this.sendKey = b(), this.form = "auto", this.optionsOpen = !1, this.plain = !1, this.draft = "", this.caret = 0, this.completionIndex = 0, this.completionOff = !1, this.captions = [], this.#e = new r(this), this.#t = !0, this.#n = [], this.#r = null, this.#a = !1;
110
+ super(...e), this.variant = "ask", this.text = "", this.placeholder = "Stel een vraag over de gegevens", this.busy = !1, this.sendKey = x(), this.form = "auto", this.optionsOpen = !1, this.plain = !1, this.draft = "", this.caret = 0, this.completionIndex = 0, this.completionOff = !1, this.captions = [], this.#e = new t(this), this.#t = !0, this.#n = [], this.#r = null, this.#a = !1;
111
111
  }
112
112
  static {
113
- this.styles = [n(l), n(h)];
113
+ this.styles = [
114
+ i(u),
115
+ i(g),
116
+ i(c)
117
+ ];
114
118
  }
115
119
  static {
116
120
  this.properties = {
@@ -165,10 +169,10 @@ var D = class extends c {
165
169
  return this.variant === "ask" && !!this.sources?.length && !this.selectedIds.length;
166
170
  }
167
171
  termsIn(e) {
168
- return this.draftTerms && this.draftTerms.text === e ? this.draftTerms.ranges : f(e, this.vocabulary, this.sources ? this.selectedIds : void 0);
172
+ return this.draftTerms && this.draftTerms.text === e ? this.draftTerms.ranges : p(e, this.vocabulary, this.sources ? this.selectedIds : void 0);
169
173
  }
170
174
  get suggestions() {
171
- return this.completionOff || this.termsIn(this.draft).some((e) => e.end === this.caret) ? [] : m(p(this.draft, this.caret), this.vocabulary);
175
+ return this.completionOff || this.termsIn(this.draft).some((e) => e.end === this.caret) ? [] : h(m(this.draft, this.caret), this.vocabulary);
172
176
  }
173
177
  disconnectedCallback() {
174
178
  this.clearHighlights(), this.#r?.disconnect(), this.#r = null, clearTimeout(this.#i), super.disconnectedCallback();
@@ -180,7 +184,7 @@ var D = class extends c {
180
184
  willUpdate(e) {
181
185
  if (super.willUpdate(e), !e.has("busy") || e.get("busy") === void 0) return;
182
186
  let t = this.renderRoot.querySelector(this.busy ? ".lintje-chat-composer__send" : ".lintje-chat-composer__stop");
183
- t && i(t) && (this.#a = !0);
187
+ t && n(t) && (this.#a = !0);
184
188
  }
185
189
  updated(e) {
186
190
  e.has("text") && this.text !== this.draft && this.write(this.text, void 0, !1), this.paint(), this.#a && (this.#a = !1, this.focus());
@@ -198,7 +202,7 @@ var D = class extends c {
198
202
  read() {
199
203
  let e = this.input;
200
204
  if (!e) return;
201
- let t = T(e);
205
+ let t = E(e);
202
206
  t.text === "\n" && (e.textContent = "", t.text = "");
203
207
  let n = this.selection(), r = t.nodes.find(({ node: e }) => e === n?.focusNode);
204
208
  this.draft = t.text, this.caret = r ? r.start + (n?.focusOffset ?? 0) : t.text.length;
@@ -206,9 +210,9 @@ var D = class extends c {
206
210
  write(e, t = e.length, n = !0) {
207
211
  let r = this.input;
208
212
  if (r) {
209
- if (T(r).text !== e && (r.textContent = e), n) {
213
+ if (E(r).text !== e && (r.textContent = e), n) {
210
214
  r.focus();
211
- let e = E(T(r), t);
215
+ let e = D(E(r), t);
212
216
  e && this.selection()?.collapse(e.node, e.offset);
213
217
  }
214
218
  this.draft = e, this.caret = t;
@@ -234,7 +238,7 @@ var D = class extends c {
234
238
  } else t.length && (e.key === "Enter" || e.key === "Tab") && !e.isComposing ? (e.preventDefault(), this.complete(t[Math.min(this.completionIndex, t.length - 1)])) : t.length && e.key === "Escape" ? (e.preventDefault(), this.completionOff = !0) : this.sends(e) ? (e.preventDefault(), this.send()) : e.key === "Enter" && !this.#t && !e.isComposing ? (e.preventDefault(), document.execCommand("insertLineBreak")) : e.key === "Escape" ? this.variant === "edit" ? this.emitLocal("lintje-cancel") : this.busy && this.emit("lintje-answer-stop", {}) : e.key === "ArrowUp" && this.draft === "" && this.recall && (e.preventDefault(), this.write(this.recall));
235
239
  }
236
240
  complete(e) {
237
- let t = p(this.draft, this.caret), n = this.caret - t.length, r = `${this.draft.slice(0, n)}${e.label} ${this.draft.slice(this.caret)}`;
241
+ let t = m(this.draft, this.caret), n = this.caret - t.length, r = `${this.draft.slice(0, n)}${e.label} ${this.draft.slice(this.caret)}`;
238
242
  this.write(r, n + e.label.length + 1), this.completionOff = !0;
239
243
  }
240
244
  send() {
@@ -260,23 +264,23 @@ var D = class extends c {
260
264
  })).filter((t) => t.start >= 0 && t.end <= e.length);
261
265
  }
262
266
  clearHighlights() {
263
- if (C()) {
264
- for (let { name: e, range: t } of this.#n) w(e).delete(t);
267
+ if (w()) {
268
+ for (let { name: e, range: t } of this.#n) T(e).delete(t);
265
269
  this.#n = [];
266
270
  }
267
271
  }
268
272
  paint() {
269
273
  let e = this.input, t = this.renderRoot.querySelector(".lintje-chat-composer__field");
270
- if (!e || !t || !C()) return;
274
+ if (!e || !t || !w()) return;
271
275
  this.clearHighlights();
272
- let n = T(e), r = t.getBoundingClientRect(), i = [];
276
+ let n = E(e), r = t.getBoundingClientRect(), i = [];
273
277
  for (let e of this.termsIn(n.text)) {
274
- let a = E(n, e.start), o = E(n, e.end);
278
+ let a = D(n, e.start), o = D(n, e.end);
275
279
  if (!a || !o) continue;
276
280
  let s = new Range();
277
281
  s.setStart(a.node, a.offset), s.setEnd(o.node, o.offset);
278
- let c = e.certain === !1 ? S : x;
279
- w(c).add(s), this.#n.push({
282
+ let c = e.certain === !1 ? C : S;
283
+ T(c).add(s), this.#n.push({
280
284
  name: c,
281
285
  range: s
282
286
  });
@@ -296,7 +300,7 @@ var D = class extends c {
296
300
  setSendKey(e) {
297
301
  this.sendKey = e;
298
302
  try {
299
- localStorage.setItem(v, e);
303
+ localStorage.setItem(y, e);
300
304
  } catch {}
301
305
  }
302
306
  async toggleOptions(e) {
@@ -305,25 +309,25 @@ var D = class extends c {
305
309
  (t?.shadowRoot?.querySelector("button") ?? t)?.focus();
306
310
  }
307
311
  render() {
308
- let e = this.suggestions, n = Math.min(this.completionIndex, e.length - 1), r = this.termsIn(this.draft).map((e) => {
312
+ let e = this.suggestions, t = Math.min(this.completionIndex, e.length - 1), n = this.termsIn(this.draft).map((e) => {
309
313
  let t = this.draft.slice(e.start, e.end), n = [e.kind, e.certain === !1 ? "niet zeker" : ""].filter(Boolean);
310
314
  return n.length ? `${t} (${n.join(", ")})` : t;
311
315
  }).join(", ");
312
- return o`<div class="lintje-chat-composer lintje-chat-composer--${this.variant}">
313
- ${e.length ? o`<div
316
+ return s`<div class="lintje-chat-composer lintje-chat-composer--${this.variant}">
317
+ ${e.length ? s`<div
314
318
  id="completions"
315
319
  class="lintje-chat-composer__completions"
316
320
  role="listbox"
317
321
  aria-label="Aanvullen"
318
322
  >
319
- ${e.map((e, t) => o`<div
320
- id="completion-${t}"
321
- class=${a({
323
+ ${e.map((e, n) => s`<div
324
+ id="completion-${n}"
325
+ class=${l({
322
326
  "lintje-chat-composer__completion": !0,
323
- "is-active": t === n
327
+ "is-active": n === t
324
328
  })}
325
329
  role="option"
326
- aria-selected=${String(t === n)}
330
+ aria-selected=${String(n === t)}
327
331
  @mousedown=${(t) => {
328
332
  t.preventDefault(), this.complete(e);
329
333
  }}
@@ -331,11 +335,11 @@ var D = class extends c {
331
335
  <span>${e.label}</span>
332
336
  <span class="lintje-chat-composer__completion-kind">${e.kind}</span>
333
337
  </div>`)}
334
- </div>` : t}
338
+ </div>` : o}
335
339
  <div class="lintje-chat-composer__frame">
336
340
  <div class="lintje-chat-composer__field">
337
341
  <div
338
- class=${a({
342
+ class=${l({
339
343
  "lintje-chat-composer__input": !0,
340
344
  "is-empty": this.draft === ""
341
345
  })}
@@ -345,9 +349,9 @@ var D = class extends c {
345
349
  aria-label=${this.variant === "edit" ? "Je vraag bewerken" : "Je vraag"}
346
350
  aria-describedby="hint send-key"
347
351
  aria-placeholder=${this.placeholder}
348
- aria-autocomplete=${this.vocabulary?.length ? "list" : t}
349
- aria-controls=${e.length ? "completions" : t}
350
- aria-activedescendant=${e.length ? `completion-${n}` : t}
352
+ aria-autocomplete=${this.vocabulary?.length ? "list" : o}
353
+ aria-controls=${e.length ? "completions" : o}
354
+ aria-activedescendant=${e.length ? `completion-${t}` : o}
351
355
  data-placeholder=${this.placeholder}
352
356
  @input=${this.onInput}
353
357
  @keydown=${this.onKeydown}
@@ -356,12 +360,12 @@ var D = class extends c {
356
360
  @paste=${this.onPaste}
357
361
  ></div>
358
362
  <div class="lintje-chat-composer__captions" aria-hidden="true">
359
- ${this.captions.map((e) => o`<span
360
- class=${a({
363
+ ${this.captions.map((e) => s`<span
364
+ class=${l({
361
365
  "lintje-chat-composer__caption": !0,
362
366
  "is-uncertain": !e.certain
363
367
  })}
364
- ${s({
368
+ ${a({
365
369
  left: `${e.left}px`,
366
370
  top: `${e.top}px`,
367
371
  maxWidth: e.room === void 0 ? null : `${e.room}px`
@@ -371,9 +375,9 @@ var D = class extends c {
371
375
  </div>
372
376
  </div>
373
377
  <span id="send-key" class="visually-hidden"
374
- >${y[this.plain ? "enter" : this.sendKey]}</span
378
+ >${b[this.plain ? "enter" : this.sendKey]}</span
375
379
  >
376
- <span class="visually-hidden" aria-live="polite">${r ? `Herkend: ${r}` : ""}</span>
380
+ <span class="visually-hidden" aria-live="polite">${n ? `Herkend: ${n}` : ""}</span>
377
381
  <div class="lintje-chat-composer__bar">
378
382
  ${this.variant === "edit" ? this.renderEdit() : this.renderAsk()}
379
383
  </div>
@@ -381,8 +385,8 @@ var D = class extends c {
381
385
  </div>`;
382
386
  }
383
387
  renderAsk() {
384
- let e = this.sources ?? [], n = this.draft.trim() === "";
385
- return o`${e.length ? o`<lintje-multiselect
388
+ let e = this.sources ?? [], t = this.draft.trim() === "";
389
+ return s`${e.length ? s`<lintje-multiselect
386
390
  class="lintje-chat-composer__sources"
387
391
  label="Bronnen voor je volgende vraag"
388
392
  hide-label
@@ -396,44 +400,44 @@ var D = class extends c {
396
400
  @lintje-change=${(e) => {
397
401
  e.stopPropagation(), this.emit("lintje-sources-change", { ids: e.detail });
398
402
  }}
399
- ></lintje-multiselect>` : t}
403
+ ></lintje-multiselect>` : o}
400
404
  <span id="hint" class="lintje-chat-composer__hint" role="status"
401
405
  >${this.noSource ? "Kies eerst een bron om een vraag te stellen" : ""}</span
402
406
  >
403
- ${this.busy ? o`<lintje-button
407
+ ${this.busy ? s`<lintje-button
404
408
  class="lintje-chat-composer__stop"
405
409
  variant="secondary"
406
410
  icon="multimedia-player-stop"
407
411
  @click=${() => this.emit("lintje-answer-stop", {})}
408
412
  >Stoppen</lintje-button
409
- >` : o`<div class="lintje-chat-composer__send">
410
- ${this.#e.matches ? o`<lintje-icon-button
413
+ >` : s`<div class="lintje-chat-composer__send">
414
+ ${this.#e.matches ? s`<lintje-icon-button
411
415
  class="lintje-chat-composer__send-half"
412
416
  icon="functioneel-verzenden"
413
417
  label="Versturen"
414
418
  active
415
- ?disabled=${n || this.noSource}
419
+ ?disabled=${t || this.noSource}
416
420
  @click=${() => this.send()}
417
- ></lintje-icon-button>` : o`<lintje-button
421
+ ></lintje-icon-button>` : s`<lintje-button
418
422
  variant="primary"
419
423
  icon="functioneel-verzenden"
420
- ?disabled=${n || this.noSource}
424
+ ?disabled=${t || this.noSource}
421
425
  @click=${() => this.send()}
422
426
  >Versturen</lintje-button
423
427
  >`}
424
- ${this.plain ? t : o`<lintje-icon-button
428
+ ${this.plain ? o : s`<lintje-icon-button
425
429
  class="lintje-chat-composer__send-half lintje-chat-composer__options-toggle"
426
430
  icon="functioneel-delta-omlaag"
427
431
  label="Opties bij versturen"
428
- ?active=${!(n || this.noSource)}
432
+ ?active=${!(t || this.noSource)}
429
433
  .expanded=${this.optionsOpen}
430
434
  @click=${() => this.toggleOptions(!this.optionsOpen)}
431
435
  ></lintje-icon-button>
432
- ${this.optionsOpen ? this.renderSendOptions() : t}`}
436
+ ${this.optionsOpen ? this.renderSendOptions() : o}`}
433
437
  </div>`}`;
434
438
  }
435
439
  renderSendOptions() {
436
- return o`<span
440
+ return s`<span
437
441
  class="lintje-chat-composer__scrim"
438
442
  @click=${() => this.toggleOptions(!1)}
439
443
  ></span>
@@ -448,7 +452,7 @@ var D = class extends c {
448
452
  >
449
453
  <lintje-radio-group
450
454
  label="Antwoord als"
451
- .options=${g}
455
+ .options=${_}
452
456
  value=${this.form}
453
457
  @lintje-change=${(e) => {
454
458
  e.stopPropagation(), this.form = e.detail;
@@ -456,7 +460,7 @@ var D = class extends c {
456
460
  ></lintje-radio-group>
457
461
  <lintje-radio-group
458
462
  label="Versturen met"
459
- .options=${_}
463
+ .options=${v}
460
464
  value=${this.sendKey}
461
465
  @lintje-change=${(e) => {
462
466
  e.stopPropagation(), this.setSendKey(e.detail);
@@ -474,7 +478,7 @@ var D = class extends c {
474
478
  </div>`;
475
479
  }
476
480
  renderEdit() {
477
- return o`<span id="hint" class="lintje-chat-composer__hint"></span>
481
+ return s`<span id="hint" class="lintje-chat-composer__hint"></span>
478
482
  <lintje-button variant="tertiary" size="chrome" @click=${() => this.emitLocal("lintje-cancel")}
479
483
  >Annuleren</lintje-button
480
484
  >
@@ -487,6 +491,6 @@ var D = class extends c {
487
491
  >`;
488
492
  }
489
493
  };
490
- e("lintje-chat-composer", D);
494
+ r("lintje-chat-composer", O);
491
495
  //#endregion
492
- export { D as LintjeChatComposer, u as t };
496
+ export { O as LintjeChatComposer, d as t };