lintje 0.3.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.
- package/README.md +1 -1
- package/dist-elements/actions.js +1 -1
- package/dist-elements/chunks/{base-CbmWxUig.js → base-DRGvkF-r.js} +90 -87
- package/dist-elements/chunks/{controls-DxmnDSBr.js → controls-_4ac1Lpz.js} +1 -1
- package/dist-elements/chunks/{date-format-mHtZyBys.js → date-format-DxP9yfDp.js} +1 -1
- package/dist-elements/chunks/{dialog-DChINFxD.js → dialog-B7aRBtjy.js} +2 -2
- package/dist-elements/chunks/{disclosure-DLkXPUpV.js → disclosure-DirPLy2E.js} +1 -1
- package/dist-elements/chunks/download-C68kcwPj.js +206 -0
- package/dist-elements/chunks/{focus-trap-BwOxE5BX.js → focus-trap-Dv8zu64A.js} +1 -1
- package/dist-elements/chunks/input-BGMLam-O.js +195 -0
- package/dist-elements/chunks/input-lQTmOMOz.js +4 -0
- package/dist-elements/chunks/{player-B8QXJ0Z5.js → player-BApadXr8.js} +2 -2
- package/dist-elements/chunks/{sentence-B19AyZBS.js → sentence-0wO85ZdJ.js} +1 -1
- package/dist-elements/chunks/{stagger-BHoOgy0g.js → stagger-BB_gcxBI.js} +55 -47
- package/dist-elements/content.js +1 -0
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +7635 -6802
- package/dist-elements/data-types.json +130 -28
- package/dist-elements/feedback.js +1 -1
- package/dist-elements/guides/loading.md +3 -3
- package/dist-elements/inputs.js +1 -0
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +6301 -5732
- package/dist-elements/overlays.js +1 -1
- package/dist-elements/tag/activity-log.js +1 -1
- package/dist-elements/tag/ai-label.js +1 -1
- package/dist-elements/tag/announcement.js +2 -2
- package/dist-elements/tag/app-search.js +2 -2
- package/dist-elements/tag/audio-player.js +2 -2
- package/dist-elements/tag/badge.d.ts +1 -1
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +1 -1
- package/dist-elements/tag/button.d.ts +1 -1
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +1 -1
- package/dist-elements/tag/card.js +1 -1
- package/dist-elements/tag/chart.js +721 -406
- package/dist-elements/tag/chat-answer.js +2 -2
- package/dist-elements/tag/chat-composer.js +1 -1
- package/dist-elements/tag/chat-message.js +1 -1
- package/dist-elements/tag/chat-strip.js +1 -1
- package/dist-elements/tag/chat-suggestions.js +1 -1
- package/dist-elements/tag/chat.js +1 -1
- package/dist-elements/tag/checkbox-group.js +3 -2
- package/dist-elements/tag/checkbox.js +3 -2
- package/dist-elements/tag/code.js +1 -1
- package/dist-elements/tag/combobox.js +11 -10
- package/dist-elements/tag/conflict-alert.js +1 -1
- package/dist-elements/tag/copy-button.js +1 -1
- package/dist-elements/tag/data-table.js +137 -137
- package/dist-elements/tag/date-input.js +14 -13
- package/dist-elements/tag/date-range.js +5 -4
- package/dist-elements/tag/description-list.js +1 -1
- package/dist-elements/tag/dialog.js +4 -4
- package/dist-elements/tag/document-viewer.js +1 -1
- package/dist-elements/tag/drawer.js +3 -3
- package/dist-elements/tag/empty-state.js +1 -1
- package/dist-elements/tag/error-page.js +1 -1
- package/dist-elements/tag/error-summary.js +2 -2
- package/dist-elements/tag/expander.js +2 -2
- package/dist-elements/tag/explainer.js +2 -2
- package/dist-elements/tag/field.js +1 -1
- package/dist-elements/tag/file-upload.js +4 -3
- package/dist-elements/tag/filter-bar.js +2 -2
- package/dist-elements/tag/filter-sheet.js +3 -3
- package/dist-elements/tag/filter-zone.js +2 -2
- package/dist-elements/tag/find.d.ts +1 -0
- package/dist-elements/tag/find.js +128 -0
- package/dist-elements/tag/footer.js +1 -1
- package/dist-elements/tag/form-actions.js +2 -2
- package/dist-elements/tag/form-section.js +2 -2
- package/dist-elements/tag/form.js +2 -2
- package/dist-elements/tag/gallery.js +1 -1
- package/dist-elements/tag/grid-item.d.ts +1 -1
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.d.ts +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +1 -1
- package/dist-elements/tag/highlight.js +1 -1
- package/dist-elements/tag/icon-button.d.ts +1 -1
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.d.ts +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +1 -1
- package/dist-elements/tag/kpi-row.js +1 -1
- package/dist-elements/tag/kpi.js +61 -61
- package/dist-elements/tag/level-meter.js +1 -1
- package/dist-elements/tag/list.js +2 -2
- package/dist-elements/tag/logo.js +1 -1
- package/dist-elements/tag/map.js +148 -142
- package/dist-elements/tag/menu-button.js +1 -1
- package/dist-elements/tag/modal.js +2 -2
- package/dist-elements/tag/multiselect.js +4 -3
- package/dist-elements/tag/note.js +1 -1
- package/dist-elements/tag/notifications.js +2 -2
- package/dist-elements/tag/number-input.js +3 -2
- package/dist-elements/tag/page-header.js +1 -1
- package/dist-elements/tag/pagination.js +32 -32
- package/dist-elements/tag/popover.d.ts +1 -1
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.d.ts +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +1 -1
- package/dist-elements/tag/qr-code.js +1 -1
- package/dist-elements/tag/radio-group.js +3 -2
- package/dist-elements/tag/range.js +3 -2
- package/dist-elements/tag/recording-status.js +1 -1
- package/dist-elements/tag/repeater.js +1 -1
- package/dist-elements/tag/segmented.js +3 -2
- package/dist-elements/tag/select.js +3 -2
- package/dist-elements/tag/shell.js +3 -3
- package/dist-elements/tag/skeleton.d.ts +1 -1
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.js +4 -3
- package/dist-elements/tag/sortable-list.js +1 -1
- package/dist-elements/tag/spinner.d.ts +1 -1
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +1 -1
- package/dist-elements/tag/status-dot.d.ts +1 -1
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +1 -1
- package/dist-elements/tag/streaming-text.js +1 -1
- package/dist-elements/tag/sub-nav.js +1 -1
- package/dist-elements/tag/tabs.js +1 -1
- package/dist-elements/tag/tag-input.js +11 -10
- package/dist-elements/tag/text-editor.js +3 -2
- package/dist-elements/tag/text-input.js +3 -2
- package/dist-elements/tag/textarea.js +3 -2
- package/dist-elements/tag/tile.d.ts +1 -1
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +7 -6
- package/dist-elements/tag/toast.js +2 -2
- package/dist-elements/tag/toggle.js +3 -2
- package/dist-elements/tag/toggletip.js +2 -2
- package/dist-elements/tag/token-value.d.ts +1 -0
- package/dist-elements/tag/token-value.js +75 -0
- package/dist-elements/tag/tooltip.d.ts +1 -1
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +1 -1
- package/dist-elements/tag/translator.js +1 -1
- package/dist-elements/tag/tree-view.js +1 -1
- package/dist-elements/tag/user-menu.js +1 -1
- package/dist-elements/tag/video-player.js +2 -2
- package/dist-elements/tokens.json +1244 -0
- package/dist-elements/types/bundle/actions.d.ts +3 -3
- package/dist-elements/types/bundle/content.d.ts +1 -0
- package/dist-elements/types/bundle/feedback.d.ts +5 -5
- package/dist-elements/types/bundle/index.d.ts +0 -10
- package/dist-elements/types/bundle/inputs.d.ts +1 -0
- package/dist-elements/types/bundle/layout.d.ts +3 -3
- package/dist-elements/types/bundle/overlays.d.ts +2 -2
- package/dist-elements/types/categories.d.ts +4 -0
- package/dist-elements/types/{primitives → components/actions}/button/button.d.ts +1 -1
- package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +2 -2
- package/dist-elements/types/{icons → components/actions}/icon/icon.d.ts +2 -2
- package/dist-elements/types/{primitives → components/actions}/icon-button/icon-button.d.ts +1 -1
- package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +3 -3
- package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +1 -1
- package/dist-elements/types/components/charts/chart/chart.d.ts +1 -1
- package/dist-elements/types/components/charts/explainer/explainer.d.ts +1 -1
- package/dist-elements/types/components/charts/kpi/kpi.d.ts +3 -3
- package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -1
- package/dist-elements/types/components/charts/note/note.d.ts +1 -1
- package/dist-elements/types/components/chat/chat/chat.d.ts +1 -1
- package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +3 -3
- package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +2 -2
- package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +1 -1
- package/dist-elements/types/components/content/audio-player/audio-player.d.ts +5 -5
- package/dist-elements/types/components/content/code/code.d.ts +1 -1
- package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +2 -2
- package/dist-elements/types/components/content/highlight/highlight.d.ts +1 -1
- package/dist-elements/types/components/content/prose/prose.d.ts +1 -1
- package/dist-elements/types/components/content/token-value/token-value.d.ts +42 -0
- package/dist-elements/types/components/content/transcript/transcript.d.ts +3 -3
- package/dist-elements/types/components/content/translator/translator.d.ts +1 -1
- package/dist-elements/types/components/content/video-player/video-player.d.ts +1 -1
- package/dist-elements/types/components/feedback/announcement/announcement.d.ts +2 -2
- package/dist-elements/types/{primitives → components/feedback}/badge/badge.d.ts +2 -2
- package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +1 -1
- package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +2 -2
- package/dist-elements/types/components/feedback/job-list/job-list.d.ts +1 -1
- package/dist-elements/types/{primitives → components/feedback}/progress-bar/progress-bar.d.ts +2 -2
- package/dist-elements/types/{primitives → components/feedback}/skeleton/skeleton.d.ts +1 -1
- package/dist-elements/types/{primitives → components/feedback}/spinner/spinner.d.ts +1 -1
- package/dist-elements/types/{primitives → components/feedback}/status-dot/status-dot.d.ts +2 -2
- package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +2 -2
- package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +2 -2
- package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +1 -1
- package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +1 -1
- package/dist-elements/types/components/forms/repeater/repeater.d.ts +2 -2
- package/dist-elements/types/components/forms/stepper/stepper.d.ts +1 -1
- package/dist-elements/types/components/frame/app-search/app-search.d.ts +1 -1
- package/dist-elements/types/components/frame/notifications/notifications.d.ts +2 -2
- package/dist-elements/types/components/frame/page-header/page-header.d.ts +1 -1
- package/dist-elements/types/components/frame/shell/shell.d.ts +1 -1
- package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +2 -2
- package/dist-elements/types/components/index.d.ts +43 -3
- package/dist-elements/types/components/inputs/combobox/combobox.d.ts +2 -2
- package/dist-elements/types/components/inputs/date-input/date-input.d.ts +1 -1
- package/dist-elements/types/components/inputs/date-range/date-range.d.ts +2 -2
- package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +2 -2
- package/dist-elements/types/components/inputs/find/find.d.ts +51 -0
- package/dist-elements/types/components/inputs/segmented/segmented.d.ts +1 -1
- package/dist-elements/types/components/inputs/shared/input.d.ts +1 -1
- package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +1 -1
- package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +2 -2
- package/dist-elements/types/components/inputs/text-input/text-input.d.ts +1 -1
- package/dist-elements/types/components/inputs/time-input/time-input.d.ts +1 -1
- package/dist-elements/types/components/layout/expander/expander.d.ts +1 -1
- package/dist-elements/types/{primitives → components/layout}/grid/grid.d.ts +1 -1
- package/dist-elements/types/{primitives → components/layout}/grid-item/grid-item.d.ts +1 -1
- package/dist-elements/types/components/layout/tabs/tabs.d.ts +1 -1
- package/dist-elements/types/{primitives → components/layout}/tile/tile.d.ts +6 -6
- package/dist-elements/types/components/map/map/map.d.ts +2 -2
- package/dist-elements/types/components/overlays/modal/modal.d.ts +2 -2
- package/dist-elements/types/{primitives → components/overlays}/popover/popover.d.ts +2 -2
- package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +1 -1
- package/dist-elements/types/{primitives → components/overlays}/tooltip/tooltip.d.ts +2 -2
- package/dist-elements/types/components/shared/charts/index.d.ts +1 -0
- package/dist-elements/types/components/shared/charts/kinds.d.ts +6 -0
- package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +1 -1
- package/dist-elements/types/components/shared/charts/radar-chart/radar-chart.d.ts +31 -0
- package/dist-elements/types/components/shared/charts/shared/axes.d.ts +3 -1
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +5 -0
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +33 -0
- package/dist-elements/types/components/shared/content-tile.d.ts +1 -1
- package/dist-elements/types/components/{forms/form → shared}/controls.d.ts +3 -2
- package/dist-elements/types/components/shared/overflow.d.ts +1 -1
- package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +1 -1
- package/dist-elements/types/components/tables/card/card.d.ts +4 -4
- package/dist-elements/types/components/tables/data-table/actions.d.ts +1 -1
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +3 -3
- package/dist-elements/types/components/tables/data-table/editing.d.ts +1 -1
- package/dist-elements/types/components/tables/data-table/filters.d.ts +3 -3
- package/dist-elements/types/components/tables/description-list/description-list.d.ts +2 -2
- package/dist-elements/types/components/tables/list/list.d.ts +4 -4
- package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +1 -1
- package/dist-elements/types/core/focus.d.ts +1 -1
- package/dist-elements/types/types.d.ts +7 -7
- package/package.json +1 -1
- package/dist-elements/chunks/download-Ct9q2anY.js +0 -206
- package/dist-elements/chunks/input-CRW_exv_.js +0 -195
- package/dist-elements/types/primitives/index.d.ts +0 -35
- /package/dist-elements/types/components/content/{audio-player → shared}/playback.d.ts +0 -0
- /package/dist-elements/types/components/content/{audio-player → shared}/player.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/announcement-block.d.ts +0 -0
- /package/dist-elements/types/components/{inputs/date-input → shared}/date-format.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/empty-state-block.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/grid-item-element.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/length.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/place.d.ts +0 -0
- /package/dist-elements/types/{primitives → components}/shared/tone.d.ts +0 -0
package/dist-elements/tag/kpi.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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,
|
|
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
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
4
|
function E(e) {
|
|
@@ -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"} ${
|
|
18
|
-
return `${r == null || !e.ready ? "" : `${
|
|
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}`;
|
|
19
19
|
}
|
|
20
20
|
function k(e) {
|
|
21
|
-
return `${e.targetLabel ?? "doel"} ${
|
|
21
|
+
return `${e.targetLabel ?? "doel"} ${s(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),
|
|
28
|
-
return
|
|
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,23 +37,23 @@ 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
|
-
${
|
|
41
|
-
d="M ${-64} 0 A ${b} ${b} 0 0 1 ${
|
|
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
42
|
stroke-width=${x} ${o({ stroke: e.color })} />` : c}
|
|
43
|
-
${
|
|
43
|
+
${d ? m`<line class="lintje-gauge__tick" x1=${g.toFixed(2)} y1=${_.toFixed(2)}
|
|
44
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
47
|
${o({
|
|
48
48
|
left: P(-64),
|
|
49
49
|
top: "100%"
|
|
50
|
-
})}>${
|
|
50
|
+
})}>${s(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
|
-
})}>${
|
|
56
|
-
${
|
|
55
|
+
})}>${s(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)
|
|
@@ -61,8 +61,8 @@ function j(e, t) {
|
|
|
61
61
|
</div></div>`;
|
|
62
62
|
}
|
|
63
63
|
function M(e, t) {
|
|
64
|
-
let { gauge: n, value: r, ready: i } = e, a = E(n),
|
|
65
|
-
return
|
|
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
66
|
<div class=${h({
|
|
67
67
|
"lintje-gauge": !0,
|
|
68
68
|
"lintje-gauge--linear": !0,
|
|
@@ -70,25 +70,25 @@ function M(e, t) {
|
|
|
70
70
|
})}
|
|
71
71
|
role="img" aria-label=${O(e, a)}>
|
|
72
72
|
<div class="lintje-gauge__bar">
|
|
73
|
-
${
|
|
73
|
+
${l == null ? c : f`<div class="lintje-gauge__bar-fill"
|
|
74
74
|
${o({
|
|
75
|
-
width: `${
|
|
75
|
+
width: `${l * 100}%`,
|
|
76
76
|
background: e.color
|
|
77
77
|
})}></div>`}
|
|
78
|
-
${
|
|
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>${
|
|
82
|
-
${
|
|
83
|
-
${o({ left: `${
|
|
84
|
-
<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
90
|
var N = {
|
|
91
|
-
...Object.fromEntries(g.map((e) => [e,
|
|
91
|
+
...Object.fromEntries(g.map((e) => [e, d(e)])),
|
|
92
92
|
coverage: "var(--color-text-muted)"
|
|
93
93
|
}, P = {
|
|
94
94
|
width: 200,
|
|
@@ -148,7 +148,7 @@ var W = class extends n {
|
|
|
148
148
|
static {
|
|
149
149
|
this.styles = [
|
|
150
150
|
e,
|
|
151
|
-
|
|
151
|
+
u,
|
|
152
152
|
i(t),
|
|
153
153
|
i(y)
|
|
154
154
|
];
|
|
@@ -202,7 +202,7 @@ var W = class extends n {
|
|
|
202
202
|
return v();
|
|
203
203
|
}
|
|
204
204
|
connectedCallback() {
|
|
205
|
-
super.connectedCallback(), this.#s =
|
|
205
|
+
super.connectedCallback(), this.#s = l(() => this.finishCount()), typeof IntersectionObserver > "u" ? (this.#o = !0, this.drawn = !0) : (this.#r = new IntersectionObserver(([e]) => {
|
|
206
206
|
let t = e.rootBounds?.height ?? window.innerHeight;
|
|
207
207
|
(e.intersectionRatio >= B || e.intersectionRect.height >= t * B) && (this.#o = !0, this.drawn = !0, this.#r?.disconnect(), this.startCount());
|
|
208
208
|
}, { threshold: V }), this.#r.observe(this));
|
|
@@ -234,7 +234,7 @@ var W = class extends n {
|
|
|
234
234
|
}
|
|
235
235
|
render() {
|
|
236
236
|
let e = this.figures, t = e != null && this.emphasis === "primary";
|
|
237
|
-
return
|
|
237
|
+
return f`<div
|
|
238
238
|
class=${h({
|
|
239
239
|
"lintje-kpi": !0,
|
|
240
240
|
"lintje-kpi--primary": t,
|
|
@@ -246,7 +246,7 @@ var W = class extends n {
|
|
|
246
246
|
"--kpi-index": this.index
|
|
247
247
|
})}
|
|
248
248
|
>
|
|
249
|
-
${this.icon ?
|
|
249
|
+
${this.icon ? f`<span class="lintje-kpi__icon">${_(this.icon, { size: 20 })}</span>` : c}
|
|
250
250
|
<p class="lintje-kpi__label">${this.label}</p>
|
|
251
251
|
${this.body(e, t)}
|
|
252
252
|
</div>`;
|
|
@@ -254,30 +254,30 @@ var W = class extends n {
|
|
|
254
254
|
body(e, t) {
|
|
255
255
|
let n = this.state === "loading", r = this.state === "ready";
|
|
256
256
|
if (!e && this.gauge) return this.gauged(this.gauge);
|
|
257
|
-
if (!e) return n ?
|
|
257
|
+
if (!e) return n ? f`<div class="lintje-kpi__skeleton">
|
|
258
258
|
<lintje-skeleton height="34" width="70%"></lintje-skeleton>
|
|
259
259
|
${this.renderSparkline()}
|
|
260
260
|
<lintje-skeleton height="13" width="90%"></lintje-skeleton>
|
|
261
261
|
<lintje-skeleton height="12" width="55%"></lintje-skeleton>
|
|
262
|
-
</div>` :
|
|
262
|
+
</div>` : f`${this.figure(0, {
|
|
263
263
|
value: this.value,
|
|
264
264
|
suffix: this.suffix
|
|
265
265
|
})}${this.renderSparkline()}${this.lines(!0)}`;
|
|
266
266
|
if (t) {
|
|
267
267
|
let [t, ...i] = e, a = this.detail && (r || this.state === "empty");
|
|
268
|
-
return
|
|
269
|
-
${n ?
|
|
268
|
+
return f`
|
|
269
|
+
${n ? f`<lintje-skeleton height="34" width="70%"></lintje-skeleton>` : this.figure(0, t)}
|
|
270
270
|
${this.renderSparkline()}
|
|
271
|
-
${n ?
|
|
272
|
-
${i.length > 0 && this.dividers ?
|
|
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
273
|
${i.length > 0 ? this.itemList(i, !0, !1, 1) : c}
|
|
274
|
-
${n ?
|
|
274
|
+
${n ? f`<lintje-skeleton height="12" width="55%"></lintje-skeleton>` : a ? f`<p class="lintje-kpi__detail">${this.detail}</p>` : c}
|
|
275
275
|
`;
|
|
276
276
|
}
|
|
277
|
-
return
|
|
277
|
+
return f`
|
|
278
278
|
${this.itemList(e, !1, this.dividers && e.length > 1, 0)}
|
|
279
279
|
${this.renderSparkline()}
|
|
280
|
-
${n ?
|
|
280
|
+
${n ? f`<div class="lintje-kpi__skeleton">
|
|
281
281
|
<lintje-skeleton height="13" width="90%"></lintje-skeleton>
|
|
282
282
|
<lintje-skeleton height="12" width="55%"></lintje-skeleton>
|
|
283
283
|
</div>` : this.lines(!0)}
|
|
@@ -285,17 +285,17 @@ var W = class extends n {
|
|
|
285
285
|
}
|
|
286
286
|
renderSparkline() {
|
|
287
287
|
if (!this.sparkline) return c;
|
|
288
|
-
if (this.state === "loading") return
|
|
288
|
+
if (this.state === "loading") return f`<div class="lintje-kpi__sparkline lintje-kpi__sparkline--loading">
|
|
289
289
|
<lintje-skeleton height="100%"></lintje-skeleton>
|
|
290
290
|
</div>`;
|
|
291
291
|
if (this.state !== "ready") return c;
|
|
292
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
|
|
293
|
+
return f`<div
|
|
294
294
|
class=${h({
|
|
295
295
|
"lintje-kpi__sparkline": !0,
|
|
296
296
|
"is-drawn": this.drawn
|
|
297
297
|
})}
|
|
298
|
-
${
|
|
298
|
+
${p(this.observeSparkline)}
|
|
299
299
|
${o({ color: N[this.variable] })}
|
|
300
300
|
>
|
|
301
301
|
<svg
|
|
@@ -309,7 +309,7 @@ var W = class extends n {
|
|
|
309
309
|
<desc>${this.sparkline.description}</desc>
|
|
310
310
|
<g class="lintje-kpi__sparkline-plot">
|
|
311
311
|
${n.map((e) => this.run(e, t))}
|
|
312
|
-
${r ?
|
|
312
|
+
${r ? m`<circle class="lintje-kpi__sparkline-end" cx=${r[0].toFixed(1)} cy=${r[1].toFixed(1)} r=${I} />` : c}
|
|
313
313
|
</g>
|
|
314
314
|
</svg>
|
|
315
315
|
</div>`;
|
|
@@ -317,10 +317,10 @@ var W = class extends n {
|
|
|
317
317
|
run(e, t) {
|
|
318
318
|
if (e.length === 1) {
|
|
319
319
|
let [[t, n]] = e;
|
|
320
|
-
return
|
|
320
|
+
return m`<circle class="lintje-kpi__sparkline-point" cx=${t.toFixed(1)} cy=${n.toFixed(1)} r="2" />`;
|
|
321
321
|
}
|
|
322
322
|
let [n] = e, r = e[e.length - 1];
|
|
323
|
-
return
|
|
323
|
+
return m`
|
|
324
324
|
<polygon
|
|
325
325
|
class="lintje-kpi__sparkline-area"
|
|
326
326
|
points=${`${n[0].toFixed(1)},${t} ${R(e)} ${r[0].toFixed(1)},${t}`}
|
|
@@ -329,11 +329,11 @@ var W = class extends n {
|
|
|
329
329
|
`;
|
|
330
330
|
}
|
|
331
331
|
gauged(e) {
|
|
332
|
-
let t = this.state === "loading", n = e.value === void 0 ? H(this.value)?.target ?? null : e.value, r = t ?
|
|
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, {
|
|
333
333
|
value: this.value,
|
|
334
334
|
suffix: this.suffix
|
|
335
335
|
});
|
|
336
|
-
return
|
|
336
|
+
return f`
|
|
337
337
|
${A({
|
|
338
338
|
gauge: e,
|
|
339
339
|
value: n,
|
|
@@ -343,7 +343,7 @@ var W = class extends n {
|
|
|
343
343
|
color: N[this.variable]
|
|
344
344
|
}, r)}
|
|
345
345
|
${this.renderSparkline()}
|
|
346
|
-
${t ?
|
|
346
|
+
${t ? f`<div class="lintje-kpi__skeleton">
|
|
347
347
|
<lintje-skeleton height="13" width="90%"></lintje-skeleton>
|
|
348
348
|
<lintje-skeleton height="12" width="55%"></lintje-skeleton>
|
|
349
349
|
</div>` : this.lines(!0)}
|
|
@@ -351,30 +351,30 @@ var W = class extends n {
|
|
|
351
351
|
}
|
|
352
352
|
lines(e) {
|
|
353
353
|
let t = this.state === "ready";
|
|
354
|
-
return
|
|
354
|
+
return f`
|
|
355
355
|
${t && this.trend ? this.trendLine(e) : c}
|
|
356
|
-
${t && !this.trend && this.note ?
|
|
357
|
-
${this.state === "empty" ?
|
|
358
|
-
${this.state === "error" ?
|
|
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
359
|
<span class="lintje-kpi__dot" aria-hidden="true"></span>${this.message ?? "Niet geladen"}
|
|
360
|
-
</p>${this.lastKnown ?
|
|
361
|
-
${e && this.detail && (t && !this.trend || this.state === "empty") ?
|
|
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}
|
|
362
362
|
`;
|
|
363
363
|
}
|
|
364
364
|
trendLine(e) {
|
|
365
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"),
|
|
366
|
+
return t !== "flat" && (i = (r ? t === "down" : t === "up") ? "good" : "bad"), f`
|
|
367
367
|
<p class="lintje-trend"><span
|
|
368
368
|
class="lintje-trend__glyph lintje-trend__glyph--${i}"
|
|
369
369
|
aria-hidden="true"
|
|
370
370
|
>${z[t]}</span
|
|
371
|
-
>${i === "neutral" ? c :
|
|
372
|
-
${e && this.detail ?
|
|
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}
|
|
373
373
|
`;
|
|
374
374
|
}
|
|
375
375
|
itemList(e, t, n, r) {
|
|
376
376
|
let i = this.state === "loading";
|
|
377
|
-
return
|
|
377
|
+
return f`<div class="lintje-kpi__figures">
|
|
378
378
|
<div
|
|
379
379
|
class=${h({
|
|
380
380
|
"lintje-kpi__items": !0,
|
|
@@ -382,19 +382,19 @@ var W = class extends n {
|
|
|
382
382
|
"lintje-kpi__items--divided": n
|
|
383
383
|
})}
|
|
384
384
|
>
|
|
385
|
-
${e.map((e, a) =>
|
|
386
|
-
${a > 0 && n ?
|
|
385
|
+
${e.map((e, a) => f`
|
|
386
|
+
${a > 0 && n ? f`<span class="lintje-kpi__divider" aria-hidden="true"></span>` : c}
|
|
387
387
|
<div
|
|
388
388
|
class=${h({
|
|
389
389
|
"lintje-kpi__item": !0,
|
|
390
390
|
"lintje-kpi__item--comparison": !t && a > 0
|
|
391
391
|
})}
|
|
392
392
|
>
|
|
393
|
-
${i ?
|
|
393
|
+
${i ? f`<lintje-skeleton
|
|
394
394
|
height=${t ? 20 : 34}
|
|
395
395
|
width="70%"
|
|
396
396
|
></lintje-skeleton>` : this.figure(r + a, e, t)}
|
|
397
|
-
${e.period ?
|
|
397
|
+
${e.period ? f`<p class="lintje-kpi__period">${e.period}</p>` : c}
|
|
398
398
|
</div>
|
|
399
399
|
`)}
|
|
400
400
|
</div>
|
|
@@ -402,11 +402,11 @@ var W = class extends n {
|
|
|
402
402
|
}
|
|
403
403
|
figure(e, t, n = !1) {
|
|
404
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
|
|
406
|
-
${r ? i == null ? t.value :
|
|
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">
|
|
407
407
|
<span class="lintje-kpi__count-final">${t.value}</span>
|
|
408
408
|
<span class="lintje-kpi__count-live" aria-hidden="true">${i}</span>
|
|
409
|
-
</span>` : "—"}${o ?
|
|
409
|
+
</span>` : "—"}${o ? f`<span class="lintje-kpi__suffix">${o}</span>` : c}
|
|
410
410
|
</p>`;
|
|
411
411
|
}
|
|
412
412
|
};
|
|
@@ -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-
|
|
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,
|
|
@@ -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-
|
|
2
|
-
import { n as m } from "../chunks/focus-trap-
|
|
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-DRGvkF-r.js";
|
|
2
|
+
import { n as m } from "../chunks/focus-trap-Dv8zu64A.js";
|
|
3
3
|
import "./menu-button.js";
|
|
4
4
|
import "./empty-state.js";
|
|
5
5
|
import "./text-input.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Jt as e, Yt as t, Zt as n, _t as r, bt as i, ct as a, en as o, nn as s, rn as c, vt as l, xt as u } from "../chunks/base-
|
|
1
|
+
import { Jt as e, Yt as t, Zt as n, _t as r, bt as i, ct as a, en as o, nn as s, rn as c, vt as l, xt as u } from "../chunks/base-DRGvkF-r.js";
|
|
2
2
|
//#region src/components/actions/logo/logo.css?inline
|
|
3
3
|
var d = "/* The emblem's own box: `display: block; flex: none` on `:host`, the drawing fills it. */\n:host {\n display: block;\n flex: none;\n}\n:host([hidden]) { display: none; }\n.lintje-logo { display: block; }\n/* The emblem file's lintblauw ribbon; in dark it takes the house style's lighter tint. */\n.lintje-logo [fill='#154273' i] { fill: var(--color-logo-ribbon); }\n/* The frame is the window on the drawing; it narrows to the ribbon on the menu's duration. */\n.lintje-logo__frame {\n display: block;\n overflow: hidden;\n transition: width var(--dur-rail, 180ms) var(--ease-in-motion, ease);\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-logo__frame { transition: none; }\n}\n\n/* The name hangs outside the drawing's box, so the ribbon keeps its place whatever the name's\n length. Its left is set inline, in px, from the ribbon's width. */\n.lintje-logo__lockup { position: relative; display: block; }\n.lintje-logo__name {\n position: absolute;\n top: 55%;\n display: flex;\n flex-direction: column;\n margin-left: var(--space-3);\n width: max-content;\n max-width: 20rem;\n font: 700 1rem/1.2 var(--font-ui);\n color: inherit;\n}\n.lintje-logo__byline { font-weight: 400; font-style: italic; }\n@media screen and (max-width: 767px) {\n .lintje-logo__name { max-width: 9rem; font-size: 0.875rem; }\n}\n", f = {
|
|
4
4
|
x: 154,
|