@camunda/design-system 0.17.0 → 0.18.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/carbon-compat/radio-button.d.ts.map +1 -1
- package/dist/carbon-compat/radio-button.js +2 -2
- package/dist/carbon-compat/radio-button.js.map +1 -1
- package/dist/src/components/ui/bar-chart.d.ts +26 -0
- package/dist/src/components/ui/bar-chart.d.ts.map +1 -0
- package/dist/src/components/ui/bar-chart.js +76 -0
- package/dist/src/components/ui/bar-chart.js.map +1 -0
- package/dist/src/components/ui/chart.d.ts +32 -0
- package/dist/src/components/ui/chart.d.ts.map +1 -0
- package/dist/src/components/ui/chart.js +84 -0
- package/dist/src/components/ui/chart.js.map +1 -0
- package/dist/src/components/ui/page-layout.d.ts +4 -1
- package/dist/src/components/ui/page-layout.d.ts.map +1 -1
- package/dist/src/components/ui/page-layout.js +22 -8
- package/dist/src/components/ui/page-layout.js.map +1 -1
- package/dist/src/examples/cost-dashboard/CostBreakdownChart.d.ts.map +1 -1
- package/dist/src/examples/cost-dashboard/CostBreakdownChart.js +9 -8
- package/dist/src/examples/cost-dashboard/CostBreakdownChart.js.map +1 -1
- package/dist/src/examples/cost-dashboard/CostDashboardPage.d.ts.map +1 -1
- package/dist/src/examples/cost-dashboard/CostDashboardPage.js +6 -2
- package/dist/src/examples/cost-dashboard/CostDashboardPage.js.map +1 -1
- package/dist/src/examples/cost-dashboard/TrendChart.d.ts.map +1 -1
- package/dist/src/examples/cost-dashboard/TrendChart.js +7 -9
- package/dist/src/examples/cost-dashboard/TrendChart.js.map +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.d.ts.map +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.js +3 -3
- package/dist/src/examples/project-detail/ProjectDetailPage.js.map +1 -1
- package/dist/src/examples/projects-list/ProjectsListPage.d.ts.map +1 -1
- package/dist/src/examples/projects-list/ProjectsListPage.js +7 -7
- package/dist/src/examples/projects-list/ProjectsListPage.js.map +1 -1
- package/dist/src/examples/shared/AppShell.d.ts +6 -1
- package/dist/src/examples/shared/AppShell.d.ts.map +1 -1
- package/dist/src/examples/shared/AppShell.js +7 -2
- package/dist/src/examples/shared/AppShell.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/styles.css +123 -0
- package/package.json +1 -1
- package/dist/src/examples/cost-dashboard/useChartColors.d.ts +0 -10
- package/dist/src/examples/cost-dashboard/useChartColors.d.ts.map +0 -1
- package/dist/src/examples/cost-dashboard/useChartColors.js +0 -20
- package/dist/src/examples/cost-dashboard/useChartColors.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button.d.ts","sourceRoot":"","sources":["../../carbon-compat/radio-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,qBAAqB,IAAI,2BAA2B,EACpD,gBAAgB,IAAI,sBAAsB,EAC3C,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"radio-button.d.ts","sourceRoot":"","sources":["../../carbon-compat/radio-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,qBAAqB,IAAI,2BAA2B,EACpD,gBAAgB,IAAI,sBAAsB,EAC3C,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBA6GrD;AAED,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBAkD3C;AAED,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -33,9 +33,9 @@ function RadioButtonGroup(props) {
|
|
|
33
33
|
onChange?.(value, name, synthetic);
|
|
34
34
|
}
|
|
35
35
|
: undefined;
|
|
36
|
-
const group = (_jsx(RadioGroup, { name: name, value: valueSelected, defaultValue: defaultSelected, disabled: disabled, orientation: orientation === "horizontal" ? "horizontal" : "vertical", onValueChange: handleValueChange, className: cn(orientation === "horizontal" && "flex flex-row gap-4", className), ...rest, children: children }));
|
|
36
|
+
const group = (_jsx(RadioGroup, { name: name, value: valueSelected, defaultValue: defaultSelected, disabled: disabled, orientation: orientation === "horizontal" ? "horizontal" : "vertical", onValueChange: handleValueChange, className: cn(legendText && "gap-2", orientation === "horizontal" && "flex flex-row gap-4", className), ...rest, children: children }));
|
|
37
37
|
if (legendText) {
|
|
38
|
-
return (_jsxs("fieldset", { className: "space-y-
|
|
38
|
+
return (_jsxs("fieldset", { className: "space-y-3", children: [_jsx("legend", { className: "text-sm font-medium", children: legendText }), group] }));
|
|
39
39
|
}
|
|
40
40
|
return group;
|
|
41
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button.js","sourceRoot":"","sources":["../../carbon-compat/radio-button.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"radio-button.js","sourceRoot":"","sources":["../../carbon-compat/radio-button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ChartConfig } from "./chart.js";
|
|
2
|
+
interface ReferenceLineConfig {
|
|
3
|
+
value: number;
|
|
4
|
+
label?: string;
|
|
5
|
+
axis?: "x" | "y";
|
|
6
|
+
}
|
|
7
|
+
interface BarChartProps {
|
|
8
|
+
data: Record<string, unknown>[];
|
|
9
|
+
categoryKey: string;
|
|
10
|
+
config: ChartConfig;
|
|
11
|
+
orientation?: "vertical" | "horizontal";
|
|
12
|
+
stacked?: boolean;
|
|
13
|
+
getCellColor?: (value: number, dataKey: string) => string;
|
|
14
|
+
showLabels?: boolean;
|
|
15
|
+
referenceLines?: ReferenceLineConfig[];
|
|
16
|
+
legend?: boolean;
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
empty?: boolean;
|
|
19
|
+
radius?: number;
|
|
20
|
+
tickFormatter?: (value: unknown) => string;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
declare function BarChart({ data, categoryKey, config, orientation, stacked, getCellColor, showLabels, referenceLines, legend, loading, empty, radius, tickFormatter, className, }: BarChartProps): import("react").JSX.Element;
|
|
24
|
+
export { BarChart };
|
|
25
|
+
export type { BarChartProps };
|
|
26
|
+
//# sourceMappingURL=bar-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/bar-chart.tsx"],"names":[],"mappings":"AAWA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAEjB,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CAClB;AAsCD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,WAAW,EACX,MAAM,EACN,WAAwB,EACxB,OAAe,EACf,YAAY,EACZ,UAAkB,EAClB,cAAc,EACd,MAAM,EACN,OAAe,EACf,KAAa,EACb,MAAU,EACV,aAAa,EACb,SAAS,GACV,EAAE,aAAa,+BAqHf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Bar, BarChart as RechartsBarChart, CartesianGrid, Cell, LabelList, ReferenceLine, XAxis, YAxis, } from "recharts";
|
|
3
|
+
import { ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, } from "./chart.js";
|
|
4
|
+
// Recharts' <Bar radius> accepts a single number (all four corners) or a
|
|
5
|
+
// [topLeft, topRight, bottomRight, bottomLeft] tuple. For a stacked chart with
|
|
6
|
+
// 2+ series, only the outer-facing edge of the base and outer segments should
|
|
7
|
+
// round — internal seams between stacked segments must stay flat so the stack
|
|
8
|
+
// reads as one continuous bar. "Outer-facing" depends on orientation: vertical
|
|
9
|
+
// stacks grow up from the x-axis (first key = base = bottom corners round,
|
|
10
|
+
// last key = top = top corners round); horizontal stacks grow right from the
|
|
11
|
+
// y-axis (first key = base = left corners round, last key = right = right
|
|
12
|
+
// corners round). Grouped (stacked=false) or single-series charts keep the
|
|
13
|
+
// flat-4-corner radius. The `0` branches (flat/middle-of-stack segments) stay
|
|
14
|
+
// `0` regardless of `radius` — only the rounded branches scale with it.
|
|
15
|
+
function getBarRadius(index, total, stacked, orientation, radius) {
|
|
16
|
+
if (!stacked || total <= 1) {
|
|
17
|
+
return radius;
|
|
18
|
+
}
|
|
19
|
+
const isBase = index === 0;
|
|
20
|
+
const isOuter = index === total - 1;
|
|
21
|
+
if (orientation === "vertical") {
|
|
22
|
+
// [topLeft, topRight, bottomRight, bottomLeft]
|
|
23
|
+
if (isOuter)
|
|
24
|
+
return [radius, radius, 0, 0];
|
|
25
|
+
if (isBase)
|
|
26
|
+
return [0, 0, radius, radius];
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
// orientation === "horizontal": base touches the y-axis (left), outer segment
|
|
30
|
+
// is right-most.
|
|
31
|
+
if (isBase)
|
|
32
|
+
return [radius, 0, 0, radius];
|
|
33
|
+
if (isOuter)
|
|
34
|
+
return [0, radius, radius, 0];
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
function BarChart({ data, categoryKey, config, orientation = "vertical", stacked = false, getCellColor, showLabels = false, referenceLines, legend, loading = false, empty = false, radius = 4, tickFormatter, className, }) {
|
|
38
|
+
const seriesKeys = Object.keys(config);
|
|
39
|
+
const showLegend = legend ?? seriesKeys.length > 1;
|
|
40
|
+
// Public `orientation` describes bar growth direction. Recharts' `layout` is the
|
|
41
|
+
// inverse of that: its default ("horizontal") grows bars vertically, and
|
|
42
|
+
// "vertical" grows bars sideways. Translate here so no Recharts terminology
|
|
43
|
+
// leaks into the DS prop.
|
|
44
|
+
const rechartsLayout = orientation === "horizontal" ? "vertical" : "horizontal";
|
|
45
|
+
// Reference-line axis defaults to the value axis — the axis opposite categoryKey.
|
|
46
|
+
const defaultReferenceAxis = orientation === "horizontal" ? "x" : "y";
|
|
47
|
+
return (_jsx(ChartContainer, { config: config, loading: loading, empty: empty, className: className, children: _jsxs(RechartsBarChart, { data: data, layout: rechartsLayout, accessibilityLayer: true, children: [_jsx(CartesianGrid, { vertical: orientation === "horizontal", horizontal: orientation === "vertical", stroke: "var(--border)" }), orientation === "vertical" ? (_jsxs(_Fragment, { children: [_jsx(XAxis, { dataKey: categoryKey, tickLine: false, axisLine: false,
|
|
48
|
+
// Matches shadcn's own chart-bar-interactive registry default —
|
|
49
|
+
// Recharts skips tick labels that would render closer together
|
|
50
|
+
// than this pixel gap, avoiding crowded/overlapping labels on
|
|
51
|
+
// dense datasets (e.g. ~90 daily points). Sparse datasets are
|
|
52
|
+
// unaffected since their ticks already clear 32px.
|
|
53
|
+
minTickGap: 32, tickFormatter: tickFormatter }), _jsx(YAxis, { tickLine: false, axisLine: false })] })) : (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: "number", tickLine: false, axisLine: false }), _jsx(YAxis, { dataKey: categoryKey, type: "category", tickLine: false, axisLine: false,
|
|
54
|
+
// Recharts' default category-axis width (60px) truncates longer
|
|
55
|
+
// labels (e.g. process/connector names) — "auto" measures each
|
|
56
|
+
// label and sizes the axis to fit, per this prop's purpose.
|
|
57
|
+
width: "auto", minTickGap: 32, tickFormatter: tickFormatter })] })), _jsx(ChartTooltip, { content: _jsx(ChartTooltipContent, {}) }), showLegend && _jsx(ChartLegend, { content: _jsx(ChartLegendContent, {}) }), referenceLines?.map((referenceLine, index) => (_jsx(ReferenceLine, { ...(referenceLine.axis
|
|
58
|
+
? { [referenceLine.axis]: referenceLine.value }
|
|
59
|
+
: { [defaultReferenceAxis]: referenceLine.value }), ...(referenceLine.label
|
|
60
|
+
? {
|
|
61
|
+
label: {
|
|
62
|
+
value: referenceLine.label,
|
|
63
|
+
position: "insideTopRight",
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
: {}), strokeDasharray: "4 4",
|
|
67
|
+
// chart.tsx's global style forces `.recharts-reference-line-line` to
|
|
68
|
+
// `stroke-border` via a Tailwind arbitrary-variant class, which beats
|
|
69
|
+
// the `stroke` SVG presentation attribute (lowest CSS priority). Set
|
|
70
|
+
// the color via inline `style` instead so it wins over that class.
|
|
71
|
+
style: { stroke: "var(--neutral-foreground-subtle)" } }, index))), seriesKeys.map((key, index) => (_jsxs(Bar, { dataKey: key, fill: `var(--color-${key})`, stackId: stacked ? "stack" : undefined, radius: getBarRadius(index, seriesKeys.length, stacked, orientation, radius), children: [getCellColor && seriesKeys.length === 1
|
|
72
|
+
? data.map((row, index) => (_jsx(Cell, { fill: getCellColor(Number(row[key]), key) }, index)))
|
|
73
|
+
: null, showLabels && (_jsx(LabelList, { dataKey: key, position: orientation === "horizontal" ? "right" : "top", className: "fill-neutral-foreground-strong", fontSize: 12 }))] }, key)))] }) }));
|
|
74
|
+
}
|
|
75
|
+
export { BarChart };
|
|
76
|
+
//# sourceMappingURL=bar-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-chart.js","sourceRoot":"","sources":["../../../../src/components/ui/bar-chart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,GAAG,EACH,QAAQ,IAAI,gBAAgB,EAC5B,aAAa,EACb,IAAI,EACJ,SAAS,EACT,aAAa,EACb,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,GAEpB,MAAM,SAAS,CAAC;AAQjB,yEAAyE;AACzE,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,0EAA0E;AAC1E,2EAA2E;AAC3E,8EAA8E;AAC9E,wEAAwE;AACxE,SAAS,YAAY,CACnB,KAAa,EACb,KAAa,EACb,OAAgB,EAChB,WAAsC,EACtC,MAAc;IAEd,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;IACpC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,+CAA+C;QAC/C,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,8EAA8E;IAC9E,iBAAiB;IACjB,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,OAAO;QAAE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACX,CAAC;AAmBD,SAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,WAAW,EACX,MAAM,EACN,WAAW,GAAG,UAAU,EACxB,OAAO,GAAG,KAAK,EACf,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,cAAc,EACd,MAAM,EACN,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,CAAC,EACV,aAAa,EACb,SAAS,GACK;IACd,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACnD,iFAAiF;IACjF,yEAAyE;IACzE,4EAA4E;IAC5E,0BAA0B;IAC1B,MAAM,cAAc,GAClB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3D,kFAAkF;IAClF,MAAM,oBAAoB,GAAG,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtE,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,YAEpB,MAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,mBACtE,KAAC,aAAa,IACZ,QAAQ,EAAE,WAAW,KAAK,YAAY,EACtC,UAAU,EAAE,WAAW,KAAK,UAAU,EACtC,MAAM,EAAC,eAAe,GACtB,EACD,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,CAC5B,8BACE,KAAC,KAAK,IACJ,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK;4BACf,gEAAgE;4BAChE,+DAA+D;4BAC/D,8DAA8D;4BAC9D,8DAA8D;4BAC9D,mDAAmD;4BACnD,UAAU,EAAE,EAAE,EACd,aAAa,EAAE,aAAa,GAC5B,EACF,KAAC,KAAK,IAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAI,IAC1C,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAI,EACzD,KAAC,KAAK,IACJ,OAAO,EAAE,WAAW,EACpB,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK;4BACf,gEAAgE;4BAChE,+DAA+D;4BAC/D,4DAA4D;4BAC5D,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,EAAE,EACd,aAAa,EAAE,aAAa,GAC5B,IACD,CACJ,EACD,KAAC,YAAY,IAAC,OAAO,EAAE,KAAC,mBAAmB,KAAG,GAAI,EACjD,UAAU,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,KAAC,kBAAkB,KAAG,GAAI,EAC9D,cAAc,EAAE,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7C,KAAC,aAAa,OAER,CAAC,aAAa,CAAC,IAAI;wBACrB,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;wBAC/C,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,KAChD,CAAC,aAAa,CAAC,KAAK;wBACtB,CAAC,CAAC;4BACE,KAAK,EAAE;gCACL,KAAK,EAAE,aAAa,CAAC,KAAK;gCAC1B,QAAQ,EAAE,gBAAgB;6BAC3B;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC,EACP,eAAe,EAAC,KAAK;oBACrB,qEAAqE;oBACrE,sEAAsE;oBACtE,qEAAqE;oBACrE,mEAAmE;oBACnE,KAAK,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE,IAjBhD,KAAK,CAkBV,CACH,CAAC,EACD,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,MAAC,GAAG,IAEF,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,eAAe,GAAG,GAAG,EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACtC,MAAM,EAAE,YAAY,CAClB,KAAK,EACL,UAAU,CAAC,MAAM,EACjB,OAAO,EACP,WAAW,EACX,MAAM,CACP,aAEA,YAAY,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;4BACtC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACvB,KAAC,IAAI,IAEH,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IADpC,KAAK,CAEV,CACH,CAAC;4BACJ,CAAC,CAAC,IAAI,EACP,UAAU,IAAI,CACb,KAAC,SAAS,IACR,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EACxD,SAAS,EAAC,gCAAgC,EAC1C,QAAQ,EAAE,EAAE,GACZ,CACH,KA3BI,GAAG,CA4BJ,CACP,CAAC,IACe,GACJ,CAClB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as RechartsPrimitive from "recharts";
|
|
3
|
+
export type ChartConfig = Record<string, {
|
|
4
|
+
label: React.ReactNode;
|
|
5
|
+
icon?: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
|
6
|
+
color?: string;
|
|
7
|
+
}>;
|
|
8
|
+
declare function ChartContainer({ id, className, children, config, loading, empty, emptyMessage, ...props }: React.ComponentProps<"div"> & {
|
|
9
|
+
config: ChartConfig;
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
empty?: boolean;
|
|
12
|
+
emptyMessage?: string;
|
|
13
|
+
children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
|
|
14
|
+
}): React.JSX.Element;
|
|
15
|
+
declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
16
|
+
declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, formatter, color, labelClassName, }: Partial<RechartsPrimitive.TooltipContentProps> & {
|
|
17
|
+
className?: string;
|
|
18
|
+
indicator?: "line" | "dot" | "dashed";
|
|
19
|
+
hideLabel?: boolean;
|
|
20
|
+
hideIndicator?: boolean;
|
|
21
|
+
color?: string;
|
|
22
|
+
labelClassName?: string;
|
|
23
|
+
}): React.JSX.Element | null;
|
|
24
|
+
declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
|
|
25
|
+
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, }: {
|
|
26
|
+
className?: string;
|
|
27
|
+
payload?: readonly RechartsPrimitive.LegendPayload[];
|
|
28
|
+
verticalAlign?: RechartsPrimitive.LegendProps["verticalAlign"];
|
|
29
|
+
hideIcon?: boolean;
|
|
30
|
+
}): React.JSX.Element | null;
|
|
31
|
+
export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, };
|
|
32
|
+
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAK9C,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,MAAM,EACN;IACE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CACF,CAAC;AAgBF,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAe,EACf,KAAa,EACb,YAAkC,EAClC,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,cAAc,CAC5B,OAAO,iBAAiB,CAAC,mBAAmB,CAC7C,CAAC,UAAU,CAAC,CAAC;CACf,qBAgCA;AAoBD,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,SAAS,EACT,KAAK,EACL,cAAc,GACf,EAAE,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,4BAkHA;AAED,QAAA,MAAM,WAAW,sGAA2B,CAAC;AAE7C,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,aAAwB,GACzB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,iBAAiB,CAAC,aAAa,EAAE,CAAC;IACrD,aAAa,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,4BA4CA;AAED,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,kBAAkB,GACnB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as RechartsPrimitive from "recharts";
|
|
4
|
+
import { cn } from "../../lib/utils.js";
|
|
5
|
+
import { Skeleton } from "./skeleton.js";
|
|
6
|
+
const ChartContext = React.createContext(null);
|
|
7
|
+
function useChart() {
|
|
8
|
+
const context = React.useContext(ChartContext);
|
|
9
|
+
if (!context) {
|
|
10
|
+
throw new Error("useChart must be used within a <ChartContainer />");
|
|
11
|
+
}
|
|
12
|
+
return context;
|
|
13
|
+
}
|
|
14
|
+
function ChartContainer({ id, className, children, config, loading = false, empty = false, emptyMessage = "No data available", ...props }) {
|
|
15
|
+
const generatedId = React.useId();
|
|
16
|
+
const chartId = `chart-${generatedId.replace(/:/g, "")}`;
|
|
17
|
+
return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { id: id, "data-slot": "chart", "data-chart": chartId, "aria-busy": loading || undefined, className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-neutral-foreground-subtle [&_.recharts-cartesian-grid_line]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-radial-bar-background-sector]:fill-neutral-background-strong [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-neutral-background-strong [&_.recharts-reference-line-line]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), loading ? (_jsx(Skeleton, { className: "h-full w-full" })) : empty ? (_jsx("div", { className: "flex h-full w-full items-center justify-center text-neutral-foreground-subtle", children: emptyMessage })) : (_jsx(RechartsPrimitive.ResponsiveContainer, { children: children }))] }) }));
|
|
18
|
+
}
|
|
19
|
+
function ChartStyle({ id, config }) {
|
|
20
|
+
const colorConfig = Object.entries(config).filter(([, entryConfig]) => entryConfig.color);
|
|
21
|
+
if (!colorConfig.length) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return (_jsx("style", { children: `[data-chart="${id}"] {
|
|
25
|
+
${colorConfig
|
|
26
|
+
.map(([key, entryConfig]) => ` --color-${key}: ${entryConfig.color};`)
|
|
27
|
+
.join("\n")}
|
|
28
|
+
}` }));
|
|
29
|
+
}
|
|
30
|
+
const ChartTooltip = RechartsPrimitive.Tooltip;
|
|
31
|
+
function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, formatter, color, labelClassName, }) {
|
|
32
|
+
const { config } = useChart();
|
|
33
|
+
const tooltipLabel = React.useMemo(() => {
|
|
34
|
+
if (hideLabel || !payload?.length) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const value = !labelFormatter && typeof label === "string"
|
|
38
|
+
? (config[label]?.label ?? label)
|
|
39
|
+
: label;
|
|
40
|
+
if (labelFormatter) {
|
|
41
|
+
return (_jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) }));
|
|
42
|
+
}
|
|
43
|
+
if (!value) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return _jsx("div", { className: cn("font-medium", labelClassName), children: value });
|
|
47
|
+
}, [label, labelFormatter, payload, hideLabel, labelClassName, config]);
|
|
48
|
+
if (!active || !payload?.length) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
52
|
+
return (_jsxs("div", { "data-slot": "chart-tooltip-content", className: cn("grid min-w-32 items-start gap-1.5 rounded-lg border border-border bg-popover px-2.5 py-1.5 text-xs text-popover-foreground shadow-lg", className), children: [!nestLabel ? tooltipLabel : null, _jsx("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
|
|
53
|
+
const key = `${item.dataKey ?? item.name ?? "value"}`;
|
|
54
|
+
const itemConfig = config[key];
|
|
55
|
+
const indicatorColor = color ?? item.color ?? item.payload?.fill;
|
|
56
|
+
return (_jsx("div", { className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5 [&>svg]:text-neutral-foreground-subtle", indicator === "dot" && "items-center"), children: formatter && item.value !== undefined && item.name ? (formatter(item.value, item.name, item, index, item.payload)) : (_jsxs(_Fragment, { children: [itemConfig?.icon ? (_jsx(itemConfig.icon, { "aria-hidden": "true" })) : (!hideIndicator && (_jsx("div", { "aria-hidden": "true", className: cn("shrink-0 rounded-[2px] border-(--color-border-tooltip) bg-(--color-indicator-tooltip)", {
|
|
57
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
58
|
+
"h-full w-1": indicator === "line",
|
|
59
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
60
|
+
"my-0.5": nestLabel && indicator === "dashed",
|
|
61
|
+
}), style: {
|
|
62
|
+
"--color-indicator-tooltip": indicatorColor,
|
|
63
|
+
"--color-border-tooltip": indicatorColor,
|
|
64
|
+
} }))), _jsxs("div", { className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"), children: [_jsxs("div", { className: "grid gap-1.5", children: [nestLabel ? tooltipLabel : null, _jsx("span", { className: "text-neutral-foreground-subtle", children: itemConfig?.label ?? item.name })] }), item.value !== undefined && item.value !== null && (_jsx("span", { className: "font-mono font-medium tabular-nums text-neutral-foreground-strong", children: typeof item.value === "number"
|
|
65
|
+
? item.value.toLocaleString()
|
|
66
|
+
: item.value }))] })] })) }, key || index));
|
|
67
|
+
}) })] }));
|
|
68
|
+
}
|
|
69
|
+
const ChartLegend = RechartsPrimitive.Legend;
|
|
70
|
+
function ChartLegendContent({ className, hideIcon = false, payload, verticalAlign = "bottom", }) {
|
|
71
|
+
const { config } = useChart();
|
|
72
|
+
if (!payload?.length) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return (_jsx("div", { "data-slot": "chart-legend-content", className: cn("flex items-center justify-center gap-4", verticalAlign === "top" ? "pb-3" : "pt-3", className), children: payload.map((item, index) => {
|
|
76
|
+
const lookupKey = `${item.dataKey ?? "value"}`;
|
|
77
|
+
const itemConfig = config[lookupKey];
|
|
78
|
+
return (_jsxs("div", { className: "flex items-center gap-1.5 text-neutral-foreground-subtle [&>svg]:size-3 [&>svg]:text-neutral-foreground-subtle", children: [itemConfig?.icon && !hideIcon ? (_jsx(itemConfig.icon, { "aria-hidden": "true" })) : (_jsx("div", { "aria-hidden": "true", className: "h-2 w-2 shrink-0 rounded-[2px] bg-(--color-indicator-legend)", style: {
|
|
79
|
+
"--color-indicator-legend": item.color,
|
|
80
|
+
} })), itemConfig?.label] }, `${lookupKey}-${index}`));
|
|
81
|
+
}) }));
|
|
82
|
+
}
|
|
83
|
+
export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, };
|
|
84
|
+
//# sourceMappingURL=chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,10 @@ import { type VariantProps } from "class-variance-authority";
|
|
|
3
3
|
declare const pageLayoutVariants: (props?: ({
|
|
4
4
|
padding?: "default" | "none" | null | undefined;
|
|
5
5
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
-
|
|
6
|
+
declare const pageContentWidthVariants: (props?: ({
|
|
7
|
+
width?: "constrained" | "full" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
type PageLayoutProps = React.ComponentProps<"main"> & VariantProps<typeof pageLayoutVariants> & VariantProps<typeof pageContentWidthVariants> & {
|
|
7
10
|
separator?: boolean;
|
|
8
11
|
};
|
|
9
12
|
declare const PageLayout: React.ForwardRefExoticComponent<Omit<PageLayoutProps, "ref"> & React.RefAttributes<HTMLElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/page-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAUlE,QAAA,MAAM,kBAAkB;;8EAavB,CAAC;AAEF,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACjD,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/page-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAUlE,QAAA,MAAM,kBAAkB;;8EAavB,CAAC;AAEF,QAAA,MAAM,wBAAwB;;8EAU5B,CAAC;AAEH,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACjD,YAAY,CAAC,OAAO,kBAAkB,CAAC,GACvC,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAsDJ,QAAA,MAAM,UAAU,kGAAwD,CAAC;AAOzE,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB,CAAC;AAiDF,QAAA,MAAM,UAAU,kGAAwD,CAAC;AAGzE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -18,16 +18,30 @@ const pageLayoutVariants = cva("flex flex-col min-h-0 flex-1 bg-background text-
|
|
|
18
18
|
padding: "default",
|
|
19
19
|
},
|
|
20
20
|
});
|
|
21
|
-
|
|
21
|
+
const pageContentWidthVariants = cva("flex flex-1 min-h-0 flex-col w-full", {
|
|
22
|
+
variants: {
|
|
23
|
+
width: {
|
|
24
|
+
constrained: "mx-auto max-w-[1584px]",
|
|
25
|
+
full: "",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
width: "constrained",
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
function PageLayoutImpl({ id = "main-content", padding, width, separator = false, className, children, ref, ...props }) {
|
|
22
33
|
const childArray = React.Children.toArray(children);
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
let content = children;
|
|
35
|
+
if (separator) {
|
|
36
|
+
// Inject a <Separator> after the first PageHeader child.
|
|
37
|
+
const firstPageHeaderIndex = childArray.findIndex((child) => React.isValidElement(child) &&
|
|
38
|
+
child.type.displayName ===
|
|
39
|
+
"PageHeader");
|
|
40
|
+
if (firstPageHeaderIndex !== -1) {
|
|
41
|
+
content = (_jsxs(_Fragment, { children: [childArray.slice(0, firstPageHeaderIndex + 1), _jsx(Separator, {}), childArray.slice(firstPageHeaderIndex + 1)] }));
|
|
42
|
+
}
|
|
25
43
|
}
|
|
26
|
-
|
|
27
|
-
const firstPageHeaderIndex = childArray.findIndex((child) => React.isValidElement(child) &&
|
|
28
|
-
child.type.displayName === "PageHeader");
|
|
29
|
-
const content = firstPageHeaderIndex === -1 ? (children) : (_jsxs(_Fragment, { children: [childArray.slice(0, firstPageHeaderIndex + 1), _jsx(Separator, {}), childArray.slice(firstPageHeaderIndex + 1)] }));
|
|
30
|
-
return (_jsx("main", { "data-slot": "page-layout", id: id, className: cn(pageLayoutVariants({ padding }), className), ref: ref, ...props, children: content }));
|
|
44
|
+
return (_jsx("main", { "data-slot": "page-layout", id: id, className: cn(pageLayoutVariants({ padding }), className), ref: ref, ...props, children: _jsx("div", { "data-slot": "page-content", className: cn(pageContentWidthVariants({ width })), children: content }) }));
|
|
31
45
|
}
|
|
32
46
|
const PageLayout = withRef(PageLayoutImpl);
|
|
33
47
|
PageLayout.displayName = "PageLayout";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../../../src/components/ui/page-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,GAAG,CAC5B,4DAA4D,EAC5D;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,EAAE;SACT;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAC;
|
|
1
|
+
{"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../../../src/components/ui/page-layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CostBreakdownChart.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostBreakdownChart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CostBreakdownChart.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostBreakdownChart.tsx"],"names":[],"mappings":"AAoBA,wBAAgB,kBAAkB,gCAyDjC"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { PieChart, Pie, Cell
|
|
2
|
+
import { PieChart, Pie, Cell } from "recharts";
|
|
3
|
+
import { ChartContainer } from "../../index.js";
|
|
3
4
|
import { agents, totalLlmSpend } from "./mock-data.js";
|
|
4
|
-
import { useChartColors } from "./useChartColors.js";
|
|
5
5
|
// Spend split into input vs output cost (summed across the definition's agents).
|
|
6
6
|
const totalInput = +agents.reduce((sum, a) => sum + a.inCostUsd, 0).toFixed(2);
|
|
7
7
|
const totalOutput = +agents
|
|
8
8
|
.reduce((sum, a) => sum + a.outCostUsd, 0)
|
|
9
9
|
.toFixed(2);
|
|
10
10
|
const segments = [
|
|
11
|
-
{ name: "Input", value: totalInput },
|
|
12
|
-
{ name: "Output", value: totalOutput },
|
|
11
|
+
{ name: "Input", key: "input", value: totalInput },
|
|
12
|
+
{ name: "Output", key: "output", value: totalOutput },
|
|
13
13
|
];
|
|
14
|
+
const chartConfig = {
|
|
15
|
+
input: { label: "Input", color: "var(--chart-1)" },
|
|
16
|
+
output: { label: "Output", color: "var(--chart-2)" },
|
|
17
|
+
};
|
|
14
18
|
export function CostBreakdownChart() {
|
|
15
|
-
|
|
16
|
-
return (_jsxs("div", { ref: ref, className: "flex flex-col items-center", children: [_jsxs("div", { className: "relative h-44 w-44", children: [colors.length >= segments.length && (_jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsx(PieChart, { children: _jsx(Pie, { data: segments, dataKey: "value", nameKey: "name", innerRadius: 52, outerRadius: 84, stroke: "none", children: segments.map((s, i) => (_jsx(Cell, { fill: colors[i] }, s.name))) }) }) })), _jsxs("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [_jsxs("span", { className: "text-xl font-semibold tabular-nums", children: ["$", totalLlmSpend.toFixed(2)] }), _jsx("span", { className: "text-xs text-neutral-foreground-subtle", children: "total spend" })] })] }), _jsx("ul", { className: "mt-4 w-full space-y-1 text-xs", children: segments.map((s, i) => (_jsxs("li", { className: "flex items-center justify-between gap-2", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "inline-block size-2.5 rounded-[2px]", style: {
|
|
17
|
-
background: colors[i] ?? "var(--neutral-background-strong)",
|
|
18
|
-
} }), s.name] }), _jsxs("span", { className: "tabular-nums text-neutral-foreground-subtle", children: ["$", s.value.toFixed(2)] })] }, s.name))) })] }));
|
|
19
|
+
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsxs("div", { className: "relative h-44 w-44", children: [_jsx(ChartContainer, { config: chartConfig, className: "h-full w-full", children: _jsx(PieChart, { children: _jsx(Pie, { data: segments, dataKey: "value", nameKey: "name", innerRadius: 52, outerRadius: 84, stroke: "none", isAnimationActive: false, children: segments.map((s) => (_jsx(Cell, { fill: `var(--color-${s.key})` }, s.name))) }) }) }), _jsxs("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [_jsxs("span", { className: "text-xl font-semibold tabular-nums", children: ["$", totalLlmSpend.toFixed(2)] }), _jsx("span", { className: "text-xs text-neutral-foreground-subtle", children: "total spend" })] })] }), _jsx("ul", { className: "mt-4 w-full space-y-1 text-xs", children: segments.map((s) => (_jsxs("li", { className: "flex items-center justify-between gap-2", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "inline-block size-2.5 rounded-[2px]", style: { background: chartConfig[s.key]?.color } }), s.name] }), _jsxs("span", { className: "tabular-nums text-neutral-foreground-subtle", children: ["$", s.value.toFixed(2)] })] }, s.name))) })] }));
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=CostBreakdownChart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CostBreakdownChart.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostBreakdownChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"CostBreakdownChart.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostBreakdownChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpD,iFAAiF;AACjF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,WAAW,GAAG,CAAC,MAAM;KACxB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;KACzC,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,MAAM,QAAQ,GAAG;IACf,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE;CACtD,CAAC;AAEF,MAAM,WAAW,GAAgB;IAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAClD,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;CACrD,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAChC,OAAO,CACL,eAAK,SAAS,EAAC,4BAA4B,aACzC,eAAK,SAAS,EAAC,oBAAoB,aACjC,KAAC,cAAc,IAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAC,eAAe,YAC5D,KAAC,QAAQ,cACP,KAAC,GAAG,IACF,IAAI,EAAE,QAAQ,EACd,OAAO,EAAC,OAAO,EACf,OAAO,EAAC,MAAM,EACd,WAAW,EAAE,EAAE,EACf,WAAW,EAAE,EAAE,EACf,MAAM,EAAC,MAAM,EACb,iBAAiB,EAAE,KAAK,YAEvB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnB,KAAC,IAAI,IAAc,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,GAAG,IAArC,CAAC,CAAC,IAAI,CAAmC,CACrD,CAAC,GACE,GACG,GACI,EAEjB,eAAK,SAAS,EAAC,gFAAgF,aAC7F,gBAAM,SAAS,EAAC,oCAAoC,kBAChD,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IACrB,EACP,eAAM,SAAS,EAAC,wCAAwC,4BAEjD,IACH,IACF,EASN,aAAI,SAAS,EAAC,+BAA+B,YAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACnB,cAAiB,SAAS,EAAC,yCAAyC,aAClE,gBAAM,SAAS,EAAC,2BAA2B,aACzC,eACE,SAAS,EAAC,qCAAqC,EAC/C,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAChD,EACD,CAAC,CAAC,IAAI,IACF,EACP,gBAAM,SAAS,EAAC,6CAA6C,kBACzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IACf,KAVA,CAAC,CAAC,IAAI,CAWV,CACN,CAAC,GACC,IACD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CostDashboardPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostDashboardPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CostDashboardPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostDashboardPage.tsx"],"names":[],"mappings":"AAkIA,wBAAgB,iBAAiB,gCAoJhC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ArrowDown, ArrowUp, CalendarDays } from "lucide-react";
|
|
3
|
-
import { DataTable, Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, Badge, Button, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Popover, PopoverTrigger, PopoverContent, cn, } from "../../index.js";
|
|
3
|
+
import { DataTable, Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, Badge, Button, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Popover, PopoverTrigger, PopoverContent, PageLayout, PageHeader, cn, } from "../../index.js";
|
|
4
4
|
import { AppShell } from "../shared/AppShell.js";
|
|
5
5
|
import { costNav, costBackNav, costBreadcrumb } from "../shared/cost-nav.js";
|
|
6
6
|
import { definition, instances, totalLlmSpend, totalTokens, totalRuns, } from "./mock-data.js";
|
|
@@ -47,6 +47,10 @@ const instanceColumns = [
|
|
|
47
47
|
];
|
|
48
48
|
export function CostDashboardPage() {
|
|
49
49
|
// TODO: Replace with API call to GET /v1/definitions/{id}/versions/{v}/instances?range=...
|
|
50
|
-
return (_jsx(AppShell, { sidebarLabel: "Agent Cost Monitor navigation", items: costNav, backNav: costBackNav, breadcrumb: costBreadcrumb, children: _jsxs(
|
|
50
|
+
return (_jsx(AppShell, { sidebarLabel: "Agent Cost Monitor navigation", items: costNav, backNav: costBackNav, breadcrumb: costBreadcrumb, children: _jsxs(PageLayout, { tabIndex: -1, width: "constrained", children: [_jsx(PageHeader, { title: "Process definitions", actions: _jsxs("div", { className: "flex flex-col items-end gap-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs(Select, { defaultValue: definition.name, children: [_jsx(SelectTrigger, { "aria-label": "Process definition", className: "w-44", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "OrderFulfillment", children: "OrderFulfillment" }), _jsx(SelectItem, { value: "InvoiceApproval", children: "InvoiceApproval" }), _jsx(SelectItem, { value: "SupportTriage", children: "SupportTriage" })] })] }), _jsxs(Select, { defaultValue: String(definition.version), children: [_jsx(SelectTrigger, { "aria-label": "Process version", className: "w-24", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: definition.versions.map((v) => (_jsxs(SelectItem, { value: String(v), children: ["v", v] }, v))) })] }), _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "secondary", children: [_jsx(CalendarDays, {}), "Last 7 days"] }) }), _jsxs(PopoverContent, { align: "end", className: "w-48 gap-1 p-1.5", children: [_jsx(Button, { variant: "ghost", className: "w-full justify-start", children: "Last 24 hours" }), _jsx(Button, { variant: "ghost", className: "w-full justify-start", children: "Last 7 days" }), _jsx(Button, { variant: "ghost", className: "w-full justify-start", children: "Last 30 days" }), _jsx(Button, { variant: "ghost", className: "w-full justify-start", children: "Custom range" })] })] })] }), _jsx("p", { className: "text-right text-xs text-neutral-foreground-subtle", children: "Compared to Jun 1\u20137" })] }) }), _jsxs("div", { className: "mt-6 space-y-6", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4", children: [_jsx(Stat, { label: "LLM spend", value: `$${totalLlmSpend.toFixed(2)}`, trend: { value: "3%", direction: "up", sentiment: "neutral" } }), _jsx(Stat, { label: "Total tokens", value: totalTokens.toLocaleString(), trend: { value: "8%", direction: "up", sentiment: "neutral" } }), _jsx(Stat, { label: "Total runs", value: totalRuns.toLocaleString(), trend: { value: "5%", direction: "down", sentiment: "neutral" } }), _jsx(Stat, { label: "Avg cost per run", value: `$${(totalLlmSpend / totalRuns).toFixed(2)}`, trend: {
|
|
51
|
+
value: "12%",
|
|
52
|
+
direction: "up",
|
|
53
|
+
sentiment: "negative",
|
|
54
|
+
} })] }), _jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-3", children: [_jsxs(Card, { className: "lg:col-span-2", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Token usage trend" }) }), _jsx(CardContent, { children: _jsx(TrendChart, {}) })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Cost breakdown" }) }), _jsx(CardContent, { children: _jsx(CostBreakdownChart, {}) })] })] }), _jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: "Recent instances" }) }), _jsx(CardContent, { children: _jsx(DataTable, { columns: instanceColumns, data: instances, sorting: true, getRowId: (row) => row.key }) })] })] })] }) }));
|
|
51
55
|
}
|
|
52
56
|
//# sourceMappingURL=CostDashboardPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CostDashboardPage.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostDashboardPage.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CostDashboardPage.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/CostDashboardPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrendChart.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/TrendChart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TrendChart.d.ts","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/TrendChart.tsx"],"names":[],"mappings":"AA4BA,wBAAgB,UAAU,gCAsCzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { LineChart, Line, XAxis, YAxis, CartesianGrid
|
|
2
|
+
import { LineChart, Line, XAxis, YAxis, CartesianGrid } from "recharts";
|
|
3
|
+
import { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, } from "../../index.js";
|
|
3
4
|
import { agents, trend } from "./mock-data.js";
|
|
4
|
-
import { useChartColors } from "./useChartColors.js";
|
|
5
5
|
// Input vs output tokens per period, summed across the definition's agents.
|
|
6
6
|
// Coalesce missing series keys to 0 so a data shape change can't produce NaN.
|
|
7
7
|
const data = trend.map((point) => ({
|
|
@@ -9,13 +9,11 @@ const data = trend.map((point) => ({
|
|
|
9
9
|
input: agents.reduce((sum, a) => sum + (point[`${a.elementId}_in`] ?? 0), 0),
|
|
10
10
|
output: agents.reduce((sum, a) => sum + (point[`${a.elementId}_out`] ?? 0), 0),
|
|
11
11
|
}));
|
|
12
|
+
const chartConfig = {
|
|
13
|
+
input: { label: "Input tokens", color: "var(--chart-1)" },
|
|
14
|
+
output: { label: "Output tokens", color: "var(--chart-2)" },
|
|
15
|
+
};
|
|
12
16
|
export function TrendChart() {
|
|
13
|
-
|
|
14
|
-
return (_jsx("div", { ref: ref, className: "h-72 w-full", children: colors.length >= 2 && (_jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(LineChart, { data: data, margin: { top: 8, right: 16, bottom: 0, left: -8 }, children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border)" }), _jsx(XAxis, { dataKey: "idx", tick: { fontSize: 11 }, stroke: "var(--neutral-foreground-subtle)" }), _jsx(YAxis, { tick: { fontSize: 11 }, stroke: "var(--neutral-foreground-subtle)" }), _jsx(Tooltip, { contentStyle: {
|
|
15
|
-
background: "var(--popover)",
|
|
16
|
-
border: "1px solid var(--border)",
|
|
17
|
-
borderRadius: 8,
|
|
18
|
-
fontSize: 12,
|
|
19
|
-
} }), _jsx(Legend, { wrapperStyle: { fontSize: 11 } }), _jsx(Line, { type: "monotone", dataKey: "input", name: "Input tokens", stroke: colors[0], dot: false, strokeWidth: 2 }), _jsx(Line, { type: "monotone", dataKey: "output", name: "Output tokens", stroke: colors[1], dot: false, strokeWidth: 2 })] }) })) }));
|
|
17
|
+
return (_jsx(ChartContainer, { config: chartConfig, className: "h-72 w-full", children: _jsxs(LineChart, { data: data, margin: { top: 8, right: 16, bottom: 0, left: -8 }, children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border)" }), _jsx(XAxis, { dataKey: "idx", tick: { fontSize: 11 }, stroke: "var(--neutral-foreground-subtle)" }), _jsx(YAxis, { tick: { fontSize: 11 }, stroke: "var(--neutral-foreground-subtle)" }), _jsx(ChartTooltip, { content: _jsx(ChartTooltipContent, {}) }), _jsx(ChartLegend, { content: _jsx(ChartLegendContent, {}) }), _jsx(Line, { type: "monotone", dataKey: "input", stroke: "var(--color-input)", dot: false, strokeWidth: 2, isAnimationActive: false }), _jsx(Line, { type: "monotone", dataKey: "output", stroke: "var(--color-output)", dot: false, strokeWidth: 2, isAnimationActive: false })] }) }));
|
|
20
18
|
}
|
|
21
19
|
//# sourceMappingURL=TrendChart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrendChart.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/TrendChart.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TrendChart.js","sourceRoot":"","sources":["../../../../src/examples/cost-dashboard/TrendChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE5C,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,MAAM,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,EACpD,CAAC,CACF;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,WAAW,GAAgB;IAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACzD,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE;CAC5D,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,OAAO,CACL,KAAC,cAAc,IAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAC,aAAa,YAC1D,MAAC,SAAS,IACR,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,aAElD,KAAC,aAAa,IAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,eAAe,GAAG,EAC9D,KAAC,KAAK,IACJ,OAAO,EAAC,KAAK,EACb,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EACtB,MAAM,EAAC,kCAAkC,GACzC,EACF,KAAC,KAAK,IACJ,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EACtB,MAAM,EAAC,kCAAkC,GACzC,EACF,KAAC,YAAY,IAAC,OAAO,EAAE,KAAC,mBAAmB,KAAG,GAAI,EAClD,KAAC,WAAW,IAAC,OAAO,EAAE,KAAC,kBAAkB,KAAG,GAAI,EAChD,KAAC,IAAI,IACH,IAAI,EAAC,UAAU,EACf,OAAO,EAAC,OAAO,EACf,MAAM,EAAC,oBAAoB,EAC3B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,CAAC,EACd,iBAAiB,EAAE,KAAK,GACxB,EACF,KAAC,IAAI,IACH,IAAI,EAAC,UAAU,EACf,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAC,qBAAqB,EAC5B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,CAAC,EACd,iBAAiB,EAAE,KAAK,GACxB,IACQ,GACG,CAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/project-detail/ProjectDetailPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectDetailPage.d.ts","sourceRoot":"","sources":["../../../../src/examples/project-detail/ProjectDetailPage.tsx"],"names":[],"mappings":"AA6HA,wBAAgB,iBAAiB,gCAgUhC"}
|