lintje 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist-elements/actions.js +1 -1
- package/dist-elements/charts.js +1 -1
- package/dist-elements/chunks/{base-rBLTcEIv.js → base-CbmWxUig.js} +538 -337
- package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
- package/dist-elements/chunks/{date-format-B5DPGjAw.js → date-format-mHtZyBys.js} +28 -2
- package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
- package/dist-elements/chunks/disclosure-D39vAR5q.js +4 -0
- package/dist-elements/chunks/{disclosure-CHasOudX.js → disclosure-DLkXPUpV.js} +10 -10
- package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
- package/dist-elements/chunks/{focus-trap-w3vCamJ6.js → focus-trap-BwOxE5BX.js} +1 -1
- package/dist-elements/chunks/input-CRW_exv_.js +195 -0
- package/dist-elements/chunks/{player-Bq9YGnpt.js → player-B8QXJ0Z5.js} +35 -35
- package/dist-elements/chunks/{sentence-CLNJOeXz.js → sentence-B19AyZBS.js} +1 -1
- package/dist-elements/chunks/{stagger-9hYzxhMG.js → stagger-BHoOgy0g.js} +163 -135
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +2049 -1329
- package/dist-elements/data-types.json +6798 -0
- package/dist-elements/feedback.js +2 -1
- package/dist-elements/frame.js +0 -2
- package/dist-elements/guides/dashboard.md +9 -1
- package/dist-elements/guides/events.md +7 -7
- package/dist-elements/guides/loading.md +10 -9
- package/dist-elements/guides/page-contents.md +110 -0
- package/dist-elements/guides/start.md +13 -1
- package/dist-elements/inputs.js +3 -1
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +24508 -23210
- package/dist-elements/map.js +1 -1
- package/dist-elements/overlays.js +2 -2
- package/dist-elements/skills/lintje/SKILL.md +1 -1
- package/dist-elements/tables.js +1 -1
- package/dist-elements/tag/activity-log.js +18 -18
- package/dist-elements/tag/ai-label.js +11 -11
- package/dist-elements/tag/announcement.js +36 -76
- package/dist-elements/tag/app-search.js +50 -50
- package/dist-elements/tag/audio-player.js +57 -57
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +20 -20
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +12 -12
- package/dist-elements/tag/card.js +51 -56
- package/dist-elements/tag/chart.d.ts +1 -0
- package/dist-elements/tag/chart.js +2123 -0
- package/dist-elements/tag/chat-answer.js +51 -51
- package/dist-elements/tag/chat-composer.js +75 -71
- package/dist-elements/tag/chat-message.js +13 -13
- package/dist-elements/tag/chat-strip.js +22 -22
- package/dist-elements/tag/chat-suggestions.js +12 -12
- package/dist-elements/tag/chat.js +56 -56
- package/dist-elements/tag/checkbox-group.d.ts +1 -0
- package/dist-elements/tag/checkbox-group.js +59 -0
- package/dist-elements/tag/checkbox.js +4 -4
- package/dist-elements/tag/code.js +7 -7
- package/dist-elements/tag/combobox.js +18 -18
- package/dist-elements/tag/conflict-alert.js +12 -12
- package/dist-elements/tag/copy-button.js +17 -17
- package/dist-elements/tag/data-table.js +880 -532
- package/dist-elements/tag/date-input.js +44 -52
- package/dist-elements/tag/date-range.js +42 -42
- package/dist-elements/tag/description-list.js +29 -32
- package/dist-elements/tag/dialog.d.ts +1 -0
- package/dist-elements/tag/dialog.js +144 -0
- package/dist-elements/tag/document-viewer.js +29 -29
- package/dist-elements/tag/drawer.js +27 -31
- package/dist-elements/tag/empty-state.js +19 -30
- package/dist-elements/tag/error-page.d.ts +1 -0
- package/dist-elements/tag/error-page.js +109 -0
- package/dist-elements/tag/error-summary.js +16 -16
- package/dist-elements/tag/expander.js +7 -7
- package/dist-elements/tag/explainer.js +11 -11
- package/dist-elements/tag/field.js +7 -7
- package/dist-elements/tag/file-upload.js +32 -32
- package/dist-elements/tag/filter-bar.js +57 -57
- package/dist-elements/tag/filter-sheet.js +12 -12
- package/dist-elements/tag/filter-zone.js +31 -31
- package/dist-elements/tag/footer.js +21 -21
- package/dist-elements/tag/form-actions.js +30 -26
- package/dist-elements/tag/form-section.js +7 -7
- package/dist-elements/tag/form.js +12 -12
- package/dist-elements/tag/gallery.js +16 -16
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +12 -12
- package/dist-elements/tag/highlight.js +9 -9
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +23 -45
- package/dist-elements/tag/kpi-row.js +14 -10
- package/dist-elements/tag/kpi.js +276 -77
- package/dist-elements/tag/level-meter.js +11 -11
- package/dist-elements/tag/list.js +63 -63
- package/dist-elements/tag/logo.js +34 -34
- package/dist-elements/tag/map.d.ts +1 -0
- package/dist-elements/tag/map.js +21935 -0
- package/dist-elements/tag/menu-button.js +70 -68
- package/dist-elements/tag/modal.js +27 -36
- package/dist-elements/tag/multiselect.js +33 -33
- package/dist-elements/tag/note.js +6 -6
- package/dist-elements/tag/notifications.js +36 -36
- package/dist-elements/tag/number-input.js +6 -6
- package/dist-elements/tag/page-header.js +138 -35
- package/dist-elements/tag/pagination.js +54 -49
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +6 -6
- package/dist-elements/tag/qr-code.js +8 -8
- package/dist-elements/tag/radio-group.js +7 -7
- package/dist-elements/tag/range.js +28 -28
- package/dist-elements/tag/recording-status.js +16 -16
- package/dist-elements/tag/repeater.js +10 -10
- package/dist-elements/tag/segmented.js +9 -9
- package/dist-elements/tag/select.js +6 -6
- package/dist-elements/tag/shell.js +356 -339
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.d.ts +1 -0
- package/dist-elements/tag/slot-picker.js +74 -0
- package/dist-elements/tag/sortable-list.js +18 -18
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +12 -12
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +21 -21
- package/dist-elements/tag/streaming-text.js +21 -21
- package/dist-elements/tag/sub-nav.js +40 -39
- package/dist-elements/tag/tabs.js +38 -38
- package/dist-elements/tag/tag-input.js +19 -19
- package/dist-elements/tag/text-editor.js +19 -19
- package/dist-elements/tag/text-input.js +6 -6
- package/dist-elements/tag/textarea.js +16 -16
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +136 -42
- package/dist-elements/tag/toast.js +32 -23
- package/dist-elements/tag/toggle.js +4 -4
- package/dist-elements/tag/toggletip.js +27 -27
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +47 -47
- package/dist-elements/tag/translator.js +13 -13
- package/dist-elements/tag/tree-view.js +20 -20
- package/dist-elements/tag/user-menu.js +42 -41
- package/dist-elements/tag/video-player.js +21 -21
- package/dist-elements/tokens.css +122 -96
- package/dist-elements/types/bundle/charts.d.ts +1 -1
- package/dist-elements/types/bundle/feedback.d.ts +1 -0
- package/dist-elements/types/bundle/frame.d.ts +0 -2
- package/dist-elements/types/bundle/index.d.ts +1 -1
- package/dist-elements/types/bundle/inputs.d.ts +2 -0
- package/dist-elements/types/bundle/map.d.ts +1 -1
- package/dist-elements/types/bundle/overlays.d.ts +1 -1
- package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
- package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
- package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
- package/dist-elements/types/components/charts/{chart-tile/chart-tile.d.ts → chart/chart.d.ts} +12 -11
- package/dist-elements/types/components/charts/kpi/gauge.d.ts +18 -0
- package/dist-elements/types/components/charts/kpi/kpi.d.ts +38 -5
- package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
- package/dist-elements/types/components/charts/note/note.d.ts +1 -1
- package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +8 -9
- package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
- package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
- package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
- package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
- package/dist-elements/types/components/content/code/code.d.ts +2 -3
- package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
- package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
- package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
- package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
- package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
- package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
- package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
- package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
- package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
- package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
- package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
- package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
- package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
- package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
- package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
- package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
- package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
- package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
- package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
- package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
- package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
- package/dist-elements/types/components/forms/form/form.d.ts +5 -5
- package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
- package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
- package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
- package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
- package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
- package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
- package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
- package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
- package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
- package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
- package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
- package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
- package/dist-elements/types/components/index.d.ts +16 -14
- package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
- package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
- package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
- package/dist-elements/types/components/inputs/date-input/date-format.d.ts +4 -0
- package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
- package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
- package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
- package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
- package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
- package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
- package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
- package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
- package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
- package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
- package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +42 -0
- package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
- package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
- package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
- package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
- package/dist-elements/types/components/inputs/time-input/time-format.d.ts +4 -0
- package/dist-elements/types/components/inputs/time-input/time-input.d.ts +25 -7
- package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
- package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
- package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
- package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
- package/dist-elements/types/components/map/{map-tile/map-tile.d.ts → map/map.d.ts} +16 -11
- package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
- package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
- package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
- package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
- package/dist-elements/types/components/shared/charts/histogram-chart/histogram-chart.d.ts +33 -0
- package/dist-elements/types/components/shared/charts/index.d.ts +7 -2
- package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
- package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
- package/dist-elements/types/components/shared/charts/map-chart/area.d.ts +16 -0
- package/dist-elements/types/components/shared/charts/map-chart/drawings.d.ts +6 -2
- package/dist-elements/types/components/shared/charts/map-chart/geo.d.ts +6 -0
- package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +45 -2
- package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +17 -3
- package/dist-elements/types/components/shared/charts/map-chart/map-legend.d.ts +26 -0
- package/dist-elements/types/components/shared/charts/map-chart/marks.d.ts +47 -0
- package/dist-elements/types/components/shared/charts/map-chart/reveal.d.ts +1 -1
- package/dist-elements/types/components/shared/charts/scatter-chart/scatter-chart.d.ts +29 -0
- package/dist-elements/types/components/shared/charts/shared/axes.d.ts +21 -4
- package/dist-elements/types/components/shared/charts/shared/chart-icons.d.ts +4 -3
- package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +34 -15
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +141 -6
- package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
- package/dist-elements/types/components/shared/dialog.d.ts +9 -0
- package/dist-elements/types/components/shared/overflow.d.ts +58 -0
- package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
- package/dist-elements/types/components/tables/card/card.d.ts +14 -20
- package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
- package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
- package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
- package/dist-elements/types/components/tables/list/list.d.ts +9 -20
- package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
- package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
- package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
- package/dist-elements/types/core/format.d.ts +5 -2
- package/dist-elements/types/core/media.d.ts +2 -2
- package/dist-elements/types/core/motion.d.ts +5 -0
- package/dist-elements/types/core/print.d.ts +15 -0
- package/dist-elements/types/core/shortcuts.d.ts +2 -2
- package/dist-elements/types/icons/icon/icon.d.ts +2 -3
- package/dist-elements/types/icons/register.d.ts +1 -1
- package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
- package/dist-elements/types/primitives/button/button.d.ts +12 -9
- package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
- package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
- package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
- package/dist-elements/types/primitives/index.d.ts +3 -1
- package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
- package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
- package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
- package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
- package/dist-elements/types/primitives/shared/place.d.ts +1 -1
- package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
- package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
- package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
- package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
- package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
- package/dist-elements/types/primitives/tooltip/tooltip.d.ts +8 -6
- package/dist-elements/types/types.d.ts +106 -16
- package/dist-icons/functioneel-cirkelselectie.svg +1 -0
- package/dist-icons/functioneel-kolommen.svg +1 -0
- package/dist-icons/functioneel-lasso.svg +1 -0
- package/dist-icons/functioneel-punaise-outline.svg +1 -0
- package/dist-icons/functioneel-punaise.svg +1 -0
- package/dist-icons/functioneel-rechthoekselectie.svg +1 -0
- package/dist-icons/functioneel-selectie.svg +1 -0
- package/dist-icons/functioneel-trechter.svg +1 -0
- package/package.json +1 -1
- package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
- package/dist-elements/chunks/disclosure-Z7Ny17sS.js +0 -4
- package/dist-elements/chunks/download-lFooAfD1.js +0 -226
- package/dist-elements/chunks/input-jQVTln7H.js +0 -195
- package/dist-elements/tag/chart-tile.d.ts +0 -1
- package/dist-elements/tag/chart-tile.js +0 -1474
- package/dist-elements/tag/confirm-dialog.d.ts +0 -1
- package/dist-elements/tag/confirm-dialog.js +0 -118
- package/dist-elements/tag/map-tile.d.ts +0 -1
- package/dist-elements/tag/map-tile.js +0 -22292
- package/dist-elements/tag/session-expiry.d.ts +0 -1
- package/dist-elements/tag/session-expiry.js +0 -184
- package/dist-elements/tag/shortcuts.d.ts +0 -1
- package/dist-elements/tag/shortcuts.js +0 -104
- package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
- package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
- package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/core/version.ts
|
|
2
|
-
var e = "0.
|
|
2
|
+
var e = "0.3.0", t = globalThis, n = t.ShadowRoot && (t.ShadyCSS === void 0 || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, r = Symbol(), i = /* @__PURE__ */ new WeakMap(), a = class {
|
|
3
3
|
constructor(e, t, n) {
|
|
4
4
|
if (this._$cssResult$ = !0, n !== r) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
|
|
5
5
|
this.cssText = e, this.t = t;
|
|
@@ -521,7 +521,7 @@ var Re = Le.litElementPolyfillSupport;
|
|
|
521
521
|
Re?.({ LitElement: k }), (Le.litElementVersions ??= []).push("4.2.2");
|
|
522
522
|
//#endregion
|
|
523
523
|
//#region src/tokens/tokens.css?inline
|
|
524
|
-
var ze = "/* ============================================================================\n Lintje — design tokens\n\n Colour is in three groups: themable UI colour (a theme sets only `--primary` and `--accent`, in\n `themes.css`), fixed data colour (`--data-*`, identical in every\n mode and theme except the two grays) and fixed status colour (`--status-*`).\n\n Three layers, one direction: component -> semantic (`--color-*`) -> primitives. Only the\n primitive blocks may hold a colour literal. To change a colour in one mode, re-point the\n layer-2 name inside `[data-mode='dark']`.\n\n `color-mix(in srgb, …)` and the relative `oklch(from …)` need Chrome/Edge 122+, Firefox 128+\n or Safari 18+;\n `colour-scheme.test.ts` repeats the arithmetic. The `@font-face` rules live in `fonts.css`:\n they cannot work inside a shadow root.\n ========================================================================= */\n\n/* ============================================================================\n Layer 1 — primitives (the only literals)\n ========================================================================= */\n:root {\n /* --- Neutral (light). The one mode-dependent primitive family ----------\n Neutral-5 is the cool-grey step 600, not 500, because it carries muted TEXT:\n #64748B is 4.34:1 on neutral-2, #475569 is 6.92:1. */\n --neutral-0: #FFFFFF;\n --neutral-1: #F8FAFC;\n --neutral-2: #F1F5F9;\n --neutral-3: #E2E8F0;\n --neutral-4: #94A3B8;\n --neutral-5: #475569;\n --neutral-6: #0F172A;\n\n /* --- Fixed ink ---------------------------------------------------------\n The same in both modes because it sits on a fill, not on the page. */\n --ink-white: #FFFFFF;\n --ink-black: #0F172A;\n --alpha-white-82: rgba(255, 255, 255, 0.82);\n --alpha-white-45: rgba(255, 255, 255, 0.45);\n\n /* --- Focus -------------------------------------------------------------\n Its own constant: it must not move with the accent or the attention status. */\n --focus-orange: #E17000;\n\n /* --- The ribbon --------------------------------------------------------\n Lintblauw, and the Rijkshuisstijl's own lighter tint for the ribbon in the logo in dark. */\n --ribbon-blue: #154273;\n --ribbon-blue-dark: #004A8D;\n\n /* --- Data (fixed Rijkshuisstijl, identical in light, dark and every theme)\n The two grays follow the mode: as fixed literals the comparison line landed at 2.69:1\n on the dark surface. Light #475569 / #94A3B8, dark #B0B0B0 / #7A7A7A. The variables\n stand in the order of `tokens/colors.ts`, the one list of their names. */\n --data-sky-blue: #007BC7;\n --data-dark-yellow: #FFB612;\n --data-red: #D52B1E;\n --data-green: #39870C;\n --data-mint-green: #76D2B6;\n --data-violet: #A90061;\n --data-orange: #E17000;\n --data-pink: #F092CD;\n --data-dark-green: #275937;\n --data-purple: #42145F;\n --data-ruby-red: #CA005D;\n --data-yellow: #F9E11E;\n --data-dark-brown: #673328;\n --data-brown: #94710A;\n --data-dark-blue: #01689B;\n --data-light-blue: #8FCAE7;\n --data-moss-green: #777B00;\n /* Sky blue's ladder is written out: the map's areas draw in from the land to these classes,\n and Chromium interpolates a `color-mix()` target wrongly (the land's RGB numbers taken as\n oklab), so the areas flash yellow. The values are its mix with white; the test checks. */\n --data-sky-blue-75: #409CD5;\n --data-sky-blue-60: #66B0DD;\n --data-sky-blue-45: #8CC4E6;\n --data-sky-blue-30: #B2D7EE;\n --data-sky-blue-15: #D9EBF7;\n --data-comparison: var(--neutral-5);\n --data-other: var(--neutral-4);\n /* Yellow as TEXT fails contrast on white: light writes a wait time in this dark gold. */\n --data-dark-yellow-text: #B07A00;\n /* Grid and emphasis follow the surface, like the two grays. */\n --data-grid: var(--neutral-3);\n --data-emphasis: var(--neutral-6);\n\n /* --- Status (fixed) ---------------------------------------------------- */\n --status-success: #39870C;\n --status-warning: #FFB612;\n --status-attention: #E17000;\n --status-error: #D52B1E;\n --status-info: #007BC7;\n\n /* Black at the alphas the shadows and overlays use; the digits are the alpha in percent. */\n --alpha-black-08: rgba(0, 0, 0, 0.08);\n --alpha-black-14: rgba(0, 0, 0, 0.14);\n --alpha-black-16: rgba(0, 0, 0, 0.16);\n --alpha-black-18: rgba(0, 0, 0, 0.18);\n --alpha-black-22: rgba(0, 0, 0, 0.22);\n --alpha-black-40: rgba(0, 0, 0, 0.4);\n --alpha-black-55: rgba(0, 0, 0, 0.55);\n --alpha-black-60: rgba(0, 0, 0, 0.6);\n}\n\n/* ============================================================================\n Layer 1 — derivations\n\n Mixes of the primitives and of the theme's two properties. The tint ladder is 75 / 60 / 45\n / 30 / 15 % of the base over white; every data colour carries the complete ladder.\n ========================================================================= */\n:root {\n /* Darker than the primary in light: a lighter fill under white text lost contrast (2.80:1 on\n orange). The dark block re-declares it lighter. */\n --primary-hover: color-mix(in srgb, var(--primary), black 30%);\n --primary-line: color-mix(in srgb, var(--primary), white 22%);\n /* The dark tints lift only the perceived lightness, so they keep the primary's colour; a mix\n with white greys it. Each lightness is the smallest hundredth that clears its floor in every\n theme: 3:1 on #282828 for a line, 4.5:1 on #333333 (neutral-2), the lightest neutral\n surface a word stands on, for text. A primary that is lighter already keeps its own. */\n --primary-tint: oklch(from var(--primary) max(l, 0.55) c h);\n --primary-tint-text: oklch(from var(--primary) max(l, 0.71) c h);\n /* A wash behind a word or under a band, never a colour that reads by itself. Fixed in\n perceived lightness, so it is equally light in every theme and keeps the primary's hue; an\n sRGB mix with white greys a dark primary. The chroma cap keeps every theme inside sRGB. */\n --primary-wash: oklch(from var(--primary) 0.955 min(c, 0.02) h);\n\n --data-dark-yellow-75: color-mix(in srgb, var(--data-dark-yellow) 75%, white);\n --data-dark-yellow-60: color-mix(in srgb, var(--data-dark-yellow) 60%, white);\n --data-dark-yellow-45: color-mix(in srgb, var(--data-dark-yellow) 45%, white);\n --data-dark-yellow-30: color-mix(in srgb, var(--data-dark-yellow) 30%, white);\n --data-dark-yellow-15: color-mix(in srgb, var(--data-dark-yellow) 15%, white);\n\n --data-red-75: color-mix(in srgb, var(--data-red) 75%, white);\n --data-red-60: color-mix(in srgb, var(--data-red) 60%, white);\n --data-red-45: color-mix(in srgb, var(--data-red) 45%, white);\n --data-red-30: color-mix(in srgb, var(--data-red) 30%, white);\n --data-red-15: color-mix(in srgb, var(--data-red) 15%, white);\n\n --data-green-75: color-mix(in srgb, var(--data-green) 75%, white);\n --data-green-60: color-mix(in srgb, var(--data-green) 60%, white);\n --data-green-45: color-mix(in srgb, var(--data-green) 45%, white);\n --data-green-30: color-mix(in srgb, var(--data-green) 30%, white);\n --data-green-15: color-mix(in srgb, var(--data-green) 15%, white);\n\n --data-mint-green-75: color-mix(in srgb, var(--data-mint-green) 75%, white);\n --data-mint-green-60: color-mix(in srgb, var(--data-mint-green) 60%, white);\n --data-mint-green-45: color-mix(in srgb, var(--data-mint-green) 45%, white);\n --data-mint-green-30: color-mix(in srgb, var(--data-mint-green) 30%, white);\n --data-mint-green-15: color-mix(in srgb, var(--data-mint-green) 15%, white);\n\n --data-violet-75: color-mix(in srgb, var(--data-violet) 75%, white);\n --data-violet-60: color-mix(in srgb, var(--data-violet) 60%, white);\n --data-violet-45: color-mix(in srgb, var(--data-violet) 45%, white);\n --data-violet-30: color-mix(in srgb, var(--data-violet) 30%, white);\n --data-violet-15: color-mix(in srgb, var(--data-violet) 15%, white);\n\n --data-orange-75: color-mix(in srgb, var(--data-orange) 75%, white);\n --data-orange-60: color-mix(in srgb, var(--data-orange) 60%, white);\n --data-orange-45: color-mix(in srgb, var(--data-orange) 45%, white);\n --data-orange-30: color-mix(in srgb, var(--data-orange) 30%, white);\n --data-orange-15: color-mix(in srgb, var(--data-orange) 15%, white);\n\n --data-pink-75: color-mix(in srgb, var(--data-pink) 75%, white);\n --data-pink-60: color-mix(in srgb, var(--data-pink) 60%, white);\n --data-pink-45: color-mix(in srgb, var(--data-pink) 45%, white);\n --data-pink-30: color-mix(in srgb, var(--data-pink) 30%, white);\n --data-pink-15: color-mix(in srgb, var(--data-pink) 15%, white);\n\n --data-dark-green-75: color-mix(in srgb, var(--data-dark-green) 75%, white);\n --data-dark-green-60: color-mix(in srgb, var(--data-dark-green) 60%, white);\n --data-dark-green-45: color-mix(in srgb, var(--data-dark-green) 45%, white);\n --data-dark-green-30: color-mix(in srgb, var(--data-dark-green) 30%, white);\n --data-dark-green-15: color-mix(in srgb, var(--data-dark-green) 15%, white);\n\n --data-purple-75: color-mix(in srgb, var(--data-purple) 75%, white);\n --data-purple-60: color-mix(in srgb, var(--data-purple) 60%, white);\n --data-purple-45: color-mix(in srgb, var(--data-purple) 45%, white);\n --data-purple-30: color-mix(in srgb, var(--data-purple) 30%, white);\n --data-purple-15: color-mix(in srgb, var(--data-purple) 15%, white);\n\n --data-ruby-red-75: color-mix(in srgb, var(--data-ruby-red) 75%, white);\n --data-ruby-red-60: color-mix(in srgb, var(--data-ruby-red) 60%, white);\n --data-ruby-red-45: color-mix(in srgb, var(--data-ruby-red) 45%, white);\n --data-ruby-red-30: color-mix(in srgb, var(--data-ruby-red) 30%, white);\n --data-ruby-red-15: color-mix(in srgb, var(--data-ruby-red) 15%, white);\n\n --data-yellow-75: color-mix(in srgb, var(--data-yellow) 75%, white);\n --data-yellow-60: color-mix(in srgb, var(--data-yellow) 60%, white);\n --data-yellow-45: color-mix(in srgb, var(--data-yellow) 45%, white);\n --data-yellow-30: color-mix(in srgb, var(--data-yellow) 30%, white);\n --data-yellow-15: color-mix(in srgb, var(--data-yellow) 15%, white);\n\n --data-dark-brown-75: color-mix(in srgb, var(--data-dark-brown) 75%, white);\n --data-dark-brown-60: color-mix(in srgb, var(--data-dark-brown) 60%, white);\n --data-dark-brown-45: color-mix(in srgb, var(--data-dark-brown) 45%, white);\n --data-dark-brown-30: color-mix(in srgb, var(--data-dark-brown) 30%, white);\n --data-dark-brown-15: color-mix(in srgb, var(--data-dark-brown) 15%, white);\n\n --data-brown-75: color-mix(in srgb, var(--data-brown) 75%, white);\n --data-brown-60: color-mix(in srgb, var(--data-brown) 60%, white);\n --data-brown-45: color-mix(in srgb, var(--data-brown) 45%, white);\n --data-brown-30: color-mix(in srgb, var(--data-brown) 30%, white);\n --data-brown-15: color-mix(in srgb, var(--data-brown) 15%, white);\n\n --data-dark-blue-75: color-mix(in srgb, var(--data-dark-blue) 75%, white);\n --data-dark-blue-60: color-mix(in srgb, var(--data-dark-blue) 60%, white);\n --data-dark-blue-45: color-mix(in srgb, var(--data-dark-blue) 45%, white);\n --data-dark-blue-30: color-mix(in srgb, var(--data-dark-blue) 30%, white);\n --data-dark-blue-15: color-mix(in srgb, var(--data-dark-blue) 15%, white);\n\n --data-light-blue-75: color-mix(in srgb, var(--data-light-blue) 75%, white);\n --data-light-blue-60: color-mix(in srgb, var(--data-light-blue) 60%, white);\n --data-light-blue-45: color-mix(in srgb, var(--data-light-blue) 45%, white);\n --data-light-blue-30: color-mix(in srgb, var(--data-light-blue) 30%, white);\n --data-light-blue-15: color-mix(in srgb, var(--data-light-blue) 15%, white);\n\n --data-moss-green-75: color-mix(in srgb, var(--data-moss-green) 75%, white);\n --data-moss-green-60: color-mix(in srgb, var(--data-moss-green) 60%, white);\n --data-moss-green-45: color-mix(in srgb, var(--data-moss-green) 45%, white);\n --data-moss-green-30: color-mix(in srgb, var(--data-moss-green) 30%, white);\n --data-moss-green-15: color-mix(in srgb, var(--data-moss-green) 15%, white);\n\n /* 15 % of the status colour over the surface, so one declaration covers both modes. */\n --status-success-bg: color-mix(in srgb, var(--status-success) 15%, var(--neutral-0));\n --status-warning-bg: color-mix(in srgb, var(--status-warning) 15%, var(--neutral-0));\n --status-attention-bg: color-mix(in srgb, var(--status-attention) 15%, var(--neutral-0));\n --status-error-bg: color-mix(in srgb, var(--status-error) 15%, var(--neutral-0));\n --status-info-bg: color-mix(in srgb, var(--status-info) 15%, var(--neutral-0));\n}\n\n/* ============================================================================\n Layers 2 and 3 — semantic and component tokens (light)\n\n No colour literal below this line.\n ========================================================================= */\n:root {\n /* --- Typography -------------------------------------------------------- */\n --font-ui: 'RijksSans', 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --font-mono: 'Source Code Pro', ui-monospace, SFMono-Regular, Menlo, monospace;\n\n --text-dashboard: 700 1.25rem/1.2 var(--font-ui);\n --text-h1: 700 1.75rem/1.2 var(--font-ui);\n --text-h1-mobile: 700 1.5rem/1.15 var(--font-ui);\n --text-h1-display: 700 2.5rem/1.1 var(--font-ui);\n --text-h2: 700 1.25rem/1.25 var(--font-ui);\n --text-tile-title: 700 1rem/1.3 var(--font-ui);\n --text-tile-sub: 400 0.875rem/1.35 var(--font-ui);\n --text-kpi: 700 2rem/1.1 var(--font-ui);\n --text-kpi-mobile: 700 1.5rem/1.1 var(--font-ui);\n --text-kpi-secondary: 700 1.25rem/1.1 var(--font-ui);\n --text-body: 400 1rem/1.5 var(--font-ui);\n /* The text being translated and its translation: larger than body, read at a glance. */\n --text-translation: 400 1.25rem/1.5 var(--font-ui);\n --text-ui: 400 1rem/1.4 var(--font-ui);\n --text-small: 400 0.875rem/1.45 var(--font-ui);\n --text-meta: 400 0.875rem/1.4 var(--font-ui);\n --text-table: 400 1rem/1.4 var(--font-ui);\n --text-table-head: 700 0.875rem/1.3 var(--font-ui);\n --text-axis: 400 0.75rem/1.2 var(--font-ui);\n\n --label-size: 0.875rem;\n --label-weight: 700;\n --label-tracking: 0.08em;\n --kpi-tracking: -0.02em;\n\n /* --- Spacing (4 px scale) --------------------------------------------- */\n --space-1: 4px;\n --space-2: 8px;\n --space-3: 12px;\n --space-4: 16px;\n --space-5: 20px;\n --space-6: 24px;\n --space-8: 32px;\n --space-10: 40px;\n\n /* --- Component sizes --------------------------------------------------- */\n --h-topbar: 3.5rem;\n --h-contextbar: 3rem;\n --h-mobile-header: 4.5rem;\n --h-control: 3rem;\n --h-button: 3rem;\n --h-button-compact: 2.5rem;\n --h-button-chrome: 2.5rem;\n --h-icon-button: 2.5rem;\n --h-chip: 2rem;\n --h-chip-field: 1.75rem;\n --h-nav-row: 3rem;\n --h-nav-head: 6.5rem;\n --h-table-row: 3rem;\n --h-touch: 3rem;\n /* The smallest pointer target. A box that draws smaller reaches it through a\n transparent hit area (`::after`, negative inset). */\n --h-target: 3rem;\n /* A link in a list of text links: one line of text, the WCAG AA floor, as on rijksoverheid.nl. */\n --h-target-text: 1.5rem;\n /* The two dense exceptions to the target: a date picker day cell and a listbox option row. */\n --h-option: 2.5rem;\n\n --w-nav: 288px;\n --w-rail: 72px;\n --w-text: 760px;\n --w-message: 560px;\n /* A language choice in the translator's bar. */\n --w-translator-language: 18rem;\n /* The widest the page's content gets. A host sets `--lintje-content-width` to change it. */\n --w-content: 1360px;\n --nav-edge: 4px;\n /* The ribbon is the unit: 48 px, 40 on a phone. Both bars are in rem, so they grow with the\n reader's text size. */\n --w-ribbon: 3rem;\n --h-logobar: calc(2.5 * var(--w-ribbon));\n /* The top bar's height: what pins under the bar measures `--h-topbar`. */\n --h-navbar: var(--h-topbar);\n /* How far what follows the hero stands over its band's lower edge. */\n --hero-overlap: var(--space-10);\n /* The widest the picture beside the hero's text gets: four of the twelve columns at 1440. */\n --w-hero-aside: 400px;\n /* The narrowest a card gets in a card list before the list drops a column. */\n --w-card: 320px;\n /* The same for a horizontal card, whose picture takes a column of its own. */\n --w-card-wide: 480px;\n --w-card-media: 200px;\n --w-card-logo: 3.5rem;\n --w-card-logo-wide: 5rem;\n /* The narrowest thumbnail under a gallery's large picture. */\n --w-gallery-thumb: 120px;\n /* The narrowest column of links in a footer before the columns stand under each other. */\n --w-footer-column: 220px;\n\n --page-pad-y: 32px;\n --page-pad-x: 24px;\n /* What a full-width bar or the content adds to its side padding so what stands in it keeps to\n `--w-content`; the percentage is taken of the box the bar stands in. */\n --page-gutter: max(\n 0px,\n calc((100% - var(--lintje-content-width, var(--w-content)) - 2 * var(--page-pad-x)) / 2)\n );\n --grid-gutter: 24px;\n --tile-pad-y: 20px;\n --tile-pad-x: 24px;\n --chart-h-main: 260px;\n --chart-h-small: 180px;\n --chart-h-expanded: 560px;\n\n /* Sticky context = top bar + summary bar. */\n --h-sticky: calc(var(--h-topbar) + var(--h-contextbar));\n\n --radius: 0px;\n --radius-round: 50%;\n\n --shadow-sticky: 0 2px 6px var(--alpha-black-08);\n --shadow-popover: 0 4px 16px var(--alpha-black-14);\n --shadow-nav: 2px 0 8px var(--alpha-black-08);\n --shadow-chart-hover: 0 1px 4px var(--alpha-black-22);\n --shadow-scroll-start: inset 12px 0 10px -10px var(--alpha-black-18);\n --shadow-scroll-end: inset -12px 0 10px -10px var(--alpha-black-18);\n\n --color-overlay-page: var(--alpha-black-60);\n --color-overlay-nav: var(--alpha-black-16);\n\n --focus-width: 3px;\n --focus-offset: 2px;\n\n /* --- Motion ------------------------------------------------------------ */\n /* `@kind other` marks these for design tooling as neither colors, sizes nor type; the library\n CSS ships unminified so the notes reach it. */\n --ease-in-motion: cubic-bezier(0.2, 0, 0, 1); /* @kind other */\n --ease-out-motion: cubic-bezier(0.4, 0, 1, 1); /* @kind other */\n --dur-base: 200ms; /* @kind other */\n --dur-hover: 120ms; /* @kind other */\n --dur-popover: var(--dur-base); /* @kind other */\n --dur-submenu: 300ms; /* @kind other */\n --dur-toast: var(--dur-base); /* @kind other */\n --dur-scrim: var(--dur-base); /* @kind other */\n --dur-rail: var(--dur-base); /* @kind other */\n --dur-collapse: var(--dur-base); /* @kind other */\n --dur-modal: var(--dur-base); /* @kind other */\n --dur-sheet: var(--dur-base); /* @kind other */\n --dur-kpi: var(--dur-base); /* @kind other */\n --dur-badge: 300ms; /* @kind other */\n --dur-draw: 900ms; /* @kind other */\n --dur-data-label: 300ms; /* @kind other */\n --dur-skeleton: 1200ms; /* @kind other */\n --dur-wave: 600ms; /* @kind other */\n\n /* --- Semantic: surfaces ------------------------------------------------ */\n --color-bg-page: var(--neutral-1);\n --color-bg-surface: var(--neutral-0);\n --color-bg-subtle: var(--neutral-2);\n --color-bg-title: var(--neutral-1);\n /* Between steps 2 and 3: on the cool-grey ramp neutral-2 sits too close to the page to read\n as a band. */\n --color-bg-filter: color-mix(in srgb, var(--neutral-2), var(--neutral-3));\n --color-bg-selected: var(--neutral-2);\n --color-bg-inset: var(--neutral-2);\n\n /* --- Semantic: text ---------------------------------------------------- */\n --color-text-primary: var(--neutral-6);\n --color-text-secondary: var(--neutral-6);\n --color-text-muted: var(--neutral-5);\n --color-text-inverse: var(--neutral-0);\n --color-text-disabled: var(--neutral-4);\n /* A placeholder must stay readable: 4.5:1 on the surface in both modes. */\n --color-text-placeholder: var(--neutral-5);\n --color-text-on-fill: var(--ink-white);\n --color-text-on-light-fill: var(--ink-black);\n --color-qr-bg: var(--ink-white);\n --color-qr-fg: var(--ink-black);\n\n /* --- Semantic: borders ------------------------------------------------- */\n --color-border-default: var(--neutral-3);\n --color-border-strong: var(--neutral-3);\n --color-border-filter: var(--neutral-3);\n --color-border-heavy: var(--neutral-4);\n /* The resting edge of a field box: 3:1 (WCAG 1.4.11) on the surface and the filter band. */\n --color-border-field: var(--neutral-5);\n /* The 2 px edge of a checkbox and a radio: 3:1 on the surface; dark re-points it. */\n --color-border-choice: var(--neutral-5);\n /* In dark a sheet is the same #282828 as the tile under it, so this line separates them. */\n --color-border-popover: var(--neutral-3);\n /* A DASHED outline (a suggestion, an uncertain term): neutral-5, because a dashed line has half\n the ink of a solid one and must still reach 3:1. */\n --color-border-suggestion: var(--neutral-5);\n\n /* --- Semantic: action -------------------------------------------------- */\n --color-action-primary: var(--primary);\n --color-action-primary-hover: var(--primary-hover);\n --color-action-primary-text: var(--ink-white);\n /* A primary fill in dark is a dark box on a dark page (WCAG 1.4.11): it gets a tint border. */\n --color-action-primary-border: var(--primary);\n --color-action-secondary-border: var(--primary);\n /* The destructive fill: the error red, white text on it (5.01:1). Hover is darker in light,\n lighter in dark. In dark the border is a tint, because #D52B1E is 2.94:1 on #282828. */\n --color-action-danger: var(--status-error);\n --color-action-danger-hover: color-mix(in srgb, var(--status-error), black 30%);\n --color-action-danger-border: var(--status-error);\n /* The word of the outlined danger button; dark re-points it (the red is 2.94:1 on #282828). */\n --color-action-danger-text: var(--status-error);\n --color-link: var(--primary);\n --color-link-hover: var(--primary-hover);\n /* A link on a status background: in dark no tint of the primary reaches 4.5:1 there, so it\n reads in the text colour. It is bold and underlined, so colour never carried it alone. */\n --color-link-on-status: var(--primary);\n\n /* The accent splits in three, because a fill, a line and a word have different floors:\n fill (the primary), line (non-text, 3:1: `--primary-tint` in dark) and text (4.5:1:\n `--primary-tint-text` in dark). A word in the line token fails: it is sized for 3:1. */\n --color-accent: var(--primary);\n --color-accent-line: var(--primary);\n --color-accent-text: var(--primary);\n\n --color-focus: var(--focus-orange);\n\n /* --- Semantic: status -------------------------------------------------- */\n --color-attention: var(--status-attention);\n --color-success: var(--status-success);\n --color-warning: var(--status-warning);\n --color-error: var(--status-error);\n --color-info: var(--status-info);\n\n --color-warning-bg: var(--status-warning-bg);\n --color-attention-bg: var(--status-attention-bg);\n --color-error-bg: var(--status-error-bg);\n --color-info-bg: var(--status-info-bg);\n --color-success-bg: var(--status-success-bg);\n\n /* A status mark on its own tint: the status colour, nudged to 3:1 where it falls short. */\n --color-attention-line: color-mix(in srgb, var(--status-attention), black 10%);\n --color-error-line: var(--status-error);\n --color-info-line: var(--status-info);\n --color-success-line: var(--status-success);\n /* A status WORD at 4.5:1 on the surface and on `--color-bg-subtle`: the red itself, the green\n 5 % darker (4.13:1 on neutral-2); dark lifts both. A glyph or an edge keeps the line token. */\n --color-error-text: var(--status-error);\n --color-success-text: color-mix(in srgb, var(--status-success), black 5%);\n\n /* --- Navigation (the theme fill; neutral in dark) ---------------------- */\n --color-nav-bg: var(--primary);\n --color-nav-text: var(--ink-white);\n --color-nav-text-sub: var(--alpha-white-82);\n --color-nav-hover: var(--primary-hover);\n --color-nav-active: var(--primary-hover);\n --color-nav-active-edge: var(--ink-white);\n --color-nav-active-text: var(--ink-white);\n --color-nav-line: var(--primary-line);\n --color-nav-disabled: var(--alpha-white-45);\n --color-nav-badge-bg: var(--status-error);\n --color-nav-badge-text: var(--ink-white);\n /* The avatar is white with black initials wherever it stands, in both modes. */\n --color-nav-avatar-bg: var(--ink-white);\n --color-nav-avatar-text: var(--ink-black);\n /* Orange fails on the theme fill (1.89:1 on #01689B, 1:1 on #E17000); white reaches 3:1 on\n all six primaries. Dark re-points it to the orange. */\n --color-focus-on-theme: var(--ink-white);\n /* The theme's ACCENT, not the attention status: on `defensie` the menu is `#E17000` and the\n status colour made the band disappear. `--accent` is document level only. */\n --color-nav-environment-bg: var(--accent);\n --color-nav-environment-text: var(--color-text-on-fill);\n /* The page's surface in both modes. The navigation bar under it is the menu turned a quarter,\n on `--color-nav-*`. */\n --color-logobar-bg: var(--color-bg-surface);\n --color-logobar-text: var(--color-text-primary);\n /* The ribbon in the emblem; only the logo re-points it in dark, never lintblauw elsewhere. */\n --color-logo-ribbon: var(--ribbon-blue);\n /* What marks an entry in that bar. They name the primitives, never `--color-nav-*`: the bar\n points those at these, and the two would refer to each other. */\n --color-navbar-hover: var(--primary-hover);\n --color-navbar-active: var(--primary-hover);\n --color-navbar-active-edge: var(--ink-white);\n --color-navbar-open-text: var(--color-accent-text);\n /* The start page's band is the primary's wash, so it never reads as the menu. The orange ring\n misses 3:1 on it; the ring takes the text colour. */\n --color-hero-bg: var(--primary-wash);\n --color-hero-text: var(--color-text-primary);\n --color-hero-focus: var(--color-text-primary);\n /* The site's foot stands on the menu's own fill, as on rijksoverheid.nl; in dark it follows the menu. */\n --color-footer-bg: var(--color-nav-bg);\n --color-footer-text: var(--color-nav-text);\n --color-footer-line: var(--color-nav-line);\n --color-footer-focus: var(--color-focus-on-theme);\n\n /* The box behind a recognised term: the primary's wash; dark re-points it. */\n --color-term-bg: var(--primary-wash);\n /* The chosen option of a row of options: the primary's wash; dark re-points it. */\n --color-choice-active-bg: var(--primary-wash);\n /* The 2 px line under a term; dark takes the text tint, as the line tint falls short on it. */\n --color-term-line: var(--color-accent-line);\n\n /* --- Data colors ------------------------------------------------------- */\n /* One colour per variable, named after the Rijkshuisstijl colour. */\n --color-chart-sky-blue: var(--data-sky-blue);\n --color-chart-dark-yellow: var(--data-dark-yellow);\n --color-chart-dark-yellow-text: var(--data-dark-yellow-text);\n --color-chart-red: var(--data-red);\n --color-chart-green: var(--data-green);\n --color-chart-mint-green: var(--data-mint-green);\n --color-chart-violet: var(--data-violet);\n --color-chart-orange: var(--data-orange);\n --color-chart-pink: var(--data-pink);\n --color-chart-dark-green: var(--data-dark-green);\n --color-chart-purple: var(--data-purple);\n --color-chart-ruby-red: var(--data-ruby-red);\n --color-chart-yellow: var(--data-yellow);\n --color-chart-dark-brown: var(--data-dark-brown);\n --color-chart-brown: var(--data-brown);\n --color-chart-dark-blue: var(--data-dark-blue);\n --color-chart-light-blue: var(--data-light-blue);\n --color-chart-moss-green: var(--data-moss-green);\n --color-chart-secondary: var(--data-comparison); /* comparison, context */\n --color-chart-other: var(--data-other); /* \"Overig\" */\n --color-chart-remainder: var(--neutral-3); /* the rest of a whole, e.g. a donut's open part */\n --color-chart-emphasis: var(--data-emphasis); /* trend, threshold, target */\n --color-chart-grid: var(--data-grid);\n --color-chart-axis: var(--neutral-5);\n /* The zero line (darker than the grid) and the hatch of missing data carry meaning, so they\n reach 3:1 on the surface: a fifth of the way from neutral-4 to neutral-5 (3.1:1; 4.0:1 dark). */\n --color-chart-zero: color-mix(in srgb, var(--neutral-5) 20%, var(--neutral-4));\n --color-chart-hatch: color-mix(in srgb, var(--neutral-5) 20%, var(--neutral-4));\n /* A speaker's colour under a whole fragment: this share of it over the surface, so text keeps\n its contrast in light and in dark. */\n --tint-speaker: 12%;\n\n /* These map colours stay deliberately neutral so the data is the only colour on the map. */\n --color-map-water: var(--neutral-0);\n --color-map-land: var(--neutral-2);\n --color-map-border: var(--neutral-4);\n /* An area with a figure: 3:1 against the land and the lightest class, which are 1.1:1 apart. */\n --color-map-border-data: var(--neutral-5);\n\n /* The variable a figure draws when its data names none: the first colour of the list, the\n same decision as `DEFAULT_SERIES_COLOR` in `charts/shared/colors.ts`. */\n --color-chart-default: var(--color-chart-sky-blue);\n\n /* Subdivision of one variable: its colour in its tint ladder, strongest first, on the steps\n 100 / 75 / 60 / 45 / 30. Every colour carries its ladder, so a figure that brings a colour\n brings its tints: a renderer names `--color-chart-<colour>` and\n `--color-chart-<colour>-tint-N`, never a --data-* colour. */\n --color-chart-sky-blue-tint-2: var(--data-sky-blue-75);\n --color-chart-sky-blue-tint-3: var(--data-sky-blue-60);\n --color-chart-sky-blue-tint-4: var(--data-sky-blue-45);\n --color-chart-sky-blue-tint-5: var(--data-sky-blue-30);\n\n --color-chart-dark-yellow-tint-2: var(--data-dark-yellow-75);\n --color-chart-dark-yellow-tint-3: var(--data-dark-yellow-60);\n --color-chart-dark-yellow-tint-4: var(--data-dark-yellow-45);\n --color-chart-dark-yellow-tint-5: var(--data-dark-yellow-30);\n\n --color-chart-red-tint-2: var(--data-red-75);\n --color-chart-red-tint-3: var(--data-red-60);\n --color-chart-red-tint-4: var(--data-red-45);\n --color-chart-red-tint-5: var(--data-red-30);\n\n --color-chart-green-tint-2: var(--data-green-75);\n --color-chart-green-tint-3: var(--data-green-60);\n --color-chart-green-tint-4: var(--data-green-45);\n --color-chart-green-tint-5: var(--data-green-30);\n\n --color-chart-mint-green-tint-2: var(--data-mint-green-75);\n --color-chart-mint-green-tint-3: var(--data-mint-green-60);\n --color-chart-mint-green-tint-4: var(--data-mint-green-45);\n --color-chart-mint-green-tint-5: var(--data-mint-green-30);\n\n --color-chart-violet-tint-2: var(--data-violet-75);\n --color-chart-violet-tint-3: var(--data-violet-60);\n --color-chart-violet-tint-4: var(--data-violet-45);\n --color-chart-violet-tint-5: var(--data-violet-30);\n\n --color-chart-orange-tint-2: var(--data-orange-75);\n --color-chart-orange-tint-3: var(--data-orange-60);\n --color-chart-orange-tint-4: var(--data-orange-45);\n --color-chart-orange-tint-5: var(--data-orange-30);\n\n --color-chart-pink-tint-2: var(--data-pink-75);\n --color-chart-pink-tint-3: var(--data-pink-60);\n --color-chart-pink-tint-4: var(--data-pink-45);\n --color-chart-pink-tint-5: var(--data-pink-30);\n\n --color-chart-dark-green-tint-2: var(--data-dark-green-75);\n --color-chart-dark-green-tint-3: var(--data-dark-green-60);\n --color-chart-dark-green-tint-4: var(--data-dark-green-45);\n --color-chart-dark-green-tint-5: var(--data-dark-green-30);\n\n --color-chart-purple-tint-2: var(--data-purple-75);\n --color-chart-purple-tint-3: var(--data-purple-60);\n --color-chart-purple-tint-4: var(--data-purple-45);\n --color-chart-purple-tint-5: var(--data-purple-30);\n\n --color-chart-ruby-red-tint-2: var(--data-ruby-red-75);\n --color-chart-ruby-red-tint-3: var(--data-ruby-red-60);\n --color-chart-ruby-red-tint-4: var(--data-ruby-red-45);\n --color-chart-ruby-red-tint-5: var(--data-ruby-red-30);\n\n --color-chart-yellow-tint-2: var(--data-yellow-75);\n --color-chart-yellow-tint-3: var(--data-yellow-60);\n --color-chart-yellow-tint-4: var(--data-yellow-45);\n --color-chart-yellow-tint-5: var(--data-yellow-30);\n\n --color-chart-dark-brown-tint-2: var(--data-dark-brown-75);\n --color-chart-dark-brown-tint-3: var(--data-dark-brown-60);\n --color-chart-dark-brown-tint-4: var(--data-dark-brown-45);\n --color-chart-dark-brown-tint-5: var(--data-dark-brown-30);\n\n --color-chart-brown-tint-2: var(--data-brown-75);\n --color-chart-brown-tint-3: var(--data-brown-60);\n --color-chart-brown-tint-4: var(--data-brown-45);\n --color-chart-brown-tint-5: var(--data-brown-30);\n\n --color-chart-dark-blue-tint-2: var(--data-dark-blue-75);\n --color-chart-dark-blue-tint-3: var(--data-dark-blue-60);\n --color-chart-dark-blue-tint-4: var(--data-dark-blue-45);\n --color-chart-dark-blue-tint-5: var(--data-dark-blue-30);\n\n --color-chart-light-blue-tint-2: var(--data-light-blue-75);\n --color-chart-light-blue-tint-3: var(--data-light-blue-60);\n --color-chart-light-blue-tint-4: var(--data-light-blue-45);\n --color-chart-light-blue-tint-5: var(--data-light-blue-30);\n\n --color-chart-moss-green-tint-2: var(--data-moss-green-75);\n --color-chart-moss-green-tint-3: var(--data-moss-green-60);\n --color-chart-moss-green-tint-4: var(--data-moss-green-45);\n --color-chart-moss-green-tint-5: var(--data-moss-green-30);\n\n /* The default ladder, for a figure that names no colour: the sky blue's. */\n --color-chart-tint-1: var(--color-chart-sky-blue);\n --color-chart-tint-2: var(--color-chart-sky-blue-tint-2);\n --color-chart-tint-3: var(--color-chart-sky-blue-tint-3);\n --color-chart-tint-4: var(--color-chart-sky-blue-tint-4);\n --color-chart-tint-5: var(--color-chart-sky-blue-tint-5);\n\n /* Sequential scale for ordinal classes (heatmap, choropleth), lightest first. A component names\n these, never a --data-* colour directly. */\n --color-chart-seq-1: var(--data-sky-blue-15);\n --color-chart-seq-2: var(--data-sky-blue-30);\n --color-chart-seq-3: var(--data-sky-blue-45);\n --color-chart-seq-4: var(--data-sky-blue-75);\n --color-chart-seq-5: var(--data-sky-blue);\n}\n\n/* ============================================================================\n Dark mode — the Logius range, no inversion\n\n Redefines the seven `--neutral-*` primitives, re-declares `--primary-hover` lighter and\n re-points the layer-2/3 names whose meaning changes; everything that merely follows a\n neutral is absent on purpose. Page and tiles are both #282828, the border separates them: the\n step below is the menu's, so it stays a band beside the page and under the logo bar.\n ========================================================================= */\n[data-mode='dark'] {\n --neutral-0: #282828;\n --neutral-1: #1D1D1D;\n --neutral-2: #333333;\n --neutral-3: #4A4A4A;\n --neutral-4: #7A7A7A;\n --neutral-5: #B0B0B0;\n --neutral-6: #FFFFFF;\n\n /* The hover goes UP in dark: the light mix would put a near-black fill on the near-black page. */\n --primary-hover: color-mix(in srgb, var(--primary), white 12%);\n\n --color-bg-page: var(--neutral-0);\n --color-bg-title: var(--neutral-0);\n /* The hero's wash sits halfway between the menu (L 0.231) and the page (L 0.277), below the\n page as in light: a panel or tab on it is lighter than its ground. */\n --primary-wash: oklch(from var(--primary) 0.254 min(c, 0.02) h);\n\n /* The filter zone must read as a band, so in dark it steps UP to neutral-2 (neutral-1 turned\n the fields in it into light boxes). `--color-bg-inset` keeps neutral-1: \"sunken\". */\n --color-bg-filter: var(--neutral-2);\n --color-bg-inset: var(--neutral-1);\n\n --color-text-inverse: var(--neutral-1);\n\n /* Colour that must read by itself on #282828 becomes the tint; a FILL keeps the primary. */\n --color-action-primary-border: var(--primary-tint);\n --color-action-secondary-border: var(--primary-tint);\n /* Danger hover: 8 % white is the most that keeps white text at 4.5:1 (4.56:1). The border and\n the word lift the red as the primary's tints do, to 3:1 on #282828 and 4.5:1 on #333333,\n the hover surface; the word's chroma cap keeps it inside sRGB. */\n --color-action-danger-hover: color-mix(in srgb, var(--status-error), white 8%);\n --color-action-danger-border: oklch(from var(--status-error) max(l, 0.58) c h);\n --color-action-danger-text: oklch(from var(--status-error) max(l, 0.71) min(c, 0.18) h);\n /* A status mark at 3:1 on its own tint. */\n --color-attention-line: var(--status-attention);\n --color-error-line: oklch(from var(--status-error) max(l, 0.6) c h);\n --color-info-line: oklch(from var(--status-info) max(l, 0.58) c h);\n --color-success-line: oklch(from var(--status-success) max(l, 0.57) c h);\n /* A status word at 4.5:1 on #333333, lifted as the danger word is. */\n --color-error-text: oklch(from var(--status-error) max(l, 0.71) min(c, 0.18) h);\n --color-success-text: oklch(from var(--status-success) max(l, 0.68) min(c, 0.18) h);\n /* A link is text: the text tint, not the line tint. The hover stays white. */\n --color-link: var(--primary-tint-text);\n --color-link-hover: var(--neutral-6);\n --color-link-on-status: var(--neutral-6);\n --color-accent-line: var(--primary-tint);\n --color-accent-text: var(--primary-tint-text);\n\n /* Lintblauw has too little contrast on the dark surface; the house style lightens it. */\n --color-logo-ribbon: var(--ribbon-blue-dark);\n\n /* The menu is neutral in dark: near-black, in the rail and in the bar alike, so in the top\n layout it stays its own band under the logo bar. Hover and active are one step up, as they\n are one fill in light; the edge is the text tint, as the line tint is 3:1 on neutral-0 only. */\n --color-nav-bg: var(--neutral-1);\n --color-nav-text: var(--neutral-6);\n --color-nav-text-sub: var(--neutral-5);\n --color-nav-hover: var(--neutral-2);\n --color-nav-active: var(--neutral-2);\n --color-nav-active-edge: var(--primary-tint-text);\n --color-navbar-hover: var(--neutral-2);\n --color-navbar-active: var(--neutral-2);\n --color-navbar-active-edge: var(--primary-tint-text);\n /* The open entry's word stands on the panel's surface: full text contrast, not the tint. */\n --color-navbar-open-text: var(--color-text-primary);\n /* The label is 16 px text: the tint is 3.0:1 and needs 4.5:1. The edge keeps the tint. */\n --color-nav-active-text: var(--neutral-6);\n /* The sheet is told from the page by its shadow and this quiet line; 1.66:1 is accepted here. */\n --color-border-popover: var(--neutral-3);\n --color-nav-line: var(--neutral-2);\n --color-nav-disabled: var(--neutral-4);\n /* The menu is neutral here, so its ring is the orange of every other surface. */\n --color-focus-on-theme: var(--color-focus);\n /* The choice edge keeps neutral-4 in dark: it already reaches 3:1 there (3.43:1 on #282828). */\n --color-border-choice: var(--neutral-4);\n\n /* A term's box is the subtle surface: behind a word on #282828 the dark wash would be a hole. */\n --color-term-bg: var(--neutral-2);\n --color-choice-active-bg: var(--neutral-2);\n --color-hero-focus: var(--color-focus);\n --color-term-line: var(--primary-tint-text);\n\n /* Yellow as text works on the dark surface, so the dark gold is not needed. */\n --color-chart-dark-yellow-text: var(--data-dark-yellow);\n --color-map-water: var(--neutral-1);\n\n --shadow-sticky: 0 2px 6px var(--alpha-black-40);\n --shadow-popover: 0 4px 16px var(--alpha-black-55);\n --shadow-nav: 2px 0 8px var(--alpha-black-40);\n --shadow-chart-hover: 0 1px 4px var(--alpha-black-60);\n --shadow-scroll-start: inset 12px 0 10px -10px var(--alpha-black-60);\n --shadow-scroll-end: inset -12px 0 10px -10px var(--alpha-black-60);\n --color-overlay-nav: var(--alpha-black-40);\n}\n\n/* ============================================================================\n Below 768 px the gutter follows the page padding and every pointer target is the touch\n floor.\n ========================================================================= */\n@media (max-width: 767px) {\n :root {\n --grid-gutter: 16px;\n --h-target: var(--h-touch);\n --h-option: var(--h-touch);\n --chart-h-expanded: 320px;\n --w-ribbon: 2.5rem;\n }\n}\n", Be = "/*\n * The reset every shadow root needs, adopted once as one shared `CSSStyleSheet`.\n *\n * `background` and `color` are deliberately not on `:host`: every element has a `:host`, so\n * they would cut the inheritance chain at each boundary (an icon in the navigation would lose\n * its white `currentColor`). Page-level rules (`html, body`) belong to the host page.\n */\n\n:host {\n font: var(--text-ui);\n font-family: var(--font-ui);\n -webkit-font-smoothing: antialiased;\n font-variant-numeric: tabular-nums;\n}\n\n*, *::before, *::after { box-sizing: border-box; }\n\nh1, h2, h3, h4, h5, h6, p, figure { margin: 0; }\nul, ol { margin: 0; padding: 0; list-style: none; }\n\nbutton {\n font: inherit;\n color: inherit;\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n\na { color: var(--color-link); }\n\ninput, select, textarea { font: inherit; color: inherit; }\n\n/* Focus: always orange 3 px, never animated. */\n:focus-visible {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n}\n/* Where the outside would be clipped (tiles in a grid, table rows) the ring sits inside. */\n.focus-inset:focus-visible { outline-offset: calc(var(--focus-width) * -1); }\n\n[hidden] { display: none !important; }\n\n.visually-hidden {\n position: absolute;\n width: 1px; height: 1px;\n padding: 0; margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n\n@keyframes lintje-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n@keyframes lintje-rise {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: none; }\n}\n@keyframes lintje-sheet-in {\n from { transform: translateY(100%); }\n to { transform: none; }\n}\n@keyframes lintje-menu-in {\n from { transform: translateY(-100%); }\n to { transform: none; }\n}\n@keyframes lintje-menu-out {\n from { transform: none; }\n to { transform: translateY(-100%); }\n}\n@keyframes lintje-fade-in { from { opacity: 0; } to { opacity: 1; } }\n@keyframes lintje-drop-in { from { transform: translateY(-10px); } to { transform: none; } }\n@keyframes lintje-popover-in {\n from { opacity: 0; transform: translateY(-6px); }\n to { opacity: 1; transform: none; }\n}\n\n/* prefers-reduced-motion: all durations 0 except opacity (80 ms). */\n@media (prefers-reduced-motion: reduce) {\n :host {\n --dur-base: 0ms; --dur-hover: 0ms; --dur-popover: 0ms; --dur-submenu: 0ms; --dur-toast: 0ms; --dur-scrim: 0ms; --dur-rail: 0ms; --dur-collapse: 0ms;\n --dur-modal: 0ms; --dur-sheet: 0ms; --dur-kpi: 0ms; --dur-badge: 0ms; --dur-draw: 0ms;\n }\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 80ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Forced colours: the browser replaces every colour and drops shadows; what every root shares\n is the focus ring, in the system's Highlight. */\n@media (forced-colors: active) {\n :focus-visible { outline-color: Highlight; }\n}\n";
|
|
524
|
+
var ze = "/* ============================================================================\n Lintje — design tokens\n\n Colour is in three groups: themable UI colour (a theme sets only `--primary` and `--accent`, in\n `themes.css`), fixed data colour (`--data-*`, identical in every\n mode and theme except the two grays) and fixed status colour (`--status-*`).\n\n Three layers, one direction: component -> semantic (`--color-*`) -> primitives. Only the\n primitive blocks may hold a colour literal. To change a colour in one mode, re-point the\n layer-2 name inside `[data-mode='dark']`.\n\n `color-mix(in srgb, …)` and the relative `oklch(from …)` need Chrome/Edge 122+, Firefox 128+\n or Safari 18+;\n `colour-scheme.test.ts` repeats the arithmetic. The `@font-face` rules live in `fonts.css`:\n they cannot work inside a shadow root.\n ========================================================================= */\n\n/* ============================================================================\n Layer 1 — primitives (the only literals)\n ========================================================================= */\n:root {\n /* --- Neutral (light). The one mode-dependent primitive family ----------\n Neutral-5 is the cool-grey step 600, not 500, because it carries muted TEXT:\n #64748B is 4.34:1 on neutral-2, #475569 is 6.92:1. */\n --neutral-0: #FFFFFF;\n --neutral-1: #F8FAFC;\n --neutral-2: #F1F5F9;\n --neutral-3: #E2E8F0;\n --neutral-4: #94A3B8;\n --neutral-5: #475569;\n --neutral-6: #0F172A;\n\n /* --- Fixed ink ---------------------------------------------------------\n The same in both modes because it sits on a fill, not on the page. */\n --ink-white: #FFFFFF;\n --ink-black: #0F172A;\n --alpha-white-82: rgba(255, 255, 255, 0.82);\n --alpha-white-45: rgba(255, 255, 255, 0.45);\n\n /* --- Focus -------------------------------------------------------------\n Its own constant: it must not move with the accent or the attention status. */\n --focus-orange: #E17000;\n\n /* --- The ribbon --------------------------------------------------------\n Lintblauw, and the Rijkshuisstijl's own lighter tint for the ribbon in the logo in dark. */\n --ribbon-blue: #154273;\n --ribbon-blue-dark: #004A8D;\n\n /* --- Data (fixed Rijkshuisstijl, identical in light, dark and every theme)\n The two grays follow the mode: as fixed literals the comparison line landed at 2.69:1\n on the dark surface. Light #475569 / #94A3B8, dark #B0B0B0 / #7A7A7A. The variables\n stand in the order of `tokens/colors.ts`, the one list of their names. */\n --data-sky-blue: #007BC7;\n --data-dark-yellow: #FFB612;\n --data-red: #D52B1E;\n --data-green: #39870C;\n --data-mint-green: #76D2B6;\n --data-violet: #A90061;\n --data-orange: #E17000;\n --data-pink: #F092CD;\n --data-dark-green: #275937;\n --data-purple: #42145F;\n --data-ruby-red: #CA005D;\n --data-yellow: #F9E11E;\n --data-dark-brown: #673328;\n --data-brown: #94710A;\n --data-dark-blue: #01689B;\n --data-light-blue: #8FCAE7;\n --data-moss-green: #777B00;\n /* Sky blue's ladder is written out: the map's areas draw in from the land to these classes,\n and Chromium interpolates a `color-mix()` target wrongly (the land's RGB numbers taken as\n oklab), so the areas flash yellow. The values are its mix with white; the test checks. */\n --data-sky-blue-75: #409CD5;\n --data-sky-blue-60: #66B0DD;\n --data-sky-blue-45: #8CC4E6;\n --data-sky-blue-30: #B2D7EE;\n --data-sky-blue-15: #D9EBF7;\n --data-comparison: var(--neutral-5);\n --data-other: var(--neutral-4);\n /* Yellow as TEXT fails contrast on white: light writes a wait time in this dark gold. */\n --data-dark-yellow-text: #B07A00;\n /* Grid and emphasis follow the surface, like the two grays. */\n --data-grid: var(--neutral-3);\n --data-emphasis: var(--neutral-6);\n\n /* --- Status (fixed) ---------------------------------------------------- */\n --status-success: #39870C;\n --status-warning: #FFB612;\n --status-attention: #E17000;\n --status-error: #D52B1E;\n --status-info: #007BC7;\n\n /* Black at the alphas the shadows and overlays use; the digits are the alpha in percent. */\n --alpha-black-08: rgba(0, 0, 0, 0.08);\n --alpha-black-14: rgba(0, 0, 0, 0.14);\n --alpha-black-16: rgba(0, 0, 0, 0.16);\n --alpha-black-18: rgba(0, 0, 0, 0.18);\n --alpha-black-22: rgba(0, 0, 0, 0.22);\n --alpha-black-40: rgba(0, 0, 0, 0.4);\n --alpha-black-55: rgba(0, 0, 0, 0.55);\n --alpha-black-60: rgba(0, 0, 0, 0.6);\n}\n\n/* ============================================================================\n Layer 1 — derivations\n\n Mixes of the primitives and of the theme's two properties. The tint ladder is 75 / 60 / 45\n / 30 / 15 % of the base over white; every data colour carries the complete ladder.\n ========================================================================= */\n:root {\n /* Darker than the primary in light: a lighter fill under white text lost contrast (2.80:1 on\n orange). The dark block re-declares it lighter. */\n --primary-hover: color-mix(in srgb, var(--primary), black 30%);\n --primary-line: color-mix(in srgb, var(--primary), white 22%);\n /* The dark tints lift only the perceived lightness, so they keep the primary's colour; a mix\n with white greys it. Each lightness is the smallest hundredth that clears its floor in every\n theme: 3:1 on #282828 for a line, 4.5:1 on #333333 (neutral-2), the lightest neutral\n surface a word stands on, for text. A primary that is lighter already keeps its own. */\n --primary-tint: oklch(from var(--primary) max(l, 0.55) c h);\n --primary-tint-text: oklch(from var(--primary) max(l, 0.71) c h);\n /* A wash behind a word or under a band, never a colour that reads by itself. Fixed in\n perceived lightness, so it is equally light in every theme and keeps the primary's hue; an\n sRGB mix with white greys a dark primary. The chroma cap keeps every theme inside sRGB. */\n --primary-wash: oklch(from var(--primary) 0.955 min(c, 0.02) h);\n\n --data-dark-yellow-75: color-mix(in srgb, var(--data-dark-yellow) 75%, white);\n --data-dark-yellow-60: color-mix(in srgb, var(--data-dark-yellow) 60%, white);\n --data-dark-yellow-45: color-mix(in srgb, var(--data-dark-yellow) 45%, white);\n --data-dark-yellow-30: color-mix(in srgb, var(--data-dark-yellow) 30%, white);\n --data-dark-yellow-15: color-mix(in srgb, var(--data-dark-yellow) 15%, white);\n\n --data-red-75: color-mix(in srgb, var(--data-red) 75%, white);\n --data-red-60: color-mix(in srgb, var(--data-red) 60%, white);\n --data-red-45: color-mix(in srgb, var(--data-red) 45%, white);\n --data-red-30: color-mix(in srgb, var(--data-red) 30%, white);\n --data-red-15: color-mix(in srgb, var(--data-red) 15%, white);\n\n --data-green-75: color-mix(in srgb, var(--data-green) 75%, white);\n --data-green-60: color-mix(in srgb, var(--data-green) 60%, white);\n --data-green-45: color-mix(in srgb, var(--data-green) 45%, white);\n --data-green-30: color-mix(in srgb, var(--data-green) 30%, white);\n --data-green-15: color-mix(in srgb, var(--data-green) 15%, white);\n\n --data-mint-green-75: color-mix(in srgb, var(--data-mint-green) 75%, white);\n --data-mint-green-60: color-mix(in srgb, var(--data-mint-green) 60%, white);\n --data-mint-green-45: color-mix(in srgb, var(--data-mint-green) 45%, white);\n --data-mint-green-30: color-mix(in srgb, var(--data-mint-green) 30%, white);\n --data-mint-green-15: color-mix(in srgb, var(--data-mint-green) 15%, white);\n\n --data-violet-75: color-mix(in srgb, var(--data-violet) 75%, white);\n --data-violet-60: color-mix(in srgb, var(--data-violet) 60%, white);\n --data-violet-45: color-mix(in srgb, var(--data-violet) 45%, white);\n --data-violet-30: color-mix(in srgb, var(--data-violet) 30%, white);\n --data-violet-15: color-mix(in srgb, var(--data-violet) 15%, white);\n\n --data-orange-75: color-mix(in srgb, var(--data-orange) 75%, white);\n --data-orange-60: color-mix(in srgb, var(--data-orange) 60%, white);\n --data-orange-45: color-mix(in srgb, var(--data-orange) 45%, white);\n --data-orange-30: color-mix(in srgb, var(--data-orange) 30%, white);\n --data-orange-15: color-mix(in srgb, var(--data-orange) 15%, white);\n\n --data-pink-75: color-mix(in srgb, var(--data-pink) 75%, white);\n --data-pink-60: color-mix(in srgb, var(--data-pink) 60%, white);\n --data-pink-45: color-mix(in srgb, var(--data-pink) 45%, white);\n --data-pink-30: color-mix(in srgb, var(--data-pink) 30%, white);\n --data-pink-15: color-mix(in srgb, var(--data-pink) 15%, white);\n\n --data-dark-green-75: color-mix(in srgb, var(--data-dark-green) 75%, white);\n --data-dark-green-60: color-mix(in srgb, var(--data-dark-green) 60%, white);\n --data-dark-green-45: color-mix(in srgb, var(--data-dark-green) 45%, white);\n --data-dark-green-30: color-mix(in srgb, var(--data-dark-green) 30%, white);\n --data-dark-green-15: color-mix(in srgb, var(--data-dark-green) 15%, white);\n\n --data-purple-75: color-mix(in srgb, var(--data-purple) 75%, white);\n --data-purple-60: color-mix(in srgb, var(--data-purple) 60%, white);\n --data-purple-45: color-mix(in srgb, var(--data-purple) 45%, white);\n --data-purple-30: color-mix(in srgb, var(--data-purple) 30%, white);\n --data-purple-15: color-mix(in srgb, var(--data-purple) 15%, white);\n\n --data-ruby-red-75: color-mix(in srgb, var(--data-ruby-red) 75%, white);\n --data-ruby-red-60: color-mix(in srgb, var(--data-ruby-red) 60%, white);\n --data-ruby-red-45: color-mix(in srgb, var(--data-ruby-red) 45%, white);\n --data-ruby-red-30: color-mix(in srgb, var(--data-ruby-red) 30%, white);\n --data-ruby-red-15: color-mix(in srgb, var(--data-ruby-red) 15%, white);\n\n --data-yellow-75: color-mix(in srgb, var(--data-yellow) 75%, white);\n --data-yellow-60: color-mix(in srgb, var(--data-yellow) 60%, white);\n --data-yellow-45: color-mix(in srgb, var(--data-yellow) 45%, white);\n --data-yellow-30: color-mix(in srgb, var(--data-yellow) 30%, white);\n --data-yellow-15: color-mix(in srgb, var(--data-yellow) 15%, white);\n\n --data-dark-brown-75: color-mix(in srgb, var(--data-dark-brown) 75%, white);\n --data-dark-brown-60: color-mix(in srgb, var(--data-dark-brown) 60%, white);\n --data-dark-brown-45: color-mix(in srgb, var(--data-dark-brown) 45%, white);\n --data-dark-brown-30: color-mix(in srgb, var(--data-dark-brown) 30%, white);\n --data-dark-brown-15: color-mix(in srgb, var(--data-dark-brown) 15%, white);\n\n --data-brown-75: color-mix(in srgb, var(--data-brown) 75%, white);\n --data-brown-60: color-mix(in srgb, var(--data-brown) 60%, white);\n --data-brown-45: color-mix(in srgb, var(--data-brown) 45%, white);\n --data-brown-30: color-mix(in srgb, var(--data-brown) 30%, white);\n --data-brown-15: color-mix(in srgb, var(--data-brown) 15%, white);\n\n --data-dark-blue-75: color-mix(in srgb, var(--data-dark-blue) 75%, white);\n --data-dark-blue-60: color-mix(in srgb, var(--data-dark-blue) 60%, white);\n --data-dark-blue-45: color-mix(in srgb, var(--data-dark-blue) 45%, white);\n --data-dark-blue-30: color-mix(in srgb, var(--data-dark-blue) 30%, white);\n --data-dark-blue-15: color-mix(in srgb, var(--data-dark-blue) 15%, white);\n\n --data-light-blue-75: color-mix(in srgb, var(--data-light-blue) 75%, white);\n --data-light-blue-60: color-mix(in srgb, var(--data-light-blue) 60%, white);\n --data-light-blue-45: color-mix(in srgb, var(--data-light-blue) 45%, white);\n --data-light-blue-30: color-mix(in srgb, var(--data-light-blue) 30%, white);\n --data-light-blue-15: color-mix(in srgb, var(--data-light-blue) 15%, white);\n\n --data-moss-green-75: color-mix(in srgb, var(--data-moss-green) 75%, white);\n --data-moss-green-60: color-mix(in srgb, var(--data-moss-green) 60%, white);\n --data-moss-green-45: color-mix(in srgb, var(--data-moss-green) 45%, white);\n --data-moss-green-30: color-mix(in srgb, var(--data-moss-green) 30%, white);\n --data-moss-green-15: color-mix(in srgb, var(--data-moss-green) 15%, white);\n\n /* 15 % of the status colour over the surface, so one declaration covers both modes. */\n --status-success-bg: color-mix(in srgb, var(--status-success) 15%, var(--neutral-0));\n --status-warning-bg: color-mix(in srgb, var(--status-warning) 15%, var(--neutral-0));\n --status-attention-bg: color-mix(in srgb, var(--status-attention) 15%, var(--neutral-0));\n --status-error-bg: color-mix(in srgb, var(--status-error) 15%, var(--neutral-0));\n --status-info-bg: color-mix(in srgb, var(--status-info) 15%, var(--neutral-0));\n}\n\n/* ============================================================================\n Layers 2 and 3 — semantic and component tokens (light)\n\n No colour literal below this line.\n ========================================================================= */\n:root {\n /* --- Typography -------------------------------------------------------- */\n --font-ui: 'RijksSans', 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n --font-mono: 'Source Code Pro', ui-monospace, SFMono-Regular, Menlo, monospace;\n\n --text-dashboard: 700 1.25rem/1.2 var(--font-ui);\n --text-h1: 700 1.75rem/1.2 var(--font-ui);\n --text-h1-mobile: 700 1.5rem/1.15 var(--font-ui);\n --text-h1-display: 700 2.5rem/1.1 var(--font-ui);\n --text-h2: 700 1.25rem/1.25 var(--font-ui);\n --text-tile-title: 700 1rem/1.3 var(--font-ui);\n --text-tile-sub: 400 0.875rem/1.35 var(--font-ui);\n --text-kpi: 700 2rem/1.1 var(--font-ui);\n --text-kpi-mobile: 700 1.5rem/1.1 var(--font-ui);\n --text-kpi-secondary: 700 1.25rem/1.1 var(--font-ui);\n --text-body: 400 1rem/1.5 var(--font-ui);\n /* The text being translated and its translation: larger than body, read at a glance. */\n --text-translation: 400 1.25rem/1.5 var(--font-ui);\n --text-ui: 400 1rem/1.4 var(--font-ui);\n --text-small: 400 0.875rem/1.45 var(--font-ui);\n --text-meta: 400 0.875rem/1.4 var(--font-ui);\n --text-table: 400 1rem/1.4 var(--font-ui);\n --text-table-head: 700 0.875rem/1.3 var(--font-ui);\n --text-axis: 400 0.75rem/1.2 var(--font-ui);\n\n --label-size: 0.875rem;\n --label-weight: 700;\n --label-tracking: 0.08em;\n --kpi-tracking: -0.02em;\n\n /* --- Spacing (4 px scale) --------------------------------------------- */\n --space-1: 4px;\n --space-2: 8px;\n --space-3: 12px;\n --space-4: 16px;\n --space-5: 20px;\n --space-6: 24px;\n --space-8: 32px;\n --space-10: 40px;\n\n /* --- Component sizes --------------------------------------------------- */\n --h-topbar: 3.5rem;\n --h-contextbar: 3rem;\n --h-mobile-header: 4.5rem;\n --h-control: 3rem;\n --h-button: 3rem;\n --h-button-compact: 2.5rem;\n --h-button-chrome: 2.5rem;\n --h-icon-button: 2.5rem;\n --h-chip: 2rem;\n --h-chip-field: 1.75rem;\n --h-nav-row: 3rem;\n --h-nav-head: 6.5rem;\n --h-table-row: 3rem;\n --h-touch: 3rem;\n /* The smallest pointer target. A box that draws smaller reaches it through a\n transparent hit area (`::after`, negative inset). */\n --h-target: 3rem;\n /* A link in a list of text links: one line of text, the WCAG AA floor, as on rijksoverheid.nl. */\n --h-target-text: 1.5rem;\n /* The two dense exceptions to the target: a date picker day cell and a listbox option row. */\n --h-option: 2.5rem;\n /* The sparkline of a KPI: a line and its area under the figure, with no axes. */\n --h-sparkline: 2rem;\n\n --w-nav: 288px;\n --w-rail: 72px;\n --w-text: 760px;\n --w-message: 560px;\n /* A language choice in the translator's bar. */\n --w-translator-language: 18rem;\n /* The widest the page's content gets. A host sets `--lintje-content-width` to change it. */\n --w-content: 1360px;\n --nav-edge: 4px;\n /* The ribbon is the unit: 48 px, 40 on a phone. Both bars are in rem, so they grow with the\n reader's text size. */\n --w-ribbon: 3rem;\n --h-logobar: calc(2.5 * var(--w-ribbon));\n /* The top bar's height: what pins under the bar measures `--h-topbar`. */\n --h-navbar: var(--h-topbar);\n /* How far what follows the hero stands over its band's lower edge. */\n --hero-overlap: var(--space-10);\n /* The widest the picture beside the hero's text gets: four of the twelve columns at 1440. */\n --w-hero-aside: 400px;\n /* The narrowest a card gets in a card list before the list drops a column. */\n --w-card: 320px;\n /* The same for a horizontal card, whose picture takes a column of its own. */\n --w-card-wide: 480px;\n --w-card-media: 200px;\n --w-card-logo: 3.5rem;\n --w-card-logo-wide: 5rem;\n /* The narrowest thumbnail under a gallery's large picture. */\n --w-gallery-thumb: 120px;\n /* The narrowest column of links in a footer before the columns stand under each other. */\n --w-footer-column: 220px;\n\n --page-pad-y: 32px;\n --page-pad-x: 24px;\n /* What a full-width bar or the content adds to its side padding so what stands in it keeps to\n `--w-content`; the percentage is taken of the box the bar stands in. */\n --page-gutter: max(\n 0px,\n calc((100% - var(--lintje-content-width, var(--w-content)) - 2 * var(--page-pad-x)) / 2)\n );\n --grid-gutter: 24px;\n --tile-pad-y: 20px;\n --tile-pad-x: 24px;\n --chart-h-main: 260px;\n --chart-h-small: 180px;\n --chart-h-expanded: 560px;\n\n /* Sticky context = top bar + summary bar. */\n --h-sticky: calc(var(--h-topbar) + var(--h-contextbar));\n\n --radius: 0px;\n --radius-round: 50%;\n\n --shadow-sticky: 0 2px 6px var(--alpha-black-08);\n --shadow-popover: 0 4px 16px var(--alpha-black-14);\n --shadow-nav: 2px 0 8px var(--alpha-black-08);\n --shadow-chart-hover: 0 1px 4px var(--alpha-black-22);\n --shadow-scroll-start: inset 12px 0 10px -10px var(--alpha-black-18);\n --shadow-scroll-end: inset -12px 0 10px -10px var(--alpha-black-18);\n\n --color-overlay-page: var(--alpha-black-60);\n --color-overlay-nav: var(--alpha-black-16);\n\n --focus-width: 3px;\n --focus-offset: 2px;\n\n /* --- Motion ------------------------------------------------------------ */\n /* `@kind other` marks these for design tooling as neither colors, sizes nor type; the library\n CSS ships unminified so the notes reach it. */\n --ease-in-motion: cubic-bezier(0.2, 0, 0, 1); /* @kind other */\n --ease-out-motion: cubic-bezier(0.4, 0, 1, 1); /* @kind other */\n --dur-base: 200ms; /* @kind other */\n --dur-hover: 120ms; /* @kind other */\n --dur-popover: var(--dur-base); /* @kind other */\n --dur-submenu: 300ms; /* @kind other */\n --dur-toast: var(--dur-base); /* @kind other */\n --dur-scrim: var(--dur-base); /* @kind other */\n --dur-rail: var(--dur-base); /* @kind other */\n --dur-collapse: var(--dur-base); /* @kind other */\n --dur-modal: var(--dur-base); /* @kind other */\n --dur-sheet: var(--dur-base); /* @kind other */\n --dur-kpi: var(--dur-base); /* @kind other */\n --dur-badge: 300ms; /* @kind other */\n --dur-draw: 900ms; /* @kind other */\n --dur-data-label: 300ms; /* @kind other */\n --dur-layer: 400ms; /* @kind other */\n --dur-skeleton: 1200ms; /* @kind other */\n --dur-wave: 600ms; /* @kind other */\n\n /* --- Semantic: surfaces ------------------------------------------------ */\n --color-bg-page: var(--neutral-1);\n --color-bg-surface: var(--neutral-0);\n --color-bg-subtle: var(--neutral-2);\n --color-bg-title: var(--neutral-1);\n /* Between steps 2 and 3: on the cool-grey ramp neutral-2 sits too close to the page to read\n as a band. */\n --color-bg-filter: color-mix(in srgb, var(--neutral-2), var(--neutral-3));\n --color-bg-selected: var(--neutral-2);\n --color-bg-inset: var(--neutral-2);\n\n /* --- Semantic: text ---------------------------------------------------- */\n --color-text-primary: var(--neutral-6);\n --color-text-secondary: var(--neutral-6);\n --color-text-muted: var(--neutral-5);\n --color-text-inverse: var(--neutral-0);\n --color-text-disabled: var(--neutral-4);\n /* A placeholder must stay readable: 4.5:1 on the surface in both modes. */\n --color-text-placeholder: var(--neutral-5);\n --color-text-on-fill: var(--ink-white);\n --color-text-on-light-fill: var(--ink-black);\n --color-qr-bg: var(--ink-white);\n --color-qr-fg: var(--ink-black);\n\n /* --- Semantic: borders ------------------------------------------------- */\n --color-border-default: var(--neutral-3);\n --color-border-strong: var(--neutral-3);\n --color-border-filter: var(--neutral-3);\n --color-border-heavy: var(--neutral-4);\n /* The resting edge of a field box: 3:1 (WCAG 1.4.11) on the surface and the filter band. */\n --color-border-field: var(--neutral-5);\n /* The 2 px edge of a checkbox and a radio: 3:1 on the surface; dark re-points it. */\n --color-border-choice: var(--neutral-5);\n /* In dark a sheet is the same #282828 as the tile under it, so this line separates them. */\n --color-border-popover: var(--neutral-3);\n /* A DASHED outline (a suggestion, an uncertain term): neutral-5, because a dashed line has half\n the ink of a solid one and must still reach 3:1. */\n --color-border-suggestion: var(--neutral-5);\n\n /* --- Semantic: action -------------------------------------------------- */\n --color-action-primary: var(--primary);\n --color-action-primary-hover: var(--primary-hover);\n --color-action-primary-text: var(--ink-white);\n /* A primary fill in dark is a dark box on a dark page (WCAG 1.4.11): it gets a tint border. */\n --color-action-primary-border: var(--primary);\n --color-action-secondary-border: var(--primary);\n /* The destructive fill: the error red, white text on it (5.01:1). Hover is darker in light,\n lighter in dark. In dark the border is a tint, because #D52B1E is 2.94:1 on #282828. */\n --color-action-danger: var(--status-error);\n --color-action-danger-hover: color-mix(in srgb, var(--status-error), black 30%);\n --color-action-danger-border: var(--status-error);\n /* The word of the outlined danger button; dark re-points it (the red is 2.94:1 on #282828). */\n --color-action-danger-text: var(--status-error);\n --color-link: var(--primary);\n --color-link-hover: var(--primary-hover);\n /* A link on a status background: in dark no tint of the primary reaches 4.5:1 there, so it\n reads in the text colour. It is bold and underlined, so colour never carried it alone. */\n --color-link-on-status: var(--primary);\n\n /* The accent splits in three, because a fill, a line and a word have different floors:\n fill (the primary), line (non-text, 3:1: `--primary-tint` in dark) and text (4.5:1:\n `--primary-tint-text` in dark). A word in the line token fails: it is sized for 3:1. */\n --color-accent: var(--primary);\n --color-accent-line: var(--primary);\n --color-accent-text: var(--primary);\n\n --color-focus: var(--focus-orange);\n\n /* --- Semantic: status -------------------------------------------------- */\n --color-attention: var(--status-attention);\n --color-success: var(--status-success);\n --color-warning: var(--status-warning);\n --color-error: var(--status-error);\n --color-info: var(--status-info);\n\n --color-warning-bg: var(--status-warning-bg);\n --color-attention-bg: var(--status-attention-bg);\n --color-error-bg: var(--status-error-bg);\n --color-info-bg: var(--status-info-bg);\n --color-success-bg: var(--status-success-bg);\n\n /* A status mark on its own tint: the status colour, nudged to 3:1 where it falls short. */\n --color-attention-line: color-mix(in srgb, var(--status-attention), black 10%);\n --color-error-line: var(--status-error);\n --color-info-line: var(--status-info);\n --color-success-line: var(--status-success);\n /* A status WORD at 4.5:1 on the surface and on `--color-bg-subtle`: the red itself, the green\n 5 % darker (4.13:1 on neutral-2); dark lifts both. A glyph or an edge keeps the line token. */\n --color-error-text: var(--status-error);\n --color-success-text: color-mix(in srgb, var(--status-success), black 5%);\n\n /* --- Navigation (the theme fill; neutral in dark) ---------------------- */\n --color-nav-bg: var(--primary);\n --color-nav-text: var(--ink-white);\n --color-nav-text-sub: var(--alpha-white-82);\n --color-nav-hover: var(--primary-hover);\n --color-nav-active: var(--primary-hover);\n --color-nav-active-edge: var(--ink-white);\n --color-nav-active-text: var(--ink-white);\n --color-nav-line: var(--primary-line);\n --color-nav-disabled: var(--alpha-white-45);\n --color-nav-badge-bg: var(--status-error);\n --color-nav-badge-text: var(--ink-white);\n /* The avatar is white with black initials wherever it stands, in both modes. */\n --color-nav-avatar-bg: var(--ink-white);\n --color-nav-avatar-text: var(--ink-black);\n /* Orange fails on the theme fill (1.89:1 on #01689B, 1:1 on #E17000); white reaches 3:1 on\n all six primaries. Dark re-points it to the orange. */\n --color-focus-on-theme: var(--ink-white);\n /* The theme's ACCENT, not the attention status: on `defensie` the menu is `#E17000` and the\n status colour made the band disappear. `--accent` is document level only. */\n --color-nav-environment-bg: var(--accent);\n --color-nav-environment-text: var(--color-text-on-fill);\n /* The page's surface in both modes. The navigation bar under it is the menu turned a quarter,\n on `--color-nav-*`. */\n --color-logobar-bg: var(--color-bg-surface);\n --color-logobar-text: var(--color-text-primary);\n /* The ribbon in the emblem; only the logo re-points it in dark, never lintblauw elsewhere. */\n --color-logo-ribbon: var(--ribbon-blue);\n /* What marks an entry in that bar. They name the primitives, never `--color-nav-*`: the bar\n points those at these, and the two would refer to each other. */\n --color-navbar-hover: var(--primary-hover);\n --color-navbar-active: var(--primary-hover);\n --color-navbar-active-edge: var(--ink-white);\n --color-navbar-open-text: var(--color-accent-text);\n /* The start page's band is the primary's wash, so it never reads as the menu. The orange ring\n misses 3:1 on it; the ring takes the text colour. */\n --color-hero-bg: var(--primary-wash);\n --color-hero-text: var(--color-text-primary);\n --color-hero-focus: var(--color-text-primary);\n /* The site's foot stands on the menu's own fill, as on rijksoverheid.nl; in dark it follows the menu. */\n --color-footer-bg: var(--color-nav-bg);\n --color-footer-text: var(--color-nav-text);\n --color-footer-line: var(--color-nav-line);\n --color-footer-focus: var(--color-focus-on-theme);\n\n /* The box behind a recognised term: the primary's wash; dark re-points it. */\n --color-term-bg: var(--primary-wash);\n /* The chosen option of a row of options: the primary's wash; dark re-points it. */\n --color-choice-active-bg: var(--primary-wash);\n /* The 2 px line under a term; dark takes the text tint, as the line tint falls short on it. */\n --color-term-line: var(--color-accent-line);\n\n /* --- Data colors ------------------------------------------------------- */\n /* One colour per variable, named after the Rijkshuisstijl colour. */\n --color-chart-sky-blue: var(--data-sky-blue);\n --color-chart-dark-yellow: var(--data-dark-yellow);\n --color-chart-dark-yellow-text: var(--data-dark-yellow-text);\n --color-chart-red: var(--data-red);\n --color-chart-green: var(--data-green);\n --color-chart-mint-green: var(--data-mint-green);\n --color-chart-violet: var(--data-violet);\n --color-chart-orange: var(--data-orange);\n --color-chart-pink: var(--data-pink);\n --color-chart-dark-green: var(--data-dark-green);\n --color-chart-purple: var(--data-purple);\n --color-chart-ruby-red: var(--data-ruby-red);\n --color-chart-yellow: var(--data-yellow);\n --color-chart-dark-brown: var(--data-dark-brown);\n --color-chart-brown: var(--data-brown);\n --color-chart-dark-blue: var(--data-dark-blue);\n --color-chart-light-blue: var(--data-light-blue);\n --color-chart-moss-green: var(--data-moss-green);\n --color-chart-secondary: var(--data-comparison); /* comparison, context */\n --color-chart-other: var(--data-other); /* \"Overig\" */\n --color-chart-remainder: var(--neutral-3); /* the rest of a whole, e.g. a donut's open part */\n --color-chart-emphasis: var(--data-emphasis); /* trend, threshold, target */\n --color-chart-grid: var(--data-grid);\n --color-chart-axis: var(--neutral-5);\n /* The zero line (darker than the grid) and the hatch of missing data carry meaning, so they\n reach 3:1 on the surface: a fifth of the way from neutral-4 to neutral-5 (3.1:1; 4.0:1 dark). */\n --color-chart-zero: color-mix(in srgb, var(--neutral-5) 20%, var(--neutral-4));\n --color-chart-hatch: color-mix(in srgb, var(--neutral-5) 20%, var(--neutral-4));\n /* A speaker's colour under a whole fragment: this share of it over the surface, so text keeps\n its contrast in light and in dark. */\n --tint-speaker: 12%;\n\n /* These map colours stay deliberately neutral so the data is the only colour on the map. */\n --color-map-water: var(--neutral-0);\n --color-map-land: var(--neutral-2);\n --color-map-border: var(--neutral-4);\n /* An area with a figure: 3:1 against the land and the lightest class, which are 1.1:1 apart. */\n --color-map-border-data: var(--neutral-5);\n\n /* The variable a figure draws when its data names none: the first colour of the list, the\n same decision as `DEFAULT_SERIES_COLOR` in `charts/shared/colors.ts`. */\n --color-chart-default: var(--color-chart-sky-blue);\n\n /* Subdivision of one variable: its colour in its tint ladder, strongest first, on the steps\n 100 / 75 / 60 / 45 / 30. Every colour carries its ladder, so a figure that brings a colour\n brings its tints: a renderer names `--color-chart-<colour>` and\n `--color-chart-<colour>-tint-N`, never a --data-* colour. */\n --color-chart-sky-blue-tint-2: var(--data-sky-blue-75);\n --color-chart-sky-blue-tint-3: var(--data-sky-blue-60);\n --color-chart-sky-blue-tint-4: var(--data-sky-blue-45);\n --color-chart-sky-blue-tint-5: var(--data-sky-blue-30);\n\n --color-chart-dark-yellow-tint-2: var(--data-dark-yellow-75);\n --color-chart-dark-yellow-tint-3: var(--data-dark-yellow-60);\n --color-chart-dark-yellow-tint-4: var(--data-dark-yellow-45);\n --color-chart-dark-yellow-tint-5: var(--data-dark-yellow-30);\n\n --color-chart-red-tint-2: var(--data-red-75);\n --color-chart-red-tint-3: var(--data-red-60);\n --color-chart-red-tint-4: var(--data-red-45);\n --color-chart-red-tint-5: var(--data-red-30);\n\n --color-chart-green-tint-2: var(--data-green-75);\n --color-chart-green-tint-3: var(--data-green-60);\n --color-chart-green-tint-4: var(--data-green-45);\n --color-chart-green-tint-5: var(--data-green-30);\n\n --color-chart-mint-green-tint-2: var(--data-mint-green-75);\n --color-chart-mint-green-tint-3: var(--data-mint-green-60);\n --color-chart-mint-green-tint-4: var(--data-mint-green-45);\n --color-chart-mint-green-tint-5: var(--data-mint-green-30);\n\n --color-chart-violet-tint-2: var(--data-violet-75);\n --color-chart-violet-tint-3: var(--data-violet-60);\n --color-chart-violet-tint-4: var(--data-violet-45);\n --color-chart-violet-tint-5: var(--data-violet-30);\n\n --color-chart-orange-tint-2: var(--data-orange-75);\n --color-chart-orange-tint-3: var(--data-orange-60);\n --color-chart-orange-tint-4: var(--data-orange-45);\n --color-chart-orange-tint-5: var(--data-orange-30);\n\n --color-chart-pink-tint-2: var(--data-pink-75);\n --color-chart-pink-tint-3: var(--data-pink-60);\n --color-chart-pink-tint-4: var(--data-pink-45);\n --color-chart-pink-tint-5: var(--data-pink-30);\n\n --color-chart-dark-green-tint-2: var(--data-dark-green-75);\n --color-chart-dark-green-tint-3: var(--data-dark-green-60);\n --color-chart-dark-green-tint-4: var(--data-dark-green-45);\n --color-chart-dark-green-tint-5: var(--data-dark-green-30);\n\n --color-chart-purple-tint-2: var(--data-purple-75);\n --color-chart-purple-tint-3: var(--data-purple-60);\n --color-chart-purple-tint-4: var(--data-purple-45);\n --color-chart-purple-tint-5: var(--data-purple-30);\n\n --color-chart-ruby-red-tint-2: var(--data-ruby-red-75);\n --color-chart-ruby-red-tint-3: var(--data-ruby-red-60);\n --color-chart-ruby-red-tint-4: var(--data-ruby-red-45);\n --color-chart-ruby-red-tint-5: var(--data-ruby-red-30);\n\n --color-chart-yellow-tint-2: var(--data-yellow-75);\n --color-chart-yellow-tint-3: var(--data-yellow-60);\n --color-chart-yellow-tint-4: var(--data-yellow-45);\n --color-chart-yellow-tint-5: var(--data-yellow-30);\n\n --color-chart-dark-brown-tint-2: var(--data-dark-brown-75);\n --color-chart-dark-brown-tint-3: var(--data-dark-brown-60);\n --color-chart-dark-brown-tint-4: var(--data-dark-brown-45);\n --color-chart-dark-brown-tint-5: var(--data-dark-brown-30);\n\n --color-chart-brown-tint-2: var(--data-brown-75);\n --color-chart-brown-tint-3: var(--data-brown-60);\n --color-chart-brown-tint-4: var(--data-brown-45);\n --color-chart-brown-tint-5: var(--data-brown-30);\n\n --color-chart-dark-blue-tint-2: var(--data-dark-blue-75);\n --color-chart-dark-blue-tint-3: var(--data-dark-blue-60);\n --color-chart-dark-blue-tint-4: var(--data-dark-blue-45);\n --color-chart-dark-blue-tint-5: var(--data-dark-blue-30);\n\n --color-chart-light-blue-tint-2: var(--data-light-blue-75);\n --color-chart-light-blue-tint-3: var(--data-light-blue-60);\n --color-chart-light-blue-tint-4: var(--data-light-blue-45);\n --color-chart-light-blue-tint-5: var(--data-light-blue-30);\n\n --color-chart-moss-green-tint-2: var(--data-moss-green-75);\n --color-chart-moss-green-tint-3: var(--data-moss-green-60);\n --color-chart-moss-green-tint-4: var(--data-moss-green-45);\n --color-chart-moss-green-tint-5: var(--data-moss-green-30);\n\n /* The default ladder, for a figure that names no colour: the sky blue's. */\n --color-chart-tint-1: var(--color-chart-sky-blue);\n --color-chart-tint-2: var(--color-chart-sky-blue-tint-2);\n --color-chart-tint-3: var(--color-chart-sky-blue-tint-3);\n --color-chart-tint-4: var(--color-chart-sky-blue-tint-4);\n --color-chart-tint-5: var(--color-chart-sky-blue-tint-5);\n\n /* Sequential scale for ordinal classes (heatmap, choropleth), lightest first. A component names\n these, never a --data-* colour directly. */\n --color-chart-seq-1: var(--data-sky-blue-15);\n --color-chart-seq-2: var(--data-sky-blue-30);\n --color-chart-seq-3: var(--data-sky-blue-45);\n --color-chart-seq-4: var(--data-sky-blue-75);\n --color-chart-seq-5: var(--data-sky-blue);\n}\n\n/* ============================================================================\n Dark mode — the Logius range, no inversion\n\n Redefines the seven `--neutral-*` primitives, re-declares `--primary-hover` lighter and\n re-points the layer-2/3 names whose meaning changes; everything that merely follows a\n neutral is absent on purpose. Page and tiles are both #282828, the border separates them: the\n step below is the menu's, so it stays a band beside the page and under the logo bar.\n Screen only: paper is always light, whatever the reader chose.\n ========================================================================= */\n@media screen {\n [data-mode='dark'] {\n --neutral-0: #282828;\n --neutral-1: #1D1D1D;\n --neutral-2: #333333;\n --neutral-3: #4A4A4A;\n --neutral-4: #7A7A7A;\n --neutral-5: #B0B0B0;\n --neutral-6: #FFFFFF;\n\n /* The hover goes UP in dark: the light mix would put a near-black fill on the near-black page. */\n --primary-hover: color-mix(in srgb, var(--primary), white 12%);\n\n --color-bg-page: var(--neutral-0);\n --color-bg-title: var(--neutral-0);\n /* The hero's wash sits halfway between the menu (L 0.231) and the page (L 0.277), below the\n page as in light: a panel or tab on it is lighter than its ground. */\n --primary-wash: oklch(from var(--primary) 0.254 min(c, 0.02) h);\n\n /* The filter zone must read as a band, so in dark it steps UP to neutral-2 (neutral-1 turned\n the fields in it into light boxes). `--color-bg-inset` keeps neutral-1: \"sunken\". */\n --color-bg-filter: var(--neutral-2);\n --color-bg-inset: var(--neutral-1);\n\n --color-text-inverse: var(--neutral-1);\n\n /* Colour that must read by itself on #282828 becomes the tint; a FILL keeps the primary. */\n --color-action-primary-border: var(--primary-tint);\n --color-action-secondary-border: var(--primary-tint);\n /* Danger hover: 8 % white is the most that keeps white text at 4.5:1 (4.56:1). The border and\n the word lift the red as the primary's tints do, to 3:1 on #282828 and 4.5:1 on #333333,\n the hover surface; the word's chroma cap keeps it inside sRGB. */\n --color-action-danger-hover: color-mix(in srgb, var(--status-error), white 8%);\n --color-action-danger-border: oklch(from var(--status-error) max(l, 0.58) c h);\n --color-action-danger-text: oklch(from var(--status-error) max(l, 0.71) min(c, 0.18) h);\n /* A status mark at 3:1 on its own tint. */\n --color-attention-line: var(--status-attention);\n --color-error-line: oklch(from var(--status-error) max(l, 0.6) c h);\n --color-info-line: oklch(from var(--status-info) max(l, 0.58) c h);\n --color-success-line: oklch(from var(--status-success) max(l, 0.57) c h);\n /* A status word at 4.5:1 on #333333, lifted as the danger word is. */\n --color-error-text: oklch(from var(--status-error) max(l, 0.71) min(c, 0.18) h);\n --color-success-text: oklch(from var(--status-success) max(l, 0.68) min(c, 0.18) h);\n /* A link is text: the text tint, not the line tint. The hover stays white. */\n --color-link: var(--primary-tint-text);\n --color-link-hover: var(--neutral-6);\n --color-link-on-status: var(--neutral-6);\n --color-accent-line: var(--primary-tint);\n --color-accent-text: var(--primary-tint-text);\n\n /* Lintblauw has too little contrast on the dark surface; the house style lightens it. */\n --color-logo-ribbon: var(--ribbon-blue-dark);\n\n /* The menu is neutral in dark: near-black, in the rail and in the bar alike, so in the top\n layout it stays its own band under the logo bar. Hover and active are one step up, as they\n are one fill in light; the edge is the text tint, as the line tint is 3:1 on neutral-0 only. */\n --color-nav-bg: var(--neutral-1);\n --color-nav-text: var(--neutral-6);\n --color-nav-text-sub: var(--neutral-5);\n --color-nav-hover: var(--neutral-2);\n --color-nav-active: var(--neutral-2);\n --color-nav-active-edge: var(--primary-tint-text);\n --color-navbar-hover: var(--neutral-2);\n --color-navbar-active: var(--neutral-2);\n --color-navbar-active-edge: var(--primary-tint-text);\n /* The open entry's word stands on the panel's surface: full text contrast, not the tint. */\n --color-navbar-open-text: var(--color-text-primary);\n /* The label is 16 px text: the tint is 3.0:1 and needs 4.5:1. The edge keeps the tint. */\n --color-nav-active-text: var(--neutral-6);\n /* The sheet is told from the page by its shadow and this quiet line; 1.66:1 is accepted here. */\n --color-border-popover: var(--neutral-3);\n --color-nav-line: var(--neutral-2);\n --color-nav-disabled: var(--neutral-4);\n /* The menu is neutral here, so its ring is the orange of every other surface. */\n --color-focus-on-theme: var(--color-focus);\n /* The choice edge keeps neutral-4 in dark: it already reaches 3:1 there (3.43:1 on #282828). */\n --color-border-choice: var(--neutral-4);\n\n /* A term's box is the subtle surface: behind a word on #282828 the dark wash would be a hole. */\n --color-term-bg: var(--neutral-2);\n --color-choice-active-bg: var(--neutral-2);\n --color-hero-focus: var(--color-focus);\n --color-term-line: var(--primary-tint-text);\n\n /* Yellow as text works on the dark surface, so the dark gold is not needed. */\n --color-chart-dark-yellow-text: var(--data-dark-yellow);\n --color-map-water: var(--neutral-1);\n\n --shadow-sticky: 0 2px 6px var(--alpha-black-40);\n --shadow-popover: 0 4px 16px var(--alpha-black-55);\n --shadow-nav: 2px 0 8px var(--alpha-black-40);\n --shadow-chart-hover: 0 1px 4px var(--alpha-black-60);\n --shadow-scroll-start: inset 12px 0 10px -10px var(--alpha-black-60);\n --shadow-scroll-end: inset -12px 0 10px -10px var(--alpha-black-60);\n --color-overlay-nav: var(--alpha-black-40);\n }\n}\n\n/* ============================================================================\n Below 768 px the gutter follows the page padding and every pointer target is the touch\n floor. Screen only: a portrait page is narrower than 768 px and keeps the desktop form.\n ========================================================================= */\n@media screen and (max-width: 767px) {\n :root {\n --grid-gutter: 16px;\n --h-target: var(--h-touch);\n --h-option: var(--h-touch);\n --chart-h-expanded: 320px;\n --w-ribbon: 2.5rem;\n }\n}\n\n/* ============================================================================\n Paper — white under the content, since Lintje prints its own fills\n (`print-color-adjust: exact` in base.css): a band in the page's grey would cost ink and\n say nothing.\n ========================================================================= */\n@media print {\n :root {\n /* The paper's margin is the page's edge: bars and content start at it, aligned. */\n --page-pad-x: 0px;\n --color-bg-page: var(--neutral-0);\n --color-bg-title: var(--neutral-0);\n --color-bg-filter: var(--neutral-0);\n }\n}\n\n/* The sheet's own margin, so the content never runs to the paper's edge: room for the browser's\n date, address and page number above and below, and a portrait sheet still wide enough for the\n tablet's form. A custom property does not reach `@page`, so the value stands here. */\n@page { margin: 15mm 12mm; }\n", Be = "/*\n * The reset every shadow root needs, adopted once as one shared `CSSStyleSheet`.\n *\n * `background` and `color` are deliberately not on `:host`: every element has a `:host`, so\n * they would cut the inheritance chain at each boundary (an icon in the navigation would lose\n * its white `currentColor`). Page-level rules (`html, body`) belong to the host page.\n */\n\n:host {\n font: var(--text-ui);\n font-family: var(--font-ui);\n -webkit-font-smoothing: antialiased;\n font-variant-numeric: tabular-nums;\n}\n\n*, *::before, *::after { box-sizing: border-box; }\n\nh1, h2, h3, h4, h5, h6, p, figure { margin: 0; }\nul, ol { margin: 0; padding: 0; list-style: none; }\n\nbutton {\n font: inherit;\n color: inherit;\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n}\n\na { color: var(--color-link); }\n\ninput, select, textarea { font: inherit; color: inherit; }\n\n/* Focus: always orange 3 px, never animated. */\n:focus-visible {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n}\n/* Where the outside would be clipped (tiles in a grid, table rows) the ring sits inside. */\n.focus-inset:focus-visible { outline-offset: calc(var(--focus-width) * -1); }\n\n[hidden] { display: none !important; }\n\n.visually-hidden {\n position: absolute;\n width: 1px; height: 1px;\n padding: 0; margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n\n@keyframes lintje-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n@keyframes lintje-rise {\n from { opacity: 0; transform: translateY(6px); }\n to { opacity: 1; transform: none; }\n}\n@keyframes lintje-sheet-in {\n from { transform: translateY(100%); }\n to { transform: none; }\n}\n@keyframes lintje-menu-in {\n from { transform: translateY(-100%); }\n to { transform: none; }\n}\n@keyframes lintje-menu-out {\n from { transform: none; }\n to { transform: translateY(-100%); }\n}\n@keyframes lintje-fade-in { from { opacity: 0; } to { opacity: 1; } }\n/* A point, on a map or in a scatter plot, grows from its middle. */\n@keyframes lintje-point-grow { from { transform: scale(0); } }\n@keyframes lintje-drop-in { from { transform: translateY(-10px); } to { transform: none; } }\n@keyframes lintje-popover-in {\n from { opacity: 0; transform: translateY(-6px); }\n to { opacity: 1; transform: none; }\n}\n\n/* prefers-reduced-motion: all durations 0 except opacity (80 ms). */\n@media (prefers-reduced-motion: reduce) {\n :host {\n --dur-base: 0ms; --dur-hover: 0ms; --dur-popover: 0ms; --dur-submenu: 0ms; --dur-toast: 0ms; --dur-scrim: 0ms; --dur-rail: 0ms; --dur-collapse: 0ms;\n --dur-modal: 0ms; --dur-sheet: 0ms; --dur-kpi: 0ms; --dur-badge: 0ms; --dur-draw: 0ms;\n }\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 80ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* Forced colours: the browser replaces every colour and drops shadows; what every root shares\n is the focus ring, in the system's Highlight. */\n@media (forced-colors: active) {\n :focus-visible { outline-color: Highlight; }\n}\n\n/* Paper. A fill carries meaning (a legend swatch, a status cell, the current page), so it prints\n even with the browser's background graphics off; the surfaces under it are white in print.\n A drawing in progress would print half drawn, so every mark stands in its final state. */\n@media print {\n *, *::before, *::after {\n print-color-adjust: exact;\n animation: none !important;\n transition: none !important;\n }\n}\n";
|
|
525
525
|
//#endregion
|
|
526
526
|
//#region src/core/styles.ts
|
|
527
527
|
function Ve(e) {
|
|
@@ -629,7 +629,7 @@ function M(e, t) {
|
|
|
629
629
|
}
|
|
630
630
|
//#endregion
|
|
631
631
|
//#region src/core/media.ts
|
|
632
|
-
var et = "(max-width: 767px)", tt = "(min-width: 1440px)", nt = /* @__PURE__ */ new Map();
|
|
632
|
+
var et = "screen and (max-width: 767px)", tt = "(min-width: 1440px)", nt = /* @__PURE__ */ new Map();
|
|
633
633
|
function rt(e) {
|
|
634
634
|
if (typeof matchMedia > "u") return null;
|
|
635
635
|
let t = nt.get(e);
|
|
@@ -766,11 +766,8 @@ function Ct(e) {
|
|
|
766
766
|
e ? localStorage.removeItem(xt) : localStorage.setItem(xt, "off");
|
|
767
767
|
} catch {}
|
|
768
768
|
}
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
}
|
|
772
|
-
var Tt = (e) => !e.ctrl && !e.alt && !e.meta && e.key.length === 1, Et = (e) => /^[a-z]$/i.test(e);
|
|
773
|
-
function Dt(e) {
|
|
769
|
+
var wt = (e) => !e.ctrl && !e.alt && !e.meta && e.key.length === 1, Tt = (e) => /^[a-z]$/i.test(e);
|
|
770
|
+
function Et(e) {
|
|
774
771
|
let t = e === "+" ? ["+"] : e.split("+").filter((e) => e !== "");
|
|
775
772
|
e.endsWith("++") && t.push("+");
|
|
776
773
|
let n = {
|
|
@@ -790,7 +787,7 @@ function Dt(e) {
|
|
|
790
787
|
n.key = a ?? (e.length === 1 ? e.toLowerCase() : e);
|
|
791
788
|
}), n;
|
|
792
789
|
}
|
|
793
|
-
function
|
|
790
|
+
function Dt(e) {
|
|
794
791
|
return [
|
|
795
792
|
e.ctrl ? "Ctrl" : "",
|
|
796
793
|
e.alt ? "Alt" : "",
|
|
@@ -799,10 +796,10 @@ function Ot(e) {
|
|
|
799
796
|
e.key
|
|
800
797
|
].filter(Boolean).join("+");
|
|
801
798
|
}
|
|
802
|
-
function
|
|
803
|
-
return t.ctrlKey !== e.ctrl || t.altKey !== e.alt || t.metaKey !== e.meta || (t.key.length === 1 ? t.key.toLowerCase() : t.key) !== e.key ? !1 : e.key.length === 1 && !
|
|
799
|
+
function Ot(e, t) {
|
|
800
|
+
return t.ctrlKey !== e.ctrl || t.altKey !== e.alt || t.metaKey !== e.meta || (t.key.length === 1 ? t.key.toLowerCase() : t.key) !== e.key ? !1 : e.key.length === 1 && !Tt(e.key) || t.shiftKey === e.shift;
|
|
804
801
|
}
|
|
805
|
-
function
|
|
802
|
+
function kt(e) {
|
|
806
803
|
let t = e.composedPath()[0];
|
|
807
804
|
return t instanceof HTMLElement ? t.isContentEditable || t.getAttribute("contenteditable") === "true" || t instanceof HTMLTextAreaElement || t instanceof HTMLSelectElement ? !0 : t instanceof HTMLInputElement && ![
|
|
808
805
|
"button",
|
|
@@ -815,28 +812,28 @@ function At(e) {
|
|
|
815
812
|
"file"
|
|
816
813
|
].includes(t.type) : !1;
|
|
817
814
|
}
|
|
818
|
-
var
|
|
815
|
+
var At = (e) => {
|
|
819
816
|
if (!(e.defaultPrevented || e.isComposing)) for (let t = F.length - 1; t >= 0; t--) {
|
|
820
817
|
let { chord: n, options: r } = F[t];
|
|
821
|
-
if (
|
|
822
|
-
if (
|
|
818
|
+
if (Ot(n, e) && (!wt(n) || St())) {
|
|
819
|
+
if (kt(e) && (!(n.ctrl || n.alt || n.meta) || !r.inFields)) return;
|
|
823
820
|
e.preventDefault(), r.handler(e);
|
|
824
821
|
return;
|
|
825
822
|
}
|
|
826
823
|
}
|
|
827
824
|
};
|
|
828
|
-
function
|
|
829
|
-
let t =
|
|
825
|
+
function jt(e) {
|
|
826
|
+
let t = Et(e.keys), n = {
|
|
830
827
|
options: e,
|
|
831
828
|
chord: t,
|
|
832
|
-
normalized:
|
|
829
|
+
normalized: Dt(t)
|
|
833
830
|
};
|
|
834
|
-
return F.push(n), !bt && typeof document < "u" && (document.addEventListener("keydown",
|
|
831
|
+
return F.push(n), !bt && typeof document < "u" && (document.addEventListener("keydown", At), bt = !0), () => {
|
|
835
832
|
let e = F.indexOf(n);
|
|
836
|
-
e !== -1 && F.splice(e, 1), !F.length && bt && (document.removeEventListener("keydown",
|
|
833
|
+
e !== -1 && F.splice(e, 1), !F.length && bt && (document.removeEventListener("keydown", At), bt = !1);
|
|
837
834
|
};
|
|
838
835
|
}
|
|
839
|
-
function
|
|
836
|
+
function Mt() {
|
|
840
837
|
let e = /* @__PURE__ */ new Set(), t = [];
|
|
841
838
|
for (let n = F.length - 1; n >= 0; n--) {
|
|
842
839
|
let { options: r, normalized: i } = F[n];
|
|
@@ -848,12 +845,12 @@ function Nt() {
|
|
|
848
845
|
}
|
|
849
846
|
return t;
|
|
850
847
|
}
|
|
851
|
-
function
|
|
852
|
-
let t =
|
|
848
|
+
function Nt(e) {
|
|
849
|
+
let t = Et(e), n = [];
|
|
853
850
|
return t.ctrl && n.push("Ctrl"), t.alt && n.push("Alt"), t.meta && n.push(yt.Meta), t.shift && n.push("Shift"), n.push(yt[t.key] ?? (t.key.length === 1 ? t.key.toUpperCase() : t.key)), n;
|
|
854
851
|
}
|
|
855
|
-
function
|
|
856
|
-
let t =
|
|
852
|
+
function Pt(e) {
|
|
853
|
+
let t = Et(e), n = t.key === " " ? "Space" : t.key.length === 1 ? t.key.toUpperCase() : t.key;
|
|
857
854
|
return [
|
|
858
855
|
t.ctrl ? "Control" : "",
|
|
859
856
|
t.alt ? "Alt" : "",
|
|
@@ -864,7 +861,7 @@ function Ft(e) {
|
|
|
864
861
|
}
|
|
865
862
|
//#endregion
|
|
866
863
|
//#region src/icons/register.ts
|
|
867
|
-
var
|
|
864
|
+
var Ft = {
|
|
868
865
|
"beeld-en-geluid-microfoon": {
|
|
869
866
|
viewBox: "0 0 64 64",
|
|
870
867
|
attributes: {},
|
|
@@ -885,6 +882,11 @@ var It = {
|
|
|
885
882
|
attributes: {},
|
|
886
883
|
body: "<path d=\"M11.958 1C18.035 1.022 22.961 5.933 23 12.009l-.006.39a10.992 10.992 0 0 1-1.3 4.825 10.843 10.843 0 0 1-1.86 2.525l-.063.071a10.78 10.78 0 0 1-2.193 1.686 11.035 11.035 0 0 1-13.574-1.973A11.031 11.031 0 0 1 2.84 5.867a11.18 11.18 0 0 1 1.346-1.638A11.147 11.147 0 0 1 11.958 1Zm5.013 4.266-6.37 7.05-3.83-3.281a1.095 1.095 0 0 0-1.411-.01c-.41.339-.509.923-.234 1.376l4.639 7.659c.196.323.548.521.929.522h.004c.38 0 .732-.195.93-.517l7.084-11.523a1.068 1.068 0 0 0-.282-1.423 1.097 1.097 0 0 0-1.459.147Z\" fill-rule=\"evenodd\"/>"
|
|
887
884
|
},
|
|
885
|
+
"functioneel-cirkelselectie": {
|
|
886
|
+
viewBox: "0 0 24 24",
|
|
887
|
+
attributes: {},
|
|
888
|
+
body: "<path d=\"M12 2.5a9.5 9.5 0 1 0 0 19 9.5 9.5 0 0 0 0-19Zm0 2a7.5 7.5 0 1 1 0 15 7.5 7.5 0 0 1 0-15Z\" fill-rule=\"evenodd\"/><path d=\"M12 9.75a2.25 2.25 0 1 0 2.1 3.25h3.4v-2h-3.4A2.25 2.25 0 0 0 12 9.75Z\"/>"
|
|
889
|
+
},
|
|
888
890
|
"functioneel-darkmode": {
|
|
889
891
|
viewBox: "0 0 24 24",
|
|
890
892
|
attributes: {},
|
|
@@ -945,21 +947,11 @@ var It = {
|
|
|
945
947
|
attributes: {},
|
|
946
948
|
body: "<path d=\"m41 24c0 2.602-1 5-2.398 7l2.797 2.801a15.1 15.1 0 0 0 3.601-9.801c0-8.199-6.801-15-15-15v4c6 0 11 5 11 11zm-7 0a3.36 3.36 0 0 1 -.602 2l2.801 2.801c1-1.402 1.602-3 1.602-4.801a8.03 8.03 0 0 0 -8-8v4c2.398 0 4.199 1.801 4.199 4zm-8-14.602c0-1.199-1.199-1.797-2.199-1.199-.402.199-2.402 1.801-4.402 3.402l6.601 6.797zm-18.602-4.796c-.797-.801-2-.801-2.797 0s-.801 2 0 2.797l8.598 8.601h-3.199c-4.398 0-6 4.199-6 8s1.602 8 6 8h4l9.801 7.602c1 .598 2.199 0 2.199-1.203v-9.797l6 6c-.602.199-1.398.199-2 .199v4c1.801 0 3.602-.402 5.199-1l5.402 5.398a2.15 2.15 0 0 0 1.398.602c.602 0 1-.199 1.398-.602a1.93 1.93 0 0 0 0-2.801zm0 0\"/>"
|
|
947
949
|
},
|
|
948
|
-
"functioneel-home": {
|
|
949
|
-
viewBox: "0 0 48 48",
|
|
950
|
-
attributes: {},
|
|
951
|
-
body: "<path d=\"m45.199 23.199-19-19c-1.199-1.199-3-1.199-4.199 0l-19 19c-.602.602-.801 1.199-.801 2-.199 1.602 1 2.801 2.602 2.801h1.199v16h14v-14h8v14h14v-16h1.199a2.73 2.73 0 0 0 2.801-2.801c0-.801-.199-1.398-.801-2zm0 0\"/>"
|
|
952
|
-
},
|
|
953
950
|
"functioneel-info": {
|
|
954
951
|
viewBox: "0 0 48 48",
|
|
955
952
|
attributes: {},
|
|
956
953
|
body: "<path d=\"m40.391 10.59c-.254-1.547-1.434-2.723-2.98-2.98-4.469-.746-11.922-.746-13.41-.746s-8.941 0-13.41.746c-1.547.258-2.727 1.434-2.98 2.98-.746 4.469-.746 11.922-.746 13.41s0 8.941.746 13.41c.254 1.547 1.434 2.723 2.98 2.98 4.469.746 11.922.746 13.41.746s8.941 0 13.41-.746c1.547-.258 2.727-1.434 2.98-2.98.746-4.469.746-11.922.746-13.41 0-4.473 0-8.941-.746-13.41zm-14.141 25.41h-4.922l.422-10.5v-6h4.5zm-2.234-19.5c-1.68 0-2.641-.941-2.641-2.656 0-1.461.891-2.594 2.609-2.594 1.68 0 2.641.906 2.641 2.594 0 1.488-.891 2.656-2.609 2.656zm0 0\"/>"
|
|
957
954
|
},
|
|
958
|
-
"functioneel-instellingen": {
|
|
959
|
-
viewBox: "0 0 48 48",
|
|
960
|
-
attributes: {},
|
|
961
|
-
body: "<path d=\"m28.008 24c0-2.164-1.797-3.918-4.008-3.918s-4.004 1.754-4.004 3.918 1.793 3.918 4.004 3.918 4.008-1.754 4.008-3.918zm12.383-13.414c-.258-1.547-1.434-2.719-2.98-2.977-4.469-.746-11.922-.746-13.41-.746s-8.941 0-13.414.746a3.59 3.59 0 0 0 -2.98 2.977c-.744 4.473-.744 11.922-.744 13.414s0 8.941.742 13.41a3.59 3.59 0 0 0 2.98 2.98c4.473.746 11.922.746 13.414.746s8.941 0 13.41-.746a3.59 3.59 0 0 0 2.98-2.98c.746-4.469.746-11.922.746-13.41 0-4.473 0-8.941-.746-13.414zm-3.898 14.047c0 .359-.27.77-.594.91l-2.23 1.012c-.332.129-.719.504-.855.832l-.125.301a1.63 1.63 0 0 0 .027 1.184l.879 2.188a1.03 1.03 0 0 1 -.215 1.055l-1.012.992a1.12 1.12 0 0 1 -1.074.227l-2.297-.832a1.78 1.78 0 0 0 -1.199-.008l-.328.129c-.328.137-.703.52-.828.852l-.957 2.16a1.07 1.07 0 0 1 -.906.594h-1.441c-.355 0-.77-.266-.918-.59l-1.023-2.156a1.76 1.76 0 0 0 -.848-.848l-.324-.133a1.74 1.74 0 0 0 -1.191.027l-2.25.871c-.332.133-.812.035-1.066-.215l-1.016-.992c-.258-.25-.359-.727-.23-1.059l.84-2.238c.145-.324.152-.863.012-1.191l-.125-.297a1.71 1.71 0 0 0 -.863-.816l-2.223-.945a1.05 1.05 0 0 1 -.602-.898v-1.387c0-.355.27-.766.594-.91l2.227-1.004a1.78 1.78 0 0 0 .859-.832l.125-.301c.137-.328.125-.863-.027-1.184l-.879-2.187c-.137-.332-.039-.805.215-1.055l1.012-.992a1.12 1.12 0 0 1 1.074-.227l2.305.828a1.78 1.78 0 0 0 1.199.008l.316-.129a1.68 1.68 0 0 0 .828-.852l.961-2.156a1.07 1.07 0 0 1 .906-.598h1.441a1.11 1.11 0 0 1 .922.59l1.02 2.16c.133.332.516.711.848.848l.32.129c.332.137.871.125 1.195-.023l2.25-.871c.332-.133.813-.035 1.07.215l1.012.988c.254.25.359.727.23 1.059l-.84 2.238a1.74 1.74 0 0 0 -.012 1.191l.129.301c.137.328.527.695.863.816l2.219.945c.332.133.602.539.602.895zm0 0\"/>"
|
|
962
|
-
},
|
|
963
955
|
"functioneel-kalender": {
|
|
964
956
|
viewBox: "0 0 48 48",
|
|
965
957
|
attributes: {},
|
|
@@ -970,6 +962,11 @@ var It = {
|
|
|
970
962
|
attributes: {},
|
|
971
963
|
body: "<path d=\"m24 2a21.94 21.94 0 0 0 -22 22 21.94 21.94 0 0 0 22 22 21.94 21.94 0 0 0 22-22 21.94 21.94 0 0 0 -22-22zm0 39a16.99 16.99 0 1 1 0-34 16.99 16.99 0 1 1 0 34zm10.398-18.199-8.398-.602-.602-10.801c0-.797-.598-1.199-1.398-1.199s-1.398.602-1.398 1.199l-.602 12.403c0 1 .801 2 1.801 2 .398 0 2 0 10.398-.602.801 0 1.402-.598 1.402-1.199.199-.398 0-1-1.203-1.199zm0 0\"/>"
|
|
972
964
|
},
|
|
965
|
+
"functioneel-kolommen": {
|
|
966
|
+
viewBox: "0 0 24 24",
|
|
967
|
+
attributes: {},
|
|
968
|
+
body: "<path d=\"M3.9 4h3a.9.9 0 0 1 .9.9v14.2a.9.9 0 0 1-.9.9h-3a.9.9 0 0 1-.9-.9V4.9a.9.9 0 0 1 .9-.9Zm.7 1.6v12.8h1.6V5.6ZM10.5 4h3a.9.9 0 0 1 .9.9v14.2a.9.9 0 0 1-.9.9h-3a.9.9 0 0 1-.9-.9V4.9a.9.9 0 0 1 .9-.9Zm.7 1.6v12.8h1.6V5.6ZM17.1 4h3a.9.9 0 0 1 .9.9v14.2a.9.9 0 0 1-.9.9h-3a.9.9 0 0 1-.9-.9V4.9a.9.9 0 0 1 .9-.9Zm.7 1.6v12.8h1.6V5.6Z\" fill-rule=\"evenodd\"/>"
|
|
969
|
+
},
|
|
973
970
|
"functioneel-kopieren": {
|
|
974
971
|
viewBox: "0 0 24 24",
|
|
975
972
|
attributes: {},
|
|
@@ -980,6 +977,11 @@ var It = {
|
|
|
980
977
|
attributes: {},
|
|
981
978
|
body: "<path d=\"m35.375 8.426-11.355 10.058-11.352-10.058a3.09 3.09 0 0 0 -4.16.063c-1.09 1.16-1.117 2.965-.059 4.156l10.055 11.355-10.055 11.355c-1.059 1.191-1.031 2.996.059 4.156a3.09 3.09 0 0 0 4.16.063l11.352-10.058 11.355 10.059c1.191 1.055 2.996 1.031 4.156-.062a3.08 3.08 0 0 0 .063-4.156l-10.055-11.357 10.055-11.355a3.08 3.08 0 0 0 -.062-4.156c-1.16-1.094-2.965-1.117-4.156-.062zm-11.355 15.601-.028-.027.027-.027.016.012.016.016-.016.016zm0 0\"/>"
|
|
982
979
|
},
|
|
980
|
+
"functioneel-lasso": {
|
|
981
|
+
viewBox: "0 0 24 24",
|
|
982
|
+
attributes: {},
|
|
983
|
+
body: "<path d=\"M13 2.5c-5.2 0-9.5 2.9-9.5 6.5 0 1.8 1.1 3.5 2.9 4.7l-.3.8a2.2 2.2 0 0 0 .3 3.3c-.3 1.6.4 3.3 2.2 4.5l1.1-1.6c-1.2-.8-1.6-1.8-1.5-2.7a2.2 2.2 0 0 0 1.4-2.6l.3-.7c1 .3 2 .4 3.1.4 5.2 0 9.5-2.9 9.5-6.5S18.2 2.5 13 2.5Zm0 2c4.3 0 7.5 2.3 7.5 4.5S17.3 13.5 13 13.5c-1 0-2-.1-2.8-.4a2.2 2.2 0 0 0-2.7-.6C6.3 11.7 5.5 10.4 5.5 9c0-2.2 3.2-4.5 7.5-4.5Z\" fill-rule=\"evenodd\"/>"
|
|
984
|
+
},
|
|
983
985
|
"functioneel-locatiemarker": {
|
|
984
986
|
viewBox: "0 0 48 48",
|
|
985
987
|
attributes: {},
|
|
@@ -1020,11 +1022,31 @@ var It = {
|
|
|
1020
1022
|
attributes: {},
|
|
1021
1023
|
body: "<path d=\"m12 2h24v6h-24zm32 8h-40c-1 0-2 .801-2 2v16c0 1.199.801 2 2 2h6v3.199c0 .602.199 1 .602 1.402l8.797 8.797c.402.402.801.602 1.402.602h15.199c1.199 0 2-.801 2-2v-12h6c1.199 0 2-.801 2-2v-16c0-1.199-1-2-2-2zm-10 30h-12v-6c0-1.199-.801-2-2-2h-6v-8h20zm8-22h-4v-4h4zm0 0\"/>"
|
|
1022
1024
|
},
|
|
1025
|
+
"functioneel-punaise-outline": {
|
|
1026
|
+
viewBox: "0 0 24 24",
|
|
1027
|
+
attributes: {},
|
|
1028
|
+
body: "<path d=\"M8 2h8a1 1 0 0 1 0 2h-.8v5.6l3.2 3.2c.4.4.6.9.6 1.4v.8c0 .5-.4 1-1 1H13v5.2l-1 1.8-1-1.8V16H6c-.6 0-1-.5-1-1v-.8c0-.5.2-1 .6-1.4l3.2-3.2V4H8a1 1 0 0 1 0-2Zm2.8 2v6.4l-3.6 3.6h9.6l-3.6-3.6V4h-2.4Z\" fill-rule=\"evenodd\"/>"
|
|
1029
|
+
},
|
|
1030
|
+
"functioneel-punaise": {
|
|
1031
|
+
viewBox: "0 0 24 24",
|
|
1032
|
+
attributes: {},
|
|
1033
|
+
body: "<path d=\"M8 2h8a1 1 0 0 1 0 2h-.8v5.6l3.2 3.2c.4.4.6.9.6 1.4v.8c0 .5-.4 1-1 1H13v5.2l-1 1.8-1-1.8V16H6c-.6 0-1-.5-1-1v-.8c0-.5.2-1 .6-1.4l3.2-3.2V4H8a1 1 0 0 1 0-2Z\"/>"
|
|
1034
|
+
},
|
|
1035
|
+
"functioneel-rechthoekselectie": {
|
|
1036
|
+
viewBox: "0 0 24 24",
|
|
1037
|
+
attributes: {},
|
|
1038
|
+
body: "<path d=\"M3 4h18v12h-2V6H5v12h9v2H3V4Z\"/><path d=\"M16 15.5a1 1 0 0 1 1.4-.9l4 1.9a.8.8 0 0 1-.1 1.5l-1.5.4-.4 1.5a.8.8 0 0 1-1.5.1l-1.9-4a1 1 0 0 1 0-.5Z\"/>"
|
|
1039
|
+
},
|
|
1023
1040
|
"functioneel-refresh": {
|
|
1024
1041
|
viewBox: "0 0 48 48",
|
|
1025
1042
|
attributes: {},
|
|
1026
1043
|
body: "<path d=\"m38 24c0 5-2.602 9.602-7 12.199-6.602 3.801-15.199 1.602-19.199-5.199-3.801-6.801-1.403-15.398 5.199-19.199 5.398-3 12-2.199 16.398 2l-3.598.398c-.801 0-1.402.801-1.402 1.402 0 .797.402 1.398 1.203 1.598l10.399 2.403c.398.199 1 0 1.398-.402.403-.2.602-.598.602-1.2v-10.602c0-.797-.602-1.398-1.199-1.598-.801-.199-1.402.398-1.801 1l-1 3c-6.199-6.199-16.199-7.602-24-3-9.602 5.399-12.801 17.598-7.398 27.2 3.597 6.398 10.398 10 17.398 10 3.398 0 6.801-.801 10-2.602 6.199-3.597 10-10.199 10-17.398zm0 0\"/>"
|
|
1027
1044
|
},
|
|
1045
|
+
"functioneel-selectie": {
|
|
1046
|
+
viewBox: "0 0 24 24",
|
|
1047
|
+
attributes: {},
|
|
1048
|
+
body: "<path d=\"M3 3h4v2H5v2H3V3Zm6 0h4v2H9V3Zm6 0h4v4h-2V5h-2V3ZM3 9h2v4H3V9Zm14 0h2v3h-2V9ZM3 15h2v2h2v2H3v-4Zm6 4h3v2H9v-2Z\"/><path d=\"M13 12.5a1 1 0 0 1 1.4-.9l6.8 3.2a.8.8 0 0 1-.1 1.5l-2.7.7-.7 2.7a.8.8 0 0 1-1.5.1L13 13a1 1 0 0 1 0-.5Z\"/>"
|
|
1049
|
+
},
|
|
1028
1050
|
"functioneel-sleep": {
|
|
1029
1051
|
viewBox: "0 0 24 24",
|
|
1030
1052
|
attributes: {},
|
|
@@ -1040,6 +1062,11 @@ var It = {
|
|
|
1040
1062
|
attributes: {},
|
|
1041
1063
|
body: "<path d=\"m38.684 18h-15.856l4.754-7.141c.68-1.02.512-2.383-.398-3.207a2.49 2.49 0 0 0 -1.867-.645c-.488.031-.973.211-1.383.535l-16.993 13.517c-.594.469-.937 1.188-.937 1.941a2.49 2.49 0 0 0 .938 1.941l16.992 13.516c.461.363 1.012.543 1.563.543.605 0 1.211-.219 1.688-.652.91-.824 1.078-2.187.398-3.207l-4.755-7.141h15.855c2.555 0 3.317-2.809 3.317-5.301s-.762-4.699-3.316-4.699zm0 0\"/>"
|
|
1042
1064
|
},
|
|
1065
|
+
"functioneel-trechter": {
|
|
1066
|
+
viewBox: "0 0 24 24",
|
|
1067
|
+
attributes: {},
|
|
1068
|
+
body: "<path d=\"M3.6 4h16.8a.9.9 0 0 1 .7 1.47l-6.5 7.83v5.6a.9.9 0 0 1-.5.8l-3 1.5a.9.9 0 0 1-1.3-.8v-7.1L2.9 5.47A.9.9 0 0 1 3.6 4Zm1.9 1.8 5.6 6.7a.9.9 0 0 1 .2.58v6.04l1.5-.75v-5.29a.9.9 0 0 1 .2-.58l5.6-6.7Z\" fill-rule=\"evenodd\"/>"
|
|
1069
|
+
},
|
|
1043
1070
|
"functioneel-uitloggen": {
|
|
1044
1071
|
viewBox: "0 0 24 24",
|
|
1045
1072
|
attributes: {},
|
|
@@ -1100,16 +1127,6 @@ var It = {
|
|
|
1100
1127
|
attributes: {},
|
|
1101
1128
|
body: "<path d=\"m0 0h64v64h-64z\" fill=\"none\"/><path d=\"m25.3321 6.1345-2.0177 5.8167c-1.5646.4527-3.052 1.08-4.4418 1.8659l-5.5687-2.7003c-.6468-.3137-1.4213-.1831-1.9295.3251-1.8 1.8001-1.1346 1.1346-2.9326 2.9326-.5082.5082-.6388 1.2827-.3251 1.9295l2.7253 5.6202c-.751 1.3627-1.3406 2.8227-1.774 4.3497l-5.9335 2.0582c-.6792.2356-1.1345.8755-1.1345 1.5943v4.1472c0 .7188.4553 1.3587 1.1345 1.5943l5.9493 2.0637c.4348 1.5144 1.0258 2.9611 1.7733 4.3132l-2.7404 5.6513c-.3137.6468-.1831 1.4213.3251 1.9295 1.8001 1.8 1.1346 1.1346 2.9326 2.9326.5082.5082 1.2827.6388 1.9295.3251l5.6199-2.7251c1.3686.7687 2.832 1.3828 4.3694 1.8294l2.0389 5.8779c.2356.6792.8755 1.1345 1.5943 1.1345h3.0736v-18.8266c-.3284.0398-.6608.0666-1 .0666-4.5508 0-8.24-3.6891-8.24-8.24s3.6891-8.24 8.24-8.24c.3392 0 .6716.0268 1 .0666v-18.8266c-1.0243 0-1.9494 0-3.0736 0-.7188 0-1.3587.4553-1.5943 1.1345z\"/><path d=\"m56.4597 18.2619c-.9368 1.3607-2.035 2.1028-2.5842 2.4344-.3743.2261-.5553.1334-.625.0277.5175-.9286 1.545-1.9612 1.8037-4.1695.5469-4.6689-2.7309-7.6347-7.046-6.7027-2.202.4755-3.1174 1.6548-3.9827 2.2869-.11-.0599-.219-.2343-.0375-.638.3029-.6736 1.0467-2.1241 2.6442-3.3198-2.0998-2.5516-5.3422-3.8409-8.3787-3.0182-1.8707.5068-3.3339 1.7326-4.2535 3.3427v16.5745c1.137-1.3279 2.8383-2.157 4.2604-2.3041.4833-.05.85-.05.8081.2855-3.8585 2.1403-5.0526 6.2694-5.0526 9.6201 0 0-.0085-.0154-.0159-.0287v3.4125c2.7195-.9948 6.6523.5735 7.4603 4.2599.1595.728-.1895.7773-.1895.7773-.0007-.0196-.7006-1.5947-2.4891-2.5005-1.547-.7835-3.2694-.7393-4.7818-.0375v16.9331c.9218 1.6047 2.387 2.8242 4.2535 3.3298 3.2304.8752 7.3005-.3219 9.3547-4.4847-1.6866-.7966-2.5984-1.925-2.9814-2.454-.2289-.3162-.1509-.4777-.0554-.5428.8576.3952 1.8273 1.1967 3.7447 1.3754 5.3935.5027 9.2785-4.3926 7.5309-8.8385-.5915-1.5048-1.5737-2.1742-2.1412-2.8269.0508-.0983.2086-.2005.5944-.0596.481.1757 1.3794.552 2.3003 1.2874 3.8477-1.9865 5.5184-7.1115 2.923-11.8442 3.2212-4.9393 1.1661-10.4082-3.0637-12.1775zm-18.884-3.7363c.1496-.3161.3948-.5866.5424-.4489-.0057 1.5189 1.3575 4.7581 6.0538 3.4775 1.436-.3975 2.5232-1.0786 3.8069-1.9644.1677.0311.176.21.0157.4925-.8182 1.4423-2.2335 3.397-5.8046 3.6405-4.1617.3227-5.6461-3.0164-4.6142-5.1972zm3.7179 17.9331c-1.644-1.2926-1.5016-5.3531 1.3011-6.9296 1.59-.8944 3.8758-.2982 5.5991.1456 2.6202.6747 4.4614.6252 6.6873-.3674.1786.335-.0214.6517-.2714.935-1.2223 1.3853-3.705 1.7718-5.788 1.5767-2.5236-.2364-3.2969-1.0359-5.2844-.1415-2.5067 1.1281-1.5673 4.8135-1.5451 4.8554-.1819.3091-.4844.0941-.6986-.0742zm8.3018 14.8819c-.3134-.7933-1.3-1.816-2.7258-2.1866-1.4886-.3867-3.3753-.0684-4.9788 1.0889-2.799 2.0198-2.6901 4.5175-2.6911 4.5413 0 0-.4391.1696-.4559-.6763-.0284-1.4266.5886-4.3583 2.4884-5.7824 3.765-2.8222 8.3582-1.0955 8.6945 2.0992.0666.6333-.0334.95-.3313.9159zm6.7083-9.8518c-2.1619-2.5216-4.9835-3.7319-7.5697-2.037-1.7897 1.1729-2.9113 3.4847-2.9097 3.5055 0 0-.3239.0415-.2475-.6321.1077-.9494.7598-2.842 2.0525-4.1174 2.7535-2.7166 7.7401-1.7885 8.7137 2.3842.1167.4998.2.7331-.0393.8968z\"/>"
|
|
1102
1129
|
},
|
|
1103
|
-
"kantoor-label-outline": {
|
|
1104
|
-
viewBox: "0 0 24 24",
|
|
1105
|
-
attributes: {},
|
|
1106
|
-
body: "<path d=\"m11.996 19.496 1.997-1.006.782.397-1.593 1.215 5.63 2.848c.312.15.688-.055.688-.374V1h-15v21.394c0 .402.474.66.867.47l6.629-3.368Zm-5.696.875 5.695-2.893 5.705 2.89V2.8H6.3v17.571Z\" fill-rule=\"evenodd\"/>"
|
|
1107
|
-
},
|
|
1108
|
-
"kantoor-label": {
|
|
1109
|
-
viewBox: "0 0 24 24",
|
|
1110
|
-
attributes: {},
|
|
1111
|
-
body: "<path d=\"M4.5 1v21.394c0 .402.474.66.867.47L17.2 16.853s.105.088-.017.196c-.072.064-2.554 1.96-3.992 3.057l5.62 2.845c.313.15.689-.054.689-.374V1h-15Z\" fill-rule=\"evenodd\"/>"
|
|
1112
|
-
},
|
|
1113
1130
|
"lichaam-duim-omhoog": {
|
|
1114
1131
|
viewBox: "0 0 64 64",
|
|
1115
1132
|
attributes: {},
|
|
@@ -1184,7 +1201,7 @@ var It = {
|
|
|
1184
1201
|
update(e, t) {
|
|
1185
1202
|
return this.render(...t);
|
|
1186
1203
|
}
|
|
1187
|
-
},
|
|
1204
|
+
}, It = class extends z {
|
|
1188
1205
|
constructor(e) {
|
|
1189
1206
|
if (super(e), this.it = T, e.type !== L.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings");
|
|
1190
1207
|
}
|
|
@@ -1202,13 +1219,13 @@ var It = {
|
|
|
1202
1219
|
};
|
|
1203
1220
|
}
|
|
1204
1221
|
};
|
|
1205
|
-
|
|
1206
|
-
var
|
|
1207
|
-
|
|
1208
|
-
var
|
|
1222
|
+
It.directiveName = "unsafeHTML", It.resultType = 1;
|
|
1223
|
+
var Lt = R(It), Rt = class extends It {};
|
|
1224
|
+
Rt.directiveName = "unsafeSVG", Rt.resultType = 2;
|
|
1225
|
+
var zt = R(Rt);
|
|
1209
1226
|
//#endregion
|
|
1210
1227
|
//#region src/core/style-props.ts
|
|
1211
|
-
function
|
|
1228
|
+
function Bt(e) {
|
|
1212
1229
|
return e.includes("-") ? e : e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase();
|
|
1213
1230
|
}
|
|
1214
1231
|
var B = R(class extends z {
|
|
@@ -1222,120 +1239,120 @@ var B = R(class extends z {
|
|
|
1222
1239
|
let { style: n } = e.element, r = /* @__PURE__ */ new Set();
|
|
1223
1240
|
for (let [e, i] of Object.entries(t)) {
|
|
1224
1241
|
if (i == null || i === !1) continue;
|
|
1225
|
-
let t =
|
|
1242
|
+
let t = Bt(e);
|
|
1226
1243
|
r.add(t), n.setProperty(t, String(i));
|
|
1227
1244
|
}
|
|
1228
1245
|
for (let e of this.applied) r.has(e) || n.removeProperty(e);
|
|
1229
1246
|
return this.applied = r, T;
|
|
1230
1247
|
}
|
|
1231
|
-
}),
|
|
1248
|
+
}), Vt = [
|
|
1232
1249
|
"fill",
|
|
1233
1250
|
"stroke",
|
|
1234
1251
|
"stroke-width",
|
|
1235
1252
|
"stroke-linecap",
|
|
1236
1253
|
"stroke-linejoin"
|
|
1237
|
-
],
|
|
1238
|
-
function
|
|
1239
|
-
return e.fill === "none" && !
|
|
1254
|
+
], Ht = /(fill|stroke)="(#000|#000000|black)"/g, Ut = /\s(?:fill|stroke)="(?!none")[^"]*"/, Wt = (e) => e.startsWith("embleem-"), V = (e, t) => e.match(RegExp(`\\s${t}\\s*=\\s*"([^"]*)"`))?.[1];
|
|
1255
|
+
function Gt(e, t) {
|
|
1256
|
+
return e.fill === "none" && !Ut.test(t.replace(Ht, ""));
|
|
1240
1257
|
}
|
|
1241
|
-
function
|
|
1258
|
+
function Kt(e) {
|
|
1242
1259
|
return e.replace(/<(script|style)\b[\s\S]*?<\/\1>/gi, "").replace(/<(script|style)\b[^>]*\/>/gi, "").replace(/\sstyle\s*=\s*"[^"]*"/gi, "").replace(/\sstyle\s*=\s*'[^']*'/gi, "").replace(/\son[a-z]+\s*=\s*"[^"]*"/gi, "").replace(/\son[a-z]+\s*=\s*'[^']*'/gi, "").replace(/\s+/g, " ").trim();
|
|
1243
1260
|
}
|
|
1244
|
-
function
|
|
1261
|
+
function qt(e, t, n) {
|
|
1245
1262
|
let r = {};
|
|
1246
|
-
for (let e of
|
|
1263
|
+
for (let e of Vt) {
|
|
1247
1264
|
let n = V(t, e);
|
|
1248
1265
|
n !== void 0 && (r[e] = n);
|
|
1249
1266
|
}
|
|
1250
|
-
|
|
1267
|
+
Gt(r, Kt(n)) && delete r.fill;
|
|
1251
1268
|
for (let [e, t] of Object.entries(r)) /^(#000|#000000|black)$/.test(t) && (r[e] = "currentColor");
|
|
1252
1269
|
return r;
|
|
1253
1270
|
}
|
|
1254
|
-
function
|
|
1255
|
-
let r =
|
|
1256
|
-
for (let e of
|
|
1271
|
+
function Jt(e, t, n) {
|
|
1272
|
+
let r = Kt(n), i = {};
|
|
1273
|
+
for (let e of Vt) {
|
|
1257
1274
|
let n = V(t, e);
|
|
1258
1275
|
n !== void 0 && (i[e] = n);
|
|
1259
1276
|
}
|
|
1260
|
-
return
|
|
1277
|
+
return Wt(e) || Gt(i, r) ? r.replace(Ht, "$1=\"currentColor\"") : r;
|
|
1261
1278
|
}
|
|
1262
|
-
function
|
|
1279
|
+
function Yt(e) {
|
|
1263
1280
|
let t = V(e, "width"), n = V(e, "height");
|
|
1264
1281
|
return t && n ? `0 0 ${parseFloat(t)} ${parseFloat(n)}` : "0 0 24 24";
|
|
1265
1282
|
}
|
|
1266
|
-
function
|
|
1283
|
+
function Xt(e, t) {
|
|
1267
1284
|
let n = t.indexOf("<svg"), r = t.indexOf(">", n), i = t.slice(n, r + 1), a = t.slice(r + 1, t.lastIndexOf("</svg>"));
|
|
1268
1285
|
return {
|
|
1269
|
-
viewBox: V(i, "viewBox") ??
|
|
1270
|
-
attributes:
|
|
1271
|
-
body:
|
|
1286
|
+
viewBox: V(i, "viewBox") ?? Yt(i),
|
|
1287
|
+
attributes: qt(e, i, a),
|
|
1288
|
+
body: Jt(e, i, a)
|
|
1272
1289
|
};
|
|
1273
1290
|
}
|
|
1274
1291
|
//#endregion
|
|
1275
1292
|
//#region src/icons/loader.ts
|
|
1276
|
-
var H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Set(),
|
|
1277
|
-
function
|
|
1293
|
+
var H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Set(), Zt = /* @__PURE__ */ new Map(), Qt = /* @__PURE__ */ new Set(), W = { base: "/icons/" };
|
|
1294
|
+
function $t(e) {
|
|
1278
1295
|
let t = W;
|
|
1279
1296
|
W = {
|
|
1280
1297
|
...e,
|
|
1281
1298
|
base: e.base.endsWith("/") ? e.base : `${e.base}/`
|
|
1282
|
-
}, (W.base !== t.base || W.version !== t.version) && U.size && (U.clear(),
|
|
1299
|
+
}, (W.base !== t.base || W.version !== t.version) && U.size && (U.clear(), on());
|
|
1283
1300
|
}
|
|
1284
|
-
function
|
|
1301
|
+
function en() {
|
|
1285
1302
|
return W;
|
|
1286
1303
|
}
|
|
1287
|
-
function
|
|
1304
|
+
function tn(e) {
|
|
1288
1305
|
return e ? H.get(e) : void 0;
|
|
1289
1306
|
}
|
|
1290
|
-
function
|
|
1307
|
+
function nn(e) {
|
|
1291
1308
|
return e ? U.has(e) : !1;
|
|
1292
1309
|
}
|
|
1293
|
-
function
|
|
1310
|
+
function rn() {
|
|
1294
1311
|
return [...H.keys()];
|
|
1295
1312
|
}
|
|
1313
|
+
function an(e) {
|
|
1314
|
+
return Qt.add(e), () => Qt.delete(e);
|
|
1315
|
+
}
|
|
1296
1316
|
function on(e) {
|
|
1297
|
-
|
|
1317
|
+
for (let t of Qt) t(e);
|
|
1298
1318
|
}
|
|
1299
1319
|
function sn(e) {
|
|
1300
|
-
|
|
1301
|
-
}
|
|
1302
|
-
function cn(e) {
|
|
1303
|
-
if (!e || H.has(e) || U.has(e) || Qt.has(e) || typeof fetch != "function") return;
|
|
1320
|
+
if (!e || H.has(e) || U.has(e) || Zt.has(e) || typeof fetch != "function") return;
|
|
1304
1321
|
let t = W, n = `${t.base}${encodeURIComponent(e)}.svg${t.version ? `?b=${t.version}` : ""}`, r = fetch(n).then(async (t) => {
|
|
1305
1322
|
if (!t.ok) throw Error(`${t.status}`);
|
|
1306
|
-
let n =
|
|
1323
|
+
let n = Xt(e, await t.text());
|
|
1307
1324
|
if (!n.body) throw Error("empty");
|
|
1308
1325
|
H.set(e, n);
|
|
1309
1326
|
}).catch(() => {
|
|
1310
1327
|
t === W && U.add(e);
|
|
1311
1328
|
}).finally(() => {
|
|
1312
|
-
|
|
1329
|
+
Zt.delete(e), on(e);
|
|
1313
1330
|
});
|
|
1314
|
-
|
|
1331
|
+
Zt.set(e, r);
|
|
1315
1332
|
}
|
|
1316
|
-
async function
|
|
1317
|
-
return
|
|
1333
|
+
async function cn(e) {
|
|
1334
|
+
return sn(e), await Zt.get(e), H.get(e);
|
|
1318
1335
|
}
|
|
1319
1336
|
//#endregion
|
|
1320
1337
|
//#region src/icons/render.ts
|
|
1321
|
-
var G = A("/* One icon, drawn inline in the root that shows it: the glyph is the layout box. */\n.lintje-icon {\n display: inline-flex;\n flex: none;\n}\n/* A host-resolved SVG file, painted as a mask in the text color so nothing inside it runs. */\n.lintje-icon--file {\n background-color: currentColor;\n}\n\n/* --- An icon that leads a line of text ----------------------------------- */\n/* One line high (`1lh`), so it stays on the first line of a wrapping title; centred on the line\n box, where a 20 px glyph reads as level with the title. */\n.lintje-leading-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n align-self: start;\n font: var(--text-tile-title);\n height: 1.3em;\n height: 1lh;\n /* The gap is a margin, not a grid `column-gap`: an icon without a file draws nothing and a gap\n would indent the title. */\n margin-right: var(--space-2);\n color: var(--color-text-primary);\n}\n/* An icon known to be absent draws nothing; the heading is then the heading without an icon. */\n.lintje-leading-icon:empty { display: none; }\n\n/* `transform-origin` is explicit: the initial value for an `<svg>` differs between contexts. */\n.lintje-icon--rotate-90,\n.lintje-icon--rotate-180,\n.lintje-icon--rotate-270,\n.lintje-icon--flip-x,\n.lintje-icon--flip-y {\n transform-origin: 50% 50%;\n}\n.lintje-icon--rotate-90 { transform: rotate(90deg); }\n.lintje-icon--rotate-180 { transform: rotate(180deg); }\n.lintje-icon--rotate-270 { transform: rotate(270deg); }\n.lintje-icon--flip-x { transform: scaleX(-1); }\n.lintje-icon--flip-y { transform: scaleY(-1); }\n"),
|
|
1322
|
-
function
|
|
1323
|
-
if (!e || (
|
|
1324
|
-
|
|
1338
|
+
var G = A("/* One icon, drawn inline in the root that shows it: the glyph is the layout box. */\n.lintje-icon {\n display: inline-flex;\n flex: none;\n}\n/* A host-resolved SVG file, painted as a mask in the text color so nothing inside it runs. */\n.lintje-icon--file {\n background-color: currentColor;\n}\n\n/* --- An icon that leads a line of text ----------------------------------- */\n/* One line high (`1lh`), so it stays on the first line of a wrapping title; centred on the line\n box, where a 20 px glyph reads as level with the title. */\n.lintje-leading-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n align-self: start;\n font: var(--text-tile-title);\n height: 1.3em;\n height: 1lh;\n /* The gap is a margin, not a grid `column-gap`: an icon without a file draws nothing and a gap\n would indent the title. */\n margin-right: var(--space-2);\n color: var(--color-text-primary);\n}\n/* An icon known to be absent draws nothing; the heading is then the heading without an icon. */\n.lintje-leading-icon:empty { display: none; }\n\n/* `transform-origin` is explicit: the initial value for an `<svg>` differs between contexts. */\n.lintje-icon--rotate-90,\n.lintje-icon--rotate-180,\n.lintje-icon--rotate-270,\n.lintje-icon--flip-x,\n.lintje-icon--flip-y {\n transform-origin: 50% 50%;\n}\n.lintje-icon--rotate-90 { transform: rotate(90deg); }\n.lintje-icon--rotate-180 { transform: rotate(180deg); }\n.lintje-icon--rotate-270 { transform: rotate(270deg); }\n.lintje-icon--flip-x { transform: scaleX(-1); }\n.lintje-icon--flip-y { transform: scaleY(-1); }\n"), ln = /* @__PURE__ */ new Set(), un = !1;
|
|
1339
|
+
function dn(e) {
|
|
1340
|
+
if (!e || (ln.add(e), un)) return;
|
|
1341
|
+
un = !0;
|
|
1325
1342
|
let t = !1;
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
t = !1,
|
|
1343
|
+
an(() => {
|
|
1344
|
+
ln.size && !t && (t = !0, fn(() => {
|
|
1345
|
+
t = !1, ln.size && (ln.clear(), $e());
|
|
1329
1346
|
}));
|
|
1330
1347
|
});
|
|
1331
1348
|
}
|
|
1332
|
-
function
|
|
1349
|
+
function fn(e) {
|
|
1333
1350
|
typeof requestAnimationFrame == "function" ? requestAnimationFrame(e) : Promise.resolve().then(e);
|
|
1334
1351
|
}
|
|
1335
|
-
function
|
|
1336
|
-
return (e ?
|
|
1352
|
+
function pn(e) {
|
|
1353
|
+
return (e ? Ft[e] : void 0) ?? tn(e);
|
|
1337
1354
|
}
|
|
1338
|
-
function
|
|
1355
|
+
function mn(e, t) {
|
|
1339
1356
|
return e ? C`<span class="lintje-leading-icon ${t}"
|
|
1340
1357
|
>${K(e, { size: 20 })}</span
|
|
1341
1358
|
>` : T;
|
|
@@ -1362,7 +1379,7 @@ function K(e, t = {}) {
|
|
|
1362
1379
|
aria-hidden=${d}
|
|
1363
1380
|
></span>`;
|
|
1364
1381
|
}
|
|
1365
|
-
let p =
|
|
1382
|
+
let p = pn(e);
|
|
1366
1383
|
if (!p) {
|
|
1367
1384
|
let t = C`<svg
|
|
1368
1385
|
class="${f} lintje-icon--pending"
|
|
@@ -1372,7 +1389,7 @@ function K(e, t = {}) {
|
|
|
1372
1389
|
viewBox="0 0 24 24"
|
|
1373
1390
|
aria-hidden="true"
|
|
1374
1391
|
></svg>`;
|
|
1375
|
-
return c && e ? t : (
|
|
1392
|
+
return c && e ? t : (dn(e), e && !nn(e) ? (sn(e), t) : T);
|
|
1376
1393
|
}
|
|
1377
1394
|
return C`<svg
|
|
1378
1395
|
class=${f}
|
|
@@ -1388,7 +1405,7 @@ function K(e, t = {}) {
|
|
|
1388
1405
|
role=${l}
|
|
1389
1406
|
aria-label=${u}
|
|
1390
1407
|
aria-hidden=${d}
|
|
1391
|
-
>${
|
|
1408
|
+
>${zt(p.body)}</svg>`;
|
|
1392
1409
|
}
|
|
1393
1410
|
//#endregion
|
|
1394
1411
|
//#region node_modules/lit-html/directives/class-map.js
|
|
@@ -1413,28 +1430,35 @@ var q = R(class extends z {
|
|
|
1413
1430
|
}
|
|
1414
1431
|
return w;
|
|
1415
1432
|
}
|
|
1416
|
-
}),
|
|
1417
|
-
function
|
|
1418
|
-
let { value: t, tone: n = "neutral", variant: r = "label", label: i, surface: a, muted: o, className: s } = e,
|
|
1433
|
+
}), hn = "/*\n * The badge's drawing, shared by `<lintje-badge>` and every root that draws one through\n * `renderBadge()`. It holds no `:host` rule; the element's own box is `badge-host.css`.\n */\n\n.lintje-badge {\n display: inline-flex; align-items: center; justify-content: center;\n flex: none;\n box-sizing: border-box;\n height: 1.5rem;\n padding: 0 var(--space-2);\n border: 1px solid transparent;\n border-radius: var(--radius);\n font-family: var(--font-ui);\n font-size: 0.875rem; font-weight: 700; line-height: 1;\n white-space: nowrap;\n}\n.lintje-badge__icon { flex: none; margin-inline-end: var(--space-1); }\n\n/* Neutral: a line and a word, for what has not started. Subtle: the gray surface, for what is over. */\n.lintje-badge--neutral {\n color: var(--color-text-primary);\n border-color: var(--color-text-muted);\n}\n.lintje-badge--subtle {\n background: var(--color-bg-subtle);\n color: var(--color-text-primary);\n border-color: var(--color-border-default);\n}\n.lintje-badge--busy {\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n border-color: var(--color-action-primary-border);\n}\n/* A saturated status fill carries white text (success 4.52:1, error 5.01, info 4.51). */\n.lintje-badge--success { background: var(--color-success); color: var(--color-text-on-fill); }\n.lintje-badge--error { background: var(--color-error); color: var(--color-text-on-fill); }\n.lintje-badge--info { background: var(--color-info); color: var(--color-text-on-fill); }\n/* Yellow and orange take dark text in both modes: white on the orange is 3.2:1, near-black 5.54:1. */\n.lintje-badge--warning { background: var(--color-warning); color: var(--color-text-on-light-fill); }\n.lintje-badge--attention { background: var(--color-attention); color: var(--color-text-on-light-fill); }\n/* Live: the fill says it records now, the dot says it again for whoever does not see the colour. */\n.lintje-badge--live { gap: var(--space-2); background: var(--color-error); color: var(--color-text-on-fill); }\n.lintje-badge--live::before {\n content: '';\n width: 0.5rem; height: 0.5rem;\n border-radius: 50%;\n background: currentColor;\n}\n\n/* The quiet counter. The 2 px at its foot lift the figure 1 px: the house font's digits sit low. */\n.lintje-badge--count,\n.lintje-badge--unread {\n min-width: 1.5rem;\n padding: 0 var(--space-1) 2px;\n}\n.lintje-badge--count {\n background: var(--color-bg-subtle);\n color: var(--color-text-primary);\n border-color: var(--color-border-default);\n}\n/* Smaller than a label: it sits on a glyph's corner and must not cover it. At 12 px the\n digits need no lift. */\n.lintje-badge--unread {\n height: 1.25rem; min-width: 1.25rem;\n padding: 0 var(--space-1);\n font-size: 0.75rem;\n border: 0;\n border-radius: 999px;\n background: var(--color-nav-badge-bg);\n color: var(--color-nav-badge-text);\n animation: lintje-badge-pop var(--dur-badge) var(--ease-in-motion) both;\n}\n\n/* A new unread count pops in: past its size and back, so the eye catches it. It plays when the\n badge appears; a changing figure is the host's to animate. */\n@keyframes lintje-badge-pop {\n 0% { transform: scale(0); }\n 60% { transform: scale(1.2); }\n 100% { transform: none; }\n}\n\n/* On the menu's surface: the menu's text colour as the fill and its surface as the ink. After\n `--unread`, so the menu's count wins over the unread colours. */\n.lintje-badge--nav { background: var(--color-nav-text); color: var(--color-nav-bg); border: 0; }\n.lintje-badge--nav.lintje-badge--label { letter-spacing: 0.04em; }\n.lintje-badge--nav.is-muted { background: var(--color-nav-disabled); color: var(--color-nav-bg); }\n\n/* Forced colours: a fill is dropped, so every badge keeps a CanvasText edge in its border. */\n@media (forced-colors: active) {\n .lintje-badge { border-color: CanvasText; }\n .lintje-badge--unread,\n .lintje-badge--nav { outline: 1px solid CanvasText; outline-offset: -1px; }\n}\n", gn = "/*\n * `<lintje-badge>`'s own box: inline, on the text line it stands in. The drawing is `badge.css`,\n * which the element adopts beside this file and which other roots adopt without it.\n */\n:host { display: inline-flex; vertical-align: middle; }\n:host([hidden]) { display: none; }\n", _n = A(hn);
|
|
1434
|
+
function vn(e) {
|
|
1435
|
+
let { value: t, tone: n = "neutral", variant: r = "label", label: i, surface: a, muted: o, className: s, icon: c } = e, l = a === "nav", u = c && r === "label" ? K(c, {
|
|
1436
|
+
size: 12,
|
|
1437
|
+
className: "lintje-badge__icon"
|
|
1438
|
+
}) : T;
|
|
1419
1439
|
return C`<span
|
|
1420
1440
|
class=${q({
|
|
1421
1441
|
"lintje-badge": !0,
|
|
1422
1442
|
[`lintje-badge--${r}`]: !0,
|
|
1423
|
-
[`lintje-badge--${n}`]: r === "label" && !
|
|
1424
|
-
"lintje-badge--nav":
|
|
1425
|
-
"is-muted":
|
|
1443
|
+
[`lintje-badge--${n}`]: r === "label" && !l,
|
|
1444
|
+
"lintje-badge--nav": l,
|
|
1445
|
+
"is-muted": l && !!o,
|
|
1426
1446
|
...Object.fromEntries((s ?? "").split(/\s+/).filter(Boolean).map((e) => [e, !0]))
|
|
1427
1447
|
})}
|
|
1428
|
-
>${i ? C`<span aria-hidden="true">${t}</span
|
|
1448
|
+
>${u}${i ? C`<span aria-hidden="true">${t}</span
|
|
1429
1449
|
><span class="visually-hidden">${i}</span>` : t}</span
|
|
1430
1450
|
>`;
|
|
1431
1451
|
}
|
|
1432
|
-
var
|
|
1452
|
+
var yn = class extends j {
|
|
1433
1453
|
constructor(...e) {
|
|
1434
1454
|
super(...e), this.tone = "neutral", this.variant = "label";
|
|
1435
1455
|
}
|
|
1436
1456
|
static {
|
|
1437
|
-
this.styles = [
|
|
1457
|
+
this.styles = [
|
|
1458
|
+
G,
|
|
1459
|
+
A(gn),
|
|
1460
|
+
_n
|
|
1461
|
+
];
|
|
1438
1462
|
}
|
|
1439
1463
|
static {
|
|
1440
1464
|
this.properties = {
|
|
@@ -1446,24 +1470,30 @@ var bn = class extends j {
|
|
|
1446
1470
|
type: String,
|
|
1447
1471
|
reflect: !0
|
|
1448
1472
|
},
|
|
1449
|
-
label: { type: String }
|
|
1473
|
+
label: { type: String },
|
|
1474
|
+
icon: { type: String }
|
|
1450
1475
|
};
|
|
1451
1476
|
}
|
|
1452
1477
|
render() {
|
|
1453
|
-
return
|
|
1478
|
+
return vn({
|
|
1454
1479
|
value: C`<slot></slot>`,
|
|
1455
1480
|
tone: this.tone,
|
|
1456
1481
|
variant: this.variant,
|
|
1457
|
-
label: this.label
|
|
1482
|
+
label: this.label,
|
|
1483
|
+
icon: this.icon
|
|
1458
1484
|
});
|
|
1459
1485
|
}
|
|
1460
1486
|
};
|
|
1461
|
-
M("lintje-badge",
|
|
1487
|
+
M("lintje-badge", yn);
|
|
1462
1488
|
//#endregion
|
|
1463
1489
|
//#region src/primitives/button/button.css?inline
|
|
1464
|
-
var
|
|
1490
|
+
var bn = "/*\n * Above the divider: what the element itself needs (`lintje-button` is the box the page lays\n * out). Below it: the block's own BEM CSS, in the shadow root.\n */\n:host {\n display: inline-flex;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n:host(.lintje-button--block),\n:host([block]) { display: flex; }\n:host([block]) .lintje-button { width: 100%; }\n:host([span]) .lintje-button { width: 100%; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-button {\n /* Never wider than its place: in a narrow cell the label is cut with an ellipsis. */\n max-width: 100%;\n min-width: 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n height: var(--h-button);\n padding: 0 var(--space-4);\n border: 1px solid transparent;\n font-family: var(--font-ui);\n font-size: 1rem;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n border-radius: var(--radius);\n transition: background var(--dur-hover) var(--ease-in-motion),\n color var(--dur-hover) var(--ease-in-motion),\n border-color var(--dur-hover) var(--ease-in-motion);\n}\n.lintje-button__label {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.lintje-button--compact { height: var(--h-button-compact); padding: 0 var(--space-3); }\n.lintje-button--chrome { height: var(--h-button-chrome); padding: 0 14px; }\n/* The compact and chrome button reach the 48 px target through a transparent hit area, 4 px out\n on each side. A row of them keeps 8 px between the boxes, so hit areas never overlap. */\n.lintje-button--compact::after,\n.lintje-button--chrome::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n\n/* The 1 px border is transparent, so the primary fill fills it in light; in dark it draws the\n tint, the only thing that separates a #0E3B6E box from a #282828 page (1.31:1). */\n.lintje-button--primary {\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n border-color: var(--color-action-primary-border);\n}\n.lintje-button--primary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-action-primary-hover); }\n\n.lintje-button--secondary {\n background: var(--color-bg-surface);\n color: var(--color-accent-text);\n border-color: var(--color-action-secondary-border);\n}\n.lintje-button--secondary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-selected); }\n\n.lintje-button--tertiary {\n background: transparent;\n color: var(--color-text-primary);\n border-color: var(--color-border-strong);\n}\n.lintje-button--tertiary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-subtle); }\n\n/* The destructive weight; in dark the border is the red's tint, the only thing reaching 3:1. */\n.lintje-button--danger {\n background: var(--color-action-danger);\n color: var(--color-text-on-fill);\n border-color: var(--color-action-danger-border);\n}\n.lintje-button--danger:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-action-danger-hover); }\n\n/* `danger-secondary`: the quieter destructive form, for a row where the fill would shout. The\n colour is `--color-action-danger-text`. The hover is the tertiary's `--color-bg-subtle`:\n the red word on `--color-error-bg` was 3.96:1 in light. */\n.lintje-button--danger-secondary {\n background: var(--color-bg-surface);\n color: var(--color-action-danger-text);\n border-color: var(--color-action-danger-text);\n}\n.lintje-button--danger-secondary:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { background: var(--color-bg-subtle); }\n\n.lintje-button--link {\n height: auto;\n padding: 0;\n color: var(--color-link);\n text-decoration: underline;\n background: none;\n}\n.lintje-button--link:not(.is-disabled, .is-busy, :disabled, [aria-disabled='true']):hover { color: var(--color-link-hover); }\n/* The link reaches the text target (24 px) through a transparent hit area. */\n.lintje-button--link::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target-text)) / 2)) 0;\n}\n\n/* Disabled is `aria-disabled`: the button keeps its tab order and focus ring. A busy button is\n not `is-disabled`: it keeps its variant's colours. Native `<button>`s with these classes get\n the look from `:disabled` or `aria-disabled`, without the class. */\n.lintje-button.is-disabled,\n.lintje-button:disabled,\n.lintje-button[aria-disabled='true']:not(.is-busy) {\n opacity: 1;\n cursor: not-allowed;\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n border-color: var(--color-border-default);\n}\n.lintje-button--link.is-disabled,\n.lintje-button--link:disabled,\n.lintje-button--link[aria-disabled='true']:not(.is-busy) {\n background: none;\n border-color: transparent;\n text-decoration: none;\n}\n\n/* --- Busy --------------------------------------------------------------- */\n/*\n * An action that round-trips. The button keeps its width: label and icons only lose their ink,\n * and the ring is drawn over the middle, so nothing re-flows. The label is transparent, not\n * `visibility: hidden`, so the focused button keeps its name.\n */\n.lintje-button.is-busy { cursor: progress; }\n.lintje-button.is-busy .lintje-button__label { opacity: 0; }\n.lintje-button.is-busy .lintje-button__icon { visibility: hidden; }\n.lintje-button__busy {\n position: absolute;\n top: 50%; left: 50%;\n width: 16px; height: 16px;\n margin: -8px 0 0 -8px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: var(--radius-round);\n opacity: 0.85;\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n/* Reduced motion: the ring stands still; `aria-busy` carries the state. */\n@media (prefers-reduced-motion: reduce) {\n .lintje-button__busy { animation: none; }\n}\n\n/* Forced colours: `aria-disabled` is not grayed out by the browser. */\n@media (forced-colors: active) {\n .lintje-button.is-disabled,\n .lintje-button:disabled,\n .lintje-button[aria-disabled='true']:not(.is-busy) { color: GrayText; border-color: GrayText; }\n}\n", xn = "/*\n * Adopted by a control that has nothing to say on paper: a button, a question box, a bar of\n * actions. What the reader chose stays in the elements that show it; what to press does not.\n * `!important`, so a page's own `display` on the tag does not bring it back.\n */\n@media print {\n :host { display: none !important; }\n}\n", Sn = "lintje-button-reason", Cn = class extends j {
|
|
1465
1491
|
static {
|
|
1466
|
-
this.styles = [
|
|
1492
|
+
this.styles = [
|
|
1493
|
+
G,
|
|
1494
|
+
A(bn),
|
|
1495
|
+
A(xn)
|
|
1496
|
+
];
|
|
1467
1497
|
}
|
|
1468
1498
|
static {
|
|
1469
1499
|
this.shadowRootOptions = {
|
|
@@ -1628,10 +1658,40 @@ function kn(e) {
|
|
|
1628
1658
|
return t !== null && On(t, e);
|
|
1629
1659
|
}
|
|
1630
1660
|
//#endregion
|
|
1631
|
-
//#region
|
|
1632
|
-
var
|
|
1661
|
+
//#region src/primitives/shared/tone.ts
|
|
1662
|
+
var An = {
|
|
1663
|
+
success: "functioneel-cirkel-vinkje",
|
|
1664
|
+
warning: "functioneel-waarschuwing",
|
|
1665
|
+
attention: "functioneel-waarschuwing",
|
|
1666
|
+
error: "functioneel-foutmelding",
|
|
1667
|
+
info: "functioneel-info"
|
|
1668
|
+
}, jn = {
|
|
1669
|
+
neutral: "onbekend",
|
|
1670
|
+
subtle: "onbekend",
|
|
1671
|
+
busy: "bezig",
|
|
1672
|
+
success: "in orde",
|
|
1673
|
+
warning: "let op",
|
|
1674
|
+
error: "storing",
|
|
1675
|
+
info: "informatie",
|
|
1676
|
+
attention: "aandacht",
|
|
1677
|
+
live: "live"
|
|
1678
|
+
}, Mn = {
|
|
1679
|
+
queued: "neutral",
|
|
1680
|
+
busy: "busy",
|
|
1681
|
+
paused: "warning",
|
|
1682
|
+
done: "success",
|
|
1683
|
+
error: "error",
|
|
1684
|
+
cancelled: "subtle"
|
|
1685
|
+
}, Nn = {
|
|
1686
|
+
queued: "Wachtrij",
|
|
1687
|
+
busy: "Bezig",
|
|
1688
|
+
paused: "Onderbroken",
|
|
1689
|
+
done: "Klaar",
|
|
1690
|
+
error: "Mislukt",
|
|
1691
|
+
cancelled: "Geannuleerd"
|
|
1692
|
+
}, { I: Pn } = Pe, Fn = (e) => e, In = (e) => e.strings === void 0, Ln = () => document.createComment(""), J = (e, t, n) => {
|
|
1633
1693
|
let r = e._$AA.parentNode, i = t === void 0 ? e._$AB : t._$AA;
|
|
1634
|
-
if (n === void 0) n = new
|
|
1694
|
+
if (n === void 0) n = new Pn(r.insertBefore(Ln(), i), r.insertBefore(Ln(), i), e, e.options);
|
|
1635
1695
|
else {
|
|
1636
1696
|
let t = n._$AB.nextSibling, a = n._$AM, o = a !== e;
|
|
1637
1697
|
if (o) {
|
|
@@ -1641,15 +1701,15 @@ var { I: An } = Pe, jn = (e) => e, Mn = (e) => e.strings === void 0, Nn = () =>
|
|
|
1641
1701
|
if (t !== i || o) {
|
|
1642
1702
|
let e = n._$AA;
|
|
1643
1703
|
for (; e !== t;) {
|
|
1644
|
-
let t =
|
|
1645
|
-
|
|
1704
|
+
let t = Fn(e).nextSibling;
|
|
1705
|
+
Fn(r).insertBefore(e, i), e = t;
|
|
1646
1706
|
}
|
|
1647
1707
|
}
|
|
1648
1708
|
}
|
|
1649
1709
|
return n;
|
|
1650
|
-
}, Y = (e, t, n = e) => (e._$AI(t, n), e),
|
|
1710
|
+
}, Y = (e, t, n = e) => (e._$AI(t, n), e), Rn = {}, zn = (e, t = Rn) => e._$AH = t, Bn = (e) => e._$AH, Vn = (e) => {
|
|
1651
1711
|
e._$AR(), e._$AA.remove();
|
|
1652
|
-
},
|
|
1712
|
+
}, Hn = R(class extends z {
|
|
1653
1713
|
constructor() {
|
|
1654
1714
|
super(...arguments), this.key = T;
|
|
1655
1715
|
}
|
|
@@ -1657,11 +1717,24 @@ var { I: An } = Pe, jn = (e) => e, Mn = (e) => e.strings === void 0, Nn = () =>
|
|
|
1657
1717
|
return this.key = e, t;
|
|
1658
1718
|
}
|
|
1659
1719
|
update(e, [t, n]) {
|
|
1660
|
-
return t !== this.key && (
|
|
1720
|
+
return t !== this.key && (zn(e), this.key = t), n;
|
|
1721
|
+
}
|
|
1722
|
+
}), Un = (e) => e ?? T, Wn = 180;
|
|
1723
|
+
function Gn(e, t, n, r = "bottom-start", i = 6) {
|
|
1724
|
+
if (r === "left-center" || r === "left-start") {
|
|
1725
|
+
let a = e.left - i - t.width;
|
|
1726
|
+
if (a >= 8) {
|
|
1727
|
+
let i = r === "left-start" ? e.top : (e.top + e.bottom) / 2 - t.height / 2;
|
|
1728
|
+
return {
|
|
1729
|
+
top: Math.round(Math.max(8, Math.min(i, n.height - t.height - 8))),
|
|
1730
|
+
bottom: null,
|
|
1731
|
+
left: Math.round(a),
|
|
1732
|
+
space: Math.max(0, n.height - 16)
|
|
1733
|
+
};
|
|
1734
|
+
}
|
|
1735
|
+
r = r === "left-start" ? "bottom-end" : "top-center";
|
|
1661
1736
|
}
|
|
1662
|
-
|
|
1663
|
-
function Vn(e, t, n, r = "bottom-start", i = 6) {
|
|
1664
|
-
let a = n.height - e.bottom - i - 8, o = e.top - i - 8, s = Math.min(t.height || Bn, Bn), c = r.startsWith("top") ? !(o < s && a > o) : a < s && o > a, l = e.left;
|
|
1737
|
+
let a = n.height - e.bottom - i - 8, o = e.top - i - 8, s = Math.min(t.height || Wn, Wn), c = r.startsWith("top") ? !(o < s && a > o) : a < s && o > a, l = e.left;
|
|
1665
1738
|
return r.endsWith("-end") && (l = e.right - t.width), r === "top-center" && (l = e.left + e.width / 2 - t.width / 2), l = Math.max(8, Math.min(l, n.width - t.width - 8)), {
|
|
1666
1739
|
top: c ? null : e.bottom + i,
|
|
1667
1740
|
bottom: c ? n.height - e.top + i : null,
|
|
@@ -1669,10 +1742,10 @@ function Vn(e, t, n, r = "bottom-start", i = 6) {
|
|
|
1669
1742
|
space: Math.max(0, c ? o : a)
|
|
1670
1743
|
};
|
|
1671
1744
|
}
|
|
1672
|
-
function
|
|
1745
|
+
function Kn(e, t) {
|
|
1673
1746
|
return !e || !t ? e === t : e.top === t.top && e.bottom === t.bottom && e.left === t.left && e.space === t.space;
|
|
1674
1747
|
}
|
|
1675
|
-
function
|
|
1748
|
+
function qn() {
|
|
1676
1749
|
return {
|
|
1677
1750
|
width: window.innerWidth || document.documentElement.clientWidth || 1024,
|
|
1678
1751
|
height: window.innerHeight || document.documentElement.clientHeight || 768
|
|
@@ -1680,10 +1753,10 @@ function Un() {
|
|
|
1680
1753
|
}
|
|
1681
1754
|
//#endregion
|
|
1682
1755
|
//#region src/primitives/popover/popover.css?inline
|
|
1683
|
-
var
|
|
1756
|
+
var Jn = ":host { display: contents; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* Fixed, not absolute: an `overflow` ancestor would cut it off. z-index 85: above the scrim (80),\n below the tooltip (90). */\n.lintje-popover {\n position: fixed;\n z-index: 85;\n max-width: calc(100vw - var(--space-4));\n max-height: var(--lintje-popover-space, none);\n overflow: auto;\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n font: var(--text-ui);\n animation: lintje-popover-in var(--dur-popover) var(--ease-in-motion);\n}\n";
|
|
1684
1757
|
//#endregion
|
|
1685
1758
|
//#region src/primitives/popover/popover.ts
|
|
1686
|
-
function
|
|
1759
|
+
function Yn(e, t) {
|
|
1687
1760
|
return e ? {
|
|
1688
1761
|
top: e.top === null ? null : `${e.top}px`,
|
|
1689
1762
|
bottom: e.bottom === null ? null : `${e.bottom}px`,
|
|
@@ -1692,9 +1765,9 @@ function Gn(e, t) {
|
|
|
1692
1765
|
"--lintje-popover-space": `${e.space}px`
|
|
1693
1766
|
} : {};
|
|
1694
1767
|
}
|
|
1695
|
-
var
|
|
1768
|
+
var Xn = class extends j {
|
|
1696
1769
|
static {
|
|
1697
|
-
this.styles = A(
|
|
1770
|
+
this.styles = A(Jn);
|
|
1698
1771
|
}
|
|
1699
1772
|
static {
|
|
1700
1773
|
this.properties = {
|
|
@@ -1751,8 +1824,8 @@ var Kn = class extends j {
|
|
|
1751
1824
|
height: n?.offsetHeight ?? 0
|
|
1752
1825
|
};
|
|
1753
1826
|
this.matchWidth && (r.width = Math.max(r.width, t.width));
|
|
1754
|
-
let i =
|
|
1755
|
-
|
|
1827
|
+
let i = Gn(t, r, qn(), this.placement), a = this.matchWidth ? Math.round(t.width) : null;
|
|
1828
|
+
Kn(this.spot, i) && a === this.anchorWidth || (this.anchorWidth = a, this.spot = i);
|
|
1756
1829
|
}
|
|
1757
1830
|
willUpdate(e) {
|
|
1758
1831
|
super.willUpdate(e), e.has("open") && (this.open ? this.measure() : this.spot = null);
|
|
@@ -1763,28 +1836,28 @@ var Kn = class extends j {
|
|
|
1763
1836
|
render() {
|
|
1764
1837
|
return this.open ? C`<div
|
|
1765
1838
|
class="lintje-popover"
|
|
1766
|
-
role=${
|
|
1767
|
-
aria-label=${
|
|
1768
|
-
${B(
|
|
1839
|
+
role=${Un(this.panelRole)}
|
|
1840
|
+
aria-label=${Un(this.label)}
|
|
1841
|
+
${B(Yn(this.spot, this.anchorWidth))}
|
|
1769
1842
|
>
|
|
1770
1843
|
<slot></slot>
|
|
1771
1844
|
</div>` : T;
|
|
1772
1845
|
}
|
|
1773
1846
|
};
|
|
1774
|
-
M("lintje-popover",
|
|
1847
|
+
M("lintje-popover", Xn);
|
|
1775
1848
|
//#endregion
|
|
1776
1849
|
//#region src/core/links.ts
|
|
1777
|
-
function
|
|
1850
|
+
function Zn(e) {
|
|
1778
1851
|
return e.button === 0 && !e.metaKey && !e.ctrlKey && !e.shiftKey && !e.altKey;
|
|
1779
1852
|
}
|
|
1780
1853
|
//#endregion
|
|
1781
1854
|
//#region src/primitives/spinner/spinner.css?inline
|
|
1782
|
-
var
|
|
1855
|
+
var Qn = ":host { display: inline-flex; vertical-align: middle; }\n:host([stacked]) { display: flex; justify-content: center; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-spinner {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n.lintje-spinner--stacked { flex-direction: column; gap: var(--space-3); }\n\n/* A line on a surface (3:1): the accent line, not the fill. */\n.lintje-spinner__ring {\n flex: none;\n width: 1rem; height: 1rem;\n border: 2px solid var(--color-accent-line);\n border-top-color: transparent;\n border-radius: var(--radius-round);\n animation: lintje-spin var(--dur-skeleton) linear infinite;\n}\n/* 16, 24 and 40 px: 1, 1.5 and 2.5rem, so the ring grows with the text beside it. */\n.lintje-spinner--24 .lintje-spinner__ring { width: 1.5rem; height: 1.5rem; }\n.lintje-spinner--40 .lintje-spinner__ring { width: 2.5rem; height: 2.5rem; border-width: 3px; }\n.lintje-spinner--current .lintje-spinner__ring {\n border-color: currentColor;\n border-top-color: transparent;\n}\n\n/* A keyframe only works in the root that uses it. */\n@keyframes lintje-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-spinner__ring { animation: none; }\n}\n\n/* Forced colours: the ring draws in CanvasText with its open quarter in Canvas, so it still turns. */\n@media (forced-colors: active) {\n .lintje-spinner__ring,\n .lintje-spinner--current .lintje-spinner__ring {\n border-color: CanvasText;\n border-top-color: Canvas;\n }\n}\n", $n = class extends j {
|
|
1783
1856
|
constructor(...e) {
|
|
1784
1857
|
super(...e), this.size = 16, this.stacked = !1, this.current = !1, this.filled = null, this.#e = 0;
|
|
1785
1858
|
}
|
|
1786
1859
|
static {
|
|
1787
|
-
this.styles = A(
|
|
1860
|
+
this.styles = A(Qn);
|
|
1788
1861
|
}
|
|
1789
1862
|
static {
|
|
1790
1863
|
this.properties = {
|
|
@@ -1833,20 +1906,20 @@ var Jn = ":host { display: inline-flex; vertical-align: middle; }\n:host([stacke
|
|
|
1833
1906
|
</span>`;
|
|
1834
1907
|
}
|
|
1835
1908
|
};
|
|
1836
|
-
M("lintje-spinner",
|
|
1909
|
+
M("lintje-spinner", $n);
|
|
1837
1910
|
//#endregion
|
|
1838
1911
|
//#region src/primitives/tooltip/tooltip.css?inline
|
|
1839
|
-
var
|
|
1840
|
-
function
|
|
1912
|
+
var er = "/* A box of its own for the pointer and focus to enter; inline, so flow is unchanged. */\n:host { display: inline-flex; vertical-align: middle; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n/* The pointer can rest on it, to read it at a larger zoom; Escape takes it away. */\n.lintje-tooltip {\n position: fixed;\n z-index: 90;\n max-width: 15rem;\n padding: var(--space-2) var(--space-3);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n font: var(--text-small);\n animation: lintje-fade-in var(--dur-hover) var(--ease-in-motion);\n}\n", tr = 300, nr = 150;
|
|
1913
|
+
function rr(e) {
|
|
1841
1914
|
return e ? {
|
|
1842
1915
|
top: e.top === null ? null : `${e.top}px`,
|
|
1843
1916
|
bottom: e.bottom === null ? null : `${e.bottom}px`,
|
|
1844
1917
|
left: `${e.left}px`
|
|
1845
1918
|
} : {};
|
|
1846
1919
|
}
|
|
1847
|
-
var
|
|
1920
|
+
var ir = class extends j {
|
|
1848
1921
|
constructor(...e) {
|
|
1849
|
-
super(...e), this.text = "", this.noDescribe = !1, this.open = !1, this.spot = null, this.reflowFrame = 0, this.#e = "", this.onPointerEnter = () => {
|
|
1922
|
+
super(...e), this.text = "", this.noDescribe = !1, this.placement = "top", this.open = !1, this.spot = null, this.reflowFrame = 0, this.#e = "", this.onPointerEnter = () => {
|
|
1850
1923
|
this.open ? clearTimeout(this.timer) : this.show(300);
|
|
1851
1924
|
}, this.onPointerLeave = () => {
|
|
1852
1925
|
clearTimeout(this.timer), this.open && (this.timer = setTimeout(() => this.open = !1, 150));
|
|
@@ -1859,7 +1932,7 @@ var er = class extends j {
|
|
|
1859
1932
|
};
|
|
1860
1933
|
}
|
|
1861
1934
|
static {
|
|
1862
|
-
this.styles = A(
|
|
1935
|
+
this.styles = A(er);
|
|
1863
1936
|
}
|
|
1864
1937
|
static {
|
|
1865
1938
|
this.properties = {
|
|
@@ -1868,6 +1941,7 @@ var er = class extends j {
|
|
|
1868
1941
|
type: Boolean,
|
|
1869
1942
|
attribute: "no-describe"
|
|
1870
1943
|
},
|
|
1944
|
+
placement: { type: String },
|
|
1871
1945
|
open: { state: !0 },
|
|
1872
1946
|
spot: { state: !0 }
|
|
1873
1947
|
};
|
|
@@ -1897,8 +1971,8 @@ var er = class extends j {
|
|
|
1897
1971
|
let t = this.renderRoot.querySelector(".lintje-tooltip"), n = {
|
|
1898
1972
|
width: t?.offsetWidth ?? 0,
|
|
1899
1973
|
height: t?.offsetHeight ?? 0
|
|
1900
|
-
}, r =
|
|
1901
|
-
|
|
1974
|
+
}, r = this.placement === "left" ? "left-center" : "top-center", i = Gn(e.getBoundingClientRect(), n, qn(), r, 8);
|
|
1975
|
+
Kn(this.spot, i) || (this.spot = i);
|
|
1902
1976
|
}
|
|
1903
1977
|
willUpdate(e) {
|
|
1904
1978
|
super.willUpdate(e), (e.has("text") || e.has("noDescribe")) && this.describe(), e.has("open") && (this.open ? this.measure() : this.spot = null);
|
|
@@ -1919,28 +1993,28 @@ var er = class extends j {
|
|
|
1919
1993
|
} else n ? e.setAttribute("aria-description", n) : e.removeAttribute("aria-description");
|
|
1920
1994
|
}
|
|
1921
1995
|
render() {
|
|
1922
|
-
return C`<slot @slotchange=${this.describe}></slot>${this.open ? C`<span class="lintje-tooltip" role="tooltip" ${B(
|
|
1996
|
+
return C`<slot @slotchange=${this.describe}></slot>${this.open ? C`<span class="lintje-tooltip" role="tooltip" ${B(rr(this.spot))}
|
|
1923
1997
|
>${this.text}</span
|
|
1924
1998
|
>` : T}`;
|
|
1925
1999
|
}
|
|
1926
2000
|
};
|
|
1927
|
-
M("lintje-tooltip",
|
|
2001
|
+
M("lintje-tooltip", ir);
|
|
1928
2002
|
//#endregion
|
|
1929
2003
|
//#region src/primitives/icon-button/icon-button.css?inline
|
|
1930
|
-
var
|
|
2004
|
+
var ar = "/* Above the divider: what the element itself needs. Below it: the block's own BEM CSS. */\n:host {\n display: inline-flex;\n vertical-align: middle;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-icon-button {\n position: relative;\n width: var(--h-icon-button);\n height: var(--h-icon-button);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n border-radius: var(--radius);\n transition: opacity var(--dur-hover) var(--ease-in-motion),\n background var(--dur-hover) var(--ease-in-motion);\n}\n/* The target reaches `--h-target` through a transparent hit area; 100 % is the box's own size,\n so the label variant's wider box only grows it upwards and downwards. */\n.lintje-icon-button::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2));\n}\n/* Without a file for its icon the label becomes the text; the square grows as wide as the word. */\n.lintje-icon-button--text { width: auto; min-width: var(--h-icon-button); padding: 0 var(--space-3); }\n.lintje-icon-button__label { font-size: 0.875rem; font-weight: 700; white-space: nowrap; }\n\n/* The box is a line (3:1), the glyph stands in for a word (4.5:1): different tokens. */\n.lintje-icon-button--outlined {\n border: 1px solid var(--color-accent-line);\n background: var(--color-bg-surface);\n color: var(--color-accent-text);\n}\n.lintje-icon-button--outlined:not(.is-disabled):hover { background: var(--color-bg-selected); }\n\n.lintje-icon-button--flat { background: transparent; color: var(--color-text-primary); }\n.lintje-icon-button--flat:not(.is-disabled):hover { background: var(--color-bg-subtle); }\n\n/* Tile actions stand back in the muted text colour, never below 3:1; hover and focus darken them. */\n.lintje-icon-button--tile { background: transparent; color: var(--color-text-muted); }\n.lintje-icon-button--tile:not(.is-disabled):hover, .lintje-icon-button--tile:focus-visible { color: var(--color-text-primary); }\n\n/* The active button takes the primary-fill border, so the square keeps an edge in dark. */\n.lintje-icon-button.is-active {\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n border-color: var(--color-action-primary-border);\n}\n\n/* Live: it listens or speaks now. The primary fill with its border, and bars that move beside\n the icon, so the state is never colour alone; the box grows to hold them. */\n.lintje-icon-button.is-live {\n width: auto;\n gap: var(--space-2);\n padding: 0 var(--space-3);\n border: 1px solid var(--color-action-primary-border);\n background: var(--color-action-primary);\n color: var(--color-action-primary-text);\n}\n.lintje-icon-button.is-live:not(.is-disabled):hover { background: var(--color-action-primary-hover); }\n.lintje-icon-button__waves { display: inline-flex; align-items: center; gap: 2px; height: 16px; }\n.lintje-icon-button__wave {\n width: 2px;\n height: 100%;\n background: currentColor;\n animation: lintje-icon-button-wave var(--dur-wave) var(--ease-in-motion) infinite alternate;\n}\n.lintje-icon-button__wave:nth-child(2) { animation-delay: calc(var(--dur-wave) * -0.5); }\n.lintje-icon-button__wave:nth-child(3) { animation-delay: calc(var(--dur-wave) * -0.25); }\n.lintje-icon-button__wave:nth-child(4) { animation-delay: calc(var(--dur-wave) * -0.75); }\n@keyframes lintje-icon-button-wave {\n from { transform: scaleY(0.25); }\n to { transform: scaleY(1); }\n}\n/* Without motion the bars stand still at different heights: still a wave, never a pulse. */\n@media (prefers-reduced-motion: reduce) {\n .lintje-icon-button__wave { animation: none; transform: scaleY(0.5); }\n .lintje-icon-button__wave:nth-child(2) { transform: scaleY(1); }\n .lintje-icon-button__wave:nth-child(4) { transform: scaleY(0.75); }\n}\n\n/* Disabled is `aria-disabled`: tab order and focus ring stay. After is-active, so it loses the fill. */\n.lintje-icon-button.is-disabled { cursor: not-allowed; color: var(--color-text-disabled); }\n.lintje-icon-button--outlined.is-disabled { background: var(--color-bg-surface); border-color: var(--color-border-default); }\n\n/* Forced colours: the active fill is dropped, so its border turns Highlight. */\n@media (forced-colors: active) {\n .lintje-icon-button.is-active,\n .lintje-icon-button.is-live { border-color: Highlight; }\n .lintje-icon-button.is-disabled { color: GrayText; border-color: GrayText; }\n}\n";
|
|
1931
2005
|
//#endregion
|
|
1932
2006
|
//#region src/core/length.ts
|
|
1933
|
-
function
|
|
2007
|
+
function or(e, t, n) {
|
|
1934
2008
|
let r = getComputedStyle(e).getPropertyValue(t).trim(), i = parseFloat(r);
|
|
1935
|
-
return Number.isFinite(i) ? r.endsWith("rem") ? i *
|
|
2009
|
+
return Number.isFinite(i) ? r.endsWith("rem") ? i * sr() : i : n;
|
|
1936
2010
|
}
|
|
1937
|
-
function
|
|
2011
|
+
function sr() {
|
|
1938
2012
|
let e = parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
1939
2013
|
return Number.isFinite(e) && e > 0 ? e : 16;
|
|
1940
2014
|
}
|
|
1941
2015
|
//#endregion
|
|
1942
2016
|
//#region src/primitives/shared/grid-item-element.ts
|
|
1943
|
-
var
|
|
2017
|
+
var cr = A("/* `min-width: auto` is the default; tiles hold long words and wide tables that would overflow. */\n:host {\n min-width: 0;\n}\n:host(lintje-grid-item) {\n display: block;\n}\n:host([span]) {\n grid-column: span var(--lintje-span, 1);\n}\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n :host([span='4']) { grid-column: span 6; }\n :host([span='8']) { grid-column: span 12; }\n}\n@media screen and (max-width: 767px) {\n :host([span]) { grid-column: span 1; }\n}\n"), lr = class extends j {
|
|
1944
2018
|
static {
|
|
1945
2019
|
this.properties = { span: {
|
|
1946
2020
|
type: Number,
|
|
@@ -1950,15 +2024,82 @@ var ir = A("/* `min-width: auto` is the default; tiles hold long words and wide
|
|
|
1950
2024
|
willUpdate(e) {
|
|
1951
2025
|
super.willUpdate(e), this.span ? this.style.setProperty("--lintje-span", String(this.span)) : this.style.removeProperty("--lintje-span");
|
|
1952
2026
|
}
|
|
1953
|
-
},
|
|
1954
|
-
|
|
1955
|
-
|
|
2027
|
+
}, ur = "/* The block is the container, so the inner row can take its margin from the block's own width. */\n.lintje-announcement {\n container-type: inline-size;\n border-radius: var(--radius);\n}\n.lintje-announcement__inner {\n display: flex;\n align-items: flex-start;\n gap: var(--space-2);\n padding: var(--space-3);\n}\n\n.lintje-announcement__icon {\n width: 20px; height: 20px;\n flex: none;\n display: flex; align-items: center; justify-content: center;\n color: var(--color-text-primary);\n margin-top: 1px;\n}\n.lintje-announcement__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); }\n.lintje-announcement__content { min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); }\n.lintje-announcement__title { font: var(--text-tile-title); color: var(--color-text-primary); }\n.lintje-announcement__text { font: var(--text-ui); line-height: 1.45; color: var(--color-text-primary); }\n.lintje-announcement__meta { font: var(--text-meta); color: var(--color-text-muted); }\n.lintje-announcement__link { color: var(--color-link-on-status); font-weight: 700; }\n/* The `action` slot keeps its own width: under the text, or beside it where the announcement is wide. */\n.lintje-announcement__action::slotted(*) { align-self: flex-start; }\n.lintje-announcement__media::slotted(*) { flex: none; max-width: 40%; height: auto; }\n/* Wide enough for the action beside the text, wide enough for the full margin. */\n@container (min-width: 560px) {\n .lintje-announcement__inner { padding: var(--space-4); }\n .lintje-announcement__body { flex-direction: row; align-items: center; gap: var(--space-4); }\n .lintje-announcement__content { flex: 1; }\n .lintje-announcement__action::slotted(*) { align-self: center; flex: none; }\n}\n\n/* The margin pulls the button's middle in line with the icon box; the hit area reaches the target. */\n.lintje-announcement__close {\n position: relative;\n width: var(--h-icon-button); height: var(--h-icon-button); flex: none;\n display: flex; align-items: center; justify-content: center;\n --lintje-close-pull: calc((var(--space-5) - var(--h-icon-button)) / 2);\n margin: var(--lintje-close-pull) var(--lintje-close-pull) var(--lintje-close-pull) 0;\n border: 0;\n background: transparent;\n color: var(--color-text-primary);\n cursor: pointer;\n}\n.lintje-announcement__close:hover { background: var(--color-bg-subtle); }\n.lintje-announcement__close::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2));\n}\n\n.lintje-announcement--warning { background: var(--color-attention-bg); }\n.lintje-announcement--warning .lintje-announcement__icon { color: var(--color-attention-line); }\n.lintje-announcement--error { background: var(--color-error-bg); }\n.lintje-announcement--error .lintje-announcement__icon { color: var(--color-error-line); }\n.lintje-announcement--outage { background: var(--color-error-bg); }\n.lintje-announcement--outage .lintje-announcement__icon { color: var(--color-error-line); }\n.lintje-announcement--info { background: var(--color-info-bg); }\n.lintje-announcement--info .lintje-announcement__icon { color: var(--color-info-line); }\n.lintje-announcement--ok { background: var(--color-success-bg); }\n.lintje-announcement--ok .lintje-announcement__icon { color: var(--color-success-line); }\n\n@media screen and (max-width: 767px) {\n .lintje-announcement__inner { padding: var(--space-3); }\n .lintje-announcement__text { font: var(--text-small); }\n}\n\n/* Forced colours drop the fill, so the announcement takes an outline. */\n@media (forced-colors: active) {\n .lintje-announcement { outline: 1px solid CanvasText; outline-offset: -1px; }\n}\n\n@media print {\n .lintje-announcement { break-inside: avoid; }\n}\n", dr = {
|
|
2028
|
+
warning: "attention",
|
|
2029
|
+
outage: "error",
|
|
2030
|
+
error: "error",
|
|
2031
|
+
info: "info",
|
|
2032
|
+
ok: "success"
|
|
2033
|
+
}, fr = {
|
|
2034
|
+
warning: "status",
|
|
2035
|
+
outage: "alert",
|
|
2036
|
+
error: "status",
|
|
2037
|
+
info: "status",
|
|
2038
|
+
ok: "status"
|
|
2039
|
+
}, pr = {
|
|
2040
|
+
warning: "Waarschuwing",
|
|
2041
|
+
outage: "Storing",
|
|
2042
|
+
error: "Fout",
|
|
2043
|
+
info: "Informatie",
|
|
2044
|
+
ok: "Gelukt"
|
|
2045
|
+
}, mr = A(ur);
|
|
2046
|
+
function hr(e) {
|
|
2047
|
+
let t = e.kind ?? "warning", n = e.live === !0, r = n && !e.filled;
|
|
2048
|
+
return C`<div
|
|
2049
|
+
class=${q({
|
|
2050
|
+
"lintje-announcement": !0,
|
|
2051
|
+
[`lintje-announcement--${t}`]: !0
|
|
2052
|
+
})}
|
|
2053
|
+
role=${n ? fr[t] : T}
|
|
2054
|
+
>
|
|
2055
|
+
<div class="lintje-announcement__inner">
|
|
2056
|
+
${gr(t)} ${r ? T : _r(t, e)}
|
|
2057
|
+
</div>
|
|
2058
|
+
</div>`;
|
|
2059
|
+
}
|
|
2060
|
+
function gr(e) {
|
|
2061
|
+
let t = An[dr[e]];
|
|
2062
|
+
return C`<span class="lintje-announcement__icon" aria-hidden="true"
|
|
2063
|
+
>${t ? K(t, { size: 16 }) : T}</span
|
|
2064
|
+
>`;
|
|
2065
|
+
}
|
|
2066
|
+
function _r(e, t) {
|
|
2067
|
+
let { title: n, text: r, meta: i, link: a } = t, o = C`<span class="visually-hidden">${pr[e]}: </span>`;
|
|
2068
|
+
return C`<div class="lintje-announcement__body">
|
|
2069
|
+
<div class="lintje-announcement__content">
|
|
2070
|
+
${n ? C`<p class="lintje-announcement__title">${o}${n}</p>` : T}
|
|
2071
|
+
${r ? C`<p class="lintje-announcement__text">${n ? T : o}${r}</p>` : T}
|
|
2072
|
+
${i || a ? C`<p class="lintje-announcement__meta">
|
|
2073
|
+
${i ?? T}${i && a ? " · " : T}${a ? C`<a class="lintje-announcement__link" href=${a.href}>${a.label}</a>` : T}
|
|
2074
|
+
</p>` : T}
|
|
2075
|
+
</div>
|
|
2076
|
+
${t.action ?? T}
|
|
2077
|
+
</div>
|
|
2078
|
+
${t.media ?? T}
|
|
2079
|
+
${t.onClose ? C`<button
|
|
2080
|
+
type="button"
|
|
2081
|
+
class="lintje-announcement__close"
|
|
2082
|
+
aria-label="Mededeling sluiten"
|
|
2083
|
+
@click=${t.onClose}
|
|
2084
|
+
>
|
|
2085
|
+
${K("functioneel-kruis", { size: 16 })}
|
|
2086
|
+
</button>` : T}`;
|
|
2087
|
+
}
|
|
2088
|
+
//#endregion
|
|
2089
|
+
//#region src/primitives/shared/length.ts
|
|
2090
|
+
var vr = /^-?\d+(?:\.\d+)?$/;
|
|
2091
|
+
function yr(e) {
|
|
2092
|
+
if (e !== void 0) return typeof e == "number" || vr.test(e) ? `${e}px` : e;
|
|
1956
2093
|
}
|
|
1957
2094
|
//#endregion
|
|
1958
2095
|
//#region src/primitives/icon-button/icon-button.ts
|
|
1959
|
-
var
|
|
2096
|
+
var br = class extends j {
|
|
1960
2097
|
static {
|
|
1961
|
-
this.styles = [
|
|
2098
|
+
this.styles = [
|
|
2099
|
+
G,
|
|
2100
|
+
A(ar),
|
|
2101
|
+
A(xn)
|
|
2102
|
+
];
|
|
1962
2103
|
}
|
|
1963
2104
|
static {
|
|
1964
2105
|
this.properties = {
|
|
@@ -2022,20 +2163,25 @@ var cr = class extends j {
|
|
|
2022
2163
|
</button>`;
|
|
2023
2164
|
}
|
|
2024
2165
|
};
|
|
2025
|
-
M("lintje-icon-button",
|
|
2166
|
+
M("lintje-icon-button", br);
|
|
2026
2167
|
//#endregion
|
|
2027
2168
|
//#region src/primitives/status-dot/status-dot.css?inline
|
|
2028
|
-
var
|
|
2169
|
+
var xr = ":host { display: inline-flex; vertical-align: middle; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-status { display: inline-flex; align-items: center; gap: var(--space-2); font: var(--text-small); }\n.lintje-status__dot { border-radius: var(--radius-round); flex: none; display: block; }\n.lintje-status__dot--success { background: var(--color-success); }\n.lintje-status__dot--warning { background: var(--color-warning); }\n.lintje-status__dot--attention { background: var(--color-attention); }\n.lintje-status__dot--error { background: var(--color-error); }\n.lintje-status__dot--info { background: var(--color-info); }\n.lintje-status__dot--busy { background: var(--color-action-primary); }\n.lintje-status__dot--neutral { background: var(--color-text-muted); }\n.lintje-status__dot--subtle { background: var(--color-text-muted); }\n.lintje-status__dot--live { background: var(--color-error); }\n\n/* Forced colours: the dot's fill is dropped, so it keeps its drawing as one CanvasText dot. */\n@media (forced-colors: active) {\n .lintje-status__dot { forced-color-adjust: none; background: CanvasText; }\n}\n", Sr = {
|
|
2170
|
+
complete: "success",
|
|
2171
|
+
delayed: "warning",
|
|
2172
|
+
outage: "error",
|
|
2173
|
+
"no-data": "neutral"
|
|
2174
|
+
}, Cr = {
|
|
2029
2175
|
complete: "compleet",
|
|
2030
2176
|
delayed: "vertraagd",
|
|
2031
2177
|
outage: "storing",
|
|
2032
2178
|
"no-data": "geen data"
|
|
2033
|
-
},
|
|
2179
|
+
}, wr = class extends j {
|
|
2034
2180
|
constructor(...e) {
|
|
2035
2181
|
super(...e), this.tone = "complete", this.size = 10;
|
|
2036
2182
|
}
|
|
2037
2183
|
static {
|
|
2038
|
-
this.styles = A(
|
|
2184
|
+
this.styles = A(xr);
|
|
2039
2185
|
}
|
|
2040
2186
|
static {
|
|
2041
2187
|
this.properties = {
|
|
@@ -2048,27 +2194,28 @@ var lr = ":host { display: inline-flex; vertical-align: middle; }\n:host([hidden
|
|
|
2048
2194
|
};
|
|
2049
2195
|
}
|
|
2050
2196
|
render() {
|
|
2197
|
+
let e = Object.hasOwn(Sr, this.tone) ? this.tone : void 0, t = e ? Sr[e] : this.tone, n = e ? Cr[e] : jn[t];
|
|
2051
2198
|
return C`<span class="lintje-status">
|
|
2052
2199
|
<span
|
|
2053
|
-
class="lintje-status__dot lintje-status__dot--${
|
|
2200
|
+
class="lintje-status__dot lintje-status__dot--${t}"
|
|
2054
2201
|
${B({
|
|
2055
2202
|
width: `${this.size}px`,
|
|
2056
2203
|
height: `${this.size}px`
|
|
2057
2204
|
})}
|
|
2058
2205
|
></span>
|
|
2059
|
-
<span>${this.label ??
|
|
2206
|
+
<span>${this.label ?? n}</span>
|
|
2060
2207
|
</span>`;
|
|
2061
2208
|
}
|
|
2062
2209
|
};
|
|
2063
|
-
M("lintje-status-dot",
|
|
2210
|
+
M("lintje-status-dot", wr);
|
|
2064
2211
|
//#endregion
|
|
2065
2212
|
//#region src/primitives/skeleton/skeleton.css?inline
|
|
2066
|
-
var
|
|
2213
|
+
var Tr = "/* The size is on the host so a percentage has a box to resolve against. */\n:host { display: block; }\n:host(lintje-skeleton) .lintje-skeleton { width: 100%; height: 100%; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-skeleton {\n display: block;\n background: linear-gradient(90deg,\n var(--color-bg-subtle) 25%,\n var(--color-border-default) 37%,\n var(--color-bg-subtle) 63%);\n background-size: 200% 100%;\n animation: lintje-shimmer var(--dur-skeleton) linear infinite;\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-skeleton { animation: none; background: var(--color-bg-subtle); }\n}\n\n/* Forced colours: the gradient is dropped, so the placeholder keeps a 1 px GrayText line. */\n@media (forced-colors: active) {\n .lintje-skeleton { outline: 1px solid GrayText; outline-offset: -1px; }\n}\n", Er = class extends j {
|
|
2067
2214
|
constructor(...e) {
|
|
2068
2215
|
super(...e), this.width = "100%", this.height = 12;
|
|
2069
2216
|
}
|
|
2070
2217
|
static {
|
|
2071
|
-
this.styles = A(
|
|
2218
|
+
this.styles = A(Tr);
|
|
2072
2219
|
}
|
|
2073
2220
|
static {
|
|
2074
2221
|
this.properties = {
|
|
@@ -2077,25 +2224,57 @@ var fr = "/* The size is on the host so a percentage has a box to resolve agains
|
|
|
2077
2224
|
};
|
|
2078
2225
|
}
|
|
2079
2226
|
willUpdate(e) {
|
|
2080
|
-
super.willUpdate(e), this.style.width =
|
|
2227
|
+
super.willUpdate(e), this.style.width = yr(this.width) ?? "", this.style.height = yr(this.height) ?? "";
|
|
2081
2228
|
}
|
|
2082
2229
|
render() {
|
|
2083
2230
|
return C`<span class="lintje-skeleton" aria-hidden="true"></span>`;
|
|
2084
2231
|
}
|
|
2085
2232
|
};
|
|
2086
|
-
M("lintje-skeleton",
|
|
2233
|
+
M("lintje-skeleton", Er);
|
|
2234
|
+
//#endregion
|
|
2235
|
+
//#region src/primitives/shared/empty-state-block.ts
|
|
2236
|
+
var Dr = A(".lintje-empty-state {\n display: flex; flex-direction: column; align-items: center;\n gap: var(--space-2);\n padding: var(--space-8) var(--space-4);\n text-align: center;\n font: var(--text-ui);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__icon { color: var(--color-text-muted); }\n.lintje-empty-state__heading {\n margin: var(--space-1) 0 0;\n font: var(--text-tile-title);\n color: var(--color-text-primary);\n}\n.lintje-empty-state__text {\n max-width: 280px;\n margin: 0;\n color: var(--color-text-muted);\n}\n.lintje-empty-state__action { margin-top: var(--space-2); }\n\n.lintje-empty-state--compact {\n display: block;\n padding: var(--space-4);\n text-align: left;\n color: var(--color-text-muted);\n}\n\n/* Phone: the action runs the full width. */\n@media screen and (max-width: 767px) {\n .lintje-empty-state:not(.lintje-empty-state--compact) .lintje-empty-state__action {\n align-self: stretch;\n }\n}\n");
|
|
2237
|
+
function Or(e, t) {
|
|
2238
|
+
switch (t) {
|
|
2239
|
+
case 2: return C`<h2 class="lintje-empty-state__heading">${e}</h2>`;
|
|
2240
|
+
case 4: return C`<h4 class="lintje-empty-state__heading">${e}</h4>`;
|
|
2241
|
+
case 5: return C`<h5 class="lintje-empty-state__heading">${e}</h5>`;
|
|
2242
|
+
case 6: return C`<h6 class="lintje-empty-state__heading">${e}</h6>`;
|
|
2243
|
+
default: return C`<h3 class="lintje-empty-state__heading">${e}</h3>`;
|
|
2244
|
+
}
|
|
2245
|
+
}
|
|
2246
|
+
function kr(e) {
|
|
2247
|
+
let t = e.status ? "status" : T, n = !!e.status && !e.filled;
|
|
2248
|
+
return e.compact ? C`<div class="lintje-empty-state lintje-empty-state--compact" role=${t}>
|
|
2249
|
+
${n ? T : C`${e.text ?? T} ${e.action ?? T}`}
|
|
2250
|
+
</div>` : C`<div class="lintje-empty-state" role=${t}>
|
|
2251
|
+
${n ? T : Ar(e)}
|
|
2252
|
+
</div>`;
|
|
2253
|
+
}
|
|
2254
|
+
function Ar(e) {
|
|
2255
|
+
return C`${e.icon ? K(e.icon, {
|
|
2256
|
+
size: 40,
|
|
2257
|
+
className: "lintje-empty-state__icon"
|
|
2258
|
+
}) : T}
|
|
2259
|
+
${e.heading ? Or(e.heading, e.level ?? 3) : T}
|
|
2260
|
+
${e.text ? C`<p class="lintje-empty-state__text">${e.text}</p>` : T}
|
|
2261
|
+
${e.action === void 0 ? T : C`<div class="lintje-empty-state__action" ?hidden=${!e.actionShown}>
|
|
2262
|
+
${e.action}
|
|
2263
|
+
</div>`}`;
|
|
2264
|
+
}
|
|
2087
2265
|
//#endregion
|
|
2088
2266
|
//#region src/primitives/tile/tile.css?inline
|
|
2089
|
-
var
|
|
2267
|
+
var jr = "/*\n * Above the divider: the host, the grid item the tile fills by its height or, when the host has\n * only a floor, by `min-height: inherit`. Below it: the block's BEM CSS.\n */\n:host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n.lintje-tile {\n height: 100%;\n min-height: inherit;\n}\n/* On paper a tile stays on one sheet where it fits, unless it is `breakable`. */\n@media print { :host(:not([breakable])) { break-inside: avoid; } }\n.lintje-chart-state {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n justify-content: center;\n align-items: center;\n min-width: 0;\n}\n.lintje-chart-state--empty { text-align: center; gap: var(--space-3); }\n.lintje-chart-state--empty .lintje-empty-state--compact { text-align: center; font: var(--text-small); }\n/* An announcement measures as a container, so it has no width of its own to centre by. */\n.lintje-chart-state--error { justify-content: flex-start; align-items: stretch; gap: var(--space-4); }\n.lintje-chart-state__last-known { font: var(--text-small); color: var(--color-text-muted); text-align: center; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-tile {\n display: flex;\n flex-direction: column;\n gap: 14px;\n min-width: 0;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-default);\n border-radius: var(--radius);\n padding: var(--tile-pad-y) var(--tile-pad-x);\n}\n\n.lintje-tile__head {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: var(--space-4);\n}\n.lintje-tile__heading { min-width: 0; }\n/* With an icon the heading becomes two columns, which centres the icon on the title's line and\n keeps the subtitle under the title text. */\n.lintje-tile__heading--icon {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n}\n/* Only the placement is the tile's; the alignment is `.lintje-leading-icon`. */\n.lintje-tile__icon { grid-row: 1; }\n.lintje-tile__heading--icon .lintje-tile__title,\n.lintje-tile__heading--icon .lintje-tile__sub { grid-column: 2; }\n.lintje-tile__title { font: var(--text-tile-title); color: var(--color-text-primary); }\n.lintje-tile__sub { font: var(--text-tile-sub); color: var(--color-text-muted); margin-top: 2px; }\n/* The actions are 40 px icon buttons beside a title of one line: they stand out above and below\n it, so the head is the title's height and a tile without a subtitle keeps no empty band. */\n.lintje-tile__actions {\n display: flex; gap: var(--space-2); flex: none;\n margin-block: calc(var(--space-2) * -1);\n}\n/* Expand and download appear only while the tile is hovered or holds keyboard focus; without\n hover they stay visible. The tile only hides the action; how the visible action looks is the\n icon button's own. */\n.lintje-tile:not(:hover):not(:focus-within) lintje-icon-button[variant='tile'] { opacity: 0; }\n@media (hover: none) {\n .lintje-tile:not(:hover):not(:focus-within) lintje-icon-button[variant='tile'] { opacity: 1; }\n}\n\n.lintje-tile__intro { font: var(--text-small); color: var(--color-text-secondary); }\n\n/* Body and content are flex columns, so slotted content can place itself in a taller tile. */\n.lintje-tile__body { flex: 1; min-height: 0; min-width: 0; display: flex; flex-direction: column; }\n.lintje-tile__content { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n/* A tile with a height of its own scrolls what does not fit (`content-scroll`). */\n:host([content-scroll]) .lintje-tile__content { overflow: auto; }\n.lintje-tile__body--aside { flex-direction: row; gap: var(--space-5); align-items: stretch; }\n.lintje-tile__body--aside .lintje-tile__content { flex: 1; min-width: 0; }\n.lintje-tile__aside { flex: none; display: flex; flex-direction: column; justify-content: center; }\n/* On a phone the content keeps its full width and the key figure leads above it. */\n@media screen and (max-width: 767px) {\n .lintje-tile__body--aside { flex-direction: column; }\n}\n\n.lintje-tile__footnote {\n font: var(--text-meta);\n color: var(--color-text-muted);\n border-top: 1px solid var(--color-border-default);\n padding-top: var(--space-2);\n margin-top: auto;\n}\n\n/* Flush: the rows' lines reach the frame, and what they draw keeps the heading's indent through\n --lintje-inset, as does a pager under them. The last row's line is the footnote's rule. */\n.lintje-tile--flush .lintje-tile__body {\n margin-inline: calc(var(--tile-pad-x) * -1);\n --lintje-inset: var(--tile-pad-x);\n}\n.lintje-tile--flush .lintje-tile__footnote { border-top: 0; padding-top: 0; }\n/* Without a footnote the last row's line is the frame's: no empty strip under it. A pager under\n the rows gives the strip back through --lintje-inset-end. */\n.lintje-tile--flush:has(> .lintje-tile__footnote[hidden]) > .lintje-tile__body {\n margin-bottom: calc(var(--tile-pad-y) * -1 - 1px);\n --lintje-inset-end: calc(var(--tile-pad-y) + 1px);\n}\n\n/* Enlarging and downloading are for the screen. A tile split over two sheets is a block:\n Chromium sizes a flex column that breaks too short, and what follows overlaps its rows. */\n@media print {\n .lintje-tile__actions { display: none; }\n :host([breakable]) .lintje-tile { display: block; }\n :host([breakable]) .lintje-tile > :not(:first-child) { margin-top: 14px; }\n}\n", Mr = "Gegevens laden…", Nr = class e extends lr {
|
|
2090
2268
|
constructor(...e) {
|
|
2091
|
-
super(...e), this.footnoteSlotted = !1, this.asideSlotted = !1, this.legendBelow = !1, this.expandable = !1, this.download = !1, this.state = "ready", this.contentHeight = "var(--chart-h-main)", this.contentScroll = !1, this.flush = !1, this.filled = null, this.#e = 0;
|
|
2269
|
+
super(...e), this.footnoteSlotted = !1, this.asideSlotted = !1, this.legendBelow = !1, this.expandable = !1, this.download = !1, this.state = "ready", this.contentHeight = "var(--chart-h-main)", this.contentScroll = !1, this.flush = !1, this.breakable = !1, this.filled = null, this.#e = 0;
|
|
2092
2270
|
}
|
|
2093
2271
|
static {
|
|
2094
2272
|
this.styles = [
|
|
2095
|
-
|
|
2273
|
+
cr,
|
|
2096
2274
|
G,
|
|
2097
|
-
A(
|
|
2098
|
-
|
|
2275
|
+
A(jr),
|
|
2276
|
+
mr,
|
|
2277
|
+
Dr
|
|
2099
2278
|
];
|
|
2100
2279
|
}
|
|
2101
2280
|
static {
|
|
@@ -2132,6 +2311,10 @@ var mr = "/*\n * Above the divider: the host, the grid item the tile fills by it
|
|
|
2132
2311
|
reflect: !0
|
|
2133
2312
|
},
|
|
2134
2313
|
flush: { type: Boolean },
|
|
2314
|
+
breakable: {
|
|
2315
|
+
type: Boolean,
|
|
2316
|
+
reflect: !0
|
|
2317
|
+
},
|
|
2135
2318
|
filled: { state: !0 }
|
|
2136
2319
|
};
|
|
2137
2320
|
}
|
|
@@ -2143,7 +2326,7 @@ var mr = "/*\n * Above the divider: the host, the grid item the tile fills by it
|
|
|
2143
2326
|
this.#e && cancelAnimationFrame(this.#e), this.#e = 0, super.disconnectedCallback();
|
|
2144
2327
|
}
|
|
2145
2328
|
get regionText() {
|
|
2146
|
-
return this.state === "error" ? this.message ?? "" : this.state === "loading" ?
|
|
2329
|
+
return this.state === "error" || this.state === "empty" ? this.message ?? "" : this.state === "loading" ? Mr : null;
|
|
2147
2330
|
}
|
|
2148
2331
|
willUpdate(e) {
|
|
2149
2332
|
super.willUpdate(e), e.has("state") && (this.filled = null);
|
|
@@ -2178,7 +2361,7 @@ var mr = "/*\n * Above the divider: the host, the grid item the tile fills by it
|
|
|
2178
2361
|
"lintje-tile__heading--icon": !!this.icon
|
|
2179
2362
|
})}
|
|
2180
2363
|
>
|
|
2181
|
-
${
|
|
2364
|
+
${mn(this.icon, "lintje-tile__icon")}
|
|
2182
2365
|
${this.heading ? C`<h3 id=${t ?? T} class="lintje-tile__title">${this.heading}</h3>` : T}
|
|
2183
2366
|
${this.subtitle ? C`<p class="lintje-tile__sub">${this.subtitle}</p>` : T}
|
|
2184
2367
|
</div>
|
|
@@ -2222,44 +2405,45 @@ var mr = "/*\n * Above the divider: the host, the grid item the tile fills by it
|
|
|
2222
2405
|
</section>`;
|
|
2223
2406
|
}
|
|
2224
2407
|
content() {
|
|
2225
|
-
let e =
|
|
2408
|
+
let e = yr(this.contentHeight);
|
|
2226
2409
|
switch (this.state) {
|
|
2227
2410
|
case "loading": return C`<div ${B({ height: e })} role="status">
|
|
2228
|
-
<span class="visually-hidden">${this.filled ===
|
|
2411
|
+
<span class="visually-hidden">${this.filled === Mr ? Mr : T}</span>
|
|
2229
2412
|
<slot name="loading"><lintje-skeleton height="100%"></lintje-skeleton></slot>
|
|
2230
2413
|
</div>`;
|
|
2231
2414
|
case "empty": return C`<div class="lintje-chart-state lintje-chart-state--empty" ${B({ height: e })}>
|
|
2232
|
-
|
|
2415
|
+
${kr({
|
|
2416
|
+
text: this.message,
|
|
2417
|
+
compact: !0,
|
|
2418
|
+
status: !0,
|
|
2419
|
+
filled: this.filled === this.regionText
|
|
2420
|
+
})}
|
|
2233
2421
|
</div>`;
|
|
2234
2422
|
case "error": return C`<div
|
|
2235
2423
|
class="lintje-chart-state lintje-chart-state--error"
|
|
2236
2424
|
${B({ minHeight: e })}
|
|
2237
2425
|
>
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
<span class="visually-hidden">Waarschuwing: </span>${this.message}
|
|
2245
|
-
</p>` : T}
|
|
2246
|
-
</div>
|
|
2247
|
-
</div>
|
|
2426
|
+
${hr({
|
|
2427
|
+
kind: "warning",
|
|
2428
|
+
text: this.message,
|
|
2429
|
+
live: !0,
|
|
2430
|
+
filled: this.filled === this.regionText
|
|
2431
|
+
})}
|
|
2248
2432
|
${this.lastKnown ? C`<div class="lintje-chart-state__last-known">${this.lastKnown}</div>` : T}
|
|
2249
2433
|
</div>`;
|
|
2250
2434
|
default: return C`<slot></slot>`;
|
|
2251
2435
|
}
|
|
2252
2436
|
}
|
|
2253
2437
|
};
|
|
2254
|
-
M("lintje-tile",
|
|
2438
|
+
M("lintje-tile", Nr);
|
|
2255
2439
|
//#endregion
|
|
2256
2440
|
//#region src/primitives/grid/grid.css?inline
|
|
2257
|
-
var
|
|
2441
|
+
var Pr = "/*\n * Written with `:host(…)` and `::slotted()`: a selector from outside cannot reach into an item's\n * own root. An item's width comes from `--lintje-span`, so a media rule can override `grid-column`.\n */\n\n/* --- The grid ------------------------------------------------------------ */\n:host {\n display: grid;\n grid-template-columns: repeat(var(--lintje-grid-columns, 12), minmax(0, 1fr));\n gap: var(--grid-gutter);\n align-items: stretch;\n}\n:host([hidden]) { display: none; }\n\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n :host([variant='kpi-row']) { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n}\n@media screen and (max-width: 767px) {\n :host { grid-template-columns: minmax(0, 1fr); }\n :host([variant='kpi-row']) { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n\n/* --- Every item its column ------------------------------------------------ */\n\n::slotted([span]) {\n min-width: 0;\n grid-column: span var(--lintje-span, 1);\n}\n\n@media (min-width: 768px) and (max-width: 1023px), print and (max-width: 1023px) {\n ::slotted([span='4']) { grid-column: span 6; }\n ::slotted([span='8']) { grid-column: span 12; }\n}\n@media screen and (max-width: 767px) {\n ::slotted([span]) { grid-column: span 1; }\n}\n", Fr = class extends j {
|
|
2258
2442
|
constructor(...e) {
|
|
2259
2443
|
super(...e), this.columns = 12;
|
|
2260
2444
|
}
|
|
2261
2445
|
static {
|
|
2262
|
-
this.styles = A(
|
|
2446
|
+
this.styles = A(Pr);
|
|
2263
2447
|
}
|
|
2264
2448
|
static {
|
|
2265
2449
|
this.properties = {
|
|
@@ -2277,45 +2461,45 @@ var vr = "/*\n * Written with `:host(…)` and `::slotted()`: a selector from ou
|
|
|
2277
2461
|
return C`<slot></slot>`;
|
|
2278
2462
|
}
|
|
2279
2463
|
};
|
|
2280
|
-
M("lintje-grid",
|
|
2464
|
+
M("lintje-grid", Fr);
|
|
2281
2465
|
//#endregion
|
|
2282
2466
|
//#region src/primitives/grid-item/grid-item.ts
|
|
2283
|
-
var
|
|
2467
|
+
var Ir = class extends lr {
|
|
2284
2468
|
static {
|
|
2285
|
-
this.styles =
|
|
2469
|
+
this.styles = cr;
|
|
2286
2470
|
}
|
|
2287
2471
|
render() {
|
|
2288
2472
|
return C`<slot></slot>`;
|
|
2289
2473
|
}
|
|
2290
2474
|
};
|
|
2291
|
-
M("lintje-grid-item",
|
|
2475
|
+
M("lintje-grid-item", Ir);
|
|
2292
2476
|
//#endregion
|
|
2293
2477
|
//#region src/icons/visible.ts
|
|
2294
|
-
var
|
|
2295
|
-
function
|
|
2296
|
-
return X ||
|
|
2478
|
+
var Lr = "400px", Rr = /* @__PURE__ */ new WeakMap(), X = null, zr = !1;
|
|
2479
|
+
function Br() {
|
|
2480
|
+
return X || zr ? X : typeof IntersectionObserver == "function" ? (X = new IntersectionObserver((e) => {
|
|
2297
2481
|
for (let t of e) {
|
|
2298
2482
|
if (!t.isIntersecting) continue;
|
|
2299
|
-
let e =
|
|
2300
|
-
|
|
2483
|
+
let e = Rr.get(t.target);
|
|
2484
|
+
Hr(t.target), e?.();
|
|
2301
2485
|
}
|
|
2302
|
-
}, { rootMargin:
|
|
2486
|
+
}, { rootMargin: Lr }), X) : (zr = !0, null);
|
|
2303
2487
|
}
|
|
2304
|
-
function
|
|
2305
|
-
let n =
|
|
2306
|
-
n ? (
|
|
2488
|
+
function Vr(e, t) {
|
|
2489
|
+
let n = Br();
|
|
2490
|
+
n ? (Rr.set(e, t), n.observe(e)) : t();
|
|
2307
2491
|
}
|
|
2308
|
-
function
|
|
2309
|
-
|
|
2492
|
+
function Hr(e) {
|
|
2493
|
+
Rr.delete(e), X?.unobserve(e);
|
|
2310
2494
|
}
|
|
2311
2495
|
//#endregion
|
|
2312
2496
|
//#region src/icons/icon/icon.css?inline
|
|
2313
|
-
var
|
|
2497
|
+
var Ur = "/* `<lintje-icon>`'s own box: the host is the flex child; the glyph inside is a plain block. */\n:host {\n display: inline-flex;\n flex: none;\n}\n:host([hidden]) { display: none; }\n.lintje-icon {\n display: block;\n}\n", Wr = Object.keys(Ft), Gr = class extends j {
|
|
2314
2498
|
constructor(...e) {
|
|
2315
2499
|
super(...e), this.size = 16, this.lazy = !1, this.#e = null, this.#t = !1;
|
|
2316
2500
|
}
|
|
2317
2501
|
static {
|
|
2318
|
-
this.styles = [G, A(
|
|
2502
|
+
this.styles = [G, A(Ur)];
|
|
2319
2503
|
}
|
|
2320
2504
|
static {
|
|
2321
2505
|
this.properties = {
|
|
@@ -2329,14 +2513,14 @@ var Dr = "/* `<lintje-icon>`'s own box: the host is the flex child; the glyph in
|
|
|
2329
2513
|
#e;
|
|
2330
2514
|
#t;
|
|
2331
2515
|
connectedCallback() {
|
|
2332
|
-
super.connectedCallback(), this.#e =
|
|
2516
|
+
super.connectedCallback(), this.#e = an((e) => {
|
|
2333
2517
|
(e === void 0 || e === this.name) && this.requestUpdate();
|
|
2334
|
-
}), this.lazy && !this.#t &&
|
|
2518
|
+
}), this.lazy && !this.#t && Vr(this, () => {
|
|
2335
2519
|
this.#t = !0, this.requestUpdate();
|
|
2336
2520
|
});
|
|
2337
2521
|
}
|
|
2338
2522
|
disconnectedCallback() {
|
|
2339
|
-
this.#e?.(), this.#e = null,
|
|
2523
|
+
this.#e?.(), this.#e = null, Hr(this), super.disconnectedCallback();
|
|
2340
2524
|
}
|
|
2341
2525
|
render() {
|
|
2342
2526
|
return K(this.name, {
|
|
@@ -2347,37 +2531,38 @@ var Dr = "/* `<lintje-icon>`'s own box: the host is the flex child; the glyph in
|
|
|
2347
2531
|
});
|
|
2348
2532
|
}
|
|
2349
2533
|
};
|
|
2350
|
-
M("lintje-icon",
|
|
2534
|
+
M("lintje-icon", Gr);
|
|
2351
2535
|
//#endregion
|
|
2352
2536
|
//#region src/core/motion.ts
|
|
2353
|
-
function
|
|
2537
|
+
function Kr(e, t) {
|
|
2354
2538
|
let n = getComputedStyle(e).getPropertyValue(t).trim(), r = parseFloat(n);
|
|
2355
2539
|
return Number.isFinite(r) ? n.endsWith("ms") ? r : n.endsWith("s") ? r * 1e3 : r : 0;
|
|
2356
2540
|
}
|
|
2357
|
-
function
|
|
2541
|
+
function qr(e, t) {
|
|
2542
|
+
let n = getComputedStyle(e).getPropertyValue(t).trim(), r = /^cubic-bezier\(([^)]+)\)$/.exec(n)?.[1].split(",").map(Number);
|
|
2543
|
+
if (!r || r.length !== 4 || r.some((e) => !Number.isFinite(e))) return (e) => e;
|
|
2544
|
+
let [i, a, o, s] = r, c = (e, t, n) => 3 * e * n * (1 - n) ** 2 + 3 * t * n * n * (1 - n) + n ** 3;
|
|
2545
|
+
return (e) => {
|
|
2546
|
+
if (e <= 0 || e >= 1) return Math.min(1, Math.max(0, e));
|
|
2547
|
+
let t = 0, n = 1;
|
|
2548
|
+
for (let r = 0; r < 24; r++) {
|
|
2549
|
+
let r = (t + n) / 2;
|
|
2550
|
+
c(i, o, r) < e ? t = r : n = r;
|
|
2551
|
+
}
|
|
2552
|
+
return c(a, s, (t + n) / 2);
|
|
2553
|
+
};
|
|
2554
|
+
}
|
|
2555
|
+
function Jr() {
|
|
2358
2556
|
return typeof matchMedia < "u" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
2359
2557
|
}
|
|
2360
2558
|
//#endregion
|
|
2361
2559
|
//#region src/primitives/progress-bar/progress-bar.css?inline
|
|
2362
|
-
var
|
|
2363
|
-
done: {
|
|
2364
|
-
word: "klaar",
|
|
2365
|
-
icon: "functioneel-cirkel-vinkje"
|
|
2366
|
-
},
|
|
2367
|
-
error: {
|
|
2368
|
-
word: "mislukt",
|
|
2369
|
-
icon: "functioneel-waarschuwing"
|
|
2370
|
-
},
|
|
2371
|
-
paused: {
|
|
2372
|
-
word: "gepauzeerd",
|
|
2373
|
-
icon: "multimedia-player-pauze"
|
|
2374
|
-
}
|
|
2375
|
-
}, Pr = class extends j {
|
|
2560
|
+
var Yr = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-progress { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }\n.lintje-progress__head {\n display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between;\n gap: var(--space-1) var(--space-4);\n font: var(--text-small);\n}\n.lintje-progress__label { font-weight: 700; color: var(--color-text-primary); }\n.lintje-progress__detail { color: var(--color-text-muted); }\n.lintje-progress__mark { margin-right: var(--space-1); vertical-align: -0.125em; }\n.lintje-progress--done .lintje-progress__mark { color: var(--color-success-line); }\n.lintje-progress--error .lintje-progress__mark { color: var(--color-error-line); }\n.lintje-progress--paused .lintje-progress__mark { color: var(--color-text-muted); }\n\n/* The accent LINE, not the fill colour, keeps 3:1 on the dark surface. */\n.lintje-progress__track { height: 6px; background: var(--color-border-default); overflow: hidden; }\n.lintje-progress__fill {\n height: 100%;\n background: var(--color-accent-line);\n transition: width var(--dur-base) var(--ease-in-motion);\n}\n\n.lintje-progress--done .lintje-progress__fill { background: var(--color-success); }\n.lintje-progress--error .lintje-progress__fill { background: var(--color-error); }\n.lintje-progress--error .lintje-progress__label { color: var(--color-error-text); }\n.lintje-progress--paused .lintje-progress__fill { background: var(--color-text-muted); }\n\n.lintje-progress__track.is-indeterminate .lintje-progress__fill {\n width: 30%;\n animation: lintje-progress-slide var(--dur-skeleton) linear infinite alternate;\n}\n@keyframes lintje-progress-slide {\n from { margin-left: 0; }\n to { margin-left: 70%; }\n}\n@media (prefers-reduced-motion: reduce) {\n .lintje-progress__fill { transition: none; }\n .lintje-progress__track.is-indeterminate .lintje-progress__fill { animation: none; margin-left: 35%; }\n}\n\n/* Forced colours: the browser drops fills, so the track keeps a CanvasText edge and the fill\n draws as Highlight. */\n@media (forced-colors: active) {\n .lintje-progress__track { outline: 1px solid CanvasText; outline-offset: -1px; }\n .lintje-progress__fill { forced-color-adjust: none; background: Highlight; }\n}\n", Xr = class extends j {
|
|
2376
2561
|
constructor(...e) {
|
|
2377
|
-
super(...e), this.label = "", this.hideLabel = !1, this.
|
|
2562
|
+
super(...e), this.label = "", this.hideLabel = !1, this.state = "busy";
|
|
2378
2563
|
}
|
|
2379
2564
|
static {
|
|
2380
|
-
this.styles = [G, A(
|
|
2565
|
+
this.styles = [G, A(Yr)];
|
|
2381
2566
|
}
|
|
2382
2567
|
static {
|
|
2383
2568
|
this.properties = {
|
|
@@ -2388,7 +2573,7 @@ var Mr = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: no
|
|
|
2388
2573
|
attribute: "hide-label"
|
|
2389
2574
|
},
|
|
2390
2575
|
detail: { type: String },
|
|
2391
|
-
|
|
2576
|
+
state: {
|
|
2392
2577
|
type: String,
|
|
2393
2578
|
reflect: !0
|
|
2394
2579
|
}
|
|
@@ -2400,14 +2585,17 @@ var Mr = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: no
|
|
|
2400
2585
|
get percent() {
|
|
2401
2586
|
return Math.max(0, Math.min(100, this.value ?? 0));
|
|
2402
2587
|
}
|
|
2403
|
-
get
|
|
2404
|
-
return this.
|
|
2588
|
+
get resolvedState() {
|
|
2589
|
+
return this.state === "busy" && this.known && this.percent >= 100 ? "done" : this.state;
|
|
2405
2590
|
}
|
|
2406
2591
|
valueText(e) {
|
|
2407
2592
|
return [this.detail ?? (e && this.known ? `${this.percent}%` : void 0), e?.word].filter(Boolean).join(", ") || void 0;
|
|
2408
2593
|
}
|
|
2409
2594
|
render() {
|
|
2410
|
-
let e = this.
|
|
2595
|
+
let e = this.resolvedState, t = e === "busy" ? void 0 : {
|
|
2596
|
+
word: Nn[e].toLowerCase(),
|
|
2597
|
+
icon: e === "paused" ? "multimedia-player-pauze" : An[Mn[e]]
|
|
2598
|
+
}, n = !this.hideLabel && (this.label || this.detail);
|
|
2411
2599
|
return C`<div class=${q({
|
|
2412
2600
|
"lintje-progress": !0,
|
|
2413
2601
|
[`lintje-progress--${e}`]: !0
|
|
@@ -2441,14 +2629,14 @@ var Mr = ":host { display: block; min-width: 0; }\n:host([hidden]) { display: no
|
|
|
2441
2629
|
</div>`;
|
|
2442
2630
|
}
|
|
2443
2631
|
};
|
|
2444
|
-
M("lintje-progress-bar",
|
|
2632
|
+
M("lintje-progress-bar", Xr);
|
|
2445
2633
|
//#endregion
|
|
2446
2634
|
//#region node_modules/lit-html/directives/repeat.js
|
|
2447
|
-
var
|
|
2635
|
+
var Zr = (e, t, n) => {
|
|
2448
2636
|
let r = /* @__PURE__ */ new Map();
|
|
2449
2637
|
for (let i = t; i <= n; i++) r.set(e[i], i);
|
|
2450
2638
|
return r;
|
|
2451
|
-
},
|
|
2639
|
+
}, Qr = R(class extends z {
|
|
2452
2640
|
constructor(e) {
|
|
2453
2641
|
if (super(e), e.type !== L.CHILD) throw Error("repeat() can only be used in text expressions");
|
|
2454
2642
|
}
|
|
@@ -2466,7 +2654,7 @@ var Fr = (e, t, n) => {
|
|
|
2466
2654
|
return this.dt(e, t, n).values;
|
|
2467
2655
|
}
|
|
2468
2656
|
update(e, [t, n, r]) {
|
|
2469
|
-
let i =
|
|
2657
|
+
let i = Bn(e), { values: a, keys: o } = this.dt(t, n, r);
|
|
2470
2658
|
if (!Array.isArray(i)) return this.ut = o, a;
|
|
2471
2659
|
let s = this.ut ??= [], c = [], l, u, d = 0, f = i.length - 1, p = 0, m = a.length - 1;
|
|
2472
2660
|
for (; d <= f && p <= m;) if (i[d] === null) d++;
|
|
@@ -2475,7 +2663,7 @@ var Fr = (e, t, n) => {
|
|
|
2475
2663
|
else if (s[f] === o[m]) c[m] = Y(i[f], a[m]), f--, m--;
|
|
2476
2664
|
else if (s[d] === o[m]) c[m] = Y(i[d], a[m]), J(e, c[m + 1], i[d]), d++, m--;
|
|
2477
2665
|
else if (s[f] === o[p]) c[p] = Y(i[f], a[p]), J(e, i[d], i[f]), f--, p++;
|
|
2478
|
-
else if (l === void 0 && (l =
|
|
2666
|
+
else if (l === void 0 && (l = Zr(o, p, m), u = Zr(s, d, f)), l.has(s[d])) {
|
|
2479
2667
|
if (l.has(s[f])) {
|
|
2480
2668
|
let t = u.get(o[p]), n = t === void 0 ? null : i[t];
|
|
2481
2669
|
if (n === null) {
|
|
@@ -2483,22 +2671,22 @@ var Fr = (e, t, n) => {
|
|
|
2483
2671
|
Y(t, a[p]), c[p] = t;
|
|
2484
2672
|
} else c[p] = Y(n, a[p]), J(e, i[d], n), i[t] = null;
|
|
2485
2673
|
p++;
|
|
2486
|
-
} else
|
|
2487
|
-
} else
|
|
2674
|
+
} else Vn(i[f]), f--;
|
|
2675
|
+
} else Vn(i[d]), d++;
|
|
2488
2676
|
for (; p <= m;) {
|
|
2489
2677
|
let t = J(e, c[m + 1]);
|
|
2490
2678
|
Y(t, a[p]), c[p++] = t;
|
|
2491
2679
|
}
|
|
2492
2680
|
for (; d <= f;) {
|
|
2493
2681
|
let e = i[d++];
|
|
2494
|
-
e !== null &&
|
|
2682
|
+
e !== null && Vn(e);
|
|
2495
2683
|
}
|
|
2496
|
-
return this.ut = o,
|
|
2684
|
+
return this.ut = o, zn(e, c), w;
|
|
2497
2685
|
}
|
|
2498
|
-
}),
|
|
2686
|
+
}), $r = R(class extends z {
|
|
2499
2687
|
constructor(e) {
|
|
2500
2688
|
if (super(e), e.type !== L.PROPERTY && e.type !== L.ATTRIBUTE && e.type !== L.BOOLEAN_ATTRIBUTE) throw Error("The `live` directive is not allowed on child or event bindings");
|
|
2501
|
-
if (!
|
|
2689
|
+
if (!In(e)) throw Error("`live` bindings can only contain a single expression");
|
|
2502
2690
|
}
|
|
2503
2691
|
render(e) {
|
|
2504
2692
|
return e;
|
|
@@ -2511,116 +2699,53 @@ var Fr = (e, t, n) => {
|
|
|
2511
2699
|
} else if (e.type === L.BOOLEAN_ATTRIBUTE) {
|
|
2512
2700
|
if (!!t === n.hasAttribute(r)) return w;
|
|
2513
2701
|
} else if (e.type === L.ATTRIBUTE && n.getAttribute(r) === t + "") return w;
|
|
2514
|
-
return
|
|
2515
|
-
}
|
|
2516
|
-
}), Rr = [
|
|
2517
|
-
"sky-blue",
|
|
2518
|
-
"dark-yellow",
|
|
2519
|
-
"red",
|
|
2520
|
-
"green",
|
|
2521
|
-
"mint-green",
|
|
2522
|
-
"violet",
|
|
2523
|
-
"orange",
|
|
2524
|
-
"pink",
|
|
2525
|
-
"dark-green",
|
|
2526
|
-
"purple",
|
|
2527
|
-
"ruby-red",
|
|
2528
|
-
"yellow",
|
|
2529
|
-
"dark-brown",
|
|
2530
|
-
"brown",
|
|
2531
|
-
"dark-blue",
|
|
2532
|
-
"light-blue",
|
|
2533
|
-
"moss-green"
|
|
2534
|
-
];
|
|
2535
|
-
function zr(e) {
|
|
2536
|
-
return typeof e == "string" && Rr.includes(e);
|
|
2537
|
-
}
|
|
2538
|
-
function Br(e) {
|
|
2539
|
-
return `var(--color-chart-${e})`;
|
|
2540
|
-
}
|
|
2541
|
-
//#endregion
|
|
2542
|
-
//#region src/core/format.ts
|
|
2543
|
-
function Z(e, t = 0) {
|
|
2544
|
-
return e.toLocaleString("nl-NL", {
|
|
2545
|
-
minimumFractionDigits: t,
|
|
2546
|
-
maximumFractionDigits: t
|
|
2547
|
-
});
|
|
2548
|
-
}
|
|
2549
|
-
function Vr(e) {
|
|
2550
|
-
return Math.abs(e) >= 1e6 ? `${Z(e / 1e6, 1)} mln` : Math.abs(e) >= 1e4 ? `${Math.round(e / 1e3)}k` : Z(e);
|
|
2551
|
-
}
|
|
2552
|
-
function Hr(e, t) {
|
|
2553
|
-
let n = Z(e);
|
|
2554
|
-
return Wr(n, t) ? n : Vr(e);
|
|
2555
|
-
}
|
|
2556
|
-
var Ur = 6.5;
|
|
2557
|
-
function Wr(e, t) {
|
|
2558
|
-
return e.length * Ur <= t;
|
|
2559
|
-
}
|
|
2560
|
-
var Gr = "'RijksSans', 'Source Sans 3', sans-serif", Q;
|
|
2561
|
-
function Kr(e, t, n = "") {
|
|
2562
|
-
if (qr(e, n) <= t) return e;
|
|
2563
|
-
let r = e.length;
|
|
2564
|
-
for (; r > 1;) {
|
|
2565
|
-
--r;
|
|
2566
|
-
let i = `${e.slice(0, r).trimEnd()}…`;
|
|
2567
|
-
if (qr(i, n) <= t) return i;
|
|
2702
|
+
return zn(e), t;
|
|
2568
2703
|
}
|
|
2569
|
-
|
|
2570
|
-
}
|
|
2571
|
-
function qr(e, t = "") {
|
|
2572
|
-
return Q === void 0 && (Q = typeof document > "u" ? null : document.createElement("canvas").getContext("2d") ?? null), Q ? (Q.font = `400 12px ${t.trim() || Gr}`, Q.measureText(e).width) : e.length * Ur;
|
|
2573
|
-
}
|
|
2574
|
-
function Jr(e, t = 0) {
|
|
2575
|
-
return `${Z(e, t)}%`;
|
|
2576
|
-
}
|
|
2577
|
-
//#endregion
|
|
2578
|
-
//#region node_modules/lit-html/async-directive.js
|
|
2579
|
-
var $ = (e, t) => {
|
|
2704
|
+
}), Z = (e, t) => {
|
|
2580
2705
|
let n = e._$AN;
|
|
2581
2706
|
if (n === void 0) return !1;
|
|
2582
|
-
for (let e of n) e._$AO?.(t, !1),
|
|
2707
|
+
for (let e of n) e._$AO?.(t, !1), Z(e, t);
|
|
2583
2708
|
return !0;
|
|
2584
|
-
},
|
|
2709
|
+
}, ei = (e) => {
|
|
2585
2710
|
let t, n;
|
|
2586
2711
|
do {
|
|
2587
2712
|
if ((t = e._$AM) === void 0) break;
|
|
2588
2713
|
n = t._$AN, n.delete(e), e = t;
|
|
2589
2714
|
} while (n?.size === 0);
|
|
2590
|
-
},
|
|
2715
|
+
}, ti = (e) => {
|
|
2591
2716
|
for (let t; t = e._$AM; e = t) {
|
|
2592
2717
|
let n = t._$AN;
|
|
2593
2718
|
if (n === void 0) t._$AN = n = /* @__PURE__ */ new Set();
|
|
2594
2719
|
else if (n.has(e)) break;
|
|
2595
|
-
n.add(e),
|
|
2720
|
+
n.add(e), ii(t);
|
|
2596
2721
|
}
|
|
2597
2722
|
};
|
|
2598
|
-
function
|
|
2599
|
-
this._$AN === void 0 ? this._$AM = e : (
|
|
2723
|
+
function ni(e) {
|
|
2724
|
+
this._$AN === void 0 ? this._$AM = e : (ei(this), this._$AM = e, ti(this));
|
|
2600
2725
|
}
|
|
2601
|
-
function
|
|
2726
|
+
function ri(e, t = !1, n = 0) {
|
|
2602
2727
|
let r = this._$AH, i = this._$AN;
|
|
2603
2728
|
if (i !== void 0 && i.size !== 0) {
|
|
2604
2729
|
if (t) {
|
|
2605
|
-
if (Array.isArray(r)) for (let e = n; e < r.length; e++)
|
|
2606
|
-
else r != null && (
|
|
2607
|
-
} else
|
|
2730
|
+
if (Array.isArray(r)) for (let e = n; e < r.length; e++) Z(r[e], !1), ei(r[e]);
|
|
2731
|
+
else r != null && (Z(r, !1), ei(r));
|
|
2732
|
+
} else Z(this, e);
|
|
2608
2733
|
}
|
|
2609
2734
|
}
|
|
2610
|
-
var
|
|
2611
|
-
e.type == L.CHILD && (e._$AP ??=
|
|
2612
|
-
},
|
|
2735
|
+
var ii = (e) => {
|
|
2736
|
+
e.type == L.CHILD && (e._$AP ??= ri, e._$AQ ??= ni);
|
|
2737
|
+
}, ai = class extends z {
|
|
2613
2738
|
constructor() {
|
|
2614
2739
|
super(...arguments), this._$AN = void 0;
|
|
2615
2740
|
}
|
|
2616
2741
|
_$AT(e, t, n) {
|
|
2617
|
-
super._$AT(e, t, n),
|
|
2742
|
+
super._$AT(e, t, n), ti(this), this.isConnected = e._$AU;
|
|
2618
2743
|
}
|
|
2619
2744
|
_$AO(e, t = !0) {
|
|
2620
|
-
e !== this.isConnected && (this.isConnected = e, e ? this.reconnected?.() : this.disconnected?.()), t && (
|
|
2745
|
+
e !== this.isConnected && (this.isConnected = e, e ? this.reconnected?.() : this.disconnected?.()), t && (Z(this, e), ei(this));
|
|
2621
2746
|
}
|
|
2622
2747
|
setValue(e) {
|
|
2623
|
-
if (
|
|
2748
|
+
if (In(this._$Ct)) this._$Ct._$AI(e, this);
|
|
2624
2749
|
else {
|
|
2625
2750
|
let t = [...this._$Ct._$AH];
|
|
2626
2751
|
t[this._$Ci] = e, this._$Ct._$AI(t, this, 0);
|
|
@@ -2628,7 +2753,7 @@ var $r = (e) => {
|
|
|
2628
2753
|
}
|
|
2629
2754
|
disconnected() {}
|
|
2630
2755
|
reconnected() {}
|
|
2631
|
-
},
|
|
2756
|
+
}, oi = /* @__PURE__ */ new WeakMap(), si = R(class extends ai {
|
|
2632
2757
|
render(e) {
|
|
2633
2758
|
return T;
|
|
2634
2759
|
}
|
|
@@ -2639,13 +2764,13 @@ var $r = (e) => {
|
|
|
2639
2764
|
rt(e) {
|
|
2640
2765
|
if (this.G !== void 0) {
|
|
2641
2766
|
if (this.isConnected || (e = void 0), typeof this.G == "function") {
|
|
2642
|
-
let t = this.ht ?? globalThis, n =
|
|
2643
|
-
n === void 0 && (n = /* @__PURE__ */ new WeakMap(),
|
|
2767
|
+
let t = this.ht ?? globalThis, n = oi.get(t);
|
|
2768
|
+
n === void 0 && (n = /* @__PURE__ */ new WeakMap(), oi.set(t, n)), n.get(this.G) !== void 0 && this.G.call(this.ht, void 0), n.set(this.G, e), e !== void 0 && this.G.call(this.ht, e);
|
|
2644
2769
|
} else this.G.value = e;
|
|
2645
2770
|
}
|
|
2646
2771
|
}
|
|
2647
2772
|
get lt() {
|
|
2648
|
-
return typeof this.G == "function" ?
|
|
2773
|
+
return typeof this.G == "function" ? oi.get(this.ht ?? globalThis)?.get(this.G) : this.G?.value;
|
|
2649
2774
|
}
|
|
2650
2775
|
disconnected() {
|
|
2651
2776
|
this.lt === this.ct && this.rt(void 0);
|
|
@@ -2653,6 +2778,82 @@ var $r = (e) => {
|
|
|
2653
2778
|
reconnected() {
|
|
2654
2779
|
this.rt(this.ct);
|
|
2655
2780
|
}
|
|
2656
|
-
});
|
|
2781
|
+
}), ci = /* @__PURE__ */ new Set(), li = !1;
|
|
2782
|
+
function ui() {
|
|
2783
|
+
for (let e of ci) e();
|
|
2784
|
+
}
|
|
2785
|
+
function di(e) {
|
|
2786
|
+
return !li && typeof window < "u" && (window.addEventListener("beforeprint", ui), li = !0), ci.add(e), () => ci.delete(e);
|
|
2787
|
+
}
|
|
2788
|
+
var fi = /* @__PURE__ */ new Set(), pi = null;
|
|
2789
|
+
function mi(e) {
|
|
2790
|
+
for (let t of fi) t(e.matches);
|
|
2791
|
+
}
|
|
2792
|
+
function hi(e) {
|
|
2793
|
+
return !pi && typeof matchMedia < "u" && (pi = matchMedia("print"), pi.addEventListener("change", mi)), fi.add(e), () => fi.delete(e);
|
|
2794
|
+
}
|
|
2795
|
+
//#endregion
|
|
2796
|
+
//#region src/core/format.ts
|
|
2797
|
+
function Q(e, t = 0) {
|
|
2798
|
+
return e.toLocaleString("nl-NL", {
|
|
2799
|
+
minimumFractionDigits: t,
|
|
2800
|
+
maximumFractionDigits: t
|
|
2801
|
+
});
|
|
2802
|
+
}
|
|
2803
|
+
function gi(e) {
|
|
2804
|
+
return Math.abs(e) >= 1e6 ? `${Q(e / 1e6, 1)} mln` : Math.abs(e) >= 1e4 ? `${Math.round(e / 1e3)}k` : Q(e);
|
|
2805
|
+
}
|
|
2806
|
+
function _i(e, t) {
|
|
2807
|
+
let n = Q(e);
|
|
2808
|
+
return yi(n, t) ? n : gi(e);
|
|
2809
|
+
}
|
|
2810
|
+
var vi = 6.5;
|
|
2811
|
+
function yi(e, t) {
|
|
2812
|
+
return e.length * vi <= t;
|
|
2813
|
+
}
|
|
2814
|
+
var bi = "'RijksSans', 'Source Sans 3', sans-serif", $;
|
|
2815
|
+
function xi(e, t, n = "") {
|
|
2816
|
+
if (Si(e, n) <= t) return e;
|
|
2817
|
+
let r = e.length;
|
|
2818
|
+
for (; r > 1;) {
|
|
2819
|
+
--r;
|
|
2820
|
+
let i = `${e.slice(0, r).trimEnd()}…`;
|
|
2821
|
+
if (Si(i, n) <= t) return i;
|
|
2822
|
+
}
|
|
2823
|
+
return "…";
|
|
2824
|
+
}
|
|
2825
|
+
function Si(e, t = "", n = 400) {
|
|
2826
|
+
return $ === void 0 && ($ = typeof document > "u" ? null : document.createElement("canvas").getContext("2d") ?? null), $ ? ($.font = `${n} 12px ${t.trim() || bi}`, $.measureText(e).width) : e.length * vi;
|
|
2827
|
+
}
|
|
2828
|
+
function Ci(e, t = 0) {
|
|
2829
|
+
return `${Q(e, t)}%`;
|
|
2830
|
+
}
|
|
2831
|
+
//#endregion
|
|
2832
|
+
//#region src/tokens/colors.ts
|
|
2833
|
+
var wi = [
|
|
2834
|
+
"sky-blue",
|
|
2835
|
+
"dark-yellow",
|
|
2836
|
+
"red",
|
|
2837
|
+
"green",
|
|
2838
|
+
"mint-green",
|
|
2839
|
+
"violet",
|
|
2840
|
+
"orange",
|
|
2841
|
+
"pink",
|
|
2842
|
+
"dark-green",
|
|
2843
|
+
"purple",
|
|
2844
|
+
"ruby-red",
|
|
2845
|
+
"yellow",
|
|
2846
|
+
"dark-brown",
|
|
2847
|
+
"brown",
|
|
2848
|
+
"dark-blue",
|
|
2849
|
+
"light-blue",
|
|
2850
|
+
"moss-green"
|
|
2851
|
+
];
|
|
2852
|
+
function Ti(e) {
|
|
2853
|
+
return typeof e == "string" && wi.includes(e);
|
|
2854
|
+
}
|
|
2855
|
+
function Ei(e) {
|
|
2856
|
+
return `var(--color-chart-${e})`;
|
|
2857
|
+
}
|
|
2657
2858
|
//#endregion
|
|
2658
|
-
export {
|
|
2859
|
+
export { Dn as $, Ue as $t, Cr as A, Nt as At, nr as B, ht as Bt, Fr as C, R as Ct, Er as D, Pt as Dt, kr as E, Ft as Et, cr as F, _t as Ft, qn as G, et as Gt, Zn as H, lt as Ht, or as I, dt as It, An as J, j as Jt, Un as K, it as Kt, ar as L, ft as Lt, mr as M, Ct as Mt, hr as N, Mt as Nt, Tr as O, St as Ot, lr as P, gt as Pt, kn as Q, Ve as Qt, ir as R, mt as Rt, Ir as S, Lt as St, Dr as T, L as Tt, Xn as U, st as Ut, $n as V, ct as Vt, Gn as W, ot as Wt, Mn as X, We as Xt, Nn as Y, M as Yt, wn as Z, A as Zt, Kr as _, an as _t, gi as a, e as an, _n as at, Wr as b, B as bt, Ci as c, pn as ct, di as d, mn as dt, T as en, On as et, hi as f, nn as ft, Xr as g, rn as gt, Qr as h, tn as ht, yi as i, o as in, yn as it, br as j, jt, wr as k, kt, Si as l, G as lt, $r as m, cn as mt, Ei as n, C as nn, xn as nt, _i as o, vn as ot, si as p, en as pt, Hn as q, tt as qt, Ti as r, Ce as rn, bn as rt, Q as s, q as st, wi as t, Ie as tn, Cn as tt, xi as u, K as ut, qr as v, sn as vt, Nr as w, z as wt, Gr as x, zt as xt, Jr as y, $t as yt, tr as z, pt as zt };
|