lintje 0.3.0 → 0.5.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 (260) hide show
  1. package/README.md +1 -1
  2. package/dist-elements/actions.js +1 -1
  3. package/dist-elements/chunks/{base-CbmWxUig.js → base-CVKIPSLx.js} +151 -145
  4. package/dist-elements/chunks/chart-styles-JK4clSyA.js +108 -0
  5. package/dist-elements/chunks/{controls-DxmnDSBr.js → controls-_4ac1Lpz.js} +1 -1
  6. package/dist-elements/chunks/{date-format-mHtZyBys.js → date-format-DxP9yfDp.js} +1 -1
  7. package/dist-elements/chunks/{dialog-DChINFxD.js → dialog-D4V467iC.js} +2 -2
  8. package/dist-elements/chunks/{disclosure-DLkXPUpV.js → disclosure-DVex7Lo_.js} +1 -1
  9. package/dist-elements/chunks/download-D7ZarlMZ.js +103 -0
  10. package/dist-elements/chunks/{focus-trap-BwOxE5BX.js → focus-trap-rje9Oz19.js} +1 -1
  11. package/dist-elements/chunks/input-DEHA2Z_0.js +195 -0
  12. package/dist-elements/chunks/input-lQTmOMOz.js +4 -0
  13. package/dist-elements/chunks/{player-B8QXJ0Z5.js → player-DDDWUevR.js} +2 -2
  14. package/dist-elements/chunks/{sentence-B19AyZBS.js → sentence-mY0Iqu5H.js} +1 -1
  15. package/dist-elements/chunks/{stagger-BHoOgy0g.js → stagger-Dvkth9_C.js} +116 -107
  16. package/dist-elements/content.js +2 -0
  17. package/dist-elements/core.js +1 -1
  18. package/dist-elements/custom-elements.json +7740 -6789
  19. package/dist-elements/data-types.json +338 -29
  20. package/dist-elements/feedback.js +1 -1
  21. package/dist-elements/guides/loading.md +3 -3
  22. package/dist-elements/inputs.js +2 -1
  23. package/dist-elements/layout.js +1 -1
  24. package/dist-elements/lintje.js +7346 -5856
  25. package/dist-elements/overlays.js +1 -1
  26. package/dist-elements/tag/activity-log.js +1 -1
  27. package/dist-elements/tag/ai-label.js +1 -1
  28. package/dist-elements/tag/announcement.js +2 -2
  29. package/dist-elements/tag/app-search.js +2 -2
  30. package/dist-elements/tag/audio-player.js +2 -2
  31. package/dist-elements/tag/badge.d.ts +1 -1
  32. package/dist-elements/tag/badge.js +1 -1
  33. package/dist-elements/tag/breadcrumbs.js +1 -1
  34. package/dist-elements/tag/button.d.ts +1 -1
  35. package/dist-elements/tag/button.js +1 -1
  36. package/dist-elements/tag/card-list.js +1 -1
  37. package/dist-elements/tag/card.js +1 -1
  38. package/dist-elements/tag/chart.js +1168 -794
  39. package/dist-elements/tag/chat-answer.js +2 -2
  40. package/dist-elements/tag/chat-composer.js +1 -1
  41. package/dist-elements/tag/chat-message.js +1 -1
  42. package/dist-elements/tag/chat-strip.js +1 -1
  43. package/dist-elements/tag/chat-suggestions.js +1 -1
  44. package/dist-elements/tag/chat.js +1 -1
  45. package/dist-elements/tag/checkbox-group.js +3 -2
  46. package/dist-elements/tag/checkbox.js +3 -2
  47. package/dist-elements/tag/code.js +1 -1
  48. package/dist-elements/tag/combobox.js +11 -10
  49. package/dist-elements/tag/conflict-alert.js +1 -1
  50. package/dist-elements/tag/copy-button.js +1 -1
  51. package/dist-elements/tag/data-table.js +179 -178
  52. package/dist-elements/tag/date-input.js +14 -13
  53. package/dist-elements/tag/date-range.js +5 -4
  54. package/dist-elements/tag/description-list.js +1 -1
  55. package/dist-elements/tag/dialog.js +4 -4
  56. package/dist-elements/tag/document-viewer.js +1 -1
  57. package/dist-elements/tag/drawer.js +3 -3
  58. package/dist-elements/tag/empty-state.js +1 -1
  59. package/dist-elements/tag/error-page.js +1 -1
  60. package/dist-elements/tag/error-summary.js +2 -2
  61. package/dist-elements/tag/expander.js +2 -2
  62. package/dist-elements/tag/explainer.js +2 -2
  63. package/dist-elements/tag/field.js +1 -1
  64. package/dist-elements/tag/file-upload.js +4 -3
  65. package/dist-elements/tag/filter-bar.js +3 -3
  66. package/dist-elements/tag/filter-sheet.js +3 -3
  67. package/dist-elements/tag/filter-zone.js +2 -2
  68. package/dist-elements/tag/find.d.ts +1 -0
  69. package/dist-elements/tag/find.js +132 -0
  70. package/dist-elements/tag/footer.js +1 -1
  71. package/dist-elements/tag/form-actions.js +2 -2
  72. package/dist-elements/tag/form-section.js +2 -2
  73. package/dist-elements/tag/form.js +2 -2
  74. package/dist-elements/tag/gallery.js +1 -1
  75. package/dist-elements/tag/grid-item.d.ts +1 -1
  76. package/dist-elements/tag/grid-item.js +1 -1
  77. package/dist-elements/tag/grid.d.ts +1 -1
  78. package/dist-elements/tag/grid.js +1 -1
  79. package/dist-elements/tag/hero.js +1 -1
  80. package/dist-elements/tag/highlight.js +1 -1
  81. package/dist-elements/tag/icon-button.d.ts +1 -1
  82. package/dist-elements/tag/icon-button.js +1 -1
  83. package/dist-elements/tag/icon.d.ts +1 -1
  84. package/dist-elements/tag/icon.js +1 -1
  85. package/dist-elements/tag/job-list.js +1 -1
  86. package/dist-elements/tag/kpi-row.js +1 -1
  87. package/dist-elements/tag/kpi.js +73 -71
  88. package/dist-elements/tag/level-meter.js +1 -1
  89. package/dist-elements/tag/list.js +2 -2
  90. package/dist-elements/tag/log-viewer.d.ts +1 -0
  91. package/dist-elements/tag/log-viewer.js +847 -0
  92. package/dist-elements/tag/logo.js +1 -1
  93. package/dist-elements/tag/map.js +151 -144
  94. package/dist-elements/tag/menu-button.js +14 -9
  95. package/dist-elements/tag/modal.js +2 -2
  96. package/dist-elements/tag/multiselect.js +4 -3
  97. package/dist-elements/tag/note.js +1 -1
  98. package/dist-elements/tag/notifications.js +2 -2
  99. package/dist-elements/tag/number-input.js +3 -2
  100. package/dist-elements/tag/page-header.js +1 -1
  101. package/dist-elements/tag/pagination.js +25 -25
  102. package/dist-elements/tag/popover.d.ts +1 -1
  103. package/dist-elements/tag/popover.js +1 -1
  104. package/dist-elements/tag/progress-bar.d.ts +1 -1
  105. package/dist-elements/tag/progress-bar.js +1 -1
  106. package/dist-elements/tag/prose.js +1 -1
  107. package/dist-elements/tag/qr-code.js +1 -1
  108. package/dist-elements/tag/radio-group.js +3 -2
  109. package/dist-elements/tag/range.js +3 -2
  110. package/dist-elements/tag/recording-status.js +1 -1
  111. package/dist-elements/tag/repeater.js +1 -1
  112. package/dist-elements/tag/segmented.js +3 -2
  113. package/dist-elements/tag/select.js +3 -2
  114. package/dist-elements/tag/shell.js +3 -3
  115. package/dist-elements/tag/skeleton.d.ts +1 -1
  116. package/dist-elements/tag/skeleton.js +1 -1
  117. package/dist-elements/tag/slot-picker.js +4 -3
  118. package/dist-elements/tag/sortable-list.js +1 -1
  119. package/dist-elements/tag/spinner.d.ts +1 -1
  120. package/dist-elements/tag/spinner.js +1 -1
  121. package/dist-elements/tag/split-pane.js +1 -1
  122. package/dist-elements/tag/status-dot.d.ts +1 -1
  123. package/dist-elements/tag/status-dot.js +1 -1
  124. package/dist-elements/tag/stepper.js +1 -1
  125. package/dist-elements/tag/streaming-text.js +1 -1
  126. package/dist-elements/tag/sub-nav.js +1 -1
  127. package/dist-elements/tag/tabs.js +1 -1
  128. package/dist-elements/tag/tag-input.js +11 -10
  129. package/dist-elements/tag/text-editor.js +3 -2
  130. package/dist-elements/tag/text-input.js +3 -2
  131. package/dist-elements/tag/textarea.js +3 -2
  132. package/dist-elements/tag/tile.d.ts +1 -1
  133. package/dist-elements/tag/tile.js +1 -1
  134. package/dist-elements/tag/time-input.js +7 -6
  135. package/dist-elements/tag/toast.js +2 -2
  136. package/dist-elements/tag/toggle.js +3 -2
  137. package/dist-elements/tag/toggletip.js +2 -2
  138. package/dist-elements/tag/token-value.d.ts +1 -0
  139. package/dist-elements/tag/token-value.js +75 -0
  140. package/dist-elements/tag/tooltip.d.ts +1 -1
  141. package/dist-elements/tag/tooltip.js +1 -1
  142. package/dist-elements/tag/transcript.js +1 -1
  143. package/dist-elements/tag/translator.js +1 -1
  144. package/dist-elements/tag/tree-view.js +1 -1
  145. package/dist-elements/tag/user-menu.js +1 -1
  146. package/dist-elements/tag/video-player.js +2 -2
  147. package/dist-elements/tokens.css +2 -0
  148. package/dist-elements/tokens.json +1248 -0
  149. package/dist-elements/types/bundle/actions.d.ts +3 -3
  150. package/dist-elements/types/bundle/content.d.ts +2 -0
  151. package/dist-elements/types/bundle/feedback.d.ts +5 -5
  152. package/dist-elements/types/bundle/index.d.ts +1 -11
  153. package/dist-elements/types/bundle/inputs.d.ts +1 -0
  154. package/dist-elements/types/bundle/layout.d.ts +3 -3
  155. package/dist-elements/types/bundle/overlays.d.ts +2 -2
  156. package/dist-elements/types/categories.d.ts +4 -0
  157. package/dist-elements/types/{primitives → components/actions}/button/button.d.ts +1 -1
  158. package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +2 -2
  159. package/dist-elements/types/{icons → components/actions}/icon/icon.d.ts +2 -2
  160. package/dist-elements/types/{primitives → components/actions}/icon-button/icon-button.d.ts +1 -1
  161. package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +7 -4
  162. package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +1 -1
  163. package/dist-elements/types/components/charts/chart/chart.d.ts +1 -1
  164. package/dist-elements/types/components/charts/explainer/explainer.d.ts +1 -1
  165. package/dist-elements/types/components/charts/kpi/kpi.d.ts +3 -3
  166. package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -1
  167. package/dist-elements/types/components/charts/note/note.d.ts +1 -1
  168. package/dist-elements/types/components/chat/chat/chat.d.ts +1 -1
  169. package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +3 -3
  170. package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +2 -2
  171. package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +1 -1
  172. package/dist-elements/types/components/content/audio-player/audio-player.d.ts +5 -5
  173. package/dist-elements/types/components/content/code/code.d.ts +1 -1
  174. package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +2 -2
  175. package/dist-elements/types/components/content/highlight/highlight.d.ts +1 -1
  176. package/dist-elements/types/components/content/log-viewer/lines.d.ts +33 -0
  177. package/dist-elements/types/components/content/log-viewer/log-viewer.d.ts +117 -0
  178. package/dist-elements/types/components/content/prose/prose.d.ts +1 -1
  179. package/dist-elements/types/components/content/token-value/token-value.d.ts +42 -0
  180. package/dist-elements/types/components/content/transcript/transcript.d.ts +3 -3
  181. package/dist-elements/types/components/content/translator/translator.d.ts +1 -1
  182. package/dist-elements/types/components/content/video-player/video-player.d.ts +1 -1
  183. package/dist-elements/types/components/feedback/announcement/announcement.d.ts +2 -2
  184. package/dist-elements/types/{primitives → components/feedback}/badge/badge.d.ts +2 -2
  185. package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +1 -1
  186. package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +2 -2
  187. package/dist-elements/types/components/feedback/job-list/job-list.d.ts +1 -1
  188. package/dist-elements/types/{primitives → components/feedback}/progress-bar/progress-bar.d.ts +2 -2
  189. package/dist-elements/types/{primitives → components/feedback}/skeleton/skeleton.d.ts +1 -1
  190. package/dist-elements/types/{primitives → components/feedback}/spinner/spinner.d.ts +1 -1
  191. package/dist-elements/types/{primitives → components/feedback}/status-dot/status-dot.d.ts +2 -2
  192. package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +2 -2
  193. package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +2 -2
  194. package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +1 -1
  195. package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +1 -1
  196. package/dist-elements/types/components/forms/repeater/repeater.d.ts +2 -2
  197. package/dist-elements/types/components/forms/stepper/stepper.d.ts +1 -1
  198. package/dist-elements/types/components/frame/app-search/app-search.d.ts +1 -1
  199. package/dist-elements/types/components/frame/notifications/notifications.d.ts +2 -2
  200. package/dist-elements/types/components/frame/page-header/page-header.d.ts +1 -1
  201. package/dist-elements/types/components/frame/shell/shell.d.ts +1 -1
  202. package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +2 -2
  203. package/dist-elements/types/components/index.d.ts +45 -3
  204. package/dist-elements/types/components/inputs/combobox/combobox.d.ts +2 -2
  205. package/dist-elements/types/components/inputs/date-input/date-input.d.ts +1 -1
  206. package/dist-elements/types/components/inputs/date-range/date-range.d.ts +2 -2
  207. package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +2 -2
  208. package/dist-elements/types/components/inputs/find/find.d.ts +52 -0
  209. package/dist-elements/types/components/inputs/segmented/segmented.d.ts +1 -1
  210. package/dist-elements/types/components/inputs/shared/input.d.ts +1 -1
  211. package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +1 -1
  212. package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +2 -2
  213. package/dist-elements/types/components/inputs/text-input/text-input.d.ts +1 -1
  214. package/dist-elements/types/components/inputs/time-input/time-input.d.ts +1 -1
  215. package/dist-elements/types/components/layout/expander/expander.d.ts +1 -1
  216. package/dist-elements/types/{primitives → components/layout}/grid/grid.d.ts +1 -1
  217. package/dist-elements/types/{primitives → components/layout}/grid-item/grid-item.d.ts +1 -1
  218. package/dist-elements/types/components/layout/tabs/tabs.d.ts +1 -1
  219. package/dist-elements/types/{primitives → components/layout}/tile/tile.d.ts +6 -6
  220. package/dist-elements/types/components/map/map/map.d.ts +2 -2
  221. package/dist-elements/types/components/overlays/modal/modal.d.ts +2 -2
  222. package/dist-elements/types/{primitives → components/overlays}/popover/popover.d.ts +2 -2
  223. package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +1 -1
  224. package/dist-elements/types/{primitives → components/overlays}/tooltip/tooltip.d.ts +2 -2
  225. package/dist-elements/types/components/shared/charts/index.d.ts +1 -0
  226. package/dist-elements/types/components/shared/charts/kinds.d.ts +6 -0
  227. package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +1 -1
  228. package/dist-elements/types/components/shared/charts/radar-chart/radar-chart.d.ts +31 -0
  229. package/dist-elements/types/components/shared/charts/shared/axes.d.ts +10 -2
  230. package/dist-elements/types/components/shared/charts/shared/controller.d.ts +5 -1
  231. package/dist-elements/types/components/shared/charts/shared/layer-motion.d.ts +21 -0
  232. package/dist-elements/types/components/shared/charts/shared/types.d.ts +33 -0
  233. package/dist-elements/types/components/shared/content-tile.d.ts +1 -1
  234. package/dist-elements/types/components/{forms/form → shared}/controls.d.ts +3 -2
  235. package/dist-elements/types/components/shared/download.d.ts +2 -0
  236. package/dist-elements/types/components/shared/overflow.d.ts +1 -1
  237. package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +1 -1
  238. package/dist-elements/types/components/tables/card/card.d.ts +4 -4
  239. package/dist-elements/types/components/tables/data-table/actions.d.ts +1 -1
  240. package/dist-elements/types/components/tables/data-table/data-table.d.ts +3 -3
  241. package/dist-elements/types/components/tables/data-table/editing.d.ts +1 -1
  242. package/dist-elements/types/components/tables/data-table/filters.d.ts +3 -3
  243. package/dist-elements/types/components/tables/description-list/description-list.d.ts +2 -2
  244. package/dist-elements/types/components/tables/list/list.d.ts +4 -4
  245. package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +1 -1
  246. package/dist-elements/types/core/focus.d.ts +1 -1
  247. package/dist-elements/types/types.d.ts +51 -7
  248. package/package.json +1 -1
  249. package/dist-elements/chunks/download-Ct9q2anY.js +0 -206
  250. package/dist-elements/chunks/input-CRW_exv_.js +0 -195
  251. package/dist-elements/types/primitives/index.d.ts +0 -35
  252. /package/dist-elements/types/components/content/{audio-player → shared}/playback.d.ts +0 -0
  253. /package/dist-elements/types/components/content/{audio-player → shared}/player.d.ts +0 -0
  254. /package/dist-elements/types/{primitives → components}/shared/announcement-block.d.ts +0 -0
  255. /package/dist-elements/types/components/{inputs/date-input → shared}/date-format.d.ts +0 -0
  256. /package/dist-elements/types/{primitives → components}/shared/empty-state-block.d.ts +0 -0
  257. /package/dist-elements/types/{primitives → components}/shared/grid-item-element.d.ts +0 -0
  258. /package/dist-elements/types/{primitives → components}/shared/length.d.ts +0 -0
  259. /package/dist-elements/types/{primitives → components}/shared/place.d.ts +0 -0
  260. /package/dist-elements/types/{primitives → components}/shared/tone.d.ts +0 -0
