@skyfall_ai/aegis 0.1.0 → 0.2.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/index.js CHANGED
@@ -24,13 +24,18 @@ __export(index_exports, {
24
24
  Accordion: () => Accordion,
25
25
  Alert: () => Alert,
26
26
  AppointmentCard: () => AppointmentCard,
27
+ AreaChart: () => AreaChart,
27
28
  Autocomplete: () => Autocomplete,
28
29
  Avatar: () => Avatar,
29
30
  Badge: () => Badge,
30
31
  Banner: () => Banner,
32
+ BarChart: () => BarChart,
31
33
  Breadcrumbs: () => Breadcrumbs,
32
34
  Button: () => Button,
33
35
  Card: () => Card,
36
+ ChartCard: () => ChartCard,
37
+ ChartLegend: () => ChartLegend,
38
+ ChartTooltip: () => ChartTooltip,
34
39
  Checkbox: () => Checkbox,
35
40
  CheckboxGroup: () => CheckboxGroup,
36
41
  ClinicalBanner: () => ClinicalBanner,
@@ -40,6 +45,7 @@ __export(index_exports, {
40
45
  DatePicker: () => DatePicker,
41
46
  DescriptionList: () => DescriptionList,
42
47
  Divider: () => Divider,
48
+ DonutChart: () => DonutChart,
43
49
  Drawer: () => Drawer,
44
50
  EmptyState: () => EmptyState,
45
51
  FileUpload: () => FileUpload,
@@ -48,8 +54,10 @@ __export(index_exports, {
48
54
  IconButton: () => IconButton,
49
55
  Input: () => Input,
50
56
  InsuranceCard: () => InsuranceCard,
57
+ KpiStatCard: () => KpiStatCard,
51
58
  LabResultRow: () => LabResultRow,
52
59
  Label: () => Label,
60
+ LineChart: () => LineChart,
53
61
  List: () => List,
54
62
  ListItem: () => ListItem,
55
63
  MedicationRow: () => MedicationRow,
@@ -68,7 +76,9 @@ __export(index_exports, {
68
76
  SideNav: () => SideNav,
69
77
  Skeleton: () => Skeleton,
70
78
  Slider: () => Slider,
79
+ Sparkline: () => Sparkline,
71
80
  Spinner: () => Spinner,
81
+ StackedBarChart: () => StackedBarChart,
72
82
  StatCard: () => StatCard,
73
83
  StatusBadge: () => StatusBadge,
74
84
  Stepper: () => Stepper,
@@ -85,7 +95,10 @@ __export(index_exports, {
85
95
  Toast: () => Toast,
86
96
  Tooltip: () => Tooltip,
87
97
  TopNav: () => TopNav,
98
+ TrendStatCard: () => TrendStatCard,
88
99
  accentTeal: () => accentTeal,
100
+ aegisChartTheme: () => aegisChartTheme,
101
+ aegisSeriesPalette: () => aegisSeriesPalette,
89
102
  border: () => border,
90
103
  borderStyle: () => borderStyle,
91
104
  borderWidth: () => borderWidth,
@@ -94,12 +107,14 @@ __export(index_exports, {
94
107
  container: () => container,
95
108
  controlSize: () => controlSize,
96
109
  dataVis: () => dataVis,
110
+ defaultValueFormatter: () => defaultValueFormatter,
97
111
  duration: () => duration,
98
112
  easing: () => easing,
99
113
  focusRing: () => focusRing,
100
114
  fontFamily: () => fontFamily,
101
115
  fontSize: () => fontSize,
102
116
  fontWeight: () => fontWeight,
117
+ getSeriesColor: () => getSeriesColor,
103
118
  grid: () => grid,
104
119
  iconSize: () => iconSize,
105
120
  lineHeight: () => lineHeight,
@@ -3696,18 +3711,797 @@ function Banner({
3696
3711
  }
3697
3712
  );
3698
3713
  }
3714
+
3715
+ // src/charts/ChartCard.module.css
3716
+ var ChartCard_default = {};
3717
+
3718
+ // src/charts/ChartCard.tsx
3719
+ var import_jsx_runtime59 = require("react/jsx-runtime");
3720
+ var defaultEmpty = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.placeholder, children: [
3721
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.placeholderTitle, children: "No data available" }),
3722
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.placeholderText, children: "There's nothing to display for the selected range." })
3723
+ ] });
3724
+ var defaultLoading = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.placeholder, children: [
3725
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.skeletonBars, "aria-hidden": "true", children: [
3726
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {}),
3727
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {}),
3728
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {}),
3729
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {}),
3730
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", {})
3731
+ ] }),
3732
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.placeholderText, children: "Loading chart\u2026" })
3733
+ ] });
3734
+ var defaultError = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.placeholder, role: "alert", children: [
3735
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.placeholderTitle, children: "Unable to load chart" }),
3736
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.placeholderText, children: "Something went wrong while loading this data. Try again in a moment." })
3737
+ ] });
3738
+ function ChartCard({
3739
+ title,
3740
+ subtitle,
3741
+ metric,
3742
+ trend,
3743
+ actions,
3744
+ footer,
3745
+ density = "comfortable",
3746
+ state = "ready",
3747
+ emptyState,
3748
+ loadingState,
3749
+ errorState,
3750
+ ariaLabel,
3751
+ className,
3752
+ children,
3753
+ ...props
3754
+ }) {
3755
+ const showHeader = title || subtitle || metric || trend || actions;
3756
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
3757
+ "section",
3758
+ {
3759
+ className: cn(ChartCard_default.card, ChartCard_default[density], className),
3760
+ "aria-label": ariaLabel,
3761
+ ...props,
3762
+ children: [
3763
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("header", { className: ChartCard_default.header, children: [
3764
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.headerText, children: [
3765
+ title && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("h3", { className: ChartCard_default.title, children: title }),
3766
+ subtitle && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("p", { className: ChartCard_default.subtitle, children: subtitle }),
3767
+ (metric || trend) && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.metricRow, children: [
3768
+ metric && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: ChartCard_default.metric, children: metric }),
3769
+ trend && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: ChartCard_default.trendSlot, children: trend })
3770
+ ] })
3771
+ ] }),
3772
+ actions && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: ChartCard_default.actions, children: actions })
3773
+ ] }),
3774
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: ChartCard_default.body, children: [
3775
+ state === "loading" && (loadingState ?? defaultLoading),
3776
+ state === "empty" && (emptyState ?? defaultEmpty),
3777
+ state === "error" && (errorState ?? defaultError),
3778
+ state === "ready" && children
3779
+ ] }),
3780
+ footer && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("footer", { className: ChartCard_default.footer, children: footer })
3781
+ ]
3782
+ }
3783
+ );
3784
+ }
3785
+
3786
+ // src/charts/chartTheme.ts
3787
+ var aegisSeriesPalette = [
3788
+ "var(--aegis-data-vis-1)",
3789
+ "var(--aegis-data-vis-2)",
3790
+ "var(--aegis-data-vis-3)",
3791
+ "var(--aegis-data-vis-4)",
3792
+ "var(--aegis-data-vis-5)"
3793
+ ];
3794
+ function getSeriesColor(index, override) {
3795
+ if (override) return override;
3796
+ return aegisSeriesPalette[index % aegisSeriesPalette.length];
3797
+ }
3798
+ var aegisChartTheme = {
3799
+ axis: {
3800
+ stroke: "var(--aegis-data-vis-axis)",
3801
+ fontSize: 12,
3802
+ fontFamily: "var(--aegis-font-family-sans)",
3803
+ tickColor: "var(--aegis-color-text-muted)"
3804
+ },
3805
+ grid: {
3806
+ stroke: "var(--aegis-data-vis-gridline)",
3807
+ strokeDasharray: "3 3"
3808
+ },
3809
+ tooltip: {
3810
+ background: "var(--aegis-color-surface-overlay)",
3811
+ border: "var(--aegis-color-border-default)",
3812
+ text: "var(--aegis-color-text-primary)",
3813
+ muted: "var(--aegis-color-text-secondary)"
3814
+ },
3815
+ reference: {
3816
+ stroke: "var(--aegis-color-text-muted)",
3817
+ strokeDasharray: "4 4"
3818
+ }
3819
+ };
3820
+ var defaultValueFormatter = (value) => {
3821
+ if (typeof value !== "number") return String(value);
3822
+ if (Math.abs(value) >= 1e6) return `${(value / 1e6).toFixed(1)}M`;
3823
+ if (Math.abs(value) >= 1e3) return `${(value / 1e3).toFixed(1)}k`;
3824
+ return value.toLocaleString();
3825
+ };
3826
+
3827
+ // src/charts/ChartTooltip.module.css
3828
+ var ChartTooltip_default = {};
3829
+
3830
+ // src/charts/ChartTooltip.tsx
3831
+ var import_jsx_runtime60 = require("react/jsx-runtime");
3832
+ function ChartTooltip({
3833
+ active,
3834
+ payload,
3835
+ label,
3836
+ valueFormatter = defaultValueFormatter,
3837
+ labelFormatter
3838
+ }) {
3839
+ if (!active || !payload || payload.length === 0) return null;
3840
+ const displayLabel = labelFormatter && label != null ? labelFormatter(String(label)) : label;
3841
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: ChartTooltip_default.tooltip, role: "tooltip", children: [
3842
+ displayLabel != null && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: ChartTooltip_default.label, children: displayLabel }),
3843
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("ul", { className: ChartTooltip_default.list, children: payload.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("li", { className: ChartTooltip_default.row, children: [
3844
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
3845
+ "span",
3846
+ {
3847
+ className: ChartTooltip_default.swatch,
3848
+ style: { backgroundColor: entry.color },
3849
+ "aria-hidden": "true"
3850
+ }
3851
+ ),
3852
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: ChartTooltip_default.name, children: entry.name }),
3853
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: ChartTooltip_default.value, children: entry.value != null ? valueFormatter(entry.value) : "\u2014" })
3854
+ ] }, `${entry.dataKey}-${index}`)) })
3855
+ ] });
3856
+ }
3857
+
3858
+ // src/charts/ChartLegend.module.css
3859
+ var ChartLegend_default = {};
3860
+
3861
+ // src/charts/ChartLegend.tsx
3862
+ var import_jsx_runtime61 = require("react/jsx-runtime");
3863
+ function ChartLegend({ payload }) {
3864
+ if (!payload || payload.length === 0) return null;
3865
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("ul", { className: ChartLegend_default.legend, children: payload.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("li", { className: ChartLegend_default.item, children: [
3866
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
3867
+ "span",
3868
+ {
3869
+ className: ChartLegend_default.swatch,
3870
+ style: { backgroundColor: entry.color },
3871
+ "aria-hidden": "true"
3872
+ }
3873
+ ),
3874
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: ChartLegend_default.label, children: entry.value })
3875
+ ] }, `${entry.value}-${index}`)) });
3876
+ }
3877
+
3878
+ // src/charts/LineChart.tsx
3879
+ var import_recharts = require("recharts");
3880
+ var import_jsx_runtime62 = require("react/jsx-runtime");
3881
+ function LineChart({
3882
+ data,
3883
+ xKey,
3884
+ series,
3885
+ height = 280,
3886
+ showLegend,
3887
+ showGrid = true,
3888
+ valueFormatter = defaultValueFormatter,
3889
+ referenceLines,
3890
+ smooth = true,
3891
+ state,
3892
+ ...cardProps
3893
+ }) {
3894
+ const effectiveState = state ?? (data.length === 0 ? "empty" : "ready");
3895
+ const showLegendFinal = showLegend ?? series.length > 1;
3896
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ChartCard, { state: effectiveState, ...cardProps, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_recharts.LineChart, { data, margin: { top: 8, right: 16, left: 0, bottom: 0 }, children: [
3897
+ showGrid && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3898
+ import_recharts.CartesianGrid,
3899
+ {
3900
+ vertical: false,
3901
+ stroke: aegisChartTheme.grid.stroke,
3902
+ strokeDasharray: aegisChartTheme.grid.strokeDasharray
3903
+ }
3904
+ ),
3905
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3906
+ import_recharts.XAxis,
3907
+ {
3908
+ dataKey: xKey,
3909
+ stroke: aegisChartTheme.axis.stroke,
3910
+ tick: { fill: aegisChartTheme.axis.tickColor, fontSize: aegisChartTheme.axis.fontSize },
3911
+ tickLine: false,
3912
+ axisLine: { stroke: aegisChartTheme.grid.stroke }
3913
+ }
3914
+ ),
3915
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3916
+ import_recharts.YAxis,
3917
+ {
3918
+ stroke: aegisChartTheme.axis.stroke,
3919
+ tick: { fill: aegisChartTheme.axis.tickColor, fontSize: aegisChartTheme.axis.fontSize },
3920
+ tickLine: false,
3921
+ axisLine: false,
3922
+ tickFormatter: (v) => valueFormatter(v),
3923
+ width: 48
3924
+ }
3925
+ ),
3926
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3927
+ import_recharts.Tooltip,
3928
+ {
3929
+ cursor: { stroke: aegisChartTheme.grid.stroke, strokeWidth: 1 },
3930
+ content: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ChartTooltip, { valueFormatter })
3931
+ }
3932
+ ),
3933
+ showLegendFinal && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_recharts.Legend, { content: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ChartLegend, {}) }),
3934
+ referenceLines?.map((ref, i) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3935
+ import_recharts.ReferenceLine,
3936
+ {
3937
+ y: ref.value,
3938
+ stroke: aegisChartTheme.reference.stroke,
3939
+ strokeDasharray: aegisChartTheme.reference.strokeDasharray,
3940
+ label: ref.label ? {
3941
+ value: ref.label,
3942
+ position: "insideTopRight",
3943
+ fill: aegisChartTheme.tooltip.muted,
3944
+ fontSize: 11
3945
+ } : void 0
3946
+ },
3947
+ `ref-${i}`
3948
+ )),
3949
+ series.map((s, index) => {
3950
+ const color = getSeriesColor(index, s.color);
3951
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
3952
+ import_recharts.Line,
3953
+ {
3954
+ type: smooth ? "monotone" : "linear",
3955
+ dataKey: s.dataKey,
3956
+ name: s.label ?? s.dataKey,
3957
+ stroke: color,
3958
+ strokeWidth: 2,
3959
+ dot: { r: 0, fill: color },
3960
+ activeDot: { r: 5, strokeWidth: 0 },
3961
+ isAnimationActive: false
3962
+ },
3963
+ s.dataKey
3964
+ );
3965
+ })
3966
+ ] }) }) });
3967
+ }
3968
+
3969
+ // src/charts/AreaChart.tsx
3970
+ var import_recharts2 = require("recharts");
3971
+ var import_jsx_runtime63 = require("react/jsx-runtime");
3972
+ function AreaChart({
3973
+ data,
3974
+ xKey,
3975
+ series,
3976
+ height = 280,
3977
+ showLegend,
3978
+ showGrid = true,
3979
+ stacked = false,
3980
+ valueFormatter = defaultValueFormatter,
3981
+ referenceLines,
3982
+ state,
3983
+ ...cardProps
3984
+ }) {
3985
+ const effectiveState = state ?? (data.length === 0 ? "empty" : "ready");
3986
+ const showLegendFinal = showLegend ?? series.length > 1;
3987
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ChartCard, { state: effectiveState, ...cardProps, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_recharts2.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_recharts2.AreaChart, { data, margin: { top: 8, right: 16, left: 0, bottom: 0 }, children: [
3988
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("defs", { children: series.map((s, index) => {
3989
+ const color = getSeriesColor(index, s.color);
3990
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
3991
+ "linearGradient",
3992
+ {
3993
+ id: `aegis-area-${s.dataKey}`,
3994
+ x1: "0",
3995
+ y1: "0",
3996
+ x2: "0",
3997
+ y2: "1",
3998
+ children: [
3999
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("stop", { offset: "0%", stopColor: color, stopOpacity: 0.32 }),
4000
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("stop", { offset: "100%", stopColor: color, stopOpacity: 0.02 })
4001
+ ]
4002
+ },
4003
+ `grad-${s.dataKey}`
4004
+ );
4005
+ }) }),
4006
+ showGrid && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4007
+ import_recharts2.CartesianGrid,
4008
+ {
4009
+ vertical: false,
4010
+ stroke: aegisChartTheme.grid.stroke,
4011
+ strokeDasharray: aegisChartTheme.grid.strokeDasharray
4012
+ }
4013
+ ),
4014
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4015
+ import_recharts2.XAxis,
4016
+ {
4017
+ dataKey: xKey,
4018
+ stroke: aegisChartTheme.axis.stroke,
4019
+ tick: { fill: aegisChartTheme.axis.tickColor, fontSize: aegisChartTheme.axis.fontSize },
4020
+ tickLine: false,
4021
+ axisLine: { stroke: aegisChartTheme.grid.stroke }
4022
+ }
4023
+ ),
4024
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4025
+ import_recharts2.YAxis,
4026
+ {
4027
+ stroke: aegisChartTheme.axis.stroke,
4028
+ tick: { fill: aegisChartTheme.axis.tickColor, fontSize: aegisChartTheme.axis.fontSize },
4029
+ tickLine: false,
4030
+ axisLine: false,
4031
+ tickFormatter: (v) => valueFormatter(v),
4032
+ width: 48
4033
+ }
4034
+ ),
4035
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4036
+ import_recharts2.Tooltip,
4037
+ {
4038
+ cursor: { stroke: aegisChartTheme.grid.stroke, strokeWidth: 1 },
4039
+ content: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ChartTooltip, { valueFormatter })
4040
+ }
4041
+ ),
4042
+ showLegendFinal && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_recharts2.Legend, { content: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ChartLegend, {}) }),
4043
+ referenceLines?.map((ref, i) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4044
+ import_recharts2.ReferenceLine,
4045
+ {
4046
+ y: ref.value,
4047
+ stroke: aegisChartTheme.reference.stroke,
4048
+ strokeDasharray: aegisChartTheme.reference.strokeDasharray,
4049
+ label: ref.label ? {
4050
+ value: ref.label,
4051
+ position: "insideTopRight",
4052
+ fill: aegisChartTheme.tooltip.muted,
4053
+ fontSize: 11
4054
+ } : void 0
4055
+ },
4056
+ `ref-${i}`
4057
+ )),
4058
+ series.map((s, index) => {
4059
+ const color = getSeriesColor(index, s.color);
4060
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
4061
+ import_recharts2.Area,
4062
+ {
4063
+ type: "monotone",
4064
+ dataKey: s.dataKey,
4065
+ name: s.label ?? s.dataKey,
4066
+ stroke: color,
4067
+ strokeWidth: 2,
4068
+ fill: `url(#aegis-area-${s.dataKey})`,
4069
+ stackId: stacked ? "aegis-stack" : void 0,
4070
+ isAnimationActive: false,
4071
+ activeDot: { r: 5, strokeWidth: 0 }
4072
+ },
4073
+ s.dataKey
4074
+ );
4075
+ })
4076
+ ] }) }) });
4077
+ }
4078
+
4079
+ // src/charts/BarChart.tsx
4080
+ var import_recharts3 = require("recharts");
4081
+ var import_jsx_runtime64 = require("react/jsx-runtime");
4082
+ function BarChart({
4083
+ data,
4084
+ xKey,
4085
+ series,
4086
+ height = 280,
4087
+ showLegend,
4088
+ showGrid = true,
4089
+ stacked = false,
4090
+ horizontal = false,
4091
+ valueFormatter = defaultValueFormatter,
4092
+ referenceLines,
4093
+ state,
4094
+ ...cardProps
4095
+ }) {
4096
+ const effectiveState = state ?? (data.length === 0 ? "empty" : "ready");
4097
+ const showLegendFinal = showLegend ?? series.length > 1;
4098
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ChartCard, { state: effectiveState, ...cardProps, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_recharts3.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
4099
+ import_recharts3.BarChart,
4100
+ {
4101
+ data,
4102
+ layout: horizontal ? "vertical" : "horizontal",
4103
+ margin: { top: 8, right: 16, left: 0, bottom: 0 },
4104
+ barCategoryGap: "22%",
4105
+ children: [
4106
+ showGrid && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4107
+ import_recharts3.CartesianGrid,
4108
+ {
4109
+ vertical: horizontal,
4110
+ horizontal: !horizontal,
4111
+ stroke: aegisChartTheme.grid.stroke,
4112
+ strokeDasharray: aegisChartTheme.grid.strokeDasharray
4113
+ }
4114
+ ),
4115
+ horizontal ? /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
4116
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4117
+ import_recharts3.XAxis,
4118
+ {
4119
+ type: "number",
4120
+ stroke: aegisChartTheme.axis.stroke,
4121
+ tick: {
4122
+ fill: aegisChartTheme.axis.tickColor,
4123
+ fontSize: aegisChartTheme.axis.fontSize
4124
+ },
4125
+ tickLine: false,
4126
+ axisLine: false,
4127
+ tickFormatter: (v) => valueFormatter(v)
4128
+ }
4129
+ ),
4130
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4131
+ import_recharts3.YAxis,
4132
+ {
4133
+ type: "category",
4134
+ dataKey: xKey,
4135
+ stroke: aegisChartTheme.axis.stroke,
4136
+ tick: {
4137
+ fill: aegisChartTheme.axis.tickColor,
4138
+ fontSize: aegisChartTheme.axis.fontSize
4139
+ },
4140
+ tickLine: false,
4141
+ axisLine: { stroke: aegisChartTheme.grid.stroke },
4142
+ width: 96
4143
+ }
4144
+ )
4145
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
4146
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4147
+ import_recharts3.XAxis,
4148
+ {
4149
+ dataKey: xKey,
4150
+ stroke: aegisChartTheme.axis.stroke,
4151
+ tick: {
4152
+ fill: aegisChartTheme.axis.tickColor,
4153
+ fontSize: aegisChartTheme.axis.fontSize
4154
+ },
4155
+ tickLine: false,
4156
+ axisLine: { stroke: aegisChartTheme.grid.stroke }
4157
+ }
4158
+ ),
4159
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4160
+ import_recharts3.YAxis,
4161
+ {
4162
+ stroke: aegisChartTheme.axis.stroke,
4163
+ tick: {
4164
+ fill: aegisChartTheme.axis.tickColor,
4165
+ fontSize: aegisChartTheme.axis.fontSize
4166
+ },
4167
+ tickLine: false,
4168
+ axisLine: false,
4169
+ tickFormatter: (v) => valueFormatter(v),
4170
+ width: 48
4171
+ }
4172
+ )
4173
+ ] }),
4174
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4175
+ import_recharts3.Tooltip,
4176
+ {
4177
+ cursor: { fill: "var(--aegis-state-hover-overlay)" },
4178
+ content: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ChartTooltip, { valueFormatter })
4179
+ }
4180
+ ),
4181
+ showLegendFinal && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_recharts3.Legend, { content: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ChartLegend, {}) }),
4182
+ referenceLines?.map((ref, i) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4183
+ import_recharts3.ReferenceLine,
4184
+ {
4185
+ ...horizontal ? { x: ref.value } : { y: ref.value },
4186
+ stroke: aegisChartTheme.reference.stroke,
4187
+ strokeDasharray: aegisChartTheme.reference.strokeDasharray,
4188
+ label: ref.label ? {
4189
+ value: ref.label,
4190
+ position: "insideTopRight",
4191
+ fill: aegisChartTheme.tooltip.muted,
4192
+ fontSize: 11
4193
+ } : void 0
4194
+ },
4195
+ `ref-${i}`
4196
+ )),
4197
+ series.map((s, index) => {
4198
+ const color = getSeriesColor(index, s.color);
4199
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
4200
+ import_recharts3.Bar,
4201
+ {
4202
+ dataKey: s.dataKey,
4203
+ name: s.label ?? s.dataKey,
4204
+ fill: color,
4205
+ radius: [4, 4, 0, 0],
4206
+ stackId: stacked ? "aegis-stack" : void 0,
4207
+ isAnimationActive: false
4208
+ },
4209
+ s.dataKey
4210
+ );
4211
+ })
4212
+ ]
4213
+ }
4214
+ ) }) });
4215
+ }
4216
+
4217
+ // src/charts/StackedBarChart.tsx
4218
+ var import_jsx_runtime65 = require("react/jsx-runtime");
4219
+ function StackedBarChart(props) {
4220
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(BarChart, { ...props, stacked: true });
4221
+ }
4222
+
4223
+ // src/charts/DonutChart.tsx
4224
+ var import_recharts4 = require("recharts");
4225
+
4226
+ // src/charts/DonutChart.module.css
4227
+ var DonutChart_default = {};
4228
+
4229
+ // src/charts/DonutChart.tsx
4230
+ var import_jsx_runtime66 = require("react/jsx-runtime");
4231
+ function DonutChart({
4232
+ data,
4233
+ centerLabel,
4234
+ centerSublabel,
4235
+ variant = "donut",
4236
+ height = 280,
4237
+ valueFormatter = defaultValueFormatter,
4238
+ showLegend = true,
4239
+ state,
4240
+ ...cardProps
4241
+ }) {
4242
+ const effectiveState = state ?? (data.length === 0 ? "empty" : "ready");
4243
+ const total = data.reduce((sum, d) => sum + d.value, 0);
4244
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ChartCard, { state: effectiveState, ...cardProps, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: DonutChart_default.layout, children: [
4245
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: DonutChart_default.chartWrap, style: { height }, children: [
4246
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_recharts4.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_recharts4.PieChart, { children: [
4247
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
4248
+ import_recharts4.Pie,
4249
+ {
4250
+ data,
4251
+ dataKey: "value",
4252
+ nameKey: "name",
4253
+ cx: "50%",
4254
+ cy: "50%",
4255
+ innerRadius: variant === "donut" ? "64%" : 0,
4256
+ outerRadius: "92%",
4257
+ paddingAngle: variant === "donut" ? 2 : 0,
4258
+ stroke: "var(--aegis-color-surface-default)",
4259
+ strokeWidth: 2,
4260
+ isAnimationActive: false,
4261
+ children: data.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_recharts4.Cell, { fill: getSeriesColor(index, entry.color) }, `cell-${index}`))
4262
+ }
4263
+ ),
4264
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_recharts4.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ChartTooltip, { valueFormatter }) })
4265
+ ] }) }),
4266
+ variant === "donut" && (centerLabel || centerSublabel) && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: DonutChart_default.center, "aria-hidden": "true", children: [
4267
+ centerLabel && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: DonutChart_default.centerLabel, children: centerLabel }),
4268
+ centerSublabel && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: DonutChart_default.centerSub, children: centerSublabel })
4269
+ ] })
4270
+ ] }),
4271
+ showLegend && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: DonutChart_default.legend, children: data.map((entry, index) => {
4272
+ const color = getSeriesColor(index, entry.color);
4273
+ const pct = total > 0 ? entry.value / total * 100 : 0;
4274
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("li", { className: DonutChart_default.legendItem, children: [
4275
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
4276
+ "span",
4277
+ {
4278
+ className: DonutChart_default.swatch,
4279
+ style: { backgroundColor: color },
4280
+ "aria-hidden": "true"
4281
+ }
4282
+ ),
4283
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: DonutChart_default.legendLabel, children: entry.name }),
4284
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: DonutChart_default.legendValue, children: [
4285
+ valueFormatter(entry.value),
4286
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: DonutChart_default.legendPct, children: [
4287
+ pct.toFixed(0),
4288
+ "%"
4289
+ ] })
4290
+ ] })
4291
+ ] }, `${entry.name}-${index}`);
4292
+ }) })
4293
+ ] }) });
4294
+ }
4295
+
4296
+ // src/charts/Sparkline.tsx
4297
+ var import_recharts5 = require("recharts");
4298
+ var import_jsx_runtime67 = require("react/jsx-runtime");
4299
+ function Sparkline({
4300
+ data,
4301
+ dataKey = "value",
4302
+ variant = "line",
4303
+ width = 120,
4304
+ height = 36,
4305
+ color,
4306
+ strokeWidth = 2,
4307
+ ariaLabel
4308
+ }) {
4309
+ const normalized = typeof data[0] === "number" ? data.map((v, i) => ({ x: i, [dataKey]: v })) : data;
4310
+ const stroke = getSeriesColor(0, color);
4311
+ const gradientId = `aegis-spark-${dataKey}-${Math.random().toString(36).slice(2, 8)}`;
4312
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4313
+ "div",
4314
+ {
4315
+ style: { width, height, display: "inline-block" },
4316
+ role: ariaLabel ? "img" : void 0,
4317
+ "aria-label": ariaLabel,
4318
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_recharts5.ResponsiveContainer, { width: "100%", height: "100%", children: variant === "area" ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_recharts5.AreaChart, { data: normalized, margin: { top: 2, right: 2, left: 2, bottom: 2 }, children: [
4319
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
4320
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("stop", { offset: "0%", stopColor: stroke, stopOpacity: 0.32 }),
4321
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("stop", { offset: "100%", stopColor: stroke, stopOpacity: 0 })
4322
+ ] }) }),
4323
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4324
+ import_recharts5.Area,
4325
+ {
4326
+ type: "monotone",
4327
+ dataKey,
4328
+ stroke,
4329
+ strokeWidth,
4330
+ fill: `url(#${gradientId})`,
4331
+ isAnimationActive: false,
4332
+ dot: false
4333
+ }
4334
+ )
4335
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_recharts5.LineChart, { data: normalized, margin: { top: 2, right: 2, left: 2, bottom: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
4336
+ import_recharts5.Line,
4337
+ {
4338
+ type: "monotone",
4339
+ dataKey,
4340
+ stroke,
4341
+ strokeWidth,
4342
+ dot: false,
4343
+ isAnimationActive: false
4344
+ }
4345
+ ) }) })
4346
+ }
4347
+ );
4348
+ }
4349
+
4350
+ // src/charts/KpiStatCard.module.css
4351
+ var KpiStatCard_default = {};
4352
+
4353
+ // src/charts/KpiStatCard.tsx
4354
+ var import_jsx_runtime68 = require("react/jsx-runtime");
4355
+ function inferTrend(change) {
4356
+ if (change == null || change === 0) return "neutral";
4357
+ return change > 0 ? "up" : "down";
4358
+ }
4359
+ var trendIcons2 = {
4360
+ up: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("path", { d: "M3 11l5-6 5 6H3z" }) }),
4361
+ down: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("path", { d: "M3 5l5 6 5-6H3z" }) }),
4362
+ neutral: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("path", { d: "M3 7h10v2H3z" }) })
4363
+ };
4364
+ function KpiStatCard({
4365
+ label,
4366
+ value,
4367
+ unit,
4368
+ change,
4369
+ changeLabel,
4370
+ trend,
4371
+ inverse = false,
4372
+ icon,
4373
+ sparklineData,
4374
+ sparklineColor,
4375
+ sparklineVariant = "area",
4376
+ density = "comfortable",
4377
+ className,
4378
+ ...props
4379
+ }) {
4380
+ const direction = trend ?? inferTrend(change);
4381
+ const semantic2 = inverse && direction === "up" ? "down" : inverse && direction === "down" ? "up" : direction;
4382
+ const formattedChange = change !== void 0 ? `${change > 0 ? "+" : ""}${change}%` : void 0;
4383
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn(KpiStatCard_default.card, KpiStatCard_default[density], className), ...props, children: [
4384
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: KpiStatCard_default.header, children: [
4385
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.label, children: label }),
4386
+ icon && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.icon, "aria-hidden": "true", children: icon })
4387
+ ] }),
4388
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: KpiStatCard_default.valueRow, children: [
4389
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.value, children: value }),
4390
+ unit && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.unit, children: unit })
4391
+ ] }),
4392
+ (formattedChange || sparklineData) && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: KpiStatCard_default.footer, children: [
4393
+ formattedChange && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: cn(KpiStatCard_default.trend, KpiStatCard_default[semantic2]), children: [
4394
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.trendIcon, children: trendIcons2[direction] }),
4395
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.trendValue, children: formattedChange }),
4396
+ changeLabel && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.changeLabel, children: changeLabel }),
4397
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: KpiStatCard_default.srOnly, children: direction === "up" ? "increase" : direction === "down" ? "decrease" : "no change" })
4398
+ ] }),
4399
+ sparklineData && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: KpiStatCard_default.sparkSlot, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
4400
+ Sparkline,
4401
+ {
4402
+ data: sparklineData,
4403
+ color: sparklineColor,
4404
+ variant: sparklineVariant,
4405
+ width: "100%",
4406
+ height: 40,
4407
+ ariaLabel: `${label} trend`
4408
+ }
4409
+ ) })
4410
+ ] })
4411
+ ] });
4412
+ }
4413
+
4414
+ // src/charts/TrendStatCard.tsx
4415
+ var import_recharts6 = require("recharts");
4416
+
4417
+ // src/charts/TrendStatCard.module.css
4418
+ var TrendStatCard_default = {};
4419
+
4420
+ // src/charts/TrendStatCard.tsx
4421
+ var import_jsx_runtime69 = require("react/jsx-runtime");
4422
+ function inferTrend2(change) {
4423
+ if (change == null || change === 0) return "neutral";
4424
+ return change > 0 ? "up" : "down";
4425
+ }
4426
+ var trendIcons3 = {
4427
+ up: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("path", { d: "M3 11l5-6 5 6H3z" }) }),
4428
+ down: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("path", { d: "M3 5l5 6 5-6H3z" }) }),
4429
+ neutral: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("path", { d: "M3 7h10v2H3z" }) })
4430
+ };
4431
+ function TrendStatCard({
4432
+ label,
4433
+ value,
4434
+ unit,
4435
+ data,
4436
+ xKey,
4437
+ yKey,
4438
+ change,
4439
+ changeLabel,
4440
+ inverse = false,
4441
+ color,
4442
+ valueFormatter = defaultValueFormatter,
4443
+ chartHeight = 80,
4444
+ className,
4445
+ ...props
4446
+ }) {
4447
+ const direction = inferTrend2(change);
4448
+ const semantic2 = inverse && direction === "up" ? "down" : inverse && direction === "down" ? "up" : direction;
4449
+ const stroke = getSeriesColor(0, color);
4450
+ const formattedChange = change !== void 0 ? `${change > 0 ? "+" : ""}${change}%` : void 0;
4451
+ const gradientId = `trend-stat-${String(yKey)}-${Math.random().toString(36).slice(2, 8)}`;
4452
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: cn(TrendStatCard_default.card, className), ...props, children: [
4453
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: TrendStatCard_default.header, children: [
4454
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: TrendStatCard_default.label, children: label }),
4455
+ formattedChange && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("span", { className: cn(TrendStatCard_default.chip, TrendStatCard_default[semantic2]), children: [
4456
+ trendIcons3[direction],
4457
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: formattedChange })
4458
+ ] })
4459
+ ] }),
4460
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: TrendStatCard_default.valueRow, children: [
4461
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: TrendStatCard_default.value, children: value }),
4462
+ unit && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: TrendStatCard_default.unit, children: unit })
4463
+ ] }),
4464
+ changeLabel && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: TrendStatCard_default.changeLabel, children: changeLabel }),
4465
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: TrendStatCard_default.chartWrap, style: { height: chartHeight }, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_recharts6.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_recharts6.AreaChart, { data, margin: { top: 4, right: 0, left: 0, bottom: 0 }, children: [
4466
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("linearGradient", { id: gradientId, x1: "0", y1: "0", x2: "0", y2: "1", children: [
4467
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { offset: "0%", stopColor: stroke, stopOpacity: 0.32 }),
4468
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { offset: "100%", stopColor: stroke, stopOpacity: 0 })
4469
+ ] }) }),
4470
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_recharts6.XAxis, { dataKey: xKey, hide: true }),
4471
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_recharts6.YAxis, { hide: true }),
4472
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_recharts6.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ChartTooltip, { valueFormatter }) }),
4473
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
4474
+ import_recharts6.Area,
4475
+ {
4476
+ type: "monotone",
4477
+ dataKey: yKey,
4478
+ stroke,
4479
+ strokeWidth: 2,
4480
+ fill: `url(#${gradientId})`,
4481
+ isAnimationActive: false,
4482
+ dot: false
4483
+ }
4484
+ )
4485
+ ] }) }) })
4486
+ ] });
4487
+ }
3699
4488
  // Annotate the CommonJS export names for ESM import in node:
