@k2b/ui 0.49.0 → 0.50.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/dist/base.css +40 -2
- package/dist/browser/actions/ContextMenu.js +3 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/charts/core/area.js +190 -0
- package/dist/browser/charts/core/area.js.map +1 -0
- package/dist/browser/charts/core/calendar.js +186 -0
- package/dist/browser/charts/core/calendar.js.map +1 -0
- package/dist/browser/charts/core/chart-map-data.js +9 -0
- package/dist/browser/charts/core/chart-map-data.js.map +1 -0
- package/dist/browser/charts/core/index.js +12 -0
- package/dist/browser/charts/core/index.js.map +1 -0
- package/dist/browser/charts/core/inspection.js +9 -0
- package/dist/browser/charts/core/inspection.js.map +1 -0
- package/dist/browser/charts/core/registry.js +28 -0
- package/dist/browser/charts/core/registry.js.map +1 -0
- package/dist/browser/charts/core/render.js +103 -0
- package/dist/browser/charts/core/render.js.map +1 -0
- package/dist/browser/charts/core/snapshot.js +65 -0
- package/dist/browser/charts/core/snapshot.js.map +1 -0
- package/dist/browser/charts/core/svg.js +2542 -0
- package/dist/browser/charts/core/svg.js.map +1 -0
- package/dist/browser/charts/core/termination.test-fixture.js +162 -0
- package/dist/browser/charts/core/termination.test-fixture.js.map +1 -0
- package/dist/browser/charts/core/text.js +13 -0
- package/dist/browser/charts/core/text.js.map +1 -0
- package/dist/browser/charts/core/types.js +8 -0
- package/dist/browser/charts/core/types.js.map +1 -0
- package/dist/browser/charts.js +4 -2
- package/dist/browser/charts.js.map +1 -1
- package/dist/browser/content/BalanceSummary.js +106 -0
- package/dist/browser/content/BalanceSummary.js.map +1 -0
- package/dist/browser/content/Chart.js +134 -115
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +366 -122
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +16 -9
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/DataTable.js +676 -293
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/DataTableTools.js +119 -0
- package/dist/browser/content/DataTableTools.js.map +1 -0
- package/dist/browser/content/FlowAmount.js +82 -0
- package/dist/browser/content/FlowAmount.js.map +1 -0
- package/dist/browser/content/balance-summary-messages.js +26 -0
- package/dist/browser/content/balance-summary-messages.js.map +1 -0
- package/dist/browser/content/chart-bar.js +6 -6
- package/dist/browser/content/chart-bar.js.map +1 -1
- package/dist/browser/content/chart-calendar.js +43 -0
- package/dist/browser/content/chart-calendar.js.map +1 -0
- package/dist/browser/content/chart-inspection-core.js +164 -37
- package/dist/browser/content/chart-inspection-core.js.map +1 -1
- package/dist/browser/content/chart-inspection.js.map +1 -1
- package/dist/browser/content/chart-line-gaps.js +2 -2
- package/dist/browser/content/chart-line-gaps.js.map +1 -1
- package/dist/browser/content/chart-map-viewport.js.map +1 -1
- package/dist/browser/content/chart-message-catalog.js +164 -0
- package/dist/browser/content/chart-message-catalog.js.map +1 -0
- package/dist/browser/content/chart-messages.js +2 -138
- package/dist/browser/content/chart-messages.js.map +1 -1
- package/dist/browser/content/chart-snapshot.js +1 -62
- package/dist/browser/content/chart-snapshot.js.map +1 -1
- package/dist/browser/content/chart-state-timeline.js +1 -1
- package/dist/browser/content/chart-state-timeline.js.map +1 -1
- package/dist/browser/content/chart-svg.js +2 -1
- package/dist/browser/content/chart-svg.js.map +1 -1
- package/dist/browser/content/chart-time-axis.js +139 -0
- package/dist/browser/content/chart-time-axis.js.map +1 -0
- package/dist/browser/content/data-table-columns.js +160 -0
- package/dist/browser/content/data-table-columns.js.map +1 -0
- package/dist/browser/content/data-table-messages.js +38 -2
- package/dist/browser/content/data-table-messages.js.map +1 -1
- package/dist/browser/content/flow-amount-messages.js +26 -0
- package/dist/browser/content/flow-amount-messages.js.map +1 -0
- package/dist/browser/content/index.js +4 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +5 -4
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +50 -17
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/date-picker.js +13 -0
- package/dist/browser/inputs/date-picker.js.map +1 -1
- package/dist/browser/intl/Format.js +31 -8
- package/dist/browser/intl/Format.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +7 -1
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/surfaces/BudgetList.js +281 -0
- package/dist/browser/surfaces/BudgetList.js.map +1 -0
- package/dist/browser/surfaces/ProgressBar.js +134 -21
- package/dist/browser/surfaces/ProgressBar.js.map +1 -1
- package/dist/browser/surfaces/StatCell.js +320 -144
- package/dist/browser/surfaces/StatCell.js.map +1 -1
- package/dist/browser/surfaces/StatGrid.js +75 -57
- package/dist/browser/surfaces/StatGrid.js.map +1 -1
- package/dist/browser/surfaces/budget-messages.js +64 -0
- package/dist/browser/surfaces/budget-messages.js.map +1 -0
- package/dist/browser/surfaces/delta-badge.js +65 -0
- package/dist/browser/surfaces/delta-badge.js.map +1 -0
- package/dist/browser/surfaces/index.js +2 -1
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/surfaces/person-color.js +2 -2
- package/dist/browser/surfaces/person-color.js.map +1 -1
- package/dist/browser/surfaces/stat-cell-messages.js +41 -0
- package/dist/browser/surfaces/stat-cell-messages.js.map +1 -0
- package/dist/browser/widgets/Dashboard.js +137 -0
- package/dist/browser/widgets/Dashboard.js.map +1 -0
- package/dist/browser/widgets/index.js +1 -0
- package/dist/browser/widgets/index.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +3 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/charts/core/area.js +190 -0
- package/dist/ssr/charts/core/area.js.map +1 -0
- package/dist/ssr/charts/core/calendar.js +186 -0
- package/dist/ssr/charts/core/calendar.js.map +1 -0
- package/dist/ssr/charts/core/chart-map-data.js +9 -0
- package/dist/ssr/charts/core/chart-map-data.js.map +1 -0
- package/dist/ssr/charts/core/index.js +12 -0
- package/dist/ssr/charts/core/index.js.map +1 -0
- package/dist/ssr/charts/core/inspection.js +9 -0
- package/dist/ssr/charts/core/inspection.js.map +1 -0
- package/dist/ssr/charts/core/registry.js +28 -0
- package/dist/ssr/charts/core/registry.js.map +1 -0
- package/dist/ssr/charts/core/render.js +103 -0
- package/dist/ssr/charts/core/render.js.map +1 -0
- package/dist/ssr/charts/core/snapshot.js +65 -0
- package/dist/ssr/charts/core/snapshot.js.map +1 -0
- package/dist/ssr/charts/core/svg.js +2542 -0
- package/dist/ssr/charts/core/svg.js.map +1 -0
- package/dist/ssr/charts/core/termination.test-fixture.js +162 -0
- package/dist/ssr/charts/core/termination.test-fixture.js.map +1 -0
- package/dist/ssr/charts/core/text.js +13 -0
- package/dist/ssr/charts/core/text.js.map +1 -0
- package/dist/ssr/charts/core/types.js +8 -0
- package/dist/ssr/charts/core/types.js.map +1 -0
- package/dist/ssr/charts.js +4 -2
- package/dist/ssr/charts.js.map +1 -1
- package/dist/ssr/content/BalanceSummary.js +75 -0
- package/dist/ssr/content/BalanceSummary.js.map +1 -0
- package/dist/ssr/content/Chart.js +90 -95
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +190 -46
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +5 -1
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +287 -78
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/DataTableTools.js +106 -0
- package/dist/ssr/content/DataTableTools.js.map +1 -0
- package/dist/ssr/content/FlowAmount.js +58 -0
- package/dist/ssr/content/FlowAmount.js.map +1 -0
- package/dist/ssr/content/balance-summary-messages.js +26 -0
- package/dist/ssr/content/balance-summary-messages.js.map +1 -0
- package/dist/ssr/content/chart-bar.js +6 -6
- package/dist/ssr/content/chart-bar.js.map +1 -1
- package/dist/ssr/content/chart-calendar.js +43 -0
- package/dist/ssr/content/chart-calendar.js.map +1 -0
- package/dist/ssr/content/chart-inspection-core.js +164 -37
- package/dist/ssr/content/chart-inspection-core.js.map +1 -1
- package/dist/ssr/content/chart-inspection.js.map +1 -1
- package/dist/ssr/content/chart-line-gaps.js +2 -2
- package/dist/ssr/content/chart-line-gaps.js.map +1 -1
- package/dist/ssr/content/chart-map-viewport.js.map +1 -1
- package/dist/ssr/content/chart-message-catalog.js +164 -0
- package/dist/ssr/content/chart-message-catalog.js.map +1 -0
- package/dist/ssr/content/chart-messages.js +2 -138
- package/dist/ssr/content/chart-messages.js.map +1 -1
- package/dist/ssr/content/chart-snapshot.js +1 -62
- package/dist/ssr/content/chart-snapshot.js.map +1 -1
- package/dist/ssr/content/chart-state-timeline.js +1 -1
- package/dist/ssr/content/chart-state-timeline.js.map +1 -1
- package/dist/ssr/content/chart-svg.js +2 -1
- package/dist/ssr/content/chart-svg.js.map +1 -1
- package/dist/ssr/content/chart-time-axis.js +139 -0
- package/dist/ssr/content/chart-time-axis.js.map +1 -0
- package/dist/ssr/content/data-table-columns.js +160 -0
- package/dist/ssr/content/data-table-columns.js.map +1 -0
- package/dist/ssr/content/data-table-messages.js +38 -2
- package/dist/ssr/content/data-table-messages.js.map +1 -1
- package/dist/ssr/content/flow-amount-messages.js +26 -0
- package/dist/ssr/content/flow-amount-messages.js.map +1 -0
- package/dist/ssr/content/index.js +4 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +5 -4
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +26 -9
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/date-picker.js +13 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -1
- package/dist/ssr/intl/Format.js +22 -2
- package/dist/ssr/intl/Format.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +7 -1
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/surfaces/BudgetList.js +170 -0
- package/dist/ssr/surfaces/BudgetList.js.map +1 -0
- package/dist/ssr/surfaces/ProgressBar.js +96 -5
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
- package/dist/ssr/surfaces/StatCell.js +157 -51
- package/dist/ssr/surfaces/StatCell.js.map +1 -1
- package/dist/ssr/surfaces/StatGrid.js +24 -35
- package/dist/ssr/surfaces/StatGrid.js.map +1 -1
- package/dist/ssr/surfaces/budget-messages.js +64 -0
- package/dist/ssr/surfaces/budget-messages.js.map +1 -0
- package/dist/ssr/surfaces/delta-badge.js +41 -0
- package/dist/ssr/surfaces/delta-badge.js.map +1 -0
- package/dist/ssr/surfaces/index.js +2 -1
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/surfaces/person-color.js +2 -2
- package/dist/ssr/surfaces/person-color.js.map +1 -1
- package/dist/ssr/surfaces/stat-cell-messages.js +41 -0
- package/dist/ssr/surfaces/stat-cell-messages.js.map +1 -0
- package/dist/ssr/widgets/Dashboard.js +84 -0
- package/dist/ssr/widgets/Dashboard.js.map +1 -0
- package/dist/ssr/widgets/index.js +1 -0
- package/dist/ssr/widgets/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/charts/core/area.d.ts +62 -0
- package/dist/types/charts/core/calendar.d.ts +57 -0
- package/dist/types/charts/core/chart-map-data.d.ts +3 -0
- package/dist/types/charts/core/index.d.ts +11 -0
- package/dist/types/charts/core/inspection.d.ts +16 -0
- package/dist/types/charts/core/registry.d.ts +27 -0
- package/dist/types/charts/core/render.d.ts +40 -0
- package/dist/types/charts/core/snapshot.d.ts +27 -0
- package/dist/types/charts/core/svg.d.ts +714 -0
- package/dist/types/charts/core/termination.test-fixture.d.ts +1 -0
- package/dist/types/charts/core/text.d.ts +5 -0
- package/dist/types/charts/core/types.d.ts +31 -0
- package/dist/types/charts.d.ts +4 -2
- package/dist/types/content/BalanceSummary.d.ts +29 -0
- package/dist/types/content/Chart.d.ts +26 -36
- package/dist/types/content/ChartExplorer.d.ts +43 -2
- package/dist/types/content/ChartSnapshotView.d.ts +1 -0
- package/dist/types/content/DataTable.d.ts +28 -0
- package/dist/types/content/DataTableTools.d.ts +44 -0
- package/dist/types/content/FlowAmount.d.ts +28 -0
- package/dist/types/content/balance-summary-messages.d.ts +11 -0
- package/dist/types/content/chart-bar.d.ts +1 -1
- package/dist/types/content/chart-calendar.d.ts +4 -0
- package/dist/types/content/chart-inspection-core.d.ts +21 -16
- package/dist/types/content/chart-inspection.d.ts +5 -1
- package/dist/types/content/chart-map-viewport.d.ts +1 -1
- package/dist/types/content/chart-message-catalog.d.ts +84 -0
- package/dist/types/content/chart-messages.d.ts +2 -33
- package/dist/types/content/chart-snapshot.d.ts +1 -26
- package/dist/types/content/chart-svg.d.ts +1 -1
- package/dist/types/content/chart-time-axis.d.ts +26 -0
- package/dist/types/content/data-table-columns.d.ts +72 -0
- package/dist/types/content/data-table-messages.d.ts +18 -0
- package/dist/types/content/flow-amount-messages.d.ts +11 -0
- package/dist/types/content/index.d.ts +10 -2
- package/dist/types/inputs/SelectChip.d.ts +2 -0
- package/dist/types/inputs/date-picker.d.ts +6 -0
- package/dist/types/intl/Format.d.ts +5 -0
- package/dist/types/layout/AppWorkspace.d.ts +5 -0
- package/dist/types/surfaces/BudgetList.d.ts +42 -0
- package/dist/types/surfaces/ProgressBar.d.ts +38 -2
- package/dist/types/surfaces/StatCell.d.ts +35 -2
- package/dist/types/surfaces/StatGrid.d.ts +3 -1
- package/dist/types/surfaces/budget-messages.d.ts +30 -0
- package/dist/types/surfaces/delta-badge.d.ts +10 -0
- package/dist/types/surfaces/index.d.ts +4 -3
- package/dist/types/surfaces/person-color.d.ts +2 -2
- package/dist/types/surfaces/stat-cell-messages.d.ts +19 -0
- package/dist/types/widgets/Dashboard.d.ts +42 -0
- package/dist/types/widgets/index.d.ts +1 -0
- package/package.json +7 -1
|
@@ -1,29 +1,52 @@
|
|
|
1
1
|
import { template as _$template } from "solid-js/web";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { delegateEvents as _$delegateEvents } from "solid-js/web";
|
|
3
|
+
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
4
4
|
import { memo as _$memo } from "solid-js/web";
|
|
5
5
|
import { className as _$className } from "solid-js/web";
|
|
6
6
|
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
7
7
|
import { effect as _$effect } from "solid-js/web";
|
|
8
8
|
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
9
|
+
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
9
10
|
import { insert as _$insert } from "solid-js/web";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
_tmpl$
|
|
13
|
-
_tmpl$
|
|
14
|
-
_tmpl$
|
|
15
|
-
_tmpl$
|
|
16
|
-
_tmpl$
|
|
17
|
-
_tmpl$
|
|
18
|
-
|
|
11
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
12
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__head><!$><!/><span class=k2b-stat-cell__label>`),
|
|
13
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__skeleton k2b-skeleton"data-part=value aria-hidden=true>`),
|
|
14
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>`),
|
|
15
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__error><i class="ti ti-alert-circle"aria-hidden=true></i><!$><!/>`),
|
|
16
|
+
_tmpl$5 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__main>`),
|
|
17
|
+
_tmpl$6 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__skeleton k2b-skeleton"data-part=support aria-hidden=true>`),
|
|
18
|
+
_tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell__support>`),
|
|
19
|
+
_tmpl$8 = /*#__PURE__*/_$template(`<span class="k2b-stat-cell__icon k2b-icon-tile"aria-hidden=true><i>`),
|
|
20
|
+
_tmpl$9 = /*#__PURE__*/_$template(`<span>`),
|
|
21
|
+
_tmpl$0 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__sub><!$><!/> <!$><!/>`),
|
|
22
|
+
_tmpl$1 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__sub>`),
|
|
23
|
+
_tmpl$10 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
24
|
+
_tmpl$11 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__accent><i aria-hidden=true></i><!$><!/>`),
|
|
25
|
+
_tmpl$12 = /*#__PURE__*/_$template(`<span class=k2b-stat-cell__stale><i class="ti ti-clock-exclamation"aria-hidden=true></i><!$><!/>`),
|
|
26
|
+
_tmpl$13 = /*#__PURE__*/_$template(`<button type=button class=k2b-stat-cell__retry>`),
|
|
27
|
+
_tmpl$14 = /*#__PURE__*/_$template(`<a class="k2b-stat-cell k2b-stat-cell--link"><i class="ti ti-external-link k2b-stat-cell__link-icon"aria-hidden=true></i><!$><!/>`),
|
|
28
|
+
_tmpl$15 = /*#__PURE__*/_$template(`<div class=k2b-stat-cell>`);
|
|
29
|
+
import { Match, Show, Switch } from "solid-js";
|
|
19
30
|
import Chart from "../content/Chart";
|
|
20
31
|
import { useLocale } from "../intl/locale";
|
|
32
|
+
import { DeltaBadge } from "./delta-badge";
|
|
21
33
|
import { useStatGridSize, useStatGridSurface } from "./StatGrid";
|
|
34
|
+
import { useStatCellMessages } from "./stat-cell-messages";
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The change against a comparison period. `unit: "ratio"` (default) reads `0.082` as `+8.2 %`; `"points"` is the
|
|
38
|
+
* difference of two shares in ratio units, so `0.031` reads `+3.1 pts`. Only with `better` does the badge carry a tone
|
|
39
|
+
* and say "better" or "worse"; without it the change stays unrated.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/** The value the change compares against, shown under the figure, such as "Last month 44,560". */
|
|
43
|
+
|
|
22
44
|
function Body(props) {
|
|
23
45
|
const gridSize = useStatGridSize();
|
|
24
46
|
const size = () => props.size ?? gridSize;
|
|
25
47
|
const accent = () => props.accent;
|
|
26
48
|
const locale = useLocale();
|
|
49
|
+
const t = useStatCellMessages();
|
|
27
50
|
const defaultTrendTooltip = ({
|
|
28
51
|
datum
|
|
29
52
|
}) => {
|
|
@@ -37,171 +60,324 @@ function Body(props) {
|
|
|
37
60
|
}]
|
|
38
61
|
};
|
|
39
62
|
};
|
|
63
|
+
const compareValue = () => {
|
|
64
|
+
const value = props.compare?.value;
|
|
65
|
+
return typeof value === "number" ? new Intl.NumberFormat(locale()).format(value) : value;
|
|
66
|
+
};
|
|
67
|
+
const empty = () => props.value === null || props.value === undefined || props.value === "";
|
|
40
68
|
return [(() => {
|
|
41
|
-
var _el$ = _$getNextElement(_tmpl$)
|
|
42
|
-
|
|
43
|
-
|
|
69
|
+
var _el$ = _$getNextElement(_tmpl$),
|
|
70
|
+
_el$3 = _el$.firstChild,
|
|
71
|
+
[_el$4, _co$] = _$getNextMarker(_el$3.nextSibling),
|
|
72
|
+
_el$2 = _el$4.nextSibling;
|
|
73
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
74
|
+
get when() {
|
|
75
|
+
return props.icon;
|
|
76
|
+
},
|
|
77
|
+
children: icon => (() => {
|
|
78
|
+
var _el$12 = _$getNextElement(_tmpl$8),
|
|
79
|
+
_el$13 = _el$12.firstChild;
|
|
80
|
+
_$effect(_p$ => {
|
|
81
|
+
var _v$ = props.tone ?? "zinc",
|
|
82
|
+
_v$2 = icon();
|
|
83
|
+
_v$ !== _p$.e && _$setAttribute(_el$12, "data-tone", _p$.e = _v$);
|
|
84
|
+
_v$2 !== _p$.t && _$className(_el$13, _p$.t = _v$2);
|
|
85
|
+
return _p$;
|
|
86
|
+
}, {
|
|
87
|
+
e: undefined,
|
|
88
|
+
t: undefined
|
|
89
|
+
});
|
|
90
|
+
return _el$12;
|
|
91
|
+
})()
|
|
92
|
+
}), _el$4, _co$);
|
|
93
|
+
_$insert(_el$2, () => props.label);
|
|
94
|
+
_$effect(() => _$setAttribute(_el$2, "data-size", size()));
|
|
44
95
|
return _el$;
|
|
45
96
|
})(), (() => {
|
|
46
|
-
var _el$
|
|
47
|
-
_$insert(_el$
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
get when() {
|
|
100
|
-
return props.sub;
|
|
101
|
-
},
|
|
102
|
-
children: sub => (() => {
|
|
103
|
-
var _el$8 = _$getNextElement(_tmpl$4);
|
|
104
|
-
_$insert(_el$8, sub);
|
|
105
|
-
return _el$8;
|
|
106
|
-
})()
|
|
107
|
-
}), _el$5, _co$);
|
|
108
|
-
_$insert(_el$3, _$createComponent(Show, {
|
|
109
|
-
get when() {
|
|
110
|
-
return accent();
|
|
111
|
-
},
|
|
112
|
-
children: value => _$createComponent(Show, {
|
|
97
|
+
var _el$5 = _$getNextElement(_tmpl$5);
|
|
98
|
+
_$insert(_el$5, _$createComponent(Switch, {
|
|
99
|
+
get fallback() {
|
|
100
|
+
return [(() => {
|
|
101
|
+
var _el$14 = _$getNextElement(_tmpl$9);
|
|
102
|
+
_$insert(_el$14, (() => {
|
|
103
|
+
var _c$ = _$memo(() => !!empty());
|
|
104
|
+
return () => _c$() ? "–" : props.value;
|
|
105
|
+
})());
|
|
106
|
+
_$effect(_p$ => {
|
|
107
|
+
var _v$3 = `k2b-stat-cell__value ${props.valueClass ?? ""}`,
|
|
108
|
+
_v$4 = size(),
|
|
109
|
+
_v$5 = empty() || undefined,
|
|
110
|
+
_v$6 = props.title;
|
|
111
|
+
_v$3 !== _p$.e && _$className(_el$14, _p$.e = _v$3);
|
|
112
|
+
_v$4 !== _p$.t && _$setAttribute(_el$14, "data-size", _p$.t = _v$4);
|
|
113
|
+
_v$5 !== _p$.a && _$setAttribute(_el$14, "data-empty", _p$.a = _v$5);
|
|
114
|
+
_v$6 !== _p$.o && _$setAttribute(_el$14, "title", _p$.o = _v$6);
|
|
115
|
+
return _p$;
|
|
116
|
+
}, {
|
|
117
|
+
e: undefined,
|
|
118
|
+
t: undefined,
|
|
119
|
+
a: undefined,
|
|
120
|
+
o: undefined
|
|
121
|
+
});
|
|
122
|
+
return _el$14;
|
|
123
|
+
})(), _$createComponent(Show, {
|
|
124
|
+
get when() {
|
|
125
|
+
return _$memo(() => !!!empty())() && props.delta;
|
|
126
|
+
},
|
|
127
|
+
children: delta => _$createComponent(DeltaBadge, {
|
|
128
|
+
get delta() {
|
|
129
|
+
return delta();
|
|
130
|
+
},
|
|
131
|
+
get compare() {
|
|
132
|
+
return props.compare;
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
})];
|
|
136
|
+
},
|
|
137
|
+
get children() {
|
|
138
|
+
return [_$createComponent(Match, {
|
|
139
|
+
get when() {
|
|
140
|
+
return props.status === "loading";
|
|
141
|
+
},
|
|
142
|
+
get children() {
|
|
143
|
+
return [_$getNextElement(_tmpl$2), (() => {
|
|
144
|
+
var _el$7 = _$getNextElement(_tmpl$3);
|
|
145
|
+
_$insert(_el$7, () => t().loading);
|
|
146
|
+
return _el$7;
|
|
147
|
+
})()];
|
|
148
|
+
}
|
|
149
|
+
}), _$createComponent(Match, {
|
|
113
150
|
get when() {
|
|
114
|
-
return
|
|
151
|
+
return props.status === "error";
|
|
152
|
+
},
|
|
153
|
+
get children() {
|
|
154
|
+
var _el$8 = _$getNextElement(_tmpl$4),
|
|
155
|
+
_el$9 = _el$8.firstChild,
|
|
156
|
+
_el$0 = _el$9.nextSibling,
|
|
157
|
+
[_el$1, _co$2] = _$getNextMarker(_el$0.nextSibling);
|
|
158
|
+
_$insert(_el$8, () => t().notLoaded, _el$1, _co$2);
|
|
159
|
+
return _el$8;
|
|
160
|
+
}
|
|
161
|
+
})];
|
|
162
|
+
}
|
|
163
|
+
}));
|
|
164
|
+
return _el$5;
|
|
165
|
+
})(), (() => {
|
|
166
|
+
var _el$10 = _$getNextElement(_tmpl$7);
|
|
167
|
+
_$insert(_el$10, _$createComponent(Switch, {
|
|
168
|
+
get fallback() {
|
|
169
|
+
return _$createComponent(Show, {
|
|
170
|
+
get when() {
|
|
171
|
+
return props.stale;
|
|
115
172
|
},
|
|
116
173
|
get fallback() {
|
|
117
|
-
return (
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
174
|
+
return [_$createComponent(Show, {
|
|
175
|
+
get when() {
|
|
176
|
+
return props.compare;
|
|
177
|
+
},
|
|
178
|
+
children: compare => (() => {
|
|
179
|
+
var _el$15 = _$getNextElement(_tmpl$0),
|
|
180
|
+
_el$17 = _el$15.firstChild,
|
|
181
|
+
[_el$18, _co$3] = _$getNextMarker(_el$17.nextSibling),
|
|
182
|
+
_el$16 = _el$18.nextSibling,
|
|
183
|
+
_el$19 = _el$16.nextSibling,
|
|
184
|
+
[_el$20, _co$4] = _$getNextMarker(_el$19.nextSibling);
|
|
185
|
+
_$insert(_el$15, () => compare().label, _el$18, _co$3);
|
|
186
|
+
_$insert(_el$15, compareValue, _el$20, _co$4);
|
|
187
|
+
return _el$15;
|
|
188
|
+
})()
|
|
189
|
+
}), _$createComponent(Show, {
|
|
190
|
+
get when() {
|
|
191
|
+
return props.sub;
|
|
192
|
+
},
|
|
193
|
+
children: sub => (() => {
|
|
194
|
+
var _el$21 = _$getNextElement(_tmpl$1);
|
|
195
|
+
_$insert(_el$21, sub);
|
|
196
|
+
return _el$21;
|
|
197
|
+
})()
|
|
198
|
+
}), _$createComponent(Show, {
|
|
199
|
+
get when() {
|
|
200
|
+
return accent();
|
|
201
|
+
},
|
|
202
|
+
children: value => _$createComponent(Show, {
|
|
203
|
+
get when() {
|
|
204
|
+
return value().text;
|
|
205
|
+
},
|
|
206
|
+
get fallback() {
|
|
207
|
+
return (() => {
|
|
208
|
+
var _el$22 = _$getNextElement(_tmpl$10);
|
|
209
|
+
_$effect(_p$ => {
|
|
210
|
+
var _v$7 = `${value().icon} k2b-stat-cell__accent-icon`,
|
|
211
|
+
_v$8 = value().tone;
|
|
212
|
+
_v$7 !== _p$.e && _$className(_el$22, _p$.e = _v$7);
|
|
213
|
+
_v$8 !== _p$.t && _$setAttribute(_el$22, "data-tone", _p$.t = _v$8);
|
|
214
|
+
return _p$;
|
|
215
|
+
}, {
|
|
216
|
+
e: undefined,
|
|
217
|
+
t: undefined
|
|
218
|
+
});
|
|
219
|
+
return _el$22;
|
|
220
|
+
})();
|
|
221
|
+
},
|
|
222
|
+
children: text => (() => {
|
|
223
|
+
var _el$23 = _$getNextElement(_tmpl$11),
|
|
224
|
+
_el$24 = _el$23.firstChild,
|
|
225
|
+
_el$25 = _el$24.nextSibling,
|
|
226
|
+
[_el$26, _co$5] = _$getNextMarker(_el$25.nextSibling);
|
|
227
|
+
_$insert(_el$23, text, _el$26, _co$5);
|
|
228
|
+
_$effect(_p$ => {
|
|
229
|
+
var _v$9 = value().tone,
|
|
230
|
+
_v$0 = value().icon;
|
|
231
|
+
_v$9 !== _p$.e && _$setAttribute(_el$23, "data-tone", _p$.e = _v$9);
|
|
232
|
+
_v$0 !== _p$.t && _$className(_el$24, _p$.t = _v$0);
|
|
233
|
+
return _p$;
|
|
234
|
+
}, {
|
|
235
|
+
e: undefined,
|
|
236
|
+
t: undefined
|
|
237
|
+
});
|
|
238
|
+
return _el$23;
|
|
239
|
+
})()
|
|
240
|
+
})
|
|
241
|
+
}), _$createComponent(Show, {
|
|
242
|
+
get when() {
|
|
243
|
+
return _$memo(() => !!(!empty() && props.trend))() && props.trend.length > 1;
|
|
244
|
+
},
|
|
245
|
+
get children() {
|
|
246
|
+
return _$createComponent(Chart, {
|
|
247
|
+
kind: "sparkline",
|
|
248
|
+
get labels() {
|
|
249
|
+
return {
|
|
250
|
+
interactiveChart: props.label
|
|
251
|
+
};
|
|
252
|
+
},
|
|
253
|
+
get tooltip() {
|
|
254
|
+
return props.trendTooltip ?? defaultTrendTooltip;
|
|
255
|
+
},
|
|
256
|
+
"class": "k2b-stat-cell__trend",
|
|
257
|
+
get data() {
|
|
258
|
+
return Array.from(props.trend ?? []);
|
|
259
|
+
},
|
|
260
|
+
showLast: true
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
})];
|
|
264
|
+
},
|
|
265
|
+
children: stale => [(() => {
|
|
266
|
+
var _el$27 = _$getNextElement(_tmpl$12),
|
|
267
|
+
_el$28 = _el$27.firstChild,
|
|
268
|
+
_el$29 = _el$28.nextSibling,
|
|
269
|
+
[_el$30, _co$6] = _$getNextMarker(_el$29.nextSibling);
|
|
270
|
+
_$insert(_el$27, stale, _el$30, _co$6);
|
|
271
|
+
return _el$27;
|
|
272
|
+
})(), _$createComponent(Show, {
|
|
273
|
+
get when() {
|
|
274
|
+
return props.onRetry;
|
|
275
|
+
},
|
|
276
|
+
children: retry => (() => {
|
|
277
|
+
var _el$31 = _$getNextElement(_tmpl$13);
|
|
278
|
+
_el$31.$$click = () => retry()();
|
|
279
|
+
_$insert(_el$31, () => t().reload);
|
|
280
|
+
_$runHydrationEvents();
|
|
281
|
+
return _el$31;
|
|
282
|
+
})()
|
|
283
|
+
})]
|
|
284
|
+
});
|
|
285
|
+
},
|
|
286
|
+
get children() {
|
|
287
|
+
return [_$createComponent(Match, {
|
|
288
|
+
get when() {
|
|
289
|
+
return props.status === "loading";
|
|
131
290
|
},
|
|
132
|
-
children
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
291
|
+
get children() {
|
|
292
|
+
return _$getNextElement(_tmpl$6);
|
|
293
|
+
}
|
|
294
|
+
}), _$createComponent(Match, {
|
|
295
|
+
get when() {
|
|
296
|
+
return props.status === "error";
|
|
297
|
+
},
|
|
298
|
+
get children() {
|
|
299
|
+
return _$createComponent(Show, {
|
|
300
|
+
get when() {
|
|
301
|
+
return props.onRetry;
|
|
302
|
+
},
|
|
303
|
+
children: retry => (() => {
|
|
304
|
+
var _el$32 = _$getNextElement(_tmpl$13);
|
|
305
|
+
_el$32.$$click = () => retry()();
|
|
306
|
+
_$insert(_el$32, () => t().retry);
|
|
307
|
+
_$runHydrationEvents();
|
|
308
|
+
return _el$32;
|
|
309
|
+
})()
|
|
147
310
|
});
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
})];
|
|
311
|
+
}
|
|
312
|
+
})];
|
|
313
|
+
}
|
|
314
|
+
}));
|
|
315
|
+
return _el$10;
|
|
316
|
+
})()];
|
|
155
317
|
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* One key figure as a framed tile: icon and label, the figure with its change, and a support line with the comparison
|
|
321
|
+
* and the trend. Each state (loading, error, stale, empty) keeps the tile's place and size.
|
|
322
|
+
*/
|
|
156
323
|
export function StatCell(props) {
|
|
157
324
|
const gridSize = useStatGridSize();
|
|
158
325
|
const size = () => props.size ?? gridSize;
|
|
159
326
|
const surface = useStatGridSurface();
|
|
160
|
-
return _$createComponent(Show
|
|
327
|
+
return _$createComponent(Show
|
|
328
|
+
// A tile that offers a retry is no link: the button must not sit inside it.
|
|
329
|
+
, {
|
|
161
330
|
get when() {
|
|
162
|
-
return props.href;
|
|
331
|
+
return _$memo(() => !!(props.href && !props.status))() && !(props.stale && props.onRetry);
|
|
163
332
|
},
|
|
164
333
|
get fallback() {
|
|
165
334
|
return (() => {
|
|
166
|
-
var _el$
|
|
167
|
-
_$setAttribute(_el$
|
|
168
|
-
_$insert(_el$
|
|
335
|
+
var _el$37 = _$getNextElement(_tmpl$15);
|
|
336
|
+
_$setAttribute(_el$37, "data-surface", surface);
|
|
337
|
+
_$insert(_el$37, _$createComponent(Body, props));
|
|
169
338
|
_$effect(_p$ => {
|
|
170
|
-
var _v$
|
|
171
|
-
_v$
|
|
172
|
-
|
|
173
|
-
|
|
339
|
+
var _v$12 = size(),
|
|
340
|
+
_v$13 = props.wrap || undefined,
|
|
341
|
+
_v$14 = props.status,
|
|
342
|
+
_v$15 = props.status === "loading" || undefined;
|
|
343
|
+
_v$12 !== _p$.e && _$setAttribute(_el$37, "data-size", _p$.e = _v$12);
|
|
344
|
+
_v$13 !== _p$.t && _$setAttribute(_el$37, "data-wrap", _p$.t = _v$13);
|
|
345
|
+
_v$14 !== _p$.a && _$setAttribute(_el$37, "data-status", _p$.a = _v$14);
|
|
346
|
+
_v$15 !== _p$.o && _$setAttribute(_el$37, "aria-busy", _p$.o = _v$15);
|
|
174
347
|
return _p$;
|
|
175
348
|
}, {
|
|
176
349
|
e: undefined,
|
|
177
|
-
t: undefined
|
|
350
|
+
t: undefined,
|
|
351
|
+
a: undefined,
|
|
352
|
+
o: undefined
|
|
178
353
|
});
|
|
179
|
-
return _el$
|
|
354
|
+
return _el$37;
|
|
180
355
|
})();
|
|
181
356
|
},
|
|
182
|
-
children
|
|
183
|
-
var _el$
|
|
184
|
-
_el$
|
|
185
|
-
_el$
|
|
186
|
-
[_el$
|
|
187
|
-
_$setAttribute(_el$
|
|
188
|
-
_$insert(_el$
|
|
357
|
+
get children() {
|
|
358
|
+
var _el$33 = _$getNextElement(_tmpl$14),
|
|
359
|
+
_el$34 = _el$33.firstChild,
|
|
360
|
+
_el$35 = _el$34.nextSibling,
|
|
361
|
+
[_el$36, _co$7] = _$getNextMarker(_el$35.nextSibling);
|
|
362
|
+
_$setAttribute(_el$33, "data-surface", surface);
|
|
363
|
+
_$insert(_el$33, _$createComponent(Body, props), _el$36, _co$7);
|
|
189
364
|
_$effect(_p$ => {
|
|
190
|
-
var _v$
|
|
191
|
-
_v$
|
|
192
|
-
_v$
|
|
193
|
-
_v$
|
|
194
|
-
_v$
|
|
195
|
-
_v$
|
|
365
|
+
var _v$1 = props.href,
|
|
366
|
+
_v$10 = size(),
|
|
367
|
+
_v$11 = props.wrap || undefined;
|
|
368
|
+
_v$1 !== _p$.e && _$setAttribute(_el$33, "href", _p$.e = _v$1);
|
|
369
|
+
_v$10 !== _p$.t && _$setAttribute(_el$33, "data-size", _p$.t = _v$10);
|
|
370
|
+
_v$11 !== _p$.a && _$setAttribute(_el$33, "data-wrap", _p$.a = _v$11);
|
|
196
371
|
return _p$;
|
|
197
372
|
}, {
|
|
198
373
|
e: undefined,
|
|
199
374
|
t: undefined,
|
|
200
375
|
a: undefined
|
|
201
376
|
});
|
|
202
|
-
return _el$
|
|
203
|
-
}
|
|
377
|
+
return _el$33;
|
|
378
|
+
}
|
|
204
379
|
});
|
|
205
380
|
}
|
|
206
381
|
export default StatCell;
|
|
382
|
+
_$delegateEvents(["click"]);
|
|
207
383
|
//# sourceMappingURL=StatCell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["surfaces/StatCell.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport Chart from \"../content/Chart\";\nimport type { ChartTooltipFormatter } from \"../content/chart-inspection-core\";\nimport { useLocale } from \"../intl/locale\";\nimport type { AccentColor } from \"../semantics\";\nimport { type StatGridSize, useStatGridSize, useStatGridSurface } from \"./StatGrid\";\n\nexport type StatCellTone = AccentColor;\n\nexport type StatCellAccent = {\n tone: StatCellTone;\n icon: string;\n text?: string;\n};\n\nexport type StatCellProps = {\n label: string;\n value: string | number | JSX.Element;\n sub?: string;\n valueClass?: string;\n accent?: StatCellAccent;\n href?: string;\n title?: string;\n trend?: readonly number[];\n /**\n * Replaces the default trend tooltip in browser code, for example with a period title or a unit.\n * `selection.datum.index` is the source index into `trend`.\n */\n trendTooltip?: ChartTooltipFormatter;\n size?: StatGridSize;\n /**\n * Wraps the label, value and support line instead of truncating them. Use it for a cell whose height nothing\n * reserves, such as one figure on its own; cells compared in a row keep one line each.\n */\n wrap?: boolean;\n};\n\nfunction Body(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const accent = () => props.accent;\n const locale = useLocale();\n const defaultTrendTooltip: ChartTooltipFormatter = ({ datum }) => {\n const y = datum.values.find((field) => field.key === \"y\")?.value ?? \"\";\n return {\n rows: [\n { label: props.label, value: typeof y === \"number\" ? new Intl.NumberFormat(locale(), { maximumFractionDigits: 6 }).format(y) : y },\n ],\n };\n };\n return (\n <>\n <span class=\"k2b-stat-cell__label\" data-size={size()}>\n {props.label}\n </span>\n <span class={`k2b-stat-cell__value ${props.valueClass ?? \"\"}`} data-size={size()} title={props.title}>\n {props.value}\n </span>\n <Show when={props.trend && props.trend.length > 1}>\n <Chart\n kind=\"sparkline\"\n labels={{ interactiveChart: props.label }}\n tooltip={props.trendTooltip ?? defaultTrendTooltip}\n class=\"k2b-stat-cell__trend\"\n style={{ height: \"32px\" }}\n data={Array.from(props.trend ?? [])}\n showLast\n showMinMax\n />\n </Show>\n <Show when={props.sub || accent()}>\n <div class=\"k2b-stat-cell__support\">\n <Show when={props.sub}>{(sub) => <span class=\"k2b-stat-cell__sub\">{sub()}</span>}</Show>\n <Show when={accent()}>\n {(value) => (\n <Show\n when={value().text}\n fallback={<i class={`${value().icon} k2b-stat-cell__accent-icon`} data-tone={value().tone} aria-hidden=\"true\" />}\n >\n {(text) => (\n <span class=\"k2b-stat-cell__accent\" data-tone={value().tone}>\n <i class={value().icon} aria-hidden=\"true\" />\n {text()}\n </span>\n )}\n </Show>\n )}\n </Show>\n </div>\n </Show>\n </>\n );\n}\n\nexport function StatCell(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const surface = useStatGridSurface();\n return (\n <Show\n when={props.href}\n fallback={\n <div class=\"k2b-stat-cell\" data-size={size()} data-surface={surface} data-wrap={props.wrap || undefined}>\n <Body {...props} />\n </div>\n }\n >\n {(href) => (\n <a\n href={href()}\n class=\"k2b-stat-cell k2b-stat-cell--link\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n >\n <i class=\"ti ti-external-link k2b-stat-cell__link-icon\" aria-hidden=\"true\" />\n <Body {...props} />\n </a>\n )}\n </Show>\n );\n}\n\nexport default StatCell;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["surfaces/StatCell.tsx"],"sourcesContent":["import { type JSX, Match, Show, Switch } from \"solid-js\";\nimport Chart from \"../content/Chart\";\nimport type { ChartTooltipFormatter } from \"../content/chart-inspection-core\";\nimport { useLocale } from \"../intl/locale\";\nimport type { AccentColor } from \"../semantics\";\nimport { DeltaBadge } from \"./delta-badge\";\nimport { type StatGridSize, useStatGridSize, useStatGridSurface } from \"./StatGrid\";\nimport { useStatCellMessages } from \"./stat-cell-messages\";\n\nexport type StatCellTone = AccentColor;\n\nexport type StatCellAccent = {\n tone: StatCellTone;\n icon: string;\n text?: string;\n};\n\n/**\n * The change against a comparison period. `unit: \"ratio\"` (default) reads `0.082` as `+8.2 %`; `\"points\"` is the\n * difference of two shares in ratio units, so `0.031` reads `+3.1 pts`. Only with `better` does the badge carry a tone\n * and say \"better\" or \"worse\"; without it the change stays unrated.\n */\nexport type StatCellDelta = {\n value: number;\n unit?: \"ratio\" | \"points\";\n better?: \"up\" | \"down\";\n};\n\n/** The value the change compares against, shown under the figure, such as \"Last month 44,560\". */\nexport type StatCellCompare = {\n label: string;\n value: string | number;\n};\n\nexport type StatCellSize = StatGridSize;\n\nexport type StatCellProps = {\n label: string;\n /** The figure. `null` shows the empty dash; `sub` then says why. */\n value: string | number | JSX.Element | null;\n sub?: string;\n valueClass?: string;\n /** An icon in a chip before the label, in `tone`. `\"in\"` and `\"out\"` are the money colours of `FlowAmount`. */\n icon?: string;\n /** The chip colour of `icon`. Defaults to zinc. */\n tone?: StatCellTone | \"in\" | \"out\";\n accent?: StatCellAccent;\n delta?: StatCellDelta;\n compare?: StatCellCompare;\n href?: string;\n title?: string;\n trend?: readonly number[];\n /**\n * Replaces the default trend tooltip in browser code, for example with a period title or a unit.\n * `selection.datum.index` is the source index into `trend`.\n */\n trendTooltip?: ChartTooltipFormatter;\n size?: StatCellSize;\n /**\n * Wraps the label, value and support line instead of truncating them. Use it for a cell whose height nothing\n * reserves, such as one figure on its own; cells compared in a row keep one line each.\n */\n wrap?: boolean;\n /** `\"loading\"` keeps the tile's size with placeholders; `\"error\"` says the figure did not load. */\n status?: \"loading\" | \"error\";\n /** Offers \"Try again\" after an error and \"Reload\" beside `stale`. */\n onRetry?: () => void;\n /** The figure is not current: a short note such as \"As of 09:12 · not current\" replaces the support line. */\n stale?: string;\n};\n\nfunction Body(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const accent = () => props.accent;\n const locale = useLocale();\n const t = useStatCellMessages();\n const defaultTrendTooltip: ChartTooltipFormatter = ({ datum }) => {\n const y = datum.values.find((field) => field.key === \"y\")?.value ?? \"\";\n return {\n rows: [\n { label: props.label, value: typeof y === \"number\" ? new Intl.NumberFormat(locale(), { maximumFractionDigits: 6 }).format(y) : y },\n ],\n };\n };\n const compareValue = () => {\n const value = props.compare?.value;\n return typeof value === \"number\" ? new Intl.NumberFormat(locale()).format(value) : value;\n };\n const empty = () => props.value === null || props.value === undefined || props.value === \"\";\n return (\n <>\n <div class=\"k2b-stat-cell__head\">\n <Show when={props.icon}>\n {(icon) => (\n <span class=\"k2b-stat-cell__icon k2b-icon-tile\" data-tone={props.tone ?? \"zinc\"} aria-hidden=\"true\">\n <i class={icon()} />\n </span>\n )}\n </Show>\n <span class=\"k2b-stat-cell__label\" data-size={size()}>\n {props.label}\n </span>\n </div>\n <div class=\"k2b-stat-cell__main\">\n <Switch\n fallback={\n <>\n <span\n class={`k2b-stat-cell__value ${props.valueClass ?? \"\"}`}\n data-size={size()}\n data-empty={empty() || undefined}\n title={props.title}\n >\n {empty() ? \"–\" : props.value}\n </span>\n <Show when={!empty() && props.delta}>{(delta) => <DeltaBadge delta={delta()} compare={props.compare} />}</Show>\n </>\n }\n >\n <Match when={props.status === \"loading\"}>\n <span class=\"k2b-stat-cell__skeleton k2b-skeleton\" data-part=\"value\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{t().loading}</span>\n </Match>\n <Match when={props.status === \"error\"}>\n <span class=\"k2b-stat-cell__error\">\n <i class=\"ti ti-alert-circle\" aria-hidden=\"true\" />\n {t().notLoaded}\n </span>\n </Match>\n </Switch>\n </div>\n <div class=\"k2b-stat-cell__support\">\n <Switch\n fallback={\n <Show\n when={props.stale}\n fallback={\n <>\n <Show when={props.compare}>\n {(compare) => (\n <span class=\"k2b-stat-cell__sub\">\n {compare().label} {compareValue()}\n </span>\n )}\n </Show>\n <Show when={props.sub}>{(sub) => <span class=\"k2b-stat-cell__sub\">{sub()}</span>}</Show>\n <Show when={accent()}>\n {(value) => (\n <Show\n when={value().text}\n fallback={<i class={`${value().icon} k2b-stat-cell__accent-icon`} data-tone={value().tone} aria-hidden=\"true\" />}\n >\n {(text) => (\n <span class=\"k2b-stat-cell__accent\" data-tone={value().tone}>\n <i class={value().icon} aria-hidden=\"true\" />\n {text()}\n </span>\n )}\n </Show>\n )}\n </Show>\n {/* No figure, no trend: an empty tile says why in `sub` and keeps the size of its other states. */}\n <Show when={!empty() && props.trend && props.trend.length > 1}>\n <Chart\n kind=\"sparkline\"\n labels={{ interactiveChart: props.label }}\n tooltip={props.trendTooltip ?? defaultTrendTooltip}\n class=\"k2b-stat-cell__trend\"\n data={Array.from(props.trend ?? [])}\n showLast\n />\n </Show>\n </>\n }\n >\n {(stale) => (\n <>\n <span class=\"k2b-stat-cell__stale\">\n <i class=\"ti ti-clock-exclamation\" aria-hidden=\"true\" />\n {stale()}\n </span>\n <Show when={props.onRetry}>\n {(retry) => (\n <button type=\"button\" class=\"k2b-stat-cell__retry\" onClick={() => retry()()}>\n {t().reload}\n </button>\n )}\n </Show>\n </>\n )}\n </Show>\n }\n >\n <Match when={props.status === \"loading\"}>\n <span class=\"k2b-stat-cell__skeleton k2b-skeleton\" data-part=\"support\" aria-hidden=\"true\" />\n </Match>\n <Match when={props.status === \"error\"}>\n <Show when={props.onRetry}>\n {(retry) => (\n <button type=\"button\" class=\"k2b-stat-cell__retry\" onClick={() => retry()()}>\n {t().retry}\n </button>\n )}\n </Show>\n </Match>\n </Switch>\n </div>\n </>\n );\n}\n\n/**\n * One key figure as a framed tile: icon and label, the figure with its change, and a support line with the comparison\n * and the trend. Each state (loading, error, stale, empty) keeps the tile's place and size.\n */\nexport function StatCell(props: StatCellProps): JSX.Element {\n const gridSize = useStatGridSize();\n const size = () => props.size ?? gridSize;\n const surface = useStatGridSurface();\n return (\n <Show\n // A tile that offers a retry is no link: the button must not sit inside it.\n when={props.href && !props.status && !(props.stale && props.onRetry)}\n fallback={\n <div\n class=\"k2b-stat-cell\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n data-status={props.status}\n aria-busy={props.status === \"loading\" || undefined}\n >\n <Body {...props} />\n </div>\n }\n >\n <a\n href={props.href}\n class=\"k2b-stat-cell k2b-stat-cell--link\"\n data-size={size()}\n data-surface={surface}\n data-wrap={props.wrap || undefined}\n >\n <i class=\"ti ti-external-link k2b-stat-cell__link-icon\" aria-hidden=\"true\" />\n <Body {...props} />\n </a>\n </Show>\n );\n}\n\nexport default StatCell;\n"],"mappings":"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","ignoreList":[]}
|