@logicplanes/kaeso-ui 0.1.0 → 0.2.1
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/AGENTS.md +1 -0
- package/LICENSE +1 -1
- package/ai/component-guides.md +269 -7
- package/ai/component-registry.json +600 -800
- package/ai/component-registry.md +200 -141
- package/ai/icons.md +2 -2
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +3 -3
- package/dist/blocks/resource-list.js +2 -2
- package/dist/chunks/app-frame-BXh-06HL.js +214 -0
- package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
- package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
- package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
- package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
- package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
- package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
- package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
- package/dist/chunks/code-BADhvsgC.js +33 -0
- package/dist/chunks/code-BADhvsgC.js.map +1 -0
- package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
- package/dist/chunks/code-block-DxtladFW.js.map +1 -0
- package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
- package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
- package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
- package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
- package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
- package/dist/chunks/core-K960A4OT.js.map +1 -0
- package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
- package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
- package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
- package/dist/chunks/de-CTAo4KL7.js.map +1 -0
- package/dist/chunks/dialog-LNKgPEsV.js +319 -0
- package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
- package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
- package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
- package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
- package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
- package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
- package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
- package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
- package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
- package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
- package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
- package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
- package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
- package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
- package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
- package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
- package/dist/chunks/link-vz9aV8WX.js.map +1 -0
- package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
- package/dist/chunks/list-CzaiyNja.js.map +1 -0
- package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
- package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
- package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
- package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
- package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
- package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
- package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
- package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
- package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
- package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
- package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
- package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
- package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
- package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
- package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
- package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
- package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
- package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
- package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
- package/dist/chunks/section-DzOLLN1p.js.map +1 -0
- package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
- package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
- package/dist/chunks/select-Bc4kRiSG.js +227 -0
- package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
- package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
- package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
- package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
- package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
- package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
- package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
- package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
- package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
- package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
- package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
- package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
- package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
- package/dist/chunks/tooltip-DEbCCsru.js +151 -0
- package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
- package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
- package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
- package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
- package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
- package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
- package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
- package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
- package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
- package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
- package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
- package/dist/components/app-frame.js +3 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +78 -77
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +2 -2
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/sankey.js +1 -1
- package/dist/components/charts/timeseries.js +75 -75
- package/dist/components/charts/timeseries.js.map +1 -1
- package/dist/components/charts.js +1 -1
- package/dist/components/code-block.js +1 -1
- package/dist/components/code.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +105 -97
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +94 -95
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +3 -3
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +141 -153
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +5 -5
- package/dist/components/filter-chip.js +1 -1
- package/dist/components/flow.js +37 -36
- package/dist/components/flow.js.map +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +5 -5
- package/dist/components/kaeso/conversation.js +2 -2
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +4 -4
- package/dist/components/key-value.js +3 -3
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/logo.js +101 -1
- package/dist/components/logo.js.map +1 -0
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +8 -8
- package/dist/components/scroll-area.js +30 -23
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/section.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +46 -41
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/stat.js +75 -76
- package/dist/components/stat.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +38 -0
- package/dist/components/theme-image.js.map +1 -0
- package/dist/components/theme-menu.js +3 -3
- package/dist/components/theme-select.js +58 -0
- package/dist/components/theme-select.js.map +1 -0
- package/dist/components/toast.js +91 -92
- package/dist/components/toast.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +76 -74
- package/dist/kaeso.css +39 -16
- package/dist/styles.css +1 -1
- package/dist/theme.js +1 -1
- package/dist/types/components/app-frame/app-frame.d.ts +2 -10
- package/dist/types/components/app-frame/docs.d.ts +1 -0
- package/dist/types/components/app-frame/index.d.ts +1 -0
- package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
- package/dist/types/components/charts/linear-scale.d.ts +17 -0
- package/dist/types/components/code/code.d.ts +16 -0
- package/dist/types/components/code/docs.d.ts +1 -0
- package/dist/types/components/code-block/code-block.d.ts +2 -0
- package/dist/types/components/code-block/docs.d.ts +4 -0
- package/dist/types/components/command-palette/command-palette.d.ts +1 -0
- package/dist/types/components/command-palette/docs.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +5 -2
- package/dist/types/components/dialog/docs.d.ts +10 -0
- package/dist/types/components/dialog/index.d.ts +1 -0
- package/dist/types/components/dialog/scope.d.ts +9 -0
- package/dist/types/components/dialog/step-dialog.d.ts +9 -1
- package/dist/types/components/link/link.d.ts +8 -0
- package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
- package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
- package/dist/types/components/theme-image/docs.d.ts +13 -0
- package/dist/types/components/theme-image/index.d.ts +1 -0
- package/dist/types/components/theme-image/theme-image.d.ts +23 -0
- package/dist/types/components/theme-select/docs.d.ts +10 -0
- package/dist/types/components/theme-select/index.d.ts +1 -0
- package/dist/types/components/theme-select/theme-select.d.ts +34 -0
- package/dist/types/icons/groups.d.ts +1 -1
- package/dist/types/icons/vocabulary.d.ts +5 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/theme/theme-provider.d.ts +1 -1
- package/dist/types/utils/dialog-scope.d.ts +7 -0
- package/dist/types/utils/lazy-module.d.ts +7 -2
- package/dist/types/utils/observe-resize.d.ts +1 -0
- package/dist/types/utils/resize-motion.d.ts +2 -0
- package/foundations/motion.md +1 -0
- package/package.json +2 -2
- package/dist/chunks/app-frame-BBIMch8X.js +0 -224
- package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
- package/dist/chunks/code-DDyOlIFO.js +0 -23
- package/dist/chunks/code-DDyOlIFO.js.map +0 -1
- package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
- package/dist/chunks/core-Bgefcs3z.js.map +0 -1
- package/dist/chunks/de-BCg1eRVd.js.map +0 -1
- package/dist/chunks/dialog-CVqSVk3T.js +0 -283
- package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
- package/dist/chunks/icon-Bha63LaN.js.map +0 -1
- package/dist/chunks/link-tTapNTpM.js.map +0 -1
- package/dist/chunks/list-CN8pO8lv.js.map +0 -1
- package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
- package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
- package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
- package/dist/chunks/section-XStLtXKa.js.map +0 -1
- package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
- package/dist/chunks/select-Ca3HGsN1.js +0 -223
- package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
- package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
- package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
- package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
- package/dist/chunks/tooltip-CDu00nzg.js +0 -124
- package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
- package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
- package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
- package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
- package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
- package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
- package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
- package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
import { t as e } from "../../chunks/cn-CidVUKMm.js";
|
|
3
3
|
import { i as t } from "../../chunks/context-BELWW79w.js";
|
|
4
4
|
import { formatNumber as n, formatPercent as r } from "../../format.js";
|
|
5
|
-
import { A as i, D as a, E as o, S as s, b as c, g as l, i as u, k as d, n as ee, p as te, r as ne, s as re, t as f, v as ie } from "../../chunks/core-
|
|
5
|
+
import { A as i, D as a, E as o, S as s, b as c, g as l, i as u, k as d, n as ee, p as te, r as ne, s as re, t as f, v as ie } from "../../chunks/core-K960A4OT.js";
|
|
6
|
+
import { t as ae } from "../../chunks/linear-scale-BWKeRqDX.js";
|
|
6
7
|
import { forwardRef as p, useState as m } from "react";
|
|
7
|
-
import { Fragment as
|
|
8
|
-
import { max as
|
|
9
|
-
import { scaleBand as _
|
|
8
|
+
import { Fragment as oe, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
9
|
+
import { max as se } from "d3-array";
|
|
10
|
+
import { scaleBand as _ } from "d3-scale";
|
|
10
11
|
//#region src/components/charts/bar.tsx
|
|
11
12
|
var v = { layout: {
|
|
12
13
|
grouped: { classes: "" },
|
|
13
14
|
stacked: { classes: "" },
|
|
14
15
|
horizontal: { classes: "" }
|
|
15
16
|
} }, y = { layout: "grouped" }, b = /* @__PURE__ */ p(function({ categories: p, series: v, layout: y = "grouped", height: b = 240, formatValue: S = (e) => n(e), highlight: C, axisLabels: w, dates: ce, className: le, "aria-label": T, ...E }, ue) {
|
|
16
|
-
let D = t(), [de, O] = a(), [k, A] = m(null), [
|
|
17
|
+
let D = t(), [de, O] = a(), [k, A] = m(null), [j, fe] = m(null), M = y === "horizontal", N = y === "stacked", P = v.flatMap((e) => e.values), pe = se(N ? p.map((e, t) => v.reduce((e, n) => e + (n.values[t] ?? 0), 0)) : P) ?? 0, F = ae().domain([0, pe * 1.08 || 1]).nice(4), I = d(P, F.domain()[1] ?? 1, !!E.loading), L = v.map((e, t) => e.values.map((n, r) => I.values[t * e.values.length + r] ?? 0)), me = c(v.map((e) => e.id)), R = (e) => e.color ?? me.get(e.id), z = M ? {
|
|
17
18
|
top: 0,
|
|
18
19
|
right: 56,
|
|
19
20
|
bottom: 0,
|
|
@@ -23,38 +24,38 @@ var v = { layout: {
|
|
|
23
24
|
right: 52,
|
|
24
25
|
bottom: 28,
|
|
25
26
|
left: 0
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
let
|
|
29
|
-
start:
|
|
30
|
-
end:
|
|
31
|
-
}, ce)),
|
|
27
|
+
}, B = Math.max(0, O.width - z.left - z.right), V = Math.max(0, b - z.top - z.bottom), H = p.map((e, t) => L.reduce((e, n) => e + (n[t] ?? 0), 0)), U = _().domain(p).range(M ? [0, V] : [0, B]).paddingInner(.24).paddingOuter(.12);
|
|
28
|
+
F.range(M ? [0, B] : [V, 0]);
|
|
29
|
+
let W = F.copy().domain([0, I.top || 1]), G = (e) => M ? Math.min(B, W(e)) : Math.max(0, W(e)), he = _().domain(v.map((e) => e.id)).range([0, U.bandwidth()]).paddingInner(.12), ge = M ? 20 : N || v.length === 1 ? 40 : 20, K = Math.max(4, Math.min(ge, Math.round(N || M ? U.bandwidth() : he.bandwidth()))), q = N || M ? K : v.length * K + (v.length - 1) * 4, J = s(S), Y = [p[0], p[p.length - 1]].map((e) => e === void 0 ? 0 : (U(e) ?? 0) + U.bandwidth() / 2), _e = new Set(M ? [] : te(p.map((e, t) => w?.[t] ?? e), U.step(), {
|
|
30
|
+
start: z.left + Y[0],
|
|
31
|
+
end: B - Y[1] + z.right
|
|
32
|
+
}, ce)), ve = {
|
|
32
33
|
columns: [D("barChart.category", "Category"), ...v.map((e) => e.label)],
|
|
33
34
|
rows: p.map((e, t) => [e, ...v.map((e) => S(e.values[t] ?? 0))])
|
|
34
|
-
},
|
|
35
|
+
}, ye = (E.loading ? F.ticks(4) : i(ie(F, J), P)).filter((e) => e <= (I.top || 1) + 1e-9), X = !!E.loading || !!E.empty || !!E.error, Z = o(X ? 0 : p.length, M ? {
|
|
35
36
|
vertical: !0,
|
|
36
37
|
start: 0
|
|
37
|
-
} : {}),
|
|
38
|
-
let t = Math.round(
|
|
39
|
-
if (
|
|
40
|
-
let n =
|
|
38
|
+
} : {}), Q = X ? null : k?.i ?? Z.index ?? (C !== void 0 && C < p.length ? C : null), be = (e) => {
|
|
39
|
+
let t = Math.round(U(p[e]) ?? 0);
|
|
40
|
+
if (M) {
|
|
41
|
+
let n = z.top + Math.round(t + U.bandwidth() / 2 - K / 2 - $), r = n + K + $ * 2, i = e < p.length / 2, a = 40 + v.length * 22;
|
|
41
42
|
return {
|
|
42
|
-
x:
|
|
43
|
+
x: z.left - 16,
|
|
43
44
|
y: i ? r + 24 + 4 : n - a + 24 - 4
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
let n = Math.min(
|
|
47
|
+
let n = Math.min(U.bandwidth(), q + $ * 2), r = z.left + t + U.bandwidth() / 2, i = N ? H[e] ?? 0 : Math.max(0, ...L.map((t) => t[e] ?? 0));
|
|
47
48
|
return {
|
|
48
49
|
x: Math.round(r + n / 2) - 8,
|
|
49
50
|
xLeft: Math.round(r - n / 2) + 8,
|
|
50
|
-
y: k && k.i === e ? k.y :
|
|
51
|
+
y: k && k.i === e ? k.y : z.top + Math.round(G(i))
|
|
51
52
|
};
|
|
52
|
-
},
|
|
53
|
+
}, xe = (e) => v.map((t) => ({
|
|
53
54
|
id: t.id,
|
|
54
55
|
label: t.label,
|
|
55
|
-
color:
|
|
56
|
+
color: R(t),
|
|
56
57
|
value: S(t.values[e] ?? 0),
|
|
57
|
-
...v.length > 1 &&
|
|
58
|
+
...v.length > 1 && H[e] ? { share: r(Math.round((t.values[e] ?? 0) / (H[e] ?? 1) * 100) / 100, 0) } : {}
|
|
58
59
|
})), $ = 8;
|
|
59
60
|
return /* @__PURE__ */ h("div", {
|
|
60
61
|
ref: ue,
|
|
@@ -62,21 +63,21 @@ var v = { layout: {
|
|
|
62
63
|
children: /* @__PURE__ */ h(ee, {
|
|
63
64
|
label: T,
|
|
64
65
|
height: b,
|
|
65
|
-
table:
|
|
66
|
+
table: ve,
|
|
66
67
|
state: E,
|
|
67
68
|
legend: v.length > 1 ? /* @__PURE__ */ h(re, {
|
|
68
69
|
items: v.map((e) => ({
|
|
69
70
|
id: e.id,
|
|
70
71
|
label: e.label,
|
|
71
|
-
color:
|
|
72
|
+
color: R(e)
|
|
72
73
|
})),
|
|
73
|
-
onHover:
|
|
74
|
+
onHover: fe
|
|
74
75
|
}) : void 0,
|
|
75
76
|
children: /* @__PURE__ */ g("div", {
|
|
76
77
|
ref: de,
|
|
77
78
|
role: "group",
|
|
78
79
|
"aria-label": T,
|
|
79
|
-
...
|
|
80
|
+
...Z.props,
|
|
80
81
|
className: "absolute inset-0 rounded-cell focus-ring",
|
|
81
82
|
children: [
|
|
82
83
|
O.width > 0 && /* @__PURE__ */ h("svg", {
|
|
@@ -85,86 +86,86 @@ var v = { layout: {
|
|
|
85
86
|
className: "block overflow-visible",
|
|
86
87
|
role: "presentation",
|
|
87
88
|
children: /* @__PURE__ */ g("g", {
|
|
88
|
-
transform: `translate(${
|
|
89
|
+
transform: `translate(${z.left},${z.top})`,
|
|
89
90
|
children: [
|
|
90
|
-
!
|
|
91
|
-
transform: `translate(0,${Math.round(
|
|
91
|
+
!M && ye.map((e) => /* @__PURE__ */ g("g", {
|
|
92
|
+
transform: `translate(0,${Math.round(G(e)) + .5})`,
|
|
92
93
|
children: [e !== 0 && /* @__PURE__ */ h("line", {
|
|
93
|
-
x2:
|
|
94
|
+
x2: B,
|
|
94
95
|
...f.grid
|
|
95
96
|
}), !E.loading && /* @__PURE__ */ h("text", {
|
|
96
|
-
x:
|
|
97
|
+
x: B + 12,
|
|
97
98
|
dy: "0.32em",
|
|
98
99
|
...f.label,
|
|
99
|
-
children:
|
|
100
|
+
children: J(e)
|
|
100
101
|
})]
|
|
101
102
|
}, e)),
|
|
102
103
|
p.map((e, t) => {
|
|
103
|
-
let n = Math.round(
|
|
104
|
+
let n = Math.round(U(e) ?? 0), r = Math.round((U.step() - U.bandwidth()) / 2), i = Math.min(U.bandwidth(), q + 16), a = 0;
|
|
104
105
|
return /* @__PURE__ */ g("g", { children: [
|
|
105
106
|
/* @__PURE__ */ h("rect", {
|
|
106
107
|
"aria-hidden": !0,
|
|
107
108
|
className: "opacity-motion",
|
|
108
|
-
opacity: +(
|
|
109
|
+
opacity: +(Q === t),
|
|
109
110
|
fill: "var(--k-fill-1)",
|
|
110
111
|
rx: 6,
|
|
111
|
-
...
|
|
112
|
-
x: -
|
|
113
|
-
y: Math.round(n +
|
|
112
|
+
...M ? {
|
|
113
|
+
x: -z.left + 8,
|
|
114
|
+
y: Math.round(n + U.bandwidth() / 2 - K / 2 - 8),
|
|
114
115
|
width: O.width - 16,
|
|
115
|
-
height:
|
|
116
|
+
height: K + 16
|
|
116
117
|
} : {
|
|
117
|
-
x: Math.round(n +
|
|
118
|
+
x: Math.round(n + U.bandwidth() / 2 - i / 2),
|
|
118
119
|
y: 0,
|
|
119
120
|
width: i,
|
|
120
|
-
height:
|
|
121
|
+
height: V
|
|
121
122
|
}
|
|
122
123
|
}),
|
|
123
124
|
(() => {
|
|
124
|
-
let e = n +
|
|
125
|
+
let e = n + U.bandwidth() / 2, r = Math.round(e - q / 2), i = v.map((e, n) => (L[n]?.[t] ?? 0) > 0).lastIndexOf(!0), o = M ? 0 : V;
|
|
125
126
|
return v.map((n, s) => {
|
|
126
|
-
let c =
|
|
127
|
-
if (
|
|
128
|
-
let t =
|
|
127
|
+
let c = L[s]?.[t] ?? 0, l = j && j !== n.id ? .3 : 1;
|
|
128
|
+
if (M) {
|
|
129
|
+
let t = N ? Math.round(G(a)) : 0;
|
|
129
130
|
a += c;
|
|
130
|
-
let r = Math.max(c > 0 ? 2 : 0, Math.round(
|
|
131
|
+
let r = Math.max(c > 0 ? 2 : 0, Math.round(G(N ? a : c)) - t), i = Math.round(e - K / 2);
|
|
131
132
|
return /* @__PURE__ */ h("rect", {
|
|
132
133
|
x: t,
|
|
133
134
|
y: i,
|
|
134
135
|
width: r,
|
|
135
|
-
height:
|
|
136
|
-
rx: Math.min(4,
|
|
137
|
-
fill:
|
|
136
|
+
height: K,
|
|
137
|
+
rx: Math.min(4, K / 2),
|
|
138
|
+
fill: R(n),
|
|
138
139
|
opacity: l
|
|
139
140
|
}, n.id);
|
|
140
141
|
}
|
|
141
|
-
if (
|
|
142
|
+
if (N) {
|
|
142
143
|
a += c;
|
|
143
|
-
let e = Math.round(
|
|
144
|
+
let e = Math.round(G(a)), t = o === V ? o : o - 2;
|
|
144
145
|
o = e;
|
|
145
146
|
let u = t - e;
|
|
146
147
|
return c <= 0 || u <= 0 ? null : /* @__PURE__ */ h("path", {
|
|
147
|
-
d: x(r, e,
|
|
148
|
-
fill:
|
|
148
|
+
d: x(r, e, K, u, s === i ? 4 : 0),
|
|
149
|
+
fill: R(n),
|
|
149
150
|
opacity: l
|
|
150
151
|
}, n.id);
|
|
151
152
|
}
|
|
152
|
-
let u = Math.round(
|
|
153
|
+
let u = Math.round(G(c)), d = Math.max(c > 0 ? 2 : 0, V - u);
|
|
153
154
|
return /* @__PURE__ */ h("path", {
|
|
154
|
-
d: x(r + s * (
|
|
155
|
-
fill:
|
|
155
|
+
d: x(r + s * (K + 4), V - d, K, d, 4),
|
|
156
|
+
fill: R(n),
|
|
156
157
|
opacity: l
|
|
157
158
|
}, n.id);
|
|
158
159
|
});
|
|
159
160
|
})(),
|
|
160
161
|
/* @__PURE__ */ h("rect", {
|
|
161
|
-
x:
|
|
162
|
-
y:
|
|
163
|
-
width:
|
|
164
|
-
height:
|
|
162
|
+
x: M ? -z.left : n - r,
|
|
163
|
+
y: M ? n - r : 0,
|
|
164
|
+
width: M ? O.width : U.step(),
|
|
165
|
+
height: M ? U.step() : V,
|
|
165
166
|
fill: "transparent",
|
|
166
167
|
onPointerMove: (e) => {
|
|
167
|
-
if (
|
|
168
|
+
if (X) return;
|
|
168
169
|
let n = (e.currentTarget.ownerSVGElement ?? e.currentTarget).getBoundingClientRect();
|
|
169
170
|
A({
|
|
170
171
|
i: t,
|
|
@@ -173,9 +174,9 @@ var v = { layout: {
|
|
|
173
174
|
},
|
|
174
175
|
onPointerLeave: () => A(null)
|
|
175
176
|
}),
|
|
176
|
-
|
|
177
|
+
M ? /* @__PURE__ */ g(oe, { children: [/* @__PURE__ */ h("text", {
|
|
177
178
|
x: -12,
|
|
178
|
-
y: n +
|
|
179
|
+
y: n + U.bandwidth() / 2,
|
|
179
180
|
dy: "0.32em",
|
|
180
181
|
textAnchor: "end",
|
|
181
182
|
fill: "var(--k-text-secondary)",
|
|
@@ -183,38 +184,38 @@ var v = { layout: {
|
|
|
183
184
|
fontWeight: 500,
|
|
184
185
|
children: e
|
|
185
186
|
}), /* @__PURE__ */ h("text", {
|
|
186
|
-
x: Math.round(
|
|
187
|
-
y: n +
|
|
187
|
+
x: Math.round(G(N ? H[t] ?? 0 : L[0]?.[t] ?? 0)) + 10,
|
|
188
|
+
y: n + U.bandwidth() / 2,
|
|
188
189
|
dy: "0.32em",
|
|
189
190
|
...f.label,
|
|
190
191
|
fill: "var(--k-text-secondary)",
|
|
191
|
-
children: S(
|
|
192
|
-
})] }) :
|
|
193
|
-
x: n +
|
|
194
|
-
y:
|
|
192
|
+
children: S(N ? H[t] ?? 0 : v[0]?.values[t] ?? 0)
|
|
193
|
+
})] }) : _e.has(t) && /* @__PURE__ */ h("text", {
|
|
194
|
+
x: n + U.bandwidth() / 2,
|
|
195
|
+
y: V + 20,
|
|
195
196
|
textAnchor: "middle",
|
|
196
197
|
...f.label,
|
|
197
198
|
children: w?.[t] ?? e
|
|
198
199
|
})
|
|
199
200
|
] }, e);
|
|
200
201
|
}),
|
|
201
|
-
!
|
|
202
|
-
x2:
|
|
203
|
-
y1:
|
|
204
|
-
y2:
|
|
202
|
+
!M && /* @__PURE__ */ h("line", {
|
|
203
|
+
x2: B,
|
|
204
|
+
y1: V + .5,
|
|
205
|
+
y2: V + .5,
|
|
205
206
|
...f.baseline
|
|
206
207
|
})
|
|
207
208
|
]
|
|
208
209
|
})
|
|
209
210
|
}),
|
|
210
|
-
|
|
211
|
-
...
|
|
211
|
+
Q !== null && O.width > 0 && /* @__PURE__ */ h(u, {
|
|
212
|
+
...be(Q),
|
|
212
213
|
width: O.width,
|
|
213
214
|
visible: !0,
|
|
214
|
-
heading: p[
|
|
215
|
-
rows: Q
|
|
215
|
+
heading: p[Q],
|
|
216
|
+
rows: xe(Q)
|
|
216
217
|
}),
|
|
217
|
-
/* @__PURE__ */ h(ne, { children:
|
|
218
|
+
/* @__PURE__ */ h(ne, { children: Z.index !== null && !X ? l(p[Z.index], xe(Z.index), D) : null })
|
|
218
219
|
]
|
|
219
220
|
})
|
|
220
221
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar.js","names":["d3max","_Fragment","cn","useUiText","wholeTicks","useSize","useChartKeys","tickLabel","seriesColors","liveLine","ChartTooltip","useTweenedScale","ChartFrame","axisLabelIndexes","ChartLive","Legend","AXIS","readableTicks","Fragment$1","KAESO_BAR_CHART_VARIANTS","KAESO_BAR_CHART_DEFAULT_VARIANTS","BarChart","formatNumber","v","ariaLabel","state","t","box","size","hover","setHover","useState","focus","setFocus","horizontal","layout","stacked","flat","series","s","dataTop","max","categories","a","ci","axis","scaleLinear","tween","vals","si","palette","color","M","w","h","height","totals","band","scaleBand","scale","n","inner","MAX","barW","groupW","axisLabel","formatValue","centers","c","shown","axisLabels","dates","table","ticks","quiet","keys","active","highlight","anchor","b","rowTop","PAD","rowBottom","below","tall","lit","center","tallest","sv","rowsFor","formatPercent","className","gap","acc","start","lastVisible","val","dim","x0","len","y","top","bottom","bh","roundedTop","r","rr","x"],"sources":["../../../src/components/charts/bar.tsx"],"sourcesContent":["import { forwardRef, useState } from \"react\";\nimport { scaleBand, scaleLinear } from \"d3-scale\";\nimport { max as d3max } from \"d3-array\";\nimport { cn } from \"../../utils/cn.js\";\nimport { formatNumber, formatPercent } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport {\n AXIS,\n axisLabelIndexes,\n type AxisDate,\n ChartFrame,\n ChartLive,\n ChartTooltip,\n Legend,\n liveLine,\n seriesColors,\n readableTicks,\n tickLabel,\n useChartKeys,\n useSize,\n useTweenedScale,\n wholeTicks,\n type ChartState,\n} from \"./core.js\";\n\nexport const KAESO_BAR_CHART_VARIANTS = {\n layout: {\n grouped: { classes: \"\" },\n stacked: { classes: \"\" },\n horizontal: { classes: \"\" },\n },\n} as const;\nexport const KAESO_BAR_CHART_DEFAULT_VARIANTS = { layout: \"grouped\" } as const;\n\nexport interface BarSeries {\n id: string;\n label: string;\n values: number[];\n color?: string | undefined;\n}\n\nexport interface BarChartProps extends ChartState {\n categories: string[];\n series: BarSeries[];\n layout?: keyof typeof KAESO_BAR_CHART_VARIANTS.layout | undefined;\n height?: number | undefined;\n formatValue?: ((v: number) => string) | undefined;\n highlight?: number | undefined;\n axisLabels?: string[] | undefined;\n dates?: readonly AxisDate[] | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\nexport const BarChart = /* @__PURE__ */ forwardRef<HTMLDivElement, BarChartProps>(function BarChart(\n {\n categories,\n series,\n layout = \"grouped\",\n height = 240,\n formatValue = (v) => formatNumber(v),\n highlight,\n axisLabels,\n dates,\n className,\n \"aria-label\": ariaLabel,\n ...state\n },\n ref,\n) {\n const t = useUiText();\n const [box, size] = useSize<HTMLDivElement>();\n const [hover, setHover] = useState<{ i: number; y: number } | null>(null);\n const [focus, setFocus] = useState<string | null>(null);\n const horizontal = layout === \"horizontal\";\n const stacked = layout === \"stacked\";\n const flat = series.flatMap((s) => s.values);\n const dataTop = (stacked ? d3max(categories.map((_, ci) => series.reduce((a, s) => a + (s.values[ci] ?? 0), 0))) : d3max(flat)) ?? 0;\n const axis = scaleLinear()\n .domain([0, dataTop * 1.08 || 1])\n .nice(4);\n const tween = useTweenedScale(flat, axis.domain()[1] ?? 1, !!state.loading);\n const vals = series.map((s, si) => s.values.map((_, ci) => tween.values[si * s.values.length + ci] ?? 0));\n const palette = seriesColors(series.map((s) => s.id));\n const color = (s: BarSeries) => s.color ?? palette.get(s.id)!;\n const M = horizontal ? { top: 0, right: 56, bottom: 0, left: 140 } : { top: 8, right: 52, bottom: 28, left: 0 };\n const w = Math.max(0, size.width - M.left - M.right);\n const h = Math.max(0, height - M.top - M.bottom);\n const totals = categories.map((_, ci) => vals.reduce((a, v) => a + (v[ci] ?? 0), 0));\n const band = scaleBand<string>()\n .domain(categories)\n .range(horizontal ? [0, h] : [0, w])\n .paddingInner(0.24)\n .paddingOuter(0.12);\n axis.range(horizontal ? [0, w] : [h, 0]);\n const scale = axis.copy().domain([0, tween.top || 1]);\n const v = (n: number) => (horizontal ? Math.min(w, scale(n)) : Math.max(0, scale(n)));\n const inner = scaleBand<string>()\n .domain(series.map((s) => s.id))\n .range([0, band.bandwidth()])\n .paddingInner(0.12);\n const MAX = horizontal ? 20 : stacked || series.length === 1 ? 40 : 20;\n const barW = Math.max(4, Math.min(MAX, Math.round(stacked || horizontal ? band.bandwidth() : inner.bandwidth())));\n const groupW = stacked || horizontal ? barW : series.length * barW + (series.length - 1) * 4;\n const axisLabel = tickLabel(formatValue);\n const centers = [categories[0], categories[categories.length - 1]].map((c) => (c === undefined ? 0 : (band(c) ?? 0) + band.bandwidth() / 2));\n const shown = new Set(\n horizontal\n ? []\n : axisLabelIndexes(\n categories.map((c, ci) => axisLabels?.[ci] ?? c),\n band.step(),\n { start: M.left + centers[0]!, end: w - centers[1]! + M.right },\n dates,\n ),\n );\n const GAP = 2;\n const table = {\n columns: [t(\"barChart.category\", \"Category\"), ...series.map((s) => s.label)],\n rows: categories.map((c, ci) => [c, ...series.map((s) => formatValue(s.values[ci] ?? 0))]),\n };\n const ticks = (state.loading ? axis.ticks(4) : wholeTicks(readableTicks(axis, axisLabel), flat)).filter((t) => t <= (tween.top || 1) + 1e-9);\n const quiet = !!state.loading || !!state.empty || !!state.error;\n const keys = useChartKeys(quiet ? 0 : categories.length, horizontal ? { vertical: true, start: 0 } : {});\n const active = quiet ? null : (hover?.i ?? keys.index ?? (highlight !== undefined && highlight < categories.length ? highlight : null));\n const anchor = (ci: number) => {\n const b = Math.round(band(categories[ci]!) ?? 0);\n if (horizontal) {\n const rowTop = M.top + Math.round(b + band.bandwidth() / 2 - barW / 2 - PAD);\n const rowBottom = rowTop + barW + PAD * 2;\n const below = ci < categories.length / 2;\n const tall = 40 + series.length * 22;\n return { x: M.left - 16, y: below ? rowBottom + 24 + 4 : rowTop - tall + 24 - 4 };\n }\n const lit = Math.min(band.bandwidth(), groupW + PAD * 2);\n const center = M.left + b + band.bandwidth() / 2;\n const tallest = stacked ? (totals[ci] ?? 0) : Math.max(0, ...vals.map((sv) => sv[ci] ?? 0));\n return {\n x: Math.round(center + lit / 2) - 8,\n xLeft: Math.round(center - lit / 2) + 8,\n y: hover && hover.i === ci ? hover.y : M.top + Math.round(v(tallest)),\n };\n };\n const rowsFor = (ci: number) =>\n series.map((s) => ({\n id: s.id,\n label: s.label,\n color: color(s),\n value: formatValue(s.values[ci] ?? 0),\n ...(series.length > 1 && totals[ci] ? { share: formatPercent(Math.round(((s.values[ci] ?? 0) / (totals[ci] ?? 1)) * 100) / 100, 0) } : {}),\n }));\n const PAD = 8;\n return (\n <div ref={ref} className={cn(\"min-w-0\", className)}>\n <ChartFrame\n label={ariaLabel}\n height={height}\n table={table}\n state={state}\n legend={series.length > 1 ? <Legend items={series.map((s) => ({ id: s.id, label: s.label, color: color(s) }))} onHover={setFocus} /> : undefined}\n >\n <div ref={box} role=\"group\" aria-label={ariaLabel} {...keys.props} className=\"absolute inset-0 rounded-cell focus-ring\">\n {size.width > 0 && (\n <svg width={size.width} height={height} className=\"block overflow-visible\" role=\"presentation\">\n <g transform={`translate(${M.left},${M.top})`}>\n {!horizontal &&\n ticks.map((t) => (\n <g key={t} transform={`translate(0,${Math.round(v(t)) + 0.5})`}>\n {t !== 0 && <line x2={w} {...AXIS.grid} />}\n {!state.loading && (\n <text x={w + 12} dy=\"0.32em\" {...AXIS.label}>\n {axisLabel(t)}\n </text>\n )}\n </g>\n ))}\n {categories.map((c, ci) => {\n const b = Math.round(band(c) ?? 0);\n const gap = Math.round((band.step() - band.bandwidth()) / 2);\n const lit = Math.min(band.bandwidth(), groupW + PAD * 2);\n let acc = 0;\n return (\n <g key={c}>\n <rect\n aria-hidden\n className=\"opacity-motion\"\n opacity={active === ci ? 1 : 0}\n fill=\"var(--k-fill-1)\"\n rx={6}\n {...(horizontal\n ? { x: -M.left + PAD, y: Math.round(b + band.bandwidth() / 2 - barW / 2 - PAD), width: size.width - PAD * 2, height: barW + PAD * 2 }\n : { x: Math.round(b + band.bandwidth() / 2 - lit / 2), y: 0, width: lit, height: h })}\n />\n {(() => {\n const center = b + band.bandwidth() / 2;\n const start = Math.round(center - groupW / 2);\n const lastVisible = series.map((_, si) => (vals[si]?.[ci] ?? 0) > 0).lastIndexOf(true);\n let below = horizontal ? 0 : h;\n return series.map((s, si) => {\n const val = vals[si]?.[ci] ?? 0;\n const dim = focus && focus !== s.id ? 0.3 : 1;\n if (horizontal) {\n const x0 = stacked ? Math.round(v(acc)) : 0;\n acc += val;\n const len = Math.max(val > 0 ? 2 : 0, Math.round(v(stacked ? acc : val)) - x0);\n const y = Math.round(center - barW / 2);\n return <rect key={s.id} x={x0} y={y} width={len} height={barW} rx={Math.min(4, barW / 2)} fill={color(s)} opacity={dim} />;\n }\n if (stacked) {\n acc += val;\n const top = Math.round(v(acc));\n const first = below === h;\n const bottom = first ? below : below - GAP;\n below = top;\n const bh = bottom - top;\n if (val <= 0 || bh <= 0) return null;\n return <path key={s.id} d={roundedTop(start, top, barW, bh, si === lastVisible ? 4 : 0)} fill={color(s)} opacity={dim} />;\n }\n const top = Math.round(v(val));\n const bh = Math.max(val > 0 ? 2 : 0, h - top);\n return <path key={s.id} d={roundedTop(start + si * (barW + 4), h - bh, barW, bh, 4)} fill={color(s)} opacity={dim} />;\n });\n })()}\n <rect\n x={horizontal ? -M.left : b - gap}\n y={horizontal ? b - gap : 0}\n width={horizontal ? size.width : band.step()}\n height={horizontal ? band.step() : h}\n fill=\"transparent\"\n onPointerMove={(e) => {\n if (quiet) return;\n const r = (e.currentTarget.ownerSVGElement ?? e.currentTarget).getBoundingClientRect();\n setHover({ i: ci, y: Math.round(e.clientY - r.top) });\n }}\n onPointerLeave={() => setHover(null)}\n />\n {horizontal ? (\n <>\n <text x={-12} y={b + band.bandwidth() / 2} dy=\"0.32em\" textAnchor=\"end\" fill=\"var(--k-text-secondary)\" fontSize={13} fontWeight={500}>\n {c}\n </text>\n <text\n x={Math.round(v(stacked ? (totals[ci] ?? 0) : (vals[0]?.[ci] ?? 0))) + 10}\n y={b + band.bandwidth() / 2}\n dy=\"0.32em\"\n {...AXIS.label}\n fill=\"var(--k-text-secondary)\"\n >\n {formatValue(stacked ? (totals[ci] ?? 0) : (series[0]?.values[ci] ?? 0))}\n </text>\n </>\n ) : (\n shown.has(ci) && (\n <text x={b + band.bandwidth() / 2} y={h + 20} textAnchor=\"middle\" {...AXIS.label}>\n {axisLabels?.[ci] ?? c}\n </text>\n )\n )}\n </g>\n );\n })}\n {!horizontal && <line x2={w} y1={h + 0.5} y2={h + 0.5} {...AXIS.baseline} />}\n </g>\n </svg>\n )}\n {active !== null && size.width > 0 && (\n <ChartTooltip {...anchor(active)} width={size.width} visible heading={categories[active]} rows={rowsFor(active)} />\n )}\n <ChartLive>{keys.index !== null && !quiet ? liveLine(categories[keys.index], rowsFor(keys.index), t) : null}</ChartLive>\n </div>\n </ChartFrame>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") BarChart.displayName = \"BarChart\";\n\nfunction roundedTop(x: number, y: number, w: number, h: number, r: number) {\n const rr = Math.min(r, w / 2, h);\n if (rr <= 0) return `M${x} ${y}h${w}v${h}h${-w}z`;\n return `M${x} ${y + h}V${y + rr}Q${x} ${y} ${x + rr} ${y}H${x + w - rr}Q${x + w} ${y} ${x + w} ${y + rr}V${y + h}z`;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bar.js","names":["d3max","_Fragment","cn","useUiText","wholeTicks","useSize","useChartKeys","tickLabel","seriesColors","liveLine","ChartTooltip","useTweenedScale","ChartFrame","axisLabelIndexes","ChartLive","Legend","AXIS","readableTicks","scaleLinear","Fragment$1","KAESO_BAR_CHART_VARIANTS","KAESO_BAR_CHART_DEFAULT_VARIANTS","BarChart","formatNumber","v","ariaLabel","state","t","box","size","hover","setHover","useState","focus","setFocus","horizontal","layout","stacked","flat","series","s","dataTop","max","categories","a","ci","axis","tween","vals","si","palette","color","M","w","h","height","totals","band","scaleBand","scale","n","inner","MAX","barW","groupW","axisLabel","formatValue","centers","c","shown","axisLabels","dates","table","ticks","quiet","keys","active","highlight","anchor","b","rowTop","PAD","rowBottom","below","tall","lit","center","tallest","sv","rowsFor","formatPercent","className","gap","acc","start","lastVisible","val","dim","x0","len","y","top","bottom","bh","roundedTop","r","rr","x"],"sources":["../../../src/components/charts/bar.tsx"],"sourcesContent":["import { forwardRef, useState } from \"react\";\nimport { scaleBand } from \"d3-scale\";\nimport { scaleLinear } from \"./linear-scale.js\";\nimport { max as d3max } from \"d3-array\";\nimport { cn } from \"../../utils/cn.js\";\nimport { formatNumber, formatPercent } from \"../../format/index.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport {\n AXIS,\n axisLabelIndexes,\n type AxisDate,\n ChartFrame,\n ChartLive,\n ChartTooltip,\n Legend,\n liveLine,\n seriesColors,\n readableTicks,\n tickLabel,\n useChartKeys,\n useSize,\n useTweenedScale,\n wholeTicks,\n type ChartState,\n} from \"./core.js\";\n\nexport const KAESO_BAR_CHART_VARIANTS = {\n layout: {\n grouped: { classes: \"\" },\n stacked: { classes: \"\" },\n horizontal: { classes: \"\" },\n },\n} as const;\nexport const KAESO_BAR_CHART_DEFAULT_VARIANTS = { layout: \"grouped\" } as const;\n\nexport interface BarSeries {\n id: string;\n label: string;\n values: number[];\n color?: string | undefined;\n}\n\nexport interface BarChartProps extends ChartState {\n categories: string[];\n series: BarSeries[];\n layout?: keyof typeof KAESO_BAR_CHART_VARIANTS.layout | undefined;\n height?: number | undefined;\n formatValue?: ((v: number) => string) | undefined;\n highlight?: number | undefined;\n axisLabels?: string[] | undefined;\n dates?: readonly AxisDate[] | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\nexport const BarChart = /* @__PURE__ */ forwardRef<HTMLDivElement, BarChartProps>(function BarChart(\n {\n categories,\n series,\n layout = \"grouped\",\n height = 240,\n formatValue = (v) => formatNumber(v),\n highlight,\n axisLabels,\n dates,\n className,\n \"aria-label\": ariaLabel,\n ...state\n },\n ref,\n) {\n const t = useUiText();\n const [box, size] = useSize<HTMLDivElement>();\n const [hover, setHover] = useState<{ i: number; y: number } | null>(null);\n const [focus, setFocus] = useState<string | null>(null);\n const horizontal = layout === \"horizontal\";\n const stacked = layout === \"stacked\";\n const flat = series.flatMap((s) => s.values);\n const dataTop = (stacked ? d3max(categories.map((_, ci) => series.reduce((a, s) => a + (s.values[ci] ?? 0), 0))) : d3max(flat)) ?? 0;\n const axis = scaleLinear()\n .domain([0, dataTop * 1.08 || 1])\n .nice(4);\n const tween = useTweenedScale(flat, axis.domain()[1] ?? 1, !!state.loading);\n const vals = series.map((s, si) => s.values.map((_, ci) => tween.values[si * s.values.length + ci] ?? 0));\n const palette = seriesColors(series.map((s) => s.id));\n const color = (s: BarSeries) => s.color ?? palette.get(s.id)!;\n const M = horizontal ? { top: 0, right: 56, bottom: 0, left: 140 } : { top: 8, right: 52, bottom: 28, left: 0 };\n const w = Math.max(0, size.width - M.left - M.right);\n const h = Math.max(0, height - M.top - M.bottom);\n const totals = categories.map((_, ci) => vals.reduce((a, v) => a + (v[ci] ?? 0), 0));\n const band = scaleBand<string>()\n .domain(categories)\n .range(horizontal ? [0, h] : [0, w])\n .paddingInner(0.24)\n .paddingOuter(0.12);\n axis.range(horizontal ? [0, w] : [h, 0]);\n const scale = axis.copy().domain([0, tween.top || 1]);\n const v = (n: number) => (horizontal ? Math.min(w, scale(n)) : Math.max(0, scale(n)));\n const inner = scaleBand<string>()\n .domain(series.map((s) => s.id))\n .range([0, band.bandwidth()])\n .paddingInner(0.12);\n const MAX = horizontal ? 20 : stacked || series.length === 1 ? 40 : 20;\n const barW = Math.max(4, Math.min(MAX, Math.round(stacked || horizontal ? band.bandwidth() : inner.bandwidth())));\n const groupW = stacked || horizontal ? barW : series.length * barW + (series.length - 1) * 4;\n const axisLabel = tickLabel(formatValue);\n const centers = [categories[0], categories[categories.length - 1]].map((c) => (c === undefined ? 0 : (band(c) ?? 0) + band.bandwidth() / 2));\n const shown = new Set(\n horizontal\n ? []\n : axisLabelIndexes(\n categories.map((c, ci) => axisLabels?.[ci] ?? c),\n band.step(),\n { start: M.left + centers[0]!, end: w - centers[1]! + M.right },\n dates,\n ),\n );\n const GAP = 2;\n const table = {\n columns: [t(\"barChart.category\", \"Category\"), ...series.map((s) => s.label)],\n rows: categories.map((c, ci) => [c, ...series.map((s) => formatValue(s.values[ci] ?? 0))]),\n };\n const ticks = (state.loading ? axis.ticks(4) : wholeTicks(readableTicks(axis, axisLabel), flat)).filter((t) => t <= (tween.top || 1) + 1e-9);\n const quiet = !!state.loading || !!state.empty || !!state.error;\n const keys = useChartKeys(quiet ? 0 : categories.length, horizontal ? { vertical: true, start: 0 } : {});\n const active = quiet ? null : (hover?.i ?? keys.index ?? (highlight !== undefined && highlight < categories.length ? highlight : null));\n const anchor = (ci: number) => {\n const b = Math.round(band(categories[ci]!) ?? 0);\n if (horizontal) {\n const rowTop = M.top + Math.round(b + band.bandwidth() / 2 - barW / 2 - PAD);\n const rowBottom = rowTop + barW + PAD * 2;\n const below = ci < categories.length / 2;\n const tall = 40 + series.length * 22;\n return { x: M.left - 16, y: below ? rowBottom + 24 + 4 : rowTop - tall + 24 - 4 };\n }\n const lit = Math.min(band.bandwidth(), groupW + PAD * 2);\n const center = M.left + b + band.bandwidth() / 2;\n const tallest = stacked ? (totals[ci] ?? 0) : Math.max(0, ...vals.map((sv) => sv[ci] ?? 0));\n return {\n x: Math.round(center + lit / 2) - 8,\n xLeft: Math.round(center - lit / 2) + 8,\n y: hover && hover.i === ci ? hover.y : M.top + Math.round(v(tallest)),\n };\n };\n const rowsFor = (ci: number) =>\n series.map((s) => ({\n id: s.id,\n label: s.label,\n color: color(s),\n value: formatValue(s.values[ci] ?? 0),\n ...(series.length > 1 && totals[ci] ? { share: formatPercent(Math.round(((s.values[ci] ?? 0) / (totals[ci] ?? 1)) * 100) / 100, 0) } : {}),\n }));\n const PAD = 8;\n return (\n <div ref={ref} className={cn(\"min-w-0\", className)}>\n <ChartFrame\n label={ariaLabel}\n height={height}\n table={table}\n state={state}\n legend={series.length > 1 ? <Legend items={series.map((s) => ({ id: s.id, label: s.label, color: color(s) }))} onHover={setFocus} /> : undefined}\n >\n <div ref={box} role=\"group\" aria-label={ariaLabel} {...keys.props} className=\"absolute inset-0 rounded-cell focus-ring\">\n {size.width > 0 && (\n <svg width={size.width} height={height} className=\"block overflow-visible\" role=\"presentation\">\n <g transform={`translate(${M.left},${M.top})`}>\n {!horizontal &&\n ticks.map((t) => (\n <g key={t} transform={`translate(0,${Math.round(v(t)) + 0.5})`}>\n {t !== 0 && <line x2={w} {...AXIS.grid} />}\n {!state.loading && (\n <text x={w + 12} dy=\"0.32em\" {...AXIS.label}>\n {axisLabel(t)}\n </text>\n )}\n </g>\n ))}\n {categories.map((c, ci) => {\n const b = Math.round(band(c) ?? 0);\n const gap = Math.round((band.step() - band.bandwidth()) / 2);\n const lit = Math.min(band.bandwidth(), groupW + PAD * 2);\n let acc = 0;\n return (\n <g key={c}>\n <rect\n aria-hidden\n className=\"opacity-motion\"\n opacity={active === ci ? 1 : 0}\n fill=\"var(--k-fill-1)\"\n rx={6}\n {...(horizontal\n ? { x: -M.left + PAD, y: Math.round(b + band.bandwidth() / 2 - barW / 2 - PAD), width: size.width - PAD * 2, height: barW + PAD * 2 }\n : { x: Math.round(b + band.bandwidth() / 2 - lit / 2), y: 0, width: lit, height: h })}\n />\n {(() => {\n const center = b + band.bandwidth() / 2;\n const start = Math.round(center - groupW / 2);\n const lastVisible = series.map((_, si) => (vals[si]?.[ci] ?? 0) > 0).lastIndexOf(true);\n let below = horizontal ? 0 : h;\n return series.map((s, si) => {\n const val = vals[si]?.[ci] ?? 0;\n const dim = focus && focus !== s.id ? 0.3 : 1;\n if (horizontal) {\n const x0 = stacked ? Math.round(v(acc)) : 0;\n acc += val;\n const len = Math.max(val > 0 ? 2 : 0, Math.round(v(stacked ? acc : val)) - x0);\n const y = Math.round(center - barW / 2);\n return <rect key={s.id} x={x0} y={y} width={len} height={barW} rx={Math.min(4, barW / 2)} fill={color(s)} opacity={dim} />;\n }\n if (stacked) {\n acc += val;\n const top = Math.round(v(acc));\n const first = below === h;\n const bottom = first ? below : below - GAP;\n below = top;\n const bh = bottom - top;\n if (val <= 0 || bh <= 0) return null;\n return <path key={s.id} d={roundedTop(start, top, barW, bh, si === lastVisible ? 4 : 0)} fill={color(s)} opacity={dim} />;\n }\n const top = Math.round(v(val));\n const bh = Math.max(val > 0 ? 2 : 0, h - top);\n return <path key={s.id} d={roundedTop(start + si * (barW + 4), h - bh, barW, bh, 4)} fill={color(s)} opacity={dim} />;\n });\n })()}\n <rect\n x={horizontal ? -M.left : b - gap}\n y={horizontal ? b - gap : 0}\n width={horizontal ? size.width : band.step()}\n height={horizontal ? band.step() : h}\n fill=\"transparent\"\n onPointerMove={(e) => {\n if (quiet) return;\n const r = (e.currentTarget.ownerSVGElement ?? e.currentTarget).getBoundingClientRect();\n setHover({ i: ci, y: Math.round(e.clientY - r.top) });\n }}\n onPointerLeave={() => setHover(null)}\n />\n {horizontal ? (\n <>\n <text x={-12} y={b + band.bandwidth() / 2} dy=\"0.32em\" textAnchor=\"end\" fill=\"var(--k-text-secondary)\" fontSize={13} fontWeight={500}>\n {c}\n </text>\n <text\n x={Math.round(v(stacked ? (totals[ci] ?? 0) : (vals[0]?.[ci] ?? 0))) + 10}\n y={b + band.bandwidth() / 2}\n dy=\"0.32em\"\n {...AXIS.label}\n fill=\"var(--k-text-secondary)\"\n >\n {formatValue(stacked ? (totals[ci] ?? 0) : (series[0]?.values[ci] ?? 0))}\n </text>\n </>\n ) : (\n shown.has(ci) && (\n <text x={b + band.bandwidth() / 2} y={h + 20} textAnchor=\"middle\" {...AXIS.label}>\n {axisLabels?.[ci] ?? c}\n </text>\n )\n )}\n </g>\n );\n })}\n {!horizontal && <line x2={w} y1={h + 0.5} y2={h + 0.5} {...AXIS.baseline} />}\n </g>\n </svg>\n )}\n {active !== null && size.width > 0 && (\n <ChartTooltip {...anchor(active)} width={size.width} visible heading={categories[active]} rows={rowsFor(active)} />\n )}\n <ChartLive>{keys.index !== null && !quiet ? liveLine(categories[keys.index], rowsFor(keys.index), t) : null}</ChartLive>\n </div>\n </ChartFrame>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") BarChart.displayName = \"BarChart\";\n\nfunction roundedTop(x: number, y: number, w: number, h: number, r: number) {\n const rr = Math.min(r, w / 2, h);\n if (rr <= 0) return `M${x} ${y}h${w}v${h}h${-w}z`;\n return `M${x} ${y + h}V${y + rr}Q${x} ${y} ${x + rr} ${y}H${x + w - rr}Q${x + w} ${y} ${x + w} ${y + rr}V${y + h}z`;\n}\n"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { t as e } from "../../chunks/cn-CidVUKMm.js";
|
|
3
3
|
import { i as t, n } from "../../chunks/context-BELWW79w.js";
|
|
4
4
|
import { formatNumber as r, formatPercent as i } from "../../format.js";
|
|
5
|
-
import { n as a } from "../../chunks/use-layout-width-
|
|
6
|
-
import { O as o, b as s, c, n as l, s as u } from "../../chunks/core-
|
|
5
|
+
import { n as a } from "../../chunks/use-layout-width-CbSDbRb0.js";
|
|
6
|
+
import { O as o, b as s, c, n as l, s as u } from "../../chunks/core-K960A4OT.js";
|
|
7
7
|
import { forwardRef as d, useRef as f, useState as p } from "react";
|
|
8
8
|
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
9
9
|
import { arc as g, pie as _ } from "d3-shape";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { t as e } from "../../chunks/cn-CidVUKMm.js";
|
|
3
3
|
import { r as t } from "../../chunks/context-BELWW79w.js";
|
|
4
4
|
import { formatPercent as n } from "../../format.js";
|
|
5
|
-
import { O as r } from "../../chunks/core-
|
|
5
|
+
import { O as r } from "../../chunks/core-K960A4OT.js";
|
|
6
6
|
import { forwardRef as i } from "react";
|
|
7
7
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/charts/gauge.tsx
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { t as e } from "../../chunks/cn-CidVUKMm.js";
|
|
3
3
|
import { i as t } from "../../chunks/context-BELWW79w.js";
|
|
4
4
|
import { formatNumber as n } from "../../format.js";
|
|
5
|
-
import { D as r, b as i, n as a } from "../../chunks/core-
|
|
5
|
+
import { D as r, b as i, n as a } from "../../chunks/core-K960A4OT.js";
|
|
6
6
|
import { forwardRef as o, useId as s, useMemo as c, useState as l } from "react";
|
|
7
7
|
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
8
8
|
import { sankey as f, sankeyLinkHorizontal as p } from "d3-sankey";
|