3700
4489
  0 && (module.exports = {
3701
4490
  Accordion,
3702
4491
  Alert,
3703
4492
  AppointmentCard,
4493
+ AreaChart,
3704
4494
  Autocomplete,
3705
4495
  Avatar,
3706
4496
  Badge,
3707
4497
  Banner,
4498
+ BarChart,
3708
4499
  Breadcrumbs,
3709
4500
  Button,
3710
4501
  Card,
4502
+ ChartCard,
4503
+ ChartLegend,
4504
+ ChartTooltip,
3711
4505
  Checkbox,
3712
4506
  CheckboxGroup,
3713
4507
  ClinicalBanner,
@@ -3717,6 +4511,7 @@ function Banner({
3717
4511
  DatePicker,
3718
4512
  DescriptionList,
3719
4513
  Divider,
4514
+ DonutChart,
3720
4515
  Drawer,
3721
4516
  EmptyState,
3722
4517
  FileUpload,
@@ -3725,8 +4520,10 @@ function Banner({
3725
4520
  IconButton,
3726
4521
  Input,
3727
4522
  InsuranceCard,
4523
+ KpiStatCard,
3728
4524
  LabResultRow,
3729
4525
  Label,
4526
+ LineChart,
3730
4527
  List,
3731
4528
  ListItem,
3732
4529
  MedicationRow,
@@ -3745,7 +4542,9 @@ function Banner({
3745
4542
  SideNav,
3746
4543
  Skeleton,
3747
4544
  Slider,
4545
+ Sparkline,
3748
4546
  Spinner,
4547
+ StackedBarChart,
3749
4548
  StatCard,
3750
4549
  StatusBadge,
3751
4550
  Stepper,
@@ -3762,7 +4561,10 @@ function Banner({
3762
4561
  Toast,
3763
4562
  Tooltip,
3764
4563
  TopNav,
4564
+ TrendStatCard,
3765
4565
  accentTeal,
4566
+ aegisChartTheme,
4567
+ aegisSeriesPalette,
3766
4568
  border,
3767
4569
  borderStyle,
3768
4570
  borderWidth,
@@ -3771,12 +4573,14 @@ function Banner({
3771
4573
  container,
3772
4574
  controlSize,
3773
4575
  dataVis,
4576
+ defaultValueFormatter,
3774
4577
  duration,
3775
4578
  easing,
3776
4579
  focusRing,
3777
4580
  fontFamily,
3778
4581
  fontSize,
3779
4582
  fontWeight,
4583
+ getSeriesColor,
3780
4584
  grid,
3781
4585
  iconSize,
3782
4586
  lineHeight,