@@ -1,6 +1,6 @@
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, lt as l, n as u, nn as d, p as f, rn as p, s as m, st as h, t as g, ut as _, y as v } from "../chunks/base-CbmWxUig.js";
1
+ import { F as e, O as t, P as n, Yt as r, Zt as i, _ as a, bt as o, en as s, f 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-CVKIPSLx.js";
2
2
  //#region src/components/charts/kpi/kpi.css?inline
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;
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 runs from beside the target's label to just under the bar. */\n.lintje-gauge__plot { position: relative; display: flex; flex-direction: column; gap: var(--space-1); }\n.lintje-gauge__bar {\n position: relative;\n height: var(--space-4);\n margin-bottom: 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: 0;\n bottom: 0;\n border-left: 1px dashed var(--color-chart-emphasis);\n}\n.lintje-gauge__target,\n.lintje-gauge__scale {\n font: var(--text-axis);\n color: var(--color-chart-axis);\n}\n.lintje-gauge__target-label { display: block; width: max-content; white-space: nowrap; }\n.lintje-gauge__target-label--start { padding-left: var(--space-2); }\n.lintje-gauge__target-label--end { padding-right: var(--space-2); transform: translateX(-100%); }\n.lintje-gauge__scale { display: flex; justify-content: space-between; }\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
4
  function E(e) {
5
5
  let t = e.min ?? 0, n = e.max > t ? e.max : t + 1;
6
6
  return {
@@ -14,18 +14,18 @@ function D(e, t) {
14
14
  return [e * Math.cos(n), -e * Math.sin(n)];
15
15
  }
16
16
  function O(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}`;
17
+ let { gauge: n, value: r } = e, i = n.target == null ? "" : `, ${n.targetLabel ?? "doel"} ${c(n.target)}`;
18
+ return `${r == null || !e.ready ? "" : `${c(r)} `}op een schaal van ${c(t.min)} tot ${c(t.max)}${i}`;
19
19
  }
20
20
  function k(e) {
21
- return `${e.targetLabel ?? "doel"} ${m(e.target)}`;
21
+ return `${e.targetLabel ?? "doel"} ${c(e.target)}`;
22
22
  }
23
23
  function A(e, t) {
24
24
  return e.gauge.shape === "linear" ? M(e, t) : j(e, t);
25
25
  }
26
26
  function j(e, t) {
27
- let { gauge: n, value: r, ready: i } = e, a = E(n), s = i && r != null && a.share(r) > 0 ? a.share(r) : null, l = s == null ? null : D(b, s), u = !e.loading && n.target != null, f = u ? a.share(n.target) : 0, [g, _] = D(S, f), [v, y] = D(C, f), [A, j] = D(w, f), M = Math.cos(Math.PI * (1 - f)), N = M > .3 ? "start" : M < -.3 ? "end" : "middle", P = (e) => `${(e + T) / 168 * 100}%`;
28
- return d`<div class="lintje-gauge__frame"><div
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
29
  class=${h({
30
30
  "lintje-gauge": !0,
31
31
  "lintje-gauge--arc": !0,
@@ -37,58 +37,60 @@ function j(e, t) {
37
37
  <desc>${O(e, a)}</desc>
38
38
  <path class="lintje-gauge__track" d="M ${-64} 0 A ${b} ${b} 0 0 1 ${b} 0"
39
39
  stroke-width=${x} />
40
- ${l ? p`<path class="lintje-gauge__arc-fill" pathLength="1"
41
- d="M ${-64} 0 A ${b} ${b} 0 0 1 ${l[0].toFixed(2)} ${l[1].toFixed(2)}"
42
- stroke-width=${x} ${o({ stroke: e.color })} />` : c}
43
- ${u ? p`<line class="lintje-gauge__tick" x1=${g.toFixed(2)} y1=${_.toFixed(2)}
44
- x2=${v.toFixed(2)} y2=${y.toFixed(2)} />` : c}
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 })} />` : s}
43
+ ${d ? m`<line class="lintje-gauge__tick" x1=${g.toFixed(2)} y1=${_.toFixed(2)}
44
+ x2=${v.toFixed(2)} y2=${y.toFixed(2)} />` : s}
45
45
  </svg>
46
46
  <span class="lintje-gauge__label lintje-gauge__label--limit" aria-hidden="true"
47
47
  ${o({
48
48
  left: P(-64),
49
49
  top: "100%"
50
- })}>${m(a.min)}</span>
50
+ })}>${c(a.min)}</span>
51
51
  <span class="lintje-gauge__label lintje-gauge__label--limit" aria-hidden="true"
52
52
  ${o({
53
53
  left: P(b),
54
54
  top: "100%"
55
- })}>${m(a.max)}</span>
56
- ${u ? d`<span class="lintje-gauge__label lintje-gauge__label--target lintje-gauge__label--${N}"
55
+ })}>${c(a.max)}</span>
56
+ ${d ? f`<span class="lintje-gauge__label lintje-gauge__label--target lintje-gauge__label--${N}"
57
57
  aria-hidden="true" ${o({
58
58
  left: P(A),
59
59
  top: ((e) => `${(e + T) / T * 100}%`)(j)
60
- })}>${k(n)}</span>` : c}
60
+ })}>${k(n)}</span>` : s}
61
61
  </div></div>`;
62
62
  }
63
63
  function M(e, t) {
64
- let { gauge: n, value: r, ready: i } = e, a = E(n), s = i && r != null ? a.share(r) : null, l = !e.loading && n.target != null, u = l ? a.share(n.target) : 0, f = u > .8 ? "end" : u < .2 ? "start" : "middle";
65
- return d`${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 < .5 ? "start" : "end";
65
+ return f`${t}
66
66
  <div class=${h({
67
67
  "lintje-gauge": !0,
68
68
  "lintje-gauge--linear": !0,
69
69
  "is-drawn": e.drawn
70
70
  })}
71
71
  role="img" aria-label=${O(e, a)}>
72
- <div class="lintje-gauge__bar">
73
- ${s == null ? c : d`<div class="lintje-gauge__bar-fill"
74
- ${o({
75
- width: `${s * 100}%`,
72
+ <div class="lintje-gauge__plot">
73
+ ${n.target == null ? s : f`<div class="lintje-gauge__target">${u ? f`<span class="lintje-gauge__target-label lintje-gauge__target-label--${p}"
74
+ ${o({ marginLeft: `${d * 100}%` })}>${k(n)}</span>` : f`&nbsp;`}</div>`}
75
+ <div class="lintje-gauge__bar">
76
+ ${l == null ? s : f`<div class="lintje-gauge__bar-fill"
77
+ ${o({
78
+ width: `${l * 100}%`,
76
79
  background: e.color
77
80
  })}></div>`}
78
- ${l ? d`<span class="lintje-gauge__mark" ${o({ left: `${u * 100}%` })}></span>` : c}
81
+ </div>
82
+ ${u ? f`<span class="lintje-gauge__mark" ${o({ left: `${d * 100}%` })}></span>` : s}
79
83
  </div>
80
84
  <div class="lintje-gauge__scale">
81
- <span>${m(a.min)}</span>
82
- ${l ? d`<span class="lintje-gauge__scale-target lintje-gauge__scale-target--${f}"
83
- ${o({ left: `${u * 100}%` })}>${k(n)}</span>` : c}
84
- <span>${m(a.max)}</span>
85
+ <span>${c(a.min)}</span>
86
+ <span>${c(a.max)}</span>
85
87
  </div>
86
88
  </div>`;
87
89
  }
88
90
  //#endregion
89
91
  //#region src/components/charts/kpi/kpi.ts
90
92
  var N = {
91
- ...Object.fromEntries(g.map((e) => [e, u(e)])),
93
+ ...Object.fromEntries(g.map((e) => [e, d(e)])),
92
94
  coverage: "var(--color-text-muted)"
93
95
  }, P = {
94
96
  width: 200,
@@ -148,7 +150,7 @@ var W = class extends n {
148
150
  static {
149
151
  this.styles = [
150
152
  e,
151
- l,
153
+ u,
152
154
  i(t),
153
155
  i(y)
154
156
  ];
@@ -202,7 +204,7 @@ var W = class extends n {
202
204
  return v();
203
205
  }
204
206
  connectedCallback() {
205
- super.connectedCallback(), this.#s = s(() => this.finishCount()), typeof IntersectionObserver > "u" ? (this.#o = !0, this.drawn = !0) : (this.#r = new IntersectionObserver(([e]) => {
207
+ super.connectedCallback(), this.#s = l(() => this.finishCount()), typeof IntersectionObserver > "u" ? (this.#o = !0, this.drawn = !0) : (this.#r = new IntersectionObserver(([e]) => {
206
208
  let t = e.rootBounds?.height ?? window.innerHeight;
207
209
  (e.intersectionRatio >= B || e.intersectionRect.height >= t * B) && (this.#o = !0, this.drawn = !0, this.#r?.disconnect(), this.startCount());
208
210
  }, { threshold: V }), this.#r.observe(this));
@@ -234,7 +236,7 @@ var W = class extends n {
234
236
  }
235
237
  render() {
236
238
  let e = this.figures, t = e != null && this.emphasis === "primary";
237
- return d`<div
239
+ return f`<div
238
240
  class=${h({
239
241
  "lintje-kpi": !0,
240
242
  "lintje-kpi--primary": t,
@@ -246,7 +248,7 @@ var W = class extends n {
246
248
  "--kpi-index": this.index
247
249
  })}
248
250
  >
249
- ${this.icon ? d`<span class="lintje-kpi__icon">${_(this.icon, { size: 20 })}</span>` : c}
251
+ ${this.icon ? f`<span class="lintje-kpi__icon">${_(this.icon, { size: 20 })}</span>` : s}
250
252
  <p class="lintje-kpi__label">${this.label}</p>
251
253
  ${this.body(e, t)}
252
254
  </div>`;
@@ -254,48 +256,48 @@ var W = class extends n {
254
256
  body(e, t) {
255
257
  let n = this.state === "loading", r = this.state === "ready";
256
258
  if (!e && this.gauge) return this.gauged(this.gauge);
257
- if (!e) return n ? d`<div class="lintje-kpi__skeleton">
259
+ if (!e) return n ? f`<div class="lintje-kpi__skeleton">
258
260
  <lintje-skeleton height="34" width="70%"></lintje-skeleton>
259
261
  ${this.renderSparkline()}
260
262
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
261
263
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
262
- </div>` : d`${this.figure(0, {
264
+ </div>` : f`${this.figure(0, {
263
265
  value: this.value,
264
266
  suffix: this.suffix
265
267
  })}${this.renderSparkline()}${this.lines(!0)}`;
266
268
  if (t) {
267
269
  let [t, ...i] = e, a = this.detail && (r || this.state === "empty");
268
- return d`
269
- ${n ? d`<lintje-skeleton height="34" width="70%"></lintje-skeleton>` : this.figure(0, t)}
270
+ return f`
271
+ ${n ? f`<lintje-skeleton height="34" width="70%"></lintje-skeleton>` : this.figure(0, t)}
270
272
  ${this.renderSparkline()}
271
- ${n ? d`<lintje-skeleton height="13" width="90%"></lintje-skeleton>` : this.lines(!1)}
272
- ${i.length > 0 && this.dividers ? d`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : c}
273
- ${i.length > 0 ? this.itemList(i, !0, !1, 1) : c}
274
- ${n ? d`<lintje-skeleton height="12" width="55%"></lintje-skeleton>` : a ? d`<p class="lintje-kpi__detail">${this.detail}</p>` : c}
273
+ ${n ? f`<lintje-skeleton height="13" width="90%"></lintje-skeleton>` : this.lines(!1)}
274
+ ${i.length > 0 && this.dividers ? f`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : s}
275
+ ${i.length > 0 ? this.itemList(i, !0, !1, 1) : s}
276
+ ${n ? f`<lintje-skeleton height="12" width="55%"></lintje-skeleton>` : a ? f`<p class="lintje-kpi__detail">${this.detail}</p>` : s}
275
277
  `;
276
278
  }
277
- return d`
279
+ return f`
278
280
  ${this.itemList(e, !1, this.dividers && e.length > 1, 0)}
279
281
  ${this.renderSparkline()}
280
- ${n ? d`<div class="lintje-kpi__skeleton">
282
+ ${n ? f`<div class="lintje-kpi__skeleton">
281
283
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
282
284
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
283
285
  </div>` : this.lines(!0)}
284
286
  `;
285
287
  }
286
288
  renderSparkline() {
287
- if (!this.sparkline) return c;
288
- if (this.state === "loading") return d`<div class="lintje-kpi__sparkline lintje-kpi__sparkline--loading">
289
+ if (!this.sparkline) return s;
290
+ if (this.state === "loading") return f`<div class="lintje-kpi__sparkline lintje-kpi__sparkline--loading">
289
291
  <lintje-skeleton height="100%"></lintje-skeleton>
290
292
  </div>`;
291
- if (this.state !== "ready") return c;
293
+ if (this.state !== "ready") return s;
292
294
  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 d`<div
295
+ return f`<div
294
296
  class=${h({
295
297
  "lintje-kpi__sparkline": !0,
296
298
  "is-drawn": this.drawn
297
299
  })}
298
- ${f(this.observeSparkline)}
300
+ ${p(this.observeSparkline)}
299
301
  ${o({ color: N[this.variable] })}
300
302
  >
301
303
  <svg
@@ -309,7 +311,7 @@ var W = class extends n {
309
311
  <desc>${this.sparkline.description}</desc>
310
312
  <g class="lintje-kpi__sparkline-plot">
311
313
  ${n.map((e) => this.run(e, t))}
312
- ${r ? p`<circle class="lintje-kpi__sparkline-end" cx=${r[0].toFixed(1)} cy=${r[1].toFixed(1)} r=${I} />` : c}
314
+ ${r ? m`<circle class="lintje-kpi__sparkline-end" cx=${r[0].toFixed(1)} cy=${r[1].toFixed(1)} r=${I} />` : s}
313
315
  </g>
314
316
  </svg>
315
317
  </div>`;
@@ -317,10 +319,10 @@ var W = class extends n {
317
319
  run(e, t) {
318
320
  if (e.length === 1) {
319
321
  let [[t, n]] = e;
320
- return p`<circle class="lintje-kpi__sparkline-point" cx=${t.toFixed(1)} cy=${n.toFixed(1)} r="2" />`;
322
+ return m`<circle class="lintje-kpi__sparkline-point" cx=${t.toFixed(1)} cy=${n.toFixed(1)} r="2" />`;
321
323
  }
322
324
  let [n] = e, r = e[e.length - 1];
323
- return p`
325
+ return m`
324
326
  <polygon
325
327
  class="lintje-kpi__sparkline-area"
326
328
  points=${`${n[0].toFixed(1)},${t} ${R(e)} ${r[0].toFixed(1)},${t}`}
@@ -329,11 +331,11 @@ var W = class extends n {
329
331
  `;
330
332
  }
331
333
  gauged(e) {
332
- let t = this.state === "loading", n = e.value === void 0 ? H(this.value)?.target ?? null : e.value, r = t ? d`<lintje-skeleton class="lintje-gauge__skeleton" height="34" width="40%"></lintje-skeleton>` : this.figure(0, {
334
+ 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, {
333
335
  value: this.value,
334
336
  suffix: this.suffix
335
337
  });
336
- return d`
338
+ return f`
337
339
  ${A({
338
340
  gauge: e,
339
341
  value: n,
@@ -343,7 +345,7 @@ var W = class extends n {
343
345
  color: N[this.variable]
344
346
  }, r)}
345
347
  ${this.renderSparkline()}
346
- ${t ? d`<div class="lintje-kpi__skeleton">
348
+ ${t ? f`<div class="lintje-kpi__skeleton">
347
349
  <lintje-skeleton height="13" width="90%"></lintje-skeleton>
348
350
  <lintje-skeleton height="12" width="55%"></lintje-skeleton>
349
351
  </div>` : this.lines(!0)}
@@ -351,30 +353,30 @@ var W = class extends n {
351
353
  }
352
354
  lines(e) {
353
355
  let t = this.state === "ready";
354
- return d`
355
- ${t && this.trend ? this.trendLine(e) : c}
356
- ${t && !this.trend && this.note ? d`<p class="lintje-kpi__note">${this.note}</p>` : c}
357
- ${this.state === "empty" ? d`<p class="lintje-kpi__note">${this.message ?? "Geen gegevens"}</p>` : c}
358
- ${this.state === "error" ? d`<p class="lintje-kpi__note lintje-kpi__note--error">
356
+ return f`
357
+ ${t && this.trend ? this.trendLine(e) : s}
358
+ ${t && !this.trend && this.note ? f`<p class="lintje-kpi__note">${this.note}</p>` : s}
359
+ ${this.state === "empty" ? f`<p class="lintje-kpi__note">${this.message ?? "Geen gegevens"}</p>` : s}
360
+ ${this.state === "error" ? f`<p class="lintje-kpi__note lintje-kpi__note--error">
359
361
  <span class="lintje-kpi__dot" aria-hidden="true"></span>${this.message ?? "Niet geladen"}
360
- </p>${this.lastKnown ? d`<p class="lintje-kpi__last-known">${this.lastKnown}</p>` : c}` : c}
361
- ${e && this.detail && (t && !this.trend || this.state === "empty") ? d`<p class="lintje-kpi__detail">${this.detail}</p>` : c}
362
+ </p>${this.lastKnown ? f`<p class="lintje-kpi__last-known">${this.lastKnown}</p>` : s}` : s}
363
+ ${e && this.detail && (t && !this.trend || this.state === "empty") ? f`<p class="lintje-kpi__detail">${this.detail}</p>` : s}
362
364
  `;
363
365
  }
364
366
  trendLine(e) {
365
367
  let { direction: t, sentence: n, inverted: r = !1 } = this.trend, i = "neutral";
366
- return t !== "flat" && (i = (r ? t === "down" : t === "up") ? "good" : "bad"), d`
368
+ return t !== "flat" && (i = (r ? t === "down" : t === "up") ? "good" : "bad"), f`
367
369
  <p class="lintje-trend"><span
368
370
  class="lintje-trend__glyph lintje-trend__glyph--${i}"
369
371
  aria-hidden="true"
370
372
  >${z[t]}</span
371
- >${i === "neutral" ? c : d`<span class="visually-hidden">${i === "good" ? "gunstig" : "ongunstig"}: </span>`}<span>${n}</span></p>
372
- ${e && this.detail ? d`<p class="lintje-trend__detail">${this.detail}</p>` : c}
373
+ >${i === "neutral" ? s : f`<span class="visually-hidden">${i === "good" ? "gunstig" : "ongunstig"}: </span>`}<span>${n}</span></p>
374
+ ${e && this.detail ? f`<p class="lintje-trend__detail">${this.detail}</p>` : s}
373
375
  `;
374
376
  }
375
377
  itemList(e, t, n, r) {
376
378
  let i = this.state === "loading";
377
- return d`<div class="lintje-kpi__figures">
379
+ return f`<div class="lintje-kpi__figures">
378
380
  <div
379
381
  class=${h({
380
382
  "lintje-kpi__items": !0,
@@ -382,19 +384,19 @@ var W = class extends n {
382
384
  "lintje-kpi__items--divided": n
383
385
  })}
384
386
  >
385
- ${e.map((e, a) => d`
386
- ${a > 0 && n ? d`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : c}
387
+ ${e.map((e, a) => f`
388
+ ${a > 0 && n ? f`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : s}
387
389
  <div
388
390
  class=${h({
389
391
  "lintje-kpi__item": !0,
390
392
  "lintje-kpi__item--comparison": !t && a > 0
391
393
  })}
392
394
  >
393
- ${i ? d`<lintje-skeleton
395
+ ${i ? f`<lintje-skeleton
394
396
  height=${t ? 20 : 34}
395
397
  width="70%"
396
398
  ></lintje-skeleton>` : this.figure(r + a, e, t)}
397
- ${e.period ? d`<p class="lintje-kpi__period">${e.period}</p>` : c}
399
+ ${e.period ? f`<p class="lintje-kpi__period">${e.period}</p>` : s}
398
400
  </div>
399
401
  `)}
400
402
  </div>
@@ -402,11 +404,11 @@ var W = class extends n {
402
404
  }
403
405
  figure(e, t, n = !1) {
404
406
  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 d`<p class=${n ? "lintje-kpi__secondary-value" : "lintje-kpi__value"}>
406
- ${r ? i == null ? t.value : d`<span class="lintje-kpi__count">
407
+ return f`<p class=${n ? "lintje-kpi__secondary-value" : "lintje-kpi__value"}>
408
+ ${r ? i == null ? t.value : f`<span class="lintje-kpi__count">
407
409
  <span class="lintje-kpi__count-final">${t.value}</span>
408
410
  <span class="lintje-kpi__count-live" aria-hidden="true">${i}</span>
409
- </span>` : "—"}${o ? d`<span class="lintje-kpi__suffix">${o}</span>` : c}
411
+ </span>` : "—"}${o ? f`<span class="lintje-kpi__suffix">${o}</span>` : s}
410
412
  </p>`;
411
413
  }
412
414
  };
@@ -1,4 +1,4 @@
1
- import { Jt as e, Yt as t, Zt as n, bt as r, nn as i, st as a } from "../chunks/base-CbmWxUig.js";
1
+ import { Jt as e, Yt as t, Zt as n, bt as r, nn as i, st as a } from "../chunks/base-CVKIPSLx.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,
@@ -1,5 +1,5 @@
1
- import { H as e, Jt as t, Kt as n, Q as r, Yt as i, Z as a, Zt as o, bt as s, en as c, h as l, lt as u, nn as d, st as f, ut as p } from "../chunks/base-CbmWxUig.js";
2
- import { n as m } from "../chunks/focus-trap-BwOxE5BX.js";
1
+ import { H as e, Jt as t, Kt as n, Q as r, Yt as i, Z as a, Zt as o, bt as s, en as c, g as l, lt as u, nn as d, st as f, ut as p } from "../chunks/base-CVKIPSLx.js";
2
+ import { n as m } from "../chunks/focus-trap-rje9Oz19.js";
3
3
  import "./menu-button.js";
4
4
  import "./empty-state.js";
5
5
  import "./text-input.js";
@@ -0,0 +1 @@
1
+ export * from '../types/components/content/log-viewer/log-viewer.js'