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,7 +1,7 @@
1
- import { $ as e, Bt as t, Gt as n, Ht as r, Jt as i, O as a, Z as o, d as s, et as c, g as l, h as u, k as d, n as f, qt as p, s as m, t as h, ut as g, w as _ } from "../chunks/base-Bg-IFOPG.js";
1
+ import { F as e, O as t, P as n, Yt as r, Zt as i, _ as a, bt as o, d as s, en as c, i as l, lt as u, n as d, nn as f, o as p, rn as m, st as h, t as g, ut as _, y as v } from "../chunks/base-DRGvkF-r.js";
2
2
  //#region src/components/charts/kpi/kpi.css?inline
3
- var v = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-kpi { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-kpi {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n min-width: 0;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-top: 4px solid var(--color-text-muted);\n border-radius: var(--radius);\n padding: var(--space-4) var(--space-5);\n text-align: left;\n animation: lintje-rise var(--dur-kpi) var(--ease-in-motion) both;\n}\n\n.lintje-kpi__label { font: var(--text-tile-title); color: var(--color-text-primary); }\n/* With an icon the KPI is a two-column grid: the glyph on the label's first line, everything else\n over the full width. The icon stays in every state and takes the text colour. */\n.lintje-kpi--icon {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-content: start;\n}\n.lintje-kpi--icon > * { grid-column: 1 / -1; min-width: 0; }\n.lintje-kpi--icon > .lintje-kpi__icon {\n grid-column: 1; grid-row: 1;\n display: flex; align-items: center;\n height: 1lh;\n font: var(--text-tile-title);\n color: var(--color-text-primary);\n}\n/* The gap is the glyph's own margin, not a `column-gap`: a name with no file draws nothing, and\n a gap between tracks would indent the label beside an empty column. */\n.lintje-kpi--icon > .lintje-kpi__icon { margin-right: var(--space-2); }\n.lintje-kpi--icon > .lintje-kpi__icon:empty { display: none; }\n.lintje-kpi--icon > .lintje-kpi__label { grid-column: 2; grid-row: 1; }\n.lintje-kpi__value {\n font: var(--text-kpi);\n letter-spacing: var(--kpi-tracking);\n /* After the shorthand, which resets it to normal. */\n font-variant-numeric: tabular-nums;\n color: var(--color-text-primary);\n}\n.lintje-kpi__suffix { font-size: 1.25rem; font-weight: 400; color: var(--color-text-muted); margin-left: 6px; }\n/* The final value is transparent but keeps the width, so the suffix does not move while counting. */\n.lintje-kpi__count { display: inline-grid; }\n.lintje-kpi__count-final,\n.lintje-kpi__count-live { grid-area: 1 / 1; }\n.lintje-kpi__count-final { opacity: 0; }\n.lintje-kpi__note { font: var(--text-small); color: var(--color-text-primary); }\n.lintje-kpi__note--error { display: flex; align-items: center; gap: 6px; }\n.lintje-kpi__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-attention); flex: none; }\n.lintje-kpi__detail { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* The wrapper is the query container, so a row can stack in a narrow KPI without containing it. */\n.lintje-kpi__figures { container-type: inline-size; }\n.lintje-kpi__items { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-kpi__item {\n display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;\n column-gap: var(--space-4); min-width: 0;\n}\n.lintje-kpi__item--comparison .lintje-kpi__value { color: var(--color-text-secondary); }\n.lintje-kpi__period { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-kpi__divider { display: block; height: 1px; background: var(--color-border-default); }\n.lintje-kpi__items--row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); align-items: end; gap: var(--space-4); }\n.lintje-kpi__items--row.lintje-kpi__items--divided { grid-auto-columns: minmax(0, 1fr) 1px; }\n.lintje-kpi__items--row .lintje-kpi__item { display: block; }\n.lintje-kpi__items--row .lintje-kpi__divider { height: auto; align-self: stretch; }\n@container (width < 318px) {\n .lintje-kpi__items--row { display: flex; align-items: stretch; gap: var(--space-2); }\n .lintje-kpi__items--row .lintje-kpi__item { display: flex; }\n .lintje-kpi__items--row .lintje-kpi__divider { height: 1px; }\n}\n.lintje-kpi--primary .lintje-kpi__divider { margin-block: var(--space-1); }\n.lintje-kpi__secondary-value {\n font: var(--text-kpi-secondary);\n letter-spacing: var(--kpi-tracking);\n font-variant-numeric: tabular-nums;\n color: var(--color-text-secondary);\n}\n\n.lintje-kpi__skeleton { display: flex; flex-direction: column; gap: var(--space-2); }\n\n@media (max-width: 767px) {\n .lintje-kpi { padding: 12px 14px; gap: var(--space-1); }\n .lintje-kpi__value { font: var(--text-kpi-mobile); font-variant-numeric: tabular-nums; }\n}\n@media (min-width: 1024px) and (max-width: 1439px) {\n .lintje-kpi__value { font-size: 1.75rem; }\n}\n\n/* --- The sparkline ------------------------------------------------------------ */\n/* The box is measured and the svg takes that size, so nothing stretches. `color` is the\n variable's token, set inline; the area is that colour at the line chart's opacity. */\n.lintje-kpi__sparkline { display: block; width: 100%; height: var(--h-sparkline); }\n.lintje-kpi__sparkline-svg { display: block; overflow: visible; }\n.lintje-kpi__sparkline-line { fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }\n.lintje-kpi__sparkline-area { fill: currentColor; fill-opacity: 0.14; }\n.lintje-kpi__sparkline-point { fill: currentColor; }\n/* The end point parts from the line with a ring in the surface. */\n.lintje-kpi__sparkline-end { fill: currentColor; stroke: var(--color-bg-surface); stroke-width: 2; }\n/* Uncovered from left to right once the tile is in view, like the count, and hidden before;\n reduced motion leaves nothing out, so there it simply stands. */\n@media (prefers-reduced-motion: no-preference) {\n .lintje-kpi__sparkline-plot { clip-path: inset(-8px calc(100% + 8px) -8px -8px); }\n .lintje-kpi__sparkline.is-drawn .lintje-kpi__sparkline-plot {\n clip-path: inset(-8px);\n animation: lintje-kpi-reveal var(--dur-draw) var(--ease-in-motion) backwards;\n animation-delay: calc(var(--dur-kpi) + 40ms * var(--kpi-index, 0));\n }\n}\n@keyframes lintje-kpi-reveal {\n from { clip-path: inset(-8px calc(100% + 8px) -8px -8px); }\n to { clip-path: inset(-8px); }\n}\n\n/* --- The trend line -------------------------------------------------------- */\n.lintje-trend {\n display: flex;\n gap: var(--space-2);\n align-items: flex-start;\n font: var(--text-small);\n color: var(--color-text-primary);\n}\n.lintje-trend__glyph { font-size: 1rem; font-weight: 700; line-height: 1.2; flex: none; }\n.lintje-trend__glyph--good { color: var(--color-success); }\n.lintje-trend__glyph--bad { color: var(--color-error); }\n.lintje-trend__glyph--neutral { color: var(--color-text-muted); }\n.lintje-trend__detail { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* --- The gauge ------------------------------------------------------------ */\n/* Room above for a target near the top and below for the ends' numbers; the arc never grows past\n its drawn size, so the band keeps its weight beside the text. */\n.lintje-gauge--arc {\n position: relative;\n width: min(100%, 168px);\n aspect-ratio: 2;\n margin-block: var(--space-4);\n}\n.lintje-gauge__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }\n.lintje-gauge--arc .lintje-kpi__value,\n.lintje-gauge__skeleton {\n position: absolute;\n left: 0; right: 0; bottom: 0;\n margin-inline: auto;\n text-align: center;\n}\n.lintje-gauge__track { fill: none; stroke: var(--color-chart-remainder); }\n.lintje-gauge__arc-fill {\n fill: none;\n stroke-dasharray: 1;\n animation: lintje-gauge-sweep var(--dur-draw) var(--ease-in-motion) both paused;\n}\n.lintje-gauge__tick { stroke: var(--color-chart-emphasis); stroke-width: 1; stroke-dasharray: 3 3; }\n.lintje-gauge__label {\n position: absolute;\n font: var(--text-axis);\n color: var(--color-chart-axis);\n white-space: nowrap;\n}\n.lintje-gauge__label--limit { transform: translateX(-50%); }\n.lintje-gauge__label--middle { transform: translate(-50%, -100%); }\n.lintje-gauge__label--start { transform: translateY(-50%); }\n.lintje-gauge__label--end { transform: translate(-100%, -50%); }\n/* A tile narrower than the arc and a side label puts the target's label on its own line under the\n ends' numbers, where it cannot leave the tile or meet them. A tile narrower still takes the\n smaller figure, so the value stays inside the band. */\n.lintje-gauge__frame { container-type: inline-size; }\n@container (width < 232px) {\n .lintje-gauge--arc { margin-bottom: var(--space-8); }\n .lintje-gauge__label--target {\n left: 50% !important;\n top: calc(100% + var(--space-4)) !important;\n transform: translateX(-50%);\n }\n}\n@container (width < 160px) {\n .lintje-gauge--arc .lintje-kpi__value { font: var(--text-kpi-secondary); font-variant-numeric: tabular-nums; }\n .lintje-gauge--arc .lintje-kpi__suffix { font-size: 1rem; margin-left: 2px; }\n}\n\n\n.lintje-gauge--linear { display: flex; flex-direction: column; gap: var(--space-1); }\n/* The mark stands out over the bar, so the bar leaves it room above and below. */\n.lintje-gauge__bar {\n position: relative;\n height: var(--space-4);\n margin-block: var(--space-1);\n background: var(--color-chart-remainder);\n}\n.lintje-gauge__bar-fill {\n height: 100%;\n transform-origin: 0 50%;\n animation: lintje-gauge-grow var(--dur-draw) var(--ease-in-motion) both paused;\n}\n.lintje-gauge__mark {\n position: absolute;\n top: calc(-1 * var(--space-1));\n bottom: calc(-1 * var(--space-1));\n border-left: 1px dashed var(--color-chart-emphasis);\n}\n.lintje-gauge__scale {\n position: relative;\n display: flex;\n justify-content: space-between;\n font: var(--text-axis);\n color: var(--color-chart-axis);\n}\n.lintje-gauge__scale-target { position: absolute; top: 0; white-space: nowrap; }\n.lintje-gauge__scale-target--middle { transform: translateX(-50%); }\n.lintje-gauge__scale-target--end { transform: translateX(-100%); }\n\n.lintje-gauge.is-drawn .lintje-gauge__arc-fill,\n.lintje-gauge.is-drawn .lintje-gauge__bar-fill { animation-play-state: running; }\n@keyframes lintje-gauge-sweep { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }\n@keyframes lintje-gauge-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }\n@media (prefers-reduced-motion: reduce) {\n .lintje-gauge__arc-fill,\n .lintje-gauge__bar-fill { animation: none; }\n}\n\n/* Forced colours: the divider, the error dot and the gauge's fills are fills, which the browser\n drops. */\n@media (forced-colors: active) {\n .lintje-kpi__divider,\n .lintje-kpi__dot { forced-color-adjust: none; background: CanvasText; }\n .lintje-kpi__sparkline-line { stroke: CanvasText; }\n .lintje-kpi__sparkline-area { fill: none; }\n .lintje-kpi__sparkline-point,\n .lintje-kpi__sparkline-end { fill: CanvasText; stroke: Canvas; }\n .lintje-gauge__bar { forced-color-adjust: none; background: Canvas; outline: 1px solid CanvasText; }\n .lintje-gauge__bar-fill { forced-color-adjust: none; background: Highlight !important; }\n .lintje-gauge__svg { forced-color-adjust: none; }\n .lintje-gauge__track { stroke: GrayText; }\n .lintje-gauge__arc-fill { stroke: Highlight !important; }\n .lintje-gauge__tick { stroke: CanvasText; }\n .lintje-gauge__mark { border-color: CanvasText; }\n}\n", y = 64, b = 24, x = y - b / 2 - 6, S = 82, C = 86, w = 84;
4
- function T(e) {
3
+ var y = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n@media print { :host { break-inside: avoid; } }\n.lintje-kpi { height: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-kpi {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n min-width: 0;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-top: 4px solid var(--color-text-muted);\n border-radius: var(--radius);\n padding: var(--space-4) var(--space-5);\n text-align: left;\n animation: lintje-rise var(--dur-kpi) var(--ease-in-motion) both;\n}\n\n.lintje-kpi__label { font: var(--text-tile-title); color: var(--color-text-primary); }\n/* With an icon the KPI is a two-column grid: the glyph on the label's first line, everything else\n over the full width. The icon stays in every state and takes the text colour. */\n.lintje-kpi--icon {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n align-content: start;\n}\n.lintje-kpi--icon > * { grid-column: 1 / -1; min-width: 0; }\n.lintje-kpi--icon > .lintje-kpi__icon {\n grid-column: 1; grid-row: 1;\n display: flex; align-items: center;\n height: 1lh;\n font: var(--text-tile-title);\n color: var(--color-text-primary);\n}\n/* The gap is the glyph's own margin, not a `column-gap`: a name with no file draws nothing, and\n a gap between tracks would indent the label beside an empty column. */\n.lintje-kpi--icon > .lintje-kpi__icon { margin-right: var(--space-2); }\n.lintje-kpi--icon > .lintje-kpi__icon:empty { display: none; }\n.lintje-kpi--icon > .lintje-kpi__label { grid-column: 2; grid-row: 1; }\n.lintje-kpi__value {\n font: var(--text-kpi);\n letter-spacing: var(--kpi-tracking);\n /* After the shorthand, which resets it to normal. */\n font-variant-numeric: tabular-nums;\n color: var(--color-text-primary);\n}\n.lintje-kpi__suffix { font-size: 1.25rem; font-weight: 400; color: var(--color-text-muted); margin-left: 6px; }\n/* The final value is transparent but keeps the width, so the suffix does not move while counting. */\n.lintje-kpi__count { display: inline-grid; }\n.lintje-kpi__count-final,\n.lintje-kpi__count-live { grid-area: 1 / 1; }\n.lintje-kpi__count-final { opacity: 0; }\n.lintje-kpi__note { font: var(--text-small); color: var(--color-text-primary); }\n.lintje-kpi__note--error { display: flex; align-items: center; gap: 6px; }\n.lintje-kpi__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-attention); flex: none; }\n.lintje-kpi__detail { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* The wrapper is the query container, so a row can stack in a narrow KPI without containing it. */\n.lintje-kpi__figures { container-type: inline-size; }\n.lintje-kpi__items { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-kpi__item {\n display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;\n column-gap: var(--space-4); min-width: 0;\n}\n.lintje-kpi__item--comparison .lintje-kpi__value { color: var(--color-text-secondary); }\n.lintje-kpi__period { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-kpi__divider { display: block; height: 1px; background: var(--color-border-default); }\n.lintje-kpi__items--row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); align-items: end; gap: var(--space-4); }\n.lintje-kpi__items--row.lintje-kpi__items--divided { grid-auto-columns: minmax(0, 1fr) 1px; }\n.lintje-kpi__items--row .lintje-kpi__item { display: block; }\n.lintje-kpi__items--row .lintje-kpi__divider { height: auto; align-self: stretch; }\n@container (width < 318px) {\n .lintje-kpi__items--row { display: flex; align-items: stretch; gap: var(--space-2); }\n .lintje-kpi__items--row .lintje-kpi__item { display: flex; }\n .lintje-kpi__items--row .lintje-kpi__divider { height: 1px; }\n}\n.lintje-kpi--primary .lintje-kpi__divider { margin-block: var(--space-1); }\n.lintje-kpi__secondary-value {\n font: var(--text-kpi-secondary);\n letter-spacing: var(--kpi-tracking);\n font-variant-numeric: tabular-nums;\n color: var(--color-text-secondary);\n}\n\n.lintje-kpi__skeleton { display: flex; flex-direction: column; gap: var(--space-2); }\n\n@media screen and (max-width: 767px) {\n .lintje-kpi { padding: 12px 14px; gap: var(--space-1); }\n .lintje-kpi__value { font: var(--text-kpi-mobile); font-variant-numeric: tabular-nums; }\n}\n@media (min-width: 1024px) and (max-width: 1439px) {\n .lintje-kpi__value { font-size: 1.75rem; }\n}\n\n/* --- The sparkline ------------------------------------------------------------ */\n/* The box is measured and the svg takes that size, so nothing stretches. `color` is the\n variable's token, set inline; the area is that colour at the line chart's opacity. */\n.lintje-kpi__sparkline { display: block; width: 100%; height: var(--h-sparkline); }\n.lintje-kpi__sparkline-svg { display: block; overflow: visible; }\n.lintje-kpi__sparkline-line { fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }\n.lintje-kpi__sparkline-area { fill: currentColor; fill-opacity: 0.14; }\n.lintje-kpi__sparkline-point { fill: currentColor; }\n/* The end point parts from the line with a ring in the surface. */\n.lintje-kpi__sparkline-end { fill: currentColor; stroke: var(--color-bg-surface); stroke-width: 2; }\n/* Uncovered from left to right once the tile is in view, like the count, and hidden before;\n reduced motion leaves nothing out, so there it simply stands. */\n@media (prefers-reduced-motion: no-preference) {\n .lintje-kpi__sparkline-plot { clip-path: inset(-8px calc(100% + 8px) -8px -8px); }\n .lintje-kpi__sparkline.is-drawn .lintje-kpi__sparkline-plot {\n clip-path: inset(-8px);\n animation: lintje-kpi-reveal var(--dur-draw) var(--ease-in-motion) backwards;\n animation-delay: calc(var(--dur-kpi) + 40ms * var(--kpi-index, 0));\n }\n}\n@keyframes lintje-kpi-reveal {\n from { clip-path: inset(-8px calc(100% + 8px) -8px -8px); }\n to { clip-path: inset(-8px); }\n}\n\n/* --- The trend line -------------------------------------------------------- */\n.lintje-trend {\n display: flex;\n gap: var(--space-2);\n align-items: flex-start;\n font: var(--text-small);\n color: var(--color-text-primary);\n}\n.lintje-trend__glyph { font-size: 1rem; font-weight: 700; line-height: 1.2; flex: none; }\n.lintje-trend__glyph--good { color: var(--color-success); }\n.lintje-trend__glyph--bad { color: var(--color-error); }\n.lintje-trend__glyph--neutral { color: var(--color-text-muted); }\n.lintje-trend__detail { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* --- The gauge ------------------------------------------------------------ */\n/* Room above for a target near the top and below for the ends' numbers; the arc never grows past\n its drawn size, so the band keeps its weight beside the text. */\n.lintje-gauge--arc {\n position: relative;\n width: min(100%, 168px);\n aspect-ratio: 2;\n margin-block: var(--space-4);\n}\n.lintje-gauge__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }\n.lintje-gauge--arc .lintje-kpi__value,\n.lintje-gauge__skeleton {\n position: absolute;\n left: 0; right: 0; bottom: 0;\n margin-inline: auto;\n text-align: center;\n}\n.lintje-gauge__track { fill: none; stroke: var(--color-chart-remainder); }\n.lintje-gauge__arc-fill {\n fill: none;\n stroke-dasharray: 1;\n animation: lintje-gauge-sweep var(--dur-draw) var(--ease-in-motion) both paused;\n}\n.lintje-gauge__tick { stroke: var(--color-chart-emphasis); stroke-width: 1; stroke-dasharray: 3 3; }\n.lintje-gauge__label {\n position: absolute;\n font: var(--text-axis);\n color: var(--color-chart-axis);\n white-space: nowrap;\n}\n.lintje-gauge__label--limit { transform: translateX(-50%); }\n.lintje-gauge__label--middle { transform: translate(-50%, -100%); }\n.lintje-gauge__label--start { transform: translateY(-50%); }\n.lintje-gauge__label--end { transform: translate(-100%, -50%); }\n/* A tile narrower than the arc and a side label puts the target's label on its own line under the\n ends' numbers, where it cannot leave the tile or meet them. A tile narrower still takes the\n smaller figure, so the value stays inside the band. */\n.lintje-gauge__frame { container-type: inline-size; }\n@container (width < 232px) {\n .lintje-gauge--arc { margin-bottom: var(--space-8); }\n .lintje-gauge__label--target {\n left: 50% !important;\n top: calc(100% + var(--space-4)) !important;\n transform: translateX(-50%);\n }\n}\n@container (width < 160px) {\n .lintje-gauge--arc .lintje-kpi__value { font: var(--text-kpi-secondary); font-variant-numeric: tabular-nums; }\n .lintje-gauge--arc .lintje-kpi__suffix { font-size: 1rem; margin-left: 2px; }\n}\n\n\n.lintje-gauge--linear { display: flex; flex-direction: column; gap: var(--space-1); }\n/* The mark stands out over the bar, so the bar leaves it room above and below. */\n.lintje-gauge__bar {\n position: relative;\n height: var(--space-4);\n margin-block: var(--space-1);\n background: var(--color-chart-remainder);\n}\n.lintje-gauge__bar-fill {\n height: 100%;\n transform-origin: 0 50%;\n animation: lintje-gauge-grow var(--dur-draw) var(--ease-in-motion) both paused;\n}\n.lintje-gauge__mark {\n position: absolute;\n top: calc(-1 * var(--space-1));\n bottom: calc(-1 * var(--space-1));\n border-left: 1px dashed var(--color-chart-emphasis);\n}\n.lintje-gauge__scale {\n position: relative;\n display: flex;\n justify-content: space-between;\n font: var(--text-axis);\n color: var(--color-chart-axis);\n}\n.lintje-gauge__scale-target { position: absolute; top: 0; white-space: nowrap; }\n.lintje-gauge__scale-target--middle { transform: translateX(-50%); }\n.lintje-gauge__scale-target--end { transform: translateX(-100%); }\n\n.lintje-gauge.is-drawn .lintje-gauge__arc-fill,\n.lintje-gauge.is-drawn .lintje-gauge__bar-fill { animation-play-state: running; }\n@keyframes lintje-gauge-sweep { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }\n@keyframes lintje-gauge-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }\n@media (prefers-reduced-motion: reduce) {\n .lintje-gauge__arc-fill,\n .lintje-gauge__bar-fill { animation: none; }\n}\n\n/* Forced colours: the divider, the error dot and the gauge's fills are fills, which the browser\n drops. */\n@media (forced-colors: active) {\n .lintje-kpi__divider,\n .lintje-kpi__dot { forced-color-adjust: none; background: CanvasText; }\n .lintje-kpi__sparkline-line { stroke: CanvasText; }\n .lintje-kpi__sparkline-area { fill: none; }\n .lintje-kpi__sparkline-point,\n .lintje-kpi__sparkline-end { fill: CanvasText; stroke: Canvas; }\n .lintje-gauge__bar { forced-color-adjust: none; background: Canvas; outline: 1px solid CanvasText; }\n .lintje-gauge__bar-fill { forced-color-adjust: none; background: Highlight !important; }\n .lintje-gauge__svg { forced-color-adjust: none; }\n .lintje-gauge__track { stroke: GrayText; }\n .lintje-gauge__arc-fill { stroke: Highlight !important; }\n .lintje-gauge__tick { stroke: CanvasText; }\n .lintje-gauge__mark { border-color: CanvasText; }\n}\n\n.lintje-kpi__last-known { font: var(--text-small); color: var(--color-text-muted); }\n", b = 64, x = 24, S = b - x / 2 - 6, C = 82, w = 86, T = 84;
4
+ function E(e) {
5
5
  let t = e.min ?? 0, n = e.max > t ? e.max : t + 1;
6
6
  return {
7
7
  min: t,
@@ -9,92 +9,92 @@ function T(e) {
9
9
  share: (e) => Math.max(0, Math.min(1, (e - t) / (n - t)))
10
10
  };
11
11
  }
12
- function E(e, t) {
12
+ function D(e, t) {
13
13
  let n = Math.PI * (1 - t);
14
14
  return [e * Math.cos(n), -e * Math.sin(n)];
15
15
  }
16
- function D(e, t) {
17
- let { gauge: n, value: r } = e, i = n.target == null ? "" : `, ${n.targetLabel ?? "doel"} ${m(n.target)}`;
18
- return `${r == null || !e.ready ? "" : `${m(r)} `}op een schaal van ${m(t.min)} tot ${m(t.max)}${i}`;
19
- }
20
- function O(e) {
21
- return `${e.targetLabel ?? "doel"} ${m(e.target)}`;
16
+ function O(e, t) {
17
+ let { gauge: n, value: r } = e, i = n.target == null ? "" : `, ${n.targetLabel ?? "doel"} ${s(n.target)}`;
18
+ return `${r == null || !e.ready ? "" : `${s(r)} `}op een schaal van ${s(t.min)} tot ${s(t.max)}${i}`;
22
19
  }
23
- function k(e, t) {
24
- return e.gauge.shape === "linear" ? j(e, t) : A(e, t);
20
+ function k(e) {
21
+ return `${e.targetLabel ?? "doel"} ${s(e.target)}`;
25
22
  }
26
23
  function A(e, t) {
27
- let { gauge: r, value: a, ready: s } = e, c = T(r), l = s && a != null && c.share(a) > 0 ? c.share(a) : null, u = l == null ? null : E(y, l), d = !e.loading && r.target != null, f = d ? c.share(r.target) : 0, [h, _] = E(x, f), [v, k] = E(S, f), [A, j] = E(C, f), M = Math.cos(Math.PI * (1 - f)), N = M > .3 ? "start" : M < -.3 ? "end" : "middle", P = (e) => `${(e + w) / 168 * 100}%`;
28
- return p`<div class="lintje-gauge__frame"><div
29
- class=${o({
24
+ return e.gauge.shape === "linear" ? M(e, t) : j(e, t);
25
+ }
26
+ function j(e, t) {
27
+ let { gauge: n, value: r, ready: i } = e, a = E(n), l = i && r != null && a.share(r) > 0 ? a.share(r) : null, u = l == null ? null : D(b, l), d = !e.loading && n.target != null, p = d ? a.share(n.target) : 0, [g, _] = D(S, p), [v, y] = D(C, p), [A, j] = D(w, p), M = Math.cos(Math.PI * (1 - p)), N = M > .3 ? "start" : M < -.3 ? "end" : "middle", P = (e) => `${(e + T) / 168 * 100}%`;
28
+ return f`<div class="lintje-gauge__frame"><div
29
+ class=${h({
30
30
  "lintje-gauge": !0,
31
31
  "lintje-gauge--arc": !0,
32
32
  "is-drawn": e.drawn
33
33
  })}>
34
34
  ${t}
35
- <svg class="lintje-gauge__svg" viewBox="${-84} ${-84} ${168} ${w}" role="img"
36
- aria-label=${D(e, c)}>
37
- <desc>${D(e, c)}</desc>
38
- <path class="lintje-gauge__track" d="M ${-64} 0 A ${y} ${y} 0 0 1 ${y} 0"
39
- stroke-width=${b} />
40
- ${u ? i`<path class="lintje-gauge__arc-fill" pathLength="1"
41
- d="M ${-64} 0 A ${y} ${y} 0 0 1 ${u[0].toFixed(2)} ${u[1].toFixed(2)}"
42
- stroke-width=${b} ${g({ stroke: e.color })} />` : n}
43
- ${d ? i`<line class="lintje-gauge__tick" x1=${h.toFixed(2)} y1=${_.toFixed(2)}
44
- x2=${v.toFixed(2)} y2=${k.toFixed(2)} />` : n}
35
+ <svg class="lintje-gauge__svg" viewBox="${-84} ${-84} ${168} ${T}" role="img"
36
+ aria-label=${O(e, a)}>
37
+ <desc>${O(e, a)}</desc>
38
+ <path class="lintje-gauge__track" d="M ${-64} 0 A ${b} ${b} 0 0 1 ${b} 0"
39
+ stroke-width=${x} />
40
+ ${u ? m`<path class="lintje-gauge__arc-fill" pathLength="1"
41
+ d="M ${-64} 0 A ${b} ${b} 0 0 1 ${u[0].toFixed(2)} ${u[1].toFixed(2)}"
42
+ stroke-width=${x} ${o({ stroke: e.color })} />` : c}
43
+ ${d ? m`<line class="lintje-gauge__tick" x1=${g.toFixed(2)} y1=${_.toFixed(2)}
44
+ x2=${v.toFixed(2)} y2=${y.toFixed(2)} />` : c}
45
45
  </svg>
46
46
  <span class="lintje-gauge__label lintje-gauge__label--limit" aria-hidden="true"
47
- ${g({
47
+ ${o({
48
48
  left: P(-64),
49
49
  top: "100%"
50
- })}>${m(c.min)}</span>
50
+ })}>${s(a.min)}</span>
51
51
  <span class="lintje-gauge__label lintje-gauge__label--limit" aria-hidden="true"
52
- ${g({
53
- left: P(y),
52
+ ${o({
53
+ left: P(b),
54
54
  top: "100%"
55
- })}>${m(c.max)}</span>
56
- ${d ? p`<span class="lintje-gauge__label lintje-gauge__label--target lintje-gauge__label--${N}"
57
- aria-hidden="true" ${g({
55
+ })}>${s(a.max)}</span>
56
+ ${d ? f`<span class="lintje-gauge__label lintje-gauge__label--target lintje-gauge__label--${N}"
57
+ aria-hidden="true" ${o({
58
58
  left: P(A),
59
- top: ((e) => `${(e + w) / w * 100}%`)(j)
60
- })}>${O(r)}</span>` : n}
59
+ top: ((e) => `${(e + T) / T * 100}%`)(j)
60
+ })}>${k(n)}</span>` : c}
61
61
  </div></div>`;
62
62
  }
63
- function j(e, t) {
64
- let { gauge: r, value: i, ready: a } = e, s = T(r), c = a && i != null ? s.share(i) : null, l = !e.loading && r.target != null, u = l ? s.share(r.target) : 0, d = u > .8 ? "end" : u < .2 ? "start" : "middle";
65
- return p`${t}
66
- <div class=${o({
63
+ function M(e, t) {
64
+ let { gauge: n, value: r, ready: i } = e, a = E(n), l = i && r != null ? a.share(r) : null, u = !e.loading && n.target != null, d = u ? a.share(n.target) : 0, p = d > .8 ? "end" : d < .2 ? "start" : "middle";
65
+ return f`${t}
66
+ <div class=${h({
67
67
  "lintje-gauge": !0,
68
68
  "lintje-gauge--linear": !0,
69
69
  "is-drawn": e.drawn
70
70
  })}
71
- role="img" aria-label=${D(e, s)}>
71
+ role="img" aria-label=${O(e, a)}>
72
72
  <div class="lintje-gauge__bar">
73
- ${c == null ? n : p`<div class="lintje-gauge__bar-fill"
74
- ${g({
75
- width: `${c * 100}%`,
73
+ ${l == null ? c : f`<div class="lintje-gauge__bar-fill"
74
+ ${o({
75
+ width: `${l * 100}%`,
76
76
  background: e.color
77
77
  })}></div>`}
78
- ${l ? p`<span class="lintje-gauge__mark" ${g({ left: `${u * 100}%` })}></span>` : n}
78
+ ${u ? f`<span class="lintje-gauge__mark" ${o({ left: `${d * 100}%` })}></span>` : c}
79
79
  </div>
80
80
  <div class="lintje-gauge__scale">
81
- <span>${m(s.min)}</span>
82
- ${l ? p`<span class="lintje-gauge__scale-target lintje-gauge__scale-target--${d}"
83
- ${g({ left: `${u * 100}%` })}>${O(r)}</span>` : n}
84
- <span>${m(s.max)}</span>
81
+ <span>${s(a.min)}</span>
82
+ ${u ? f`<span class="lintje-gauge__scale-target lintje-gauge__scale-target--${p}"
83
+ ${o({ left: `${d * 100}%` })}>${k(n)}</span>` : c}
84
+ <span>${s(a.max)}</span>
85
85
  </div>
86
86
  </div>`;
87
87
  }
88
88
  //#endregion
89
89
  //#region src/components/charts/kpi/kpi.ts
90
- var M = {
91
- ...Object.fromEntries(h.map((e) => [e, f(e)])),
90
+ var N = {
91
+ ...Object.fromEntries(g.map((e) => [e, d(e)])),
92
92
  coverage: "var(--color-text-muted)"
93
- }, N = {
93
+ }, P = {
94
94
  width: 200,
95
95
  height: 32
96
- }, P = 4, F = 3.5;
97
- function I(e, t, n) {
96
+ }, F = 4, I = 3.5;
97
+ function L(e, t, n) {
98
98
  let r = e.filter((e) => e != null);
99
99
  if (r.length < 2) return [];
100
100
  let i = Math.min(...r), a = Math.max(...r) - i || 1, o = (t - 8) / (e.length - 1), s = [], c = [];
@@ -103,16 +103,16 @@ function I(e, t, n) {
103
103
  c.length && s.push(c), c = [];
104
104
  return;
105
105
  }
106
- let r = P + t * o, l = P + (1 - (e - i) / a) * (n - 8);
106
+ let r = F + t * o, l = F + (1 - (e - i) / a) * (n - 8);
107
107
  c.push([r, l]);
108
108
  }), c.length && s.push(c), s;
109
109
  }
110
- var L = (e) => e.map(([e, t]) => `${e.toFixed(1)},${t.toFixed(1)}`).join(" "), R = {
110
+ var R = (e) => e.map(([e, t]) => `${e.toFixed(1)},${t.toFixed(1)}`).join(" "), z = {
111
111
  up: "▲",
112
112
  down: "▼",
113
113
  flat: "●"
114
- }, z = .35, B = Array.from({ length: 21 }, (e, t) => t / 20);
115
- function V(e) {
114
+ }, B = .35, V = Array.from({ length: 21 }, (e, t) => t / 20);
115
+ function H(e) {
116
116
  let t = e === void 0 ? null : String(e), n = t?.match(/\d{1,3}(?:\.\d{3})+(?:,\d+)?|\d+(?:,\d+)?/);
117
117
  if (t == null || !n || n.index == null) return null;
118
118
  let r = n[0];
@@ -124,16 +124,16 @@ function V(e) {
124
124
  grouped: r.includes(".")
125
125
  };
126
126
  }
127
- function H(e, t) {
127
+ function U(e, t) {
128
128
  return e.before + t.toLocaleString("nl-NL", {
129
129
  minimumFractionDigits: e.decimals,
130
130
  maximumFractionDigits: e.decimals,
131
131
  useGrouping: e.grouped
132
132
  }) + e.after;
133
133
  }
134
- var U = class extends a {
134
+ var W = class extends n {
135
135
  constructor(...e) {
136
- super(...e), this.label = "", this.layout = "row", this.emphasis = "equal", this.dividers = !0, this.variable = "sky-blue", this.state = "ready", this.index = 0, this.counting = [], this.drawn = !1, this.sparklineBox = N, this.#e = [], this.#t = null, this.#n = "", this.#r = null, this.#i = 0, this.#a = !1, this.#o = !1, this.observeSparkline = (e) => {
136
+ super(...e), this.label = "", this.layout = "row", this.emphasis = "equal", this.dividers = !0, this.variable = "sky-blue", this.state = "ready", this.index = 0, this.counting = [], this.drawn = !1, this.sparklineBox = P, this.#e = [], this.#t = null, this.#n = "", this.#r = null, this.#i = 0, this.#a = !1, this.#o = !1, this.#s = null, this.observeSparkline = (e) => {
137
137
  this.#t?.disconnect(), this.#t = null, e && typeof ResizeObserver < "u" && (this.#t = new ResizeObserver(([e]) => {
138
138
  let { width: t, height: n } = e.contentRect;
139
139
  if (!t || !n) return;
@@ -147,10 +147,10 @@ var U = class extends a {
147
147
  }
148
148
  static {
149
149
  this.styles = [
150
- d,
151
150
  e,
152
- r(_),
153
- r(v)
151
+ u,
152
+ i(t),
153
+ i(y)
154
154
  ];
155
155
  }
156
156
  static {
@@ -176,6 +176,11 @@ var U = class extends a {
176
176
  type: String,
177
177
  reflect: !0
178
178
  },
179
+ message: { type: String },
180
+ lastKnown: {
181
+ type: String,
182
+ attribute: "last-known"
183
+ },
179
184
  index: { type: Number },
180
185
  counting: { state: !0 },
181
186
  drawn: { state: !0 },
@@ -189,105 +194,109 @@ var U = class extends a {
189
194
  #i;
190
195
  #a;
191
196
  #o;
197
+ #s;
192
198
  get figures() {
193
199
  return this.items?.length ? this.items : null;
194
200
  }
195
201
  get reduced() {
196
- return l();
202
+ return v();
197
203
  }
198
204
  connectedCallback() {
199
- super.connectedCallback(), typeof IntersectionObserver > "u" ? (this.#o = !0, this.drawn = !0) : (this.#r = new IntersectionObserver(([e]) => {
205
+ super.connectedCallback(), this.#s = l(() => this.finishCount()), typeof IntersectionObserver > "u" ? (this.#o = !0, this.drawn = !0) : (this.#r = new IntersectionObserver(([e]) => {
200
206
  let t = e.rootBounds?.height ?? window.innerHeight;
201
- (e.intersectionRatio >= z || e.intersectionRect.height >= t * z) && (this.#o = !0, this.drawn = !0, this.#r?.disconnect(), this.startCount());
202
- }, { threshold: B }), this.#r.observe(this));
207
+ (e.intersectionRatio >= B || e.intersectionRect.height >= t * B) && (this.#o = !0, this.drawn = !0, this.#r?.disconnect(), this.startCount());
208
+ }, { threshold: V }), this.#r.observe(this));
203
209
  }
204
210
  disconnectedCallback() {
205
- this.#r?.disconnect(), this.#t?.disconnect(), this.#t = null, cancelAnimationFrame(this.#i), super.disconnectedCallback();
211
+ this.#r?.disconnect(), this.#s?.(), this.#t?.disconnect(), this.#t = null, cancelAnimationFrame(this.#i), super.disconnectedCallback();
212
+ }
213
+ finishCount() {
214
+ this.#r?.disconnect(), cancelAnimationFrame(this.#i), this.#o = !0, this.#a = !0, !this.counting.every((e) => e === null) && (this.counting = this.#e.map(() => null), this.performUpdate());
206
215
  }
207
216
  willUpdate(e) {
208
217
  super.willUpdate(e);
209
218
  let t = this.state === "ready" ? this.figures ? this.figures.map((e) => e.value) : [this.value] : [], n = JSON.stringify(t);
210
- n !== this.#n && (this.#n = n, this.#e = t.map(V), cancelAnimationFrame(this.#i), this.#a = !1, this.counting = this.reduced ? this.#e.map(() => null) : this.#e.map((e) => e ? H(e, 0) : null), this.#o && this.startCount());
219
+ n !== this.#n && (this.#n = n, this.#e = t.map(H), cancelAnimationFrame(this.#i), this.#a = !1, this.counting = this.reduced ? this.#e.map(() => null) : this.#e.map((e) => e ? U(e, 0) : null), this.#o && this.startCount());
211
220
  }
212
221
  startCount() {
213
222
  if (this.#a || this.reduced || !this.#e.some(Boolean)) return;
214
223
  this.#a = !0;
215
- let e = u(this, "--dur-draw"), t = performance.now() + this.index * 40, n = (r) => {
224
+ let e = a(this, "--dur-draw"), t = performance.now() + this.index * 40, n = (r) => {
216
225
  let i = e > 0 ? Math.min(1, Math.max(0, (r - t) / e)) : 1;
217
226
  if (i === 1) {
218
227
  this.counting = this.#e.map(() => null);
219
228
  return;
220
229
  }
221
230
  let a = 1 - (1 - i) ** 3;
222
- this.counting = this.#e.map((e) => e ? H(e, e.target * a) : null), this.#i = requestAnimationFrame(n);
231
+ this.counting = this.#e.map((e) => e ? U(e, e.target * a) : null), this.#i = requestAnimationFrame(n);
223
232
  };
224
233
  this.#i = requestAnimationFrame(n);
225
234
  }
226
235
  render() {
227
236
  let e = this.figures, t = e != null && this.emphasis === "primary";
228
- return p`<div
229
- class=${o({
237
+ return f`<div
238
+ class=${h({
230
239
  "lintje-kpi": !0,
231
240
  "lintje-kpi--primary": t,
232
241
  "lintje-kpi--icon": !!this.icon
233
242
  })}
234
- ${g({
235
- borderTopColor: M[this.variable],
243
+ ${o({
244
+ borderTopColor: N[this.variable],
236
245
  animationDelay: `${this.index * 40}ms`,
237
246
  "--kpi-index": this.index
238
247
  })}
239
248
  >
240
- ${this.icon ? p`<span class="lintje-kpi__icon">${c(this.icon, { size: 20 })}</span>` : n}
249
+ ${this.icon ? f`<span class="lintje-kpi__icon">${_(this.icon, { size: 20 })}</span>` : c}
241
250
  <p class="lintje-kpi__label">${this.label}</p>
242
251
  ${this.body(e, t)}
243
252
  </div>`;
244
253
  }
245
254
  body(e, t) {
246
- let r = this.state === "loading", i = this.state === "ready";
255
+ let n = this.state === "loading", r = this.state === "ready";
247
256
  if (!e && this.gauge) return this.gauged(this.gauge);
248
- if (!e) return r ? p`<div class="lintje-kpi__skeleton">
257
+ if (!e) return n ? f`<div class="lintje-kpi__skeleton">
249
258
  <lintje-skeleton height="34" width="70%"></lintje-skeleton>
250
259
  ${this.renderSparkline()}
251
260
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
252
261
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
253
- </div>` : p`${this.figure(0, {
262
+ </div>` : f`${this.figure(0, {
254
263
  value: this.value,
255
264
  suffix: this.suffix
256
265
  })}${this.renderSparkline()}${this.lines(!0)}`;
257
266
  if (t) {
258
- let [t, ...a] = e, o = this.detail && (i || this.state === "empty");
259
- return p`
260
- ${r ? p`<lintje-skeleton height="34" width="70%"></lintje-skeleton>` : this.figure(0, t)}
267
+ let [t, ...i] = e, a = this.detail && (r || this.state === "empty");
268
+ return f`
269
+ ${n ? f`<lintje-skeleton height="34" width="70%"></lintje-skeleton>` : this.figure(0, t)}
261
270
  ${this.renderSparkline()}
262
- ${r ? p`<lintje-skeleton height="13" width="90%"></lintje-skeleton>` : this.lines(!1)}
263
- ${a.length > 0 && this.dividers ? p`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : n}
264
- ${a.length > 0 ? this.itemList(a, !0, !1, 1) : n}
265
- ${r ? p`<lintje-skeleton height="12" width="55%"></lintje-skeleton>` : o ? p`<p class="lintje-kpi__detail">${this.detail}</p>` : n}
271
+ ${n ? f`<lintje-skeleton height="13" width="90%"></lintje-skeleton>` : this.lines(!1)}
272
+ ${i.length > 0 && this.dividers ? f`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : c}
273
+ ${i.length > 0 ? this.itemList(i, !0, !1, 1) : c}
274
+ ${n ? f`<lintje-skeleton height="12" width="55%"></lintje-skeleton>` : a ? f`<p class="lintje-kpi__detail">${this.detail}</p>` : c}
266
275
  `;
267
276
  }
268
- return p`
277
+ return f`
269
278
  ${this.itemList(e, !1, this.dividers && e.length > 1, 0)}
270
279
  ${this.renderSparkline()}
271
- ${r ? p`<div class="lintje-kpi__skeleton">
280
+ ${n ? f`<div class="lintje-kpi__skeleton">
272
281
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
273
282
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
274
283
  </div>` : this.lines(!0)}
275
284
  `;
276
285
  }
277
286
  renderSparkline() {
278
- if (!this.sparkline) return n;
279
- if (this.state === "loading") return p`<div class="lintje-kpi__sparkline lintje-kpi__sparkline--loading">
287
+ if (!this.sparkline) return c;
288
+ if (this.state === "loading") return f`<div class="lintje-kpi__sparkline lintje-kpi__sparkline--loading">
280
289
  <lintje-skeleton height="100%"></lintje-skeleton>
281
290
  </div>`;
282
- if (this.state !== "ready") return n;
283
- let { width: e, height: t } = this.sparklineBox, r = I(this.sparkline.values, e, t), a = this.sparkline.values.at(-1) == null ? void 0 : r.at(-1)?.at(-1);
284
- return p`<div
285
- class=${o({
291
+ if (this.state !== "ready") return c;
292
+ let { width: e, height: t } = this.sparklineBox, n = L(this.sparkline.values, e, t), r = this.sparkline.values.at(-1) == null ? void 0 : n.at(-1)?.at(-1);
293
+ return f`<div
294
+ class=${h({
286
295
  "lintje-kpi__sparkline": !0,
287
296
  "is-drawn": this.drawn
288
297
  })}
289
- ${s(this.observeSparkline)}
290
- ${g({ color: M[this.variable] })}
298
+ ${p(this.observeSparkline)}
299
+ ${o({ color: N[this.variable] })}
291
300
  >
292
301
  <svg
293
302
  class="lintje-kpi__sparkline-svg"
@@ -299,8 +308,8 @@ var U = class extends a {
299
308
  >
300
309
  <desc>${this.sparkline.description}</desc>
301
310
  <g class="lintje-kpi__sparkline-plot">
302
- ${r.map((e) => this.run(e, t))}
303
- ${a ? i`<circle class="lintje-kpi__sparkline-end" cx=${a[0].toFixed(1)} cy=${a[1].toFixed(1)} r=${F} />` : n}
311
+ ${n.map((e) => this.run(e, t))}
312
+ ${r ? m`<circle class="lintje-kpi__sparkline-end" cx=${r[0].toFixed(1)} cy=${r[1].toFixed(1)} r=${I} />` : c}
304
313
  </g>
305
314
  </svg>
306
315
  </div>`;
@@ -308,33 +317,33 @@ var U = class extends a {
308
317
  run(e, t) {
309
318
  if (e.length === 1) {
310
319
  let [[t, n]] = e;
311
- return i`<circle class="lintje-kpi__sparkline-point" cx=${t.toFixed(1)} cy=${n.toFixed(1)} r="2" />`;
320
+ return m`<circle class="lintje-kpi__sparkline-point" cx=${t.toFixed(1)} cy=${n.toFixed(1)} r="2" />`;
312
321
  }
313
322
  let [n] = e, r = e[e.length - 1];
314
- return i`
323
+ return m`
315
324
  <polygon
316
325
  class="lintje-kpi__sparkline-area"
317
- points=${`${n[0].toFixed(1)},${t} ${L(e)} ${r[0].toFixed(1)},${t}`}
326
+ points=${`${n[0].toFixed(1)},${t} ${R(e)} ${r[0].toFixed(1)},${t}`}
318
327
  />
319
- <polyline class="lintje-kpi__sparkline-line" points=${L(e)} />
328
+ <polyline class="lintje-kpi__sparkline-line" points=${R(e)} />
320
329
  `;
321
330
  }
322
331
  gauged(e) {
323
- let t = this.state === "loading", n = e.value === void 0 ? V(this.value)?.target ?? null : e.value, r = t ? p`<lintje-skeleton class="lintje-gauge__skeleton" height="34" width="40%"></lintje-skeleton>` : this.figure(0, {
332
+ let t = this.state === "loading", n = e.value === void 0 ? H(this.value)?.target ?? null : e.value, r = t ? f`<lintje-skeleton class="lintje-gauge__skeleton" height="34" width="40%"></lintje-skeleton>` : this.figure(0, {
324
333
  value: this.value,
325
334
  suffix: this.suffix
326
335
  });
327
- return p`
328
- ${k({
336
+ return f`
337
+ ${A({
329
338
  gauge: e,
330
339
  value: n,
331
340
  ready: this.state === "ready",
332
341
  loading: t,
333
342
  drawn: this.drawn || this.reduced,
334
- color: M[this.variable]
343
+ color: N[this.variable]
335
344
  }, r)}
336
345
  ${this.renderSparkline()}
337
- ${t ? p`<div class="lintje-kpi__skeleton">
346
+ ${t ? f`<div class="lintje-kpi__skeleton">
338
347
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
339
348
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
340
349
  </div>` : this.lines(!0)}
@@ -342,65 +351,65 @@ var U = class extends a {
342
351
  }
343
352
  lines(e) {
344
353
  let t = this.state === "ready";
345
- return p`
346
- ${t && this.trend ? this.trendLine(e) : n}
347
- ${t && !this.trend && this.note ? p`<p class="lintje-kpi__note">${this.note}</p>` : n}
348
- ${this.state === "empty" ? p`<p class="lintje-kpi__note">Geen gegevens</p>` : n}
349
- ${this.state === "error" ? p`<p class="lintje-kpi__note lintje-kpi__note--error">
350
- <span class="lintje-kpi__dot" aria-hidden="true"></span>Niet geladen
351
- </p>` : n}
352
- ${e && this.detail && (t && !this.trend || this.state === "empty") ? p`<p class="lintje-kpi__detail">${this.detail}</p>` : n}
354
+ return f`
355
+ ${t && this.trend ? this.trendLine(e) : c}
356
+ ${t && !this.trend && this.note ? f`<p class="lintje-kpi__note">${this.note}</p>` : c}
357
+ ${this.state === "empty" ? f`<p class="lintje-kpi__note">${this.message ?? "Geen gegevens"}</p>` : c}
358
+ ${this.state === "error" ? f`<p class="lintje-kpi__note lintje-kpi__note--error">
359
+ <span class="lintje-kpi__dot" aria-hidden="true"></span>${this.message ?? "Niet geladen"}
360
+ </p>${this.lastKnown ? f`<p class="lintje-kpi__last-known">${this.lastKnown}</p>` : c}` : c}
361
+ ${e && this.detail && (t && !this.trend || this.state === "empty") ? f`<p class="lintje-kpi__detail">${this.detail}</p>` : c}
353
362
  `;
354
363
  }
355
364
  trendLine(e) {
356
- let { direction: t, sentence: r, inverted: i = !1 } = this.trend, a = "neutral";
357
- return t !== "flat" && (a = (i ? t === "down" : t === "up") ? "good" : "bad"), p`
365
+ let { direction: t, sentence: n, inverted: r = !1 } = this.trend, i = "neutral";
366
+ return t !== "flat" && (i = (r ? t === "down" : t === "up") ? "good" : "bad"), f`
358
367
  <p class="lintje-trend"><span
359
- class="lintje-trend__glyph lintje-trend__glyph--${a}"
368
+ class="lintje-trend__glyph lintje-trend__glyph--${i}"
360
369
  aria-hidden="true"
361
- >${R[t]}</span
362
- >${a === "neutral" ? n : p`<span class="visually-hidden">${a === "good" ? "gunstig" : "ongunstig"}: </span>`}<span>${r}</span></p>
363
- ${e && this.detail ? p`<p class="lintje-trend__detail">${this.detail}</p>` : n}
370
+ >${z[t]}</span
371
+ >${i === "neutral" ? c : f`<span class="visually-hidden">${i === "good" ? "gunstig" : "ongunstig"}: </span>`}<span>${n}</span></p>
372
+ ${e && this.detail ? f`<p class="lintje-trend__detail">${this.detail}</p>` : c}
364
373
  `;
365
374
  }
366
- itemList(e, t, r, i) {
367
- let a = this.state === "loading";
368
- return p`<div class="lintje-kpi__figures">
375
+ itemList(e, t, n, r) {
376
+ let i = this.state === "loading";
377
+ return f`<div class="lintje-kpi__figures">
369
378
  <div
370
- class=${o({
379
+ class=${h({
371
380
  "lintje-kpi__items": !0,
372
381
  [`lintje-kpi__items--${t ? "row" : this.layout}`]: !0,
373
- "lintje-kpi__items--divided": r
382
+ "lintje-kpi__items--divided": n
374
383
  })}
375
384
  >
376
- ${e.map((e, s) => p`
377
- ${s > 0 && r ? p`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : n}
385
+ ${e.map((e, a) => f`
386
+ ${a > 0 && n ? f`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : c}
378
387
  <div
379
- class=${o({
388
+ class=${h({
380
389
  "lintje-kpi__item": !0,
381
- "lintje-kpi__item--comparison": !t && s > 0
390
+ "lintje-kpi__item--comparison": !t && a > 0
382
391
  })}
383
392
  >
384
- ${a ? p`<lintje-skeleton
393
+ ${i ? f`<lintje-skeleton
385
394
  height=${t ? 20 : 34}
386
395
  width="70%"
387
- ></lintje-skeleton>` : this.figure(i + s, e, t)}
388
- ${e.period ? p`<p class="lintje-kpi__period">${e.period}</p>` : n}
396
+ ></lintje-skeleton>` : this.figure(r + a, e, t)}
397
+ ${e.period ? f`<p class="lintje-kpi__period">${e.period}</p>` : c}
389
398
  </div>
390
399
  `)}
391
400
  </div>
392
401
  </div>`;
393
402
  }
394
- figure(e, t, r = !1) {
395
- let i = this.state === "ready", a = this.counting[e] ?? null, o = this.emphasis === "primary" && e === 0 ? t.period : void 0, s = [i ? t.suffix : void 0, o].filter(Boolean).join(" · ");
396
- return p`<p class=${r ? "lintje-kpi__secondary-value" : "lintje-kpi__value"}>
397
- ${i ? a == null ? t.value : p`<span class="lintje-kpi__count">
403
+ figure(e, t, n = !1) {
404
+ let r = this.state === "ready", i = this.counting[e] ?? null, a = this.emphasis === "primary" && e === 0 ? t.period : void 0, o = [r ? t.suffix : void 0, a].filter(Boolean).join(" · ");
405
+ return f`<p class=${n ? "lintje-kpi__secondary-value" : "lintje-kpi__value"}>
406
+ ${r ? i == null ? t.value : f`<span class="lintje-kpi__count">
398
407
  <span class="lintje-kpi__count-final">${t.value}</span>
399
- <span class="lintje-kpi__count-live" aria-hidden="true">${a}</span>
400
- </span>` : "—"}${s ? p`<span class="lintje-kpi__suffix">${s}</span>` : n}
408
+ <span class="lintje-kpi__count-live" aria-hidden="true">${i}</span>
409
+ </span>` : "—"}${o ? f`<span class="lintje-kpi__suffix">${o}</span>` : c}
401
410
  </p>`;
402
411
  }
403
412
  };
404
- t("lintje-kpi", U);
413
+ r("lintje-kpi", W);
405
414
  //#endregion
406
- export { U as LintjeKpi, I as sparklineRuns };
415
+ export { W as LintjeKpi, L as sparklineRuns };
@@ -1,4 +1,4 @@
1
- import { Bt as e, Ht as t, Z as n, qt as r, ut as i, zt as a } from "../chunks/base-Bg-IFOPG.js";
1
+ import { Jt as e, Yt as t, Zt as n, bt as r, nn as i, st as a } from "../chunks/base-DRGvkF-r.js";
2
2
  //#region src/components/feedback/level-meter/level-meter.css?inline
3
3
  var o = ":host { display: inline-flex; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-level-meter {\n display: inline-flex;\n align-items: center;\n gap: var(--space-3);\n color: var(--color-text-primary);\n font: var(--text-ui);\n font-weight: 700;\n}\n.lintje-level-meter__bars {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n height: var(--space-6);\n}\n/* Centred bars read as a voice; their height is the sound. */\n.lintje-level-meter__bar {\n width: 4px;\n background: var(--color-accent-line);\n transition: height var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-level-meter.is-quiet .lintje-level-meter__bar { background: var(--color-border-strong); }\n\n@media (prefers-reduced-motion: reduce) {\n .lintje-level-meter__bar { transition: none; }\n}\n\n@media (forced-colors: active) {\n .lintje-level-meter__bar { background: CanvasText; }\n}\n", s = [
4
4
  .4,
@@ -15,12 +15,12 @@ var o = ":host { display: inline-flex; min-width: 0; }\n:host([hidden]) { displa
15
15
  function c(e) {
16
16
  return e < .05 ? "Stil" : e < .2 ? "Zacht" : "Goed";
17
17
  }
18
- var l = class extends a {
18
+ var l = class extends e {
19
19
  constructor(...e) {
20
20
  super(...e), this.words = !0;
21
21
  }
22
22
  static {
23
- this.styles = t(o);
23
+ this.styles = n(o);
24
24
  }
25
25
  static {
26
26
  this.properties = {
@@ -32,27 +32,27 @@ var l = class extends a {
32
32
  };
33
33
  }
34
34
  render() {
35
- let e = this.level == null ? null : Math.min(1, Math.max(0, this.level)), t = e === null ? "Nog niet gemeten" : c(e), a = e === null || e < .05;
36
- return r`<span
37
- class=${n({
35
+ let e = this.level == null ? null : Math.min(1, Math.max(0, this.level)), t = e === null ? "Nog niet gemeten" : c(e), n = e === null || e < .05;
36
+ return i`<span
37
+ class=${a({
38
38
  "lintje-level-meter": !0,
39
- "is-quiet": a
39
+ "is-quiet": n
40
40
  })}
41
41
  role="img"
42
42
  aria-label=${`Geluid: ${t.toLowerCase()}`}
43
43
  >
44
44
  <span class="lintje-level-meter__bars" aria-hidden="true">
45
- ${s.map((t) => r`<span
45
+ ${s.map((t) => i`<span
46
46
  class="lintje-level-meter__bar"
47
- ${i({ height: `${a ? 12 : Math.max(12, Math.round(t * e * 100))}%` })}
47
+ ${r({ height: `${n ? 12 : Math.max(12, Math.round(t * e * 100))}%` })}
48
48
  ></span>`)}
49
49
  </span>
50
- ${this.words ? r`<span class="lintje-level-meter__word" aria-hidden="true"
50
+ ${this.words ? i`<span class="lintje-level-meter__word" aria-hidden="true"
51
51
  >${e === null ? "—" : t}</span
52
52
  >` : ""}
53
53
  </span>`;
54
54
  }
55
55
  };
56
- e("lintje-level-meter", l);
56
+ t("lintje-level-meter", l);
57
57
  //#endregion
58
58
  export { l as LintjeLevelMeter, c as levelWord };