@zentauri-ui/zentauri-components 1.5.21 → 1.5.31

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.
Files changed (98) hide show
  1. package/README.md +59 -2
  2. package/cli/registry.json +2 -0
  3. package/dist/charts/area.js +1 -1
  4. package/dist/charts/area.js.map +1 -1
  5. package/dist/charts/area.mjs +1 -1
  6. package/dist/charts/area.mjs.map +1 -1
  7. package/dist/charts/bar/Bar.d.ts.map +1 -1
  8. package/dist/charts/bar.js +2 -1
  9. package/dist/charts/bar.js.map +1 -1
  10. package/dist/charts/bar.mjs +2 -1
  11. package/dist/charts/bar.mjs.map +1 -1
  12. package/dist/charts/pie/Pie.d.ts +1 -1
  13. package/dist/charts/pie/Pie.d.ts.map +1 -1
  14. package/dist/charts/pie.js +10 -7
  15. package/dist/charts/pie.js.map +1 -1
  16. package/dist/charts/pie.mjs +10 -7
  17. package/dist/charts/pie.mjs.map +1 -1
  18. package/dist/charts/shared/types.d.ts +10 -6
  19. package/dist/charts/shared/types.d.ts.map +1 -1
  20. package/dist/chunk-7OHC4ERB.mjs +60 -0
  21. package/dist/chunk-7OHC4ERB.mjs.map +1 -0
  22. package/dist/{chunk-2VQJ6OIL.js → chunk-HPN7H5ZM.js} +2 -2
  23. package/dist/{chunk-2VQJ6OIL.js.map → chunk-HPN7H5ZM.js.map} +1 -1
  24. package/dist/chunk-JJDANNNL.mjs +71 -0
  25. package/dist/chunk-JJDANNNL.mjs.map +1 -0
  26. package/dist/chunk-KXUG4WVW.js +62 -0
  27. package/dist/chunk-KXUG4WVW.js.map +1 -0
  28. package/dist/chunk-MEJMX4QI.js +73 -0
  29. package/dist/chunk-MEJMX4QI.js.map +1 -0
  30. package/dist/chunk-N6B35KWW.mjs +3 -0
  31. package/dist/chunk-N6B35KWW.mjs.map +1 -0
  32. package/dist/{chunk-73VCO5TE.mjs → chunk-NWOE2TZN.mjs} +2 -2
  33. package/dist/{chunk-73VCO5TE.mjs.map → chunk-NWOE2TZN.mjs.map} +1 -1
  34. package/dist/chunk-RGOMHX4G.js +4 -0
  35. package/dist/chunk-RGOMHX4G.js.map +1 -0
  36. package/dist/hooks/useControllableState.js +3 -2
  37. package/dist/hooks/useControllableState.mjs +2 -1
  38. package/dist/hooks/useDisclosure.js +3 -2
  39. package/dist/hooks/useDisclosure.js.map +1 -1
  40. package/dist/hooks/useDisclosure.mjs +2 -1
  41. package/dist/hooks/useDisclosure.mjs.map +1 -1
  42. package/dist/hooks/useDynamicStepper/index.d.ts +2 -0
  43. package/dist/hooks/useDynamicStepper/index.d.ts.map +1 -0
  44. package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts +9 -0
  45. package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts.map +1 -0
  46. package/dist/hooks/useDynamicStepper.js +14 -0
  47. package/dist/hooks/useDynamicStepper.js.map +1 -0
  48. package/dist/hooks/useDynamicStepper.mjs +5 -0
  49. package/dist/hooks/useDynamicStepper.mjs.map +1 -0
  50. package/dist/ui/buttons.js +7 -55
  51. package/dist/ui/buttons.js.map +1 -1
  52. package/dist/ui/buttons.mjs +2 -58
  53. package/dist/ui/buttons.mjs.map +1 -1
  54. package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts +6 -0
  55. package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts.map +1 -0
  56. package/dist/ui/dynamic-stepper/index.d.ts +5 -0
  57. package/dist/ui/dynamic-stepper/index.d.ts.map +1 -0
  58. package/dist/ui/dynamic-stepper/types.d.ts +61 -0
  59. package/dist/ui/dynamic-stepper/types.d.ts.map +1 -0
  60. package/dist/ui/dynamic-stepper/variants.d.ts +21 -0
  61. package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -0
  62. package/dist/ui/dynamic-stepper.js +312 -0
  63. package/dist/ui/dynamic-stepper.js.map +1 -0
  64. package/dist/ui/dynamic-stepper.mjs +305 -0
  65. package/dist/ui/dynamic-stepper.mjs.map +1 -0
  66. package/dist/ui/pagination/pagination.d.ts +5 -16
  67. package/dist/ui/pagination/pagination.d.ts.map +1 -1
  68. package/dist/ui/pagination/types.d.ts +2 -2
  69. package/dist/ui/pagination/types.d.ts.map +1 -1
  70. package/dist/ui/pagination.js +171 -180
  71. package/dist/ui/pagination.js.map +1 -1
  72. package/dist/ui/pagination.mjs +172 -181
  73. package/dist/ui/pagination.mjs.map +1 -1
  74. package/dist/ui/typography/blockquote-base.d.ts.map +1 -1
  75. package/dist/ui/typography/code-block-base.d.ts.map +1 -1
  76. package/dist/ui/typography/heading-base.d.ts.map +1 -1
  77. package/dist/ui/typography/inline-code-base.d.ts.map +1 -1
  78. package/dist/ui/typography.js.map +1 -1
  79. package/dist/ui/typography.mjs.map +1 -1
  80. package/package.json +1 -1
  81. package/src/charts/area/Area.tsx +1 -1
  82. package/src/charts/bar/Bar.tsx +1 -0
  83. package/src/charts/pie/Pie.tsx +9 -7
  84. package/src/charts/shared/types.ts +10 -6
  85. package/src/hooks/useDynamicStepper/index.ts +3 -0
  86. package/src/hooks/useDynamicStepper/useDynamicStepper.test.ts +107 -0
  87. package/src/hooks/useDynamicStepper/useDynamicStepper.ts +91 -0
  88. package/src/ui/dynamic-stepper/dynamic-stepper.test.tsx +109 -0
  89. package/src/ui/dynamic-stepper/dynamic-stepper.tsx +173 -0
  90. package/src/ui/dynamic-stepper/index.ts +24 -0
  91. package/src/ui/dynamic-stepper/types.ts +85 -0
  92. package/src/ui/dynamic-stepper/variants.ts +238 -0
  93. package/src/ui/pagination/pagination.tsx +186 -197
  94. package/src/ui/pagination/types.ts +2 -2
  95. package/src/ui/typography/blockquote-base.tsx +0 -2
  96. package/src/ui/typography/code-block-base.tsx +0 -2
  97. package/src/ui/typography/heading-base.tsx +0 -2
  98. package/src/ui/typography/inline-code-base.tsx +0 -2
package/README.md CHANGED
@@ -54,6 +54,7 @@ Import static primitives from `@zentauri-ui/zentauri-components/ui/<subpath>` wh
54
54
  | Divider | `divider` | `divider/animated` |
55
55
  | Drawer | `drawer` | `drawer/animated` |
56
56
  | Dropdown | `dropdown` | — |
57
+ | Dynamic stepper | `dynamic-stepper` | — |
57
58
  | Empty state | `empty-state` | `empty-state/animated` |
58
59
  | File upload | `file-upload` | — |
59
60
  | Input | `inputs` | `inputs/animated` |
@@ -175,6 +176,60 @@ export function RevenueChart() {
175
176
  }
176
177
  ```
177
178
 
179
+ ## Dynamic Stepper
180
+
181
+ Import the UI from **`@zentauri-ui/zentauri-components/ui/dynamic-stepper`**. This entry is **static only** (no `/animated` subpath). It is separate from the compositional **Stepper** primitives under `ui/stepper` (for example `Stepper`, `StepperItem`, `StepperIndicator`).
182
+
183
+ **Component:** `DynamicStepper` — data-driven steps with Previous / Next controls backed by the **Button** component (`buttonAppearance`, `buttonSize`).
184
+
185
+ **Hook:** `useDynamicStepper` — `@zentauri-ui/zentauri-components/hooks/useDynamicStepper`. Holds a clamped 0-based active step, `goPrevious` / `goNext`, `canGoPrevious` / `canGoNext`, and controlled/uncontrolled wiring (`activeStep`, `defaultActiveStep`, `onActiveStepChange`, `onPrevious`, `onNext`). `DynamicStepper` uses this hook internally.
186
+
187
+ **Types (UI barrel):** `DynamicStepperProps`, `DynamicStepperStep`, `DynamicStepperOrientation`, `DynamicStepperButtonAppearance`, `DynamicStepperButtonSize`, `DynamicStepperIndicatorSize`, `DynamicStepperIndicatorToneAppearance`, `UseDynamicStepperParams`, `UseDynamicStepperResult`.
188
+
189
+ **Step items (`steps`):** optional `id`, `title`, `description`, `indicator` (defaults to a 1-based index).
190
+
191
+ **Indicator tones:** `indicatorCompleteAppearance`, `indicatorCurrentAppearance`, `indicatorUpcomingAppearance` — same keys as **Button** `appearance` except **`gradient-*`** values (defaults: `emerald`, `violet`, `outline`).
192
+
193
+ **Layout:** `orientation` (`horizontal` | `vertical`), `indicatorSize` (`sm` | `md` | `lg`).
194
+
195
+ **Stable targeting:** DOM **`id`** suffixes `-previous`, `-next`, `-mapper` (prefixed by React `useId`) and **`data-slot`** keys including `dynamic-stepper-previous`, `dynamic-stepper-next`, `dynamic-stepper-mapper`.
196
+
197
+ **CVA helpers:** `dynamicStepperRootVariants`, `dynamicStepperMapperVariants`, `dynamicStepperItemVariants`, `dynamicStepperIndicatorVariants`, `dynamicStepperIndicatorToneClass`.
198
+
199
+ ```tsx
200
+ import {
201
+ DynamicStepper,
202
+ type DynamicStepperStep,
203
+ } from "@zentauri-ui/zentauri-components/ui/dynamic-stepper";
204
+ import { useDynamicStepper } from "@zentauri-ui/zentauri-components/hooks/useDynamicStepper";
205
+
206
+ const steps: DynamicStepperStep[] = [
207
+ { id: "cart", title: "Cart", description: "Review items" },
208
+ { id: "pay", title: "Payment", description: "Enter details" },
209
+ ];
210
+
211
+ export function CheckoutFlow() {
212
+ return (
213
+ <DynamicStepper
214
+ steps={steps}
215
+ defaultActiveStep={0}
216
+ buttonAppearance="outline"
217
+ indicatorCompleteAppearance="sky"
218
+ indicatorCurrentAppearance="rose"
219
+ indicatorUpcomingAppearance="outline"
220
+ />
221
+ );
222
+ }
223
+
224
+ /** Headless-only example */
225
+ export function useWizardSteps(stepCount: number) {
226
+ return useDynamicStepper({
227
+ stepCount,
228
+ defaultActiveStep: 0,
229
+ });
230
+ }
231
+ ```
232
+
178
233
  ## React hooks
179
234
 
180
235
  Hooks live in `src/hooks/`. Each hook is a separate published entry under `@zentauri-ui/zentauri-components/hooks/<name>` (same pattern as UI areas). Types are exported where the implementation defines them (for example `UseDisclosureResult`, `PaginationPageItem`). For class-name merging and pagination helpers used alongside hooks, import from `@zentauri-ui/zentauri-components/hooks/utils`.
@@ -188,6 +243,7 @@ Hooks live in `src/hooks/`. Each hook is a separate published entry under `@zent
188
243
  | `useDebouncedValue` | `useDebouncedValue` | Debounced state from a value |
189
244
  | `useDisclosure` | `useDisclosure` | `UseDisclosureParams`, `UseDisclosureResult` |
190
245
  | `useDocumentTitle` | `useDocumentTitle` | `UseDocumentTitleParams` |
246
+ | `useDynamicStepper` | `useDynamicStepper` | `UseDynamicStepperParams`, `UseDynamicStepperResult` (types also on `ui/dynamic-stepper`) |
191
247
  | `useFocusManagement` | `useFocusManagement` | Focus trap / focus moves for overlays |
192
248
  | `useHover` | `useHover` | Pointer hover state |
193
249
  | `useInView` | `useInView` | `UseInViewParams` |
@@ -212,6 +268,7 @@ Hooks live in `src/hooks/`. Each hook is a separate published entry under `@zent
212
268
 
213
269
  ```tsx
214
270
  import { useDisclosure } from "@zentauri-ui/zentauri-components/hooks/useDisclosure";
271
+ import { useDynamicStepper } from "@zentauri-ui/zentauri-components/hooks/useDynamicStepper";
215
272
  import { useMediaQuery } from "@zentauri-ui/zentauri-components/hooks/useMediaQuery";
216
273
  import {
217
274
  buildPaginationItems,
@@ -220,7 +277,7 @@ import {
220
277
  import { cn } from "@zentauri-ui/zentauri-components/hooks/utils";
221
278
  ```
222
279
 
223
- Some UI packages re-export the hook that belongs to that component (for example `usePagination` from `@zentauri-ui/zentauri-components/ui/pagination`). Prefer `hooks/<name>` when you only need the hook without the UI primitives.
280
+ Some UI packages re-export the hook that belongs to that component (for example `usePagination` from `@zentauri-ui/zentauri-components/ui/pagination`). **`dynamic-stepper`** exports hook-related **types** only; import **`useDynamicStepper`** from `hooks/useDynamicStepper`. Prefer `hooks/<name>` when you only need the hook without the UI primitives.
224
281
 
225
282
  ## Installation
226
283
 
@@ -422,7 +479,7 @@ node node_modules/@zentauri-ui/zentauri-components/cli/index.mjs add hook useWin
422
479
  | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
423
480
  | `init` | Writes **`components.json`** in the current working directory (or `--cwd`) with default `aliases` and `resolvedPaths`. Refuses to overwrite an existing file. |
424
481
  | `add <names...>` | Walks up from `--cwd` (default `.`) to find `components.json`, then copies each resolved **UI** folder under `src/ui` or chart entry under `src/charts/<type>`, pulls in hooks those files depend on (including transitive hook imports), and creates **`lib/utils`** at `resolvedPaths.utils` from the package template if it is missing. |
425
- | `add hook <names...>` | Same config lookup; copies only **hook** folders listed under `registry.hooks` (from `hooksEntryNames` in `tsup.config.ts`), including transitive sibling-hook imports. Does not copy UI unless a hook’s imports require you to add a component separately (for example `usePagination` imports types from `ui/pagination`). |
482
+ | `add hook <names...>` | Same config lookup; copies only **hook** folders listed under `registry.hooks` (from `hooksEntryNames` in `tsup.config.ts`), including transitive sibling-hook imports. Does not copy UI unless a hook’s imports require you to add a component separately (for example `usePagination` imports types from `ui/pagination`; `useDynamicStepper` imports types from `ui/dynamic-stepper`). |
426
483
 
427
484
  Global flags: `-h` / `--help`, `-v` / `--version`, `--cwd <dir>` (relative to `process.cwd()`).
428
485
 
package/cli/registry.json CHANGED
@@ -17,6 +17,7 @@
17
17
  "divider",
18
18
  "drawer",
19
19
  "dropdown",
20
+ "dynamic-stepper",
20
21
  "empty-state",
21
22
  "file-upload",
22
23
  "inputs",
@@ -44,6 +45,7 @@
44
45
  "useDebouncedValue",
45
46
  "useDisclosure",
46
47
  "useDocumentTitle",
48
+ "useDynamicStepper",
47
49
  "useFocusManagement",
48
50
  "useHover",
49
51
  "useInView",
@@ -89,7 +89,7 @@ function AreaChart({
89
89
  name: item.name,
90
90
  stackId: stacked ? item.stackId ?? "stack" : item.stackId,
91
91
  stroke: color.stroke,
92
- fill,
92
+ fill: fill ?? color.fill,
93
93
  fillOpacity: 1,
94
94
  strokeWidth: 2
95
95
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/area/Area.tsx"],"names":["defaultChartMargin","jsx","ChartFrame","jsxs","RechartsAreaChart","ChartDecorators","Fragment","XAxis","YAxis","resolveColor","getSeriesFill","Area"],"mappings":"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","file":"area.js","sourcesContent":["\"use client\";\n\nimport { Area, AreaChart as RechartsAreaChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { getSeriesFill, resolveColor } from \"../shared/colors\";\nimport type { AreaChartProps } from \"../shared/types\";\n\nexport function AreaChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: AreaChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsAreaChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n const fill = getSeriesFill(item, index)\n return (\n <Area\n key={item.dataKey}\n type=\"monotone\"\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n stroke={color.stroke}\n fill={fill}\n fillOpacity={1}\n strokeWidth={2}\n />\n );\n })}\n </RechartsAreaChart>\n </ChartFrame>\n );\n}\n\nAreaChart.displayName = \"AreaChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/area/Area.tsx"],"names":["defaultChartMargin","jsx","ChartFrame","jsxs","RechartsAreaChart","ChartDecorators","Fragment","XAxis","YAxis","resolveColor","getSeriesFill","Area"],"mappings":"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","file":"area.js","sourcesContent":["\"use client\";\n\nimport { Area, AreaChart as RechartsAreaChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { getSeriesFill, resolveColor } from \"../shared/colors\";\nimport type { AreaChartProps } from \"../shared/types\";\n\nexport function AreaChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: AreaChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsAreaChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n const fill = getSeriesFill(item, index)\n return (\n <Area\n key={item.dataKey}\n type=\"monotone\"\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n stroke={color.stroke}\n fill={fill ?? color.fill}\n fillOpacity={1}\n strokeWidth={2}\n />\n );\n })}\n </RechartsAreaChart>\n </ChartFrame>\n );\n}\n\nAreaChart.displayName = \"AreaChart\";\n"]}
@@ -88,7 +88,7 @@ function AreaChart({
88
88
  name: item.name,
89
89
  stackId: stacked ? item.stackId ?? "stack" : item.stackId,
90
90
  stroke: color.stroke,
91
- fill,
91
+ fill: fill ?? color.fill,
92
92
  fillOpacity: 1,
93
93
  strokeWidth: 2
94
94
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/area/Area.tsx"],"names":["RechartsAreaChart"],"mappings":"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","file":"area.mjs","sourcesContent":["\"use client\";\n\nimport { Area, AreaChart as RechartsAreaChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { getSeriesFill, resolveColor } from \"../shared/colors\";\nimport type { AreaChartProps } from \"../shared/types\";\n\nexport function AreaChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: AreaChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsAreaChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n const fill = getSeriesFill(item, index)\n return (\n <Area\n key={item.dataKey}\n type=\"monotone\"\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n stroke={color.stroke}\n fill={fill}\n fillOpacity={1}\n strokeWidth={2}\n />\n );\n })}\n </RechartsAreaChart>\n </ChartFrame>\n );\n}\n\nAreaChart.displayName = \"AreaChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/area/Area.tsx"],"names":["RechartsAreaChart"],"mappings":"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","file":"area.mjs","sourcesContent":["\"use client\";\n\nimport { Area, AreaChart as RechartsAreaChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { getSeriesFill, resolveColor } from \"../shared/colors\";\nimport type { AreaChartProps } from \"../shared/types\";\n\nexport function AreaChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: AreaChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsAreaChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n fill=\"#ffffff\"\n color=\"#ffffff\"\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n const fill = getSeriesFill(item, index)\n return (\n <Area\n key={item.dataKey}\n type=\"monotone\"\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n stroke={color.stroke}\n fill={fill ?? color.fill}\n fillOpacity={1}\n strokeWidth={2}\n />\n );\n })}\n </RechartsAreaChart>\n </ChartFrame>\n );\n}\n\nAreaChart.displayName = \"AreaChart\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/Bar.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,EACA,UAAU,EACV,SAAS,EACT,cAAc,EACd,IAAI,EACJ,OAAO,EACP,UAAiB,EACjB,MAAY,EACZ,MAA2B,EAC3B,MAAM,EACN,QAAe,EACf,UAAkB,EAClB,WAAkB,EAClB,YAAwB,EACxB,OAAe,EACf,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,MAAM,CAAC,2CA0DvB;yBA/Ee,QAAQ"}
1
+ {"version":3,"file":"Bar.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/Bar.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,EACA,UAAU,EACV,SAAS,EACT,cAAc,EACd,IAAI,EACJ,OAAO,EACP,UAAiB,EACjB,MAAY,EACZ,MAA2B,EAC3B,MAAM,EACN,QAAe,EACf,UAAkB,EAClB,WAAkB,EAClB,YAAwB,EACxB,OAAe,EACf,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,MAAM,CAAC,2CA2DvB;yBAhFe,QAAQ"}
@@ -83,7 +83,8 @@ function BarChart({
83
83
  name: item.name,
84
84
  stackId: stacked ? item.stackId ?? "stack" : item.stackId,
85
85
  fill: item.fill ?? color.stroke,
86
- radius: [6, 6, 0, 0]
86
+ radius: [6, 6, 0, 0],
87
+ stroke: item.stroke ?? color.stroke
87
88
  },
88
89
  item.dataKey
89
90
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/bar/Bar.tsx"],"names":["defaultChartMargin","jsx","ChartFrame","jsxs","RechartsBarChart","ChartDecorators","Fragment","XAxis","YAxis","resolveColor","Bar"],"mappings":";;;;;;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAASA,mCAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACEC,cAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAC,eAAA,CAACC,iBAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAAH,cAAA;AAAA,UAACI,gCAAA;AAAA,UAAA;AAAA,YACC,sBACEF,eAAA,CAAAG,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAL,cAAA;AAAA,gBAACM,cAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAN,cAAA;AAAA,gBAACO,cAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQC,6BAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACER,cAAA;AAAA,YAACS,YAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC;AAAA,aAAA;AAAA,YALd,IAAA,CAAK;AAAA,WAMZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"bar.js","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/bar/Bar.tsx"],"names":["defaultChartMargin","jsx","ChartFrame","jsxs","RechartsBarChart","ChartDecorators","Fragment","XAxis","YAxis","resolveColor","Bar"],"mappings":";;;;;;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAASA,mCAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACEC,cAAA;AAAA,IAACC,2BAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAC,eAAA,CAACC,iBAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAAH,cAAA;AAAA,UAACI,gCAAA;AAAA,UAAA;AAAA,YACC,sBACEF,eAAA,CAAAG,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAL,cAAA;AAAA,gBAACM,cAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACAN,cAAA;AAAA,gBAACO,cAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQC,6BAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACER,cAAA;AAAA,YAACS,YAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,cACnB,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM;AAAA,aAAA;AAAA,YANxB,IAAA,CAAK;AAAA,WAOZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"bar.js","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n stroke={item.stroke ?? color.stroke}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
@@ -82,7 +82,8 @@ function BarChart({
82
82
  name: item.name,
83
83
  stackId: stacked ? item.stackId ?? "stack" : item.stackId,
84
84
  fill: item.fill ?? color.stroke,
85
- radius: [6, 6, 0, 0]
85
+ radius: [6, 6, 0, 0],
86
+ stroke: item.stroke ?? color.stroke
86
87
  },
87
88
  item.dataKey
88
89
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/bar/Bar.tsx"],"names":["RechartsBarChart"],"mappings":";;;;;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAAS,kBAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAACA,UAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,sBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACE,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC;AAAA,aAAA;AAAA,YALd,IAAA,CAAK;AAAA,WAMZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"bar.mjs","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/bar/Bar.tsx"],"names":["RechartsBarChart"],"mappings":";;;;;;;AAYO,SAAS,QAAA,CAEd;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb,MAAA,GAAS,GAAA;AAAA,EACT,MAAA,GAAS,kBAAA;AAAA,EACT,MAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,WAAA,GAAc,IAAA;AAAA,EACd,YAAA,GAAe,SAAA;AAAA,EACf,OAAA,GAAU,KAAA;AAAA,EACV,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,OAAO,IAAI,CAAA;AAE5B,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,IAAA,CAACA,UAAA,EAAA,EAAiB,IAAA,EAAY,MAAA,EAAgB,MAAA,EAC5C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,sBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,QAAA;AAAA,kBACT,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,EAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA,eACZ;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAA,EAAO,EAAA;AAAA,kBACP,QAAA,EAAU,KAAA;AAAA,kBACV,UAAA,EAAY,CAAA;AAAA,kBACZ,QAAA,EAAU,KAAA;AAAA,kBACV,QAAA,EAAU;AAAA;AAAA;AACZ,aAAA,EACF,CAAA;AAAA,YAEF,QAAA;AAAA,YACA,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA,SACF;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,KAAU;AAC3B,UAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA;AAC5C,UAAA,uBACE,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cAEC,SAAS,IAAA,CAAK,OAAA;AAAA,cACd,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,OAAA,EAAS,OAAA,GAAW,IAAA,CAAK,OAAA,IAAW,UAAW,IAAA,CAAK,OAAA;AAAA,cACpD,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,MAAA;AAAA,cACzB,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,cACnB,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM;AAAA,aAAA;AAAA,YANxB,IAAA,CAAK;AAAA,WAOZ;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA;AAAA,GACF;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"bar.mjs","sourcesContent":["\"use client\";\n\nimport { Bar, BarChart as RechartsBarChart, XAxis, YAxis } from \"recharts\";\n\nimport {\n ChartDecorators,\n ChartFrame,\n defaultChartMargin,\n} from \"../shared/chart-frame\";\nimport { resolveColor } from \"../shared/colors\";\nimport type { BarChartProps } from \"../shared/types\";\n\nexport function BarChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n data,\n density,\n emptyState = null,\n height = 320,\n margin = defaultChartMargin,\n series,\n showGrid = true,\n showLegend = false,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stacked = false,\n style,\n syncId,\n xKey,\n ...props\n}: BarChartProps<TDatum>) {\n const hasData = data.length > 0 && series.length > 0;\n const xAxisKey = String(xKey);\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsBarChart data={data} margin={margin} syncId={syncId}>\n <ChartDecorators\n axis={\n <>\n <XAxis\n dataKey={xAxisKey}\n minTickGap={24}\n tickLine={false}\n tickMargin={10}\n axisLine={false}\n fontSize={12}\n />\n <YAxis\n width={40}\n tickLine={false}\n tickMargin={8}\n axisLine={false}\n fontSize={12}\n />\n </>\n }\n showGrid={showGrid}\n showLegend={showLegend}\n showTooltip={showTooltip}\n tooltipColor={tooltipColor}\n />\n {series.map((item, index) => {\n const color = resolveColor(item.color, index);\n return (\n <Bar\n key={item.dataKey}\n dataKey={item.dataKey}\n name={item.name}\n stackId={stacked ? (item.stackId ?? \"stack\") : item.stackId}\n fill={item.fill ?? color.stroke}\n radius={[6, 6, 0, 0]}\n stroke={item.stroke ?? color.stroke}\n />\n );\n })}\n </RechartsBarChart>\n </ChartFrame>\n );\n}\n\nBarChart.displayName = \"BarChart\";\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { PieChartProps } from "../shared/types";
2
- export declare function PieChart<TDatum extends Record<string, number | string | null | undefined>>({ appearance, className, containerStyle, cornerRadius, data, dataKey, density, emptyState, height, label, labelLine, nameKey, paddingAngle, showLegend, showTooltip, tooltipColor, stroke, colors, innerRadius, outerRadius, style, ...props }: PieChartProps<TDatum>): import("react/jsx-runtime").JSX.Element;
2
+ export declare function PieChart<TDatum extends Record<string, number | string | null | undefined>>({ appearance, className, containerStyle, cornerRadius, data, dataKey, density, emptyState, height, label, labelLine, labelColor, nameKey, paddingAngle, showLegend, showTooltip, tooltipColor, stroke, fill, innerRadius, outerRadius, shape, style, ...props }: PieChartProps<TDatum>): import("react/jsx-runtime").JSX.Element;
3
3
  export declare namespace PieChart {
4
4
  var displayName: string;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Pie.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/Pie.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAuBrD,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,EACA,UAAU,EACV,SAAS,EACT,cAAc,EACd,YAAiB,EACjB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAiB,EACjB,MAAY,EACZ,KAAa,EACb,SAAiB,EACjB,OAAO,EACP,YAAgB,EAChB,UAAiB,EACjB,WAAkB,EAClB,YAAwB,EACxB,MAAM,EACN,MAAuB,EACvB,WAAW,EACX,WAAW,EACX,KAAK,EACL,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,MAAM,CAAC,2CAuCvB;yBAhEe,QAAQ"}
1
+ {"version":3,"file":"Pie.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/Pie.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjE,EACA,UAAU,EACV,SAAS,EACT,cAAc,EACd,YAAiB,EACjB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAiB,EACjB,MAAY,EACZ,KAAa,EACb,SAAiB,EACjB,UAAoB,EACpB,OAAO,EACP,YAAgB,EAChB,UAAiB,EACjB,WAAkB,EAClB,YAAwB,EACxB,MAAkB,EAClB,IAAgB,EAChB,WAAW,EACX,WAAW,EACX,KAAK,EACL,KAAK,EACL,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,MAAM,CAAC,2CAyCvB;yBApEe,QAAQ"}
@@ -7,7 +7,7 @@ var recharts = require('recharts');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
9
9
  var RADIAN = Math.PI / 180;
10
- var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }) => {
10
+ var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, fill }) => {
11
11
  if (cx == null || cy == null || innerRadius == null || outerRadius == null) {
12
12
  return null;
13
13
  }
@@ -16,9 +16,8 @@ var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, perce
16
16
  const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);
17
17
  const ncy = Number(cy);
18
18
  const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);
19
- return /* @__PURE__ */ jsxRuntime.jsx("text", { x, y, fill: "white", textAnchor: x > ncx ? "start" : "end", dominantBaseline: "central", children: `${((percent ?? 0) * 100).toFixed(0)}%` });
19
+ return /* @__PURE__ */ jsxRuntime.jsx("text", { x, y, fill, textAnchor: x > ncx ? "start" : "end", dominantBaseline: "central", children: `${((percent ?? 0) * 100).toFixed(0)}%` });
20
20
  };
21
- var DEFAULT_COLORS = ["#0088FE", "#00C49F", "#FFBB28", "#FF8042"];
22
21
  function PieChart({
23
22
  appearance,
24
23
  className,
@@ -31,15 +30,17 @@ function PieChart({
31
30
  height = 320,
32
31
  label = false,
33
32
  labelLine = false,
33
+ labelColor = "white",
34
34
  nameKey,
35
35
  paddingAngle = 2,
36
36
  showLegend = true,
37
37
  showTooltip = true,
38
38
  tooltipColor = "#0f172a",
39
- stroke,
40
- colors = DEFAULT_COLORS,
39
+ stroke = "#000000",
40
+ fill = "#0d3b66",
41
41
  innerRadius,
42
42
  outerRadius,
43
+ shape,
43
44
  style,
44
45
  ...props
45
46
  }) {
@@ -77,8 +78,10 @@ function PieChart({
77
78
  paddingAngle,
78
79
  cornerRadius,
79
80
  labelLine,
80
- label: label ? renderCustomizedLabel : void 0,
81
- stroke
81
+ label: label ? (props2) => renderCustomizedLabel({ ...props2, fill: labelColor }) : void 0,
82
+ stroke,
83
+ fill,
84
+ shape
82
85
  }
83
86
  )
84
87
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/pie/Pie.tsx"],"names":["jsx","ChartFrame","RechartsPieChart","Tooltip","Legend","Pie"],"mappings":"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","file":"pie.js","sourcesContent":["\"use client\";\n\nimport {\n Legend,\n Pie,\n PieLabelRenderProps,\n PieChart as RechartsPieChart,\n Tooltip,\n} from \"recharts\";\n\nimport { ChartFrame } from \"../shared/chart-frame\";\nimport type { PieChartProps } from \"../shared/types\";\n\nconst RADIAN = Math.PI / 180;\n\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }: PieLabelRenderProps) => {\n if (cx == null || cy == null || innerRadius == null || outerRadius == null) {\n return null;\n }\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const ncx = Number(cx);\n const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);\n const ncy = Number(cy);\n const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);\n\n return (\n <text x={x} y={y} fill=\"white\" textAnchor={x > ncx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${((percent ?? 0) * 100).toFixed(0)}%`}\n </text>\n );\n};\n\nconst DEFAULT_COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042'];\n\nexport function PieChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n cornerRadius = 10,\n data,\n dataKey,\n density,\n emptyState = null,\n height = 320,\n label = false,\n labelLine = false,\n nameKey,\n paddingAngle = 2,\n showLegend = true,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stroke,\n colors = DEFAULT_COLORS,\n innerRadius,\n outerRadius,\n style,\n ...props\n}: PieChartProps<TDatum>) {\n const hasData = data.length > 0;\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsPieChart>\n {showTooltip ? (\n <Tooltip\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend color=\"currentColor\" /> : null}\n <Pie\n data={data}\n dataKey={String(dataKey)}\n nameKey={String(nameKey)}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n labelLine={labelLine}\n label={label ? renderCustomizedLabel : undefined}\n stroke={stroke}\n />\n </RechartsPieChart>\n </ChartFrame>\n );\n}\n\nPieChart.displayName = \"PieChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/pie/Pie.tsx"],"names":["jsx","ChartFrame","RechartsPieChart","Tooltip","Legend","Pie","props"],"mappings":"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","file":"pie.js","sourcesContent":["\"use client\";\n\nimport {\n Legend,\n Pie,\n PieLabelRenderProps,\n PieChart as RechartsPieChart,\n Tooltip,\n} from \"recharts\";\n\nimport { ChartFrame } from \"../shared/chart-frame\";\nimport type { PieChartProps } from \"../shared/types\";\n\nconst RADIAN = Math.PI / 180;\n\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, fill }: PieLabelRenderProps) => {\n if (cx == null || cy == null || innerRadius == null || outerRadius == null) {\n return null;\n }\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const ncx = Number(cx);\n const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);\n const ncy = Number(cy);\n const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);\n\n return (\n <text x={x} y={y} fill={fill} textAnchor={x > ncx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${((percent ?? 0) * 100).toFixed(0)}%`}\n </text>\n );\n};\n\nexport function PieChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n cornerRadius = 10,\n data,\n dataKey,\n density,\n emptyState = null,\n height = 320,\n label = false,\n labelLine = false,\n labelColor = \"white\",\n nameKey,\n paddingAngle = 2,\n showLegend = true,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stroke = \"#000000\",\n fill = \"#0d3b66\",\n innerRadius,\n outerRadius,\n shape,\n style,\n ...props\n}: PieChartProps<TDatum>) {\n const hasData = data.length > 0;\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsPieChart>\n {showTooltip ? (\n <Tooltip\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend color=\"currentColor\" /> : null}\n <Pie\n data={data}\n dataKey={String(dataKey)}\n nameKey={String(nameKey)}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n labelLine={labelLine}\n label={label ? (props: PieLabelRenderProps) => renderCustomizedLabel({...props, fill: labelColor}) : undefined}\n stroke={stroke}\n fill={fill}\n shape={shape}\n />\n </RechartsPieChart>\n </ChartFrame>\n );\n}\n\nPieChart.displayName = \"PieChart\";\n"]}
@@ -6,7 +6,7 @@ import { PieChart as PieChart$1, Tooltip, Legend, Pie } from 'recharts';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
8
8
  var RADIAN = Math.PI / 180;
9
- var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }) => {
9
+ var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, fill }) => {
10
10
  if (cx == null || cy == null || innerRadius == null || outerRadius == null) {
11
11
  return null;
12
12
  }
@@ -15,9 +15,8 @@ var renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, perce
15
15
  const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);
16
16
  const ncy = Number(cy);
17
17
  const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);
18
- return /* @__PURE__ */ jsx("text", { x, y, fill: "white", textAnchor: x > ncx ? "start" : "end", dominantBaseline: "central", children: `${((percent ?? 0) * 100).toFixed(0)}%` });
18
+ return /* @__PURE__ */ jsx("text", { x, y, fill, textAnchor: x > ncx ? "start" : "end", dominantBaseline: "central", children: `${((percent ?? 0) * 100).toFixed(0)}%` });
19
19
  };
20
- var DEFAULT_COLORS = ["#0088FE", "#00C49F", "#FFBB28", "#FF8042"];
21
20
  function PieChart({
22
21
  appearance,
23
22
  className,
@@ -30,15 +29,17 @@ function PieChart({
30
29
  height = 320,
31
30
  label = false,
32
31
  labelLine = false,
32
+ labelColor = "white",
33
33
  nameKey,
34
34
  paddingAngle = 2,
35
35
  showLegend = true,
36
36
  showTooltip = true,
37
37
  tooltipColor = "#0f172a",
38
- stroke,
39
- colors = DEFAULT_COLORS,
38
+ stroke = "#000000",
39
+ fill = "#0d3b66",
40
40
  innerRadius,
41
41
  outerRadius,
42
+ shape,
42
43
  style,
43
44
  ...props
44
45
  }) {
@@ -76,8 +77,10 @@ function PieChart({
76
77
  paddingAngle,
77
78
  cornerRadius,
78
79
  labelLine,
79
- label: label ? renderCustomizedLabel : void 0,
80
- stroke
80
+ label: label ? (props2) => renderCustomizedLabel({ ...props2, fill: labelColor }) : void 0,
81
+ stroke,
82
+ fill,
83
+ shape
81
84
  }
82
85
  )
83
86
  ] })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/charts/pie/Pie.tsx"],"names":["RechartsPieChart"],"mappings":"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","file":"pie.mjs","sourcesContent":["\"use client\";\n\nimport {\n Legend,\n Pie,\n PieLabelRenderProps,\n PieChart as RechartsPieChart,\n Tooltip,\n} from \"recharts\";\n\nimport { ChartFrame } from \"../shared/chart-frame\";\nimport type { PieChartProps } from \"../shared/types\";\n\nconst RADIAN = Math.PI / 180;\n\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }: PieLabelRenderProps) => {\n if (cx == null || cy == null || innerRadius == null || outerRadius == null) {\n return null;\n }\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const ncx = Number(cx);\n const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);\n const ncy = Number(cy);\n const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);\n\n return (\n <text x={x} y={y} fill=\"white\" textAnchor={x > ncx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${((percent ?? 0) * 100).toFixed(0)}%`}\n </text>\n );\n};\n\nconst DEFAULT_COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042'];\n\nexport function PieChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n cornerRadius = 10,\n data,\n dataKey,\n density,\n emptyState = null,\n height = 320,\n label = false,\n labelLine = false,\n nameKey,\n paddingAngle = 2,\n showLegend = true,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stroke,\n colors = DEFAULT_COLORS,\n innerRadius,\n outerRadius,\n style,\n ...props\n}: PieChartProps<TDatum>) {\n const hasData = data.length > 0;\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsPieChart>\n {showTooltip ? (\n <Tooltip\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend color=\"currentColor\" /> : null}\n <Pie\n data={data}\n dataKey={String(dataKey)}\n nameKey={String(nameKey)}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n labelLine={labelLine}\n label={label ? renderCustomizedLabel : undefined}\n stroke={stroke}\n />\n </RechartsPieChart>\n </ChartFrame>\n );\n}\n\nPieChart.displayName = \"PieChart\";\n"]}
1
+ {"version":3,"sources":["../../src/charts/pie/Pie.tsx"],"names":["RechartsPieChart","props"],"mappings":"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","file":"pie.mjs","sourcesContent":["\"use client\";\n\nimport {\n Legend,\n Pie,\n PieLabelRenderProps,\n PieChart as RechartsPieChart,\n Tooltip,\n} from \"recharts\";\n\nimport { ChartFrame } from \"../shared/chart-frame\";\nimport type { PieChartProps } from \"../shared/types\";\n\nconst RADIAN = Math.PI / 180;\n\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, fill }: PieLabelRenderProps) => {\n if (cx == null || cy == null || innerRadius == null || outerRadius == null) {\n return null;\n }\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const ncx = Number(cx);\n const x = ncx + radius * Math.cos(-(midAngle ?? 0) * RADIAN);\n const ncy = Number(cy);\n const y = ncy + radius * Math.sin(-(midAngle ?? 0) * RADIAN);\n\n return (\n <text x={x} y={y} fill={fill} textAnchor={x > ncx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${((percent ?? 0) * 100).toFixed(0)}%`}\n </text>\n );\n};\n\nexport function PieChart<\n TDatum extends Record<string, number | string | null | undefined>,\n>({\n appearance,\n className,\n containerStyle,\n cornerRadius = 10,\n data,\n dataKey,\n density,\n emptyState = null,\n height = 320,\n label = false,\n labelLine = false,\n labelColor = \"white\",\n nameKey,\n paddingAngle = 2,\n showLegend = true,\n showTooltip = true,\n tooltipColor = \"#0f172a\",\n stroke = \"#000000\",\n fill = \"#0d3b66\",\n innerRadius,\n outerRadius,\n shape,\n style,\n ...props\n}: PieChartProps<TDatum>) {\n const hasData = data.length > 0;\n\n return (\n <ChartFrame\n appearance={appearance}\n className={className}\n containerStyle={containerStyle}\n density={density}\n emptyState={emptyState}\n hasData={hasData}\n height={height}\n style={style}\n {...props}\n >\n <RechartsPieChart>\n {showTooltip ? (\n <Tooltip\n contentStyle={{ color: tooltipColor }}\n labelStyle={{ color: tooltipColor }}\n itemStyle={{ color: tooltipColor }}\n />\n ) : null}\n {showLegend ? <Legend color=\"currentColor\" /> : null}\n <Pie\n data={data}\n dataKey={String(dataKey)}\n nameKey={String(nameKey)}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n labelLine={labelLine}\n label={label ? (props: PieLabelRenderProps) => renderCustomizedLabel({...props, fill: labelColor}) : undefined}\n stroke={stroke}\n fill={fill}\n shape={shape}\n />\n </RechartsPieChart>\n </ChartFrame>\n );\n}\n\nPieChart.displayName = \"PieChart\";\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { VariantProps } from "class-variance-authority";
2
2
  import type { CSSProperties, HTMLAttributes, ReactNode } from "react";
3
3
  import type { chartPalette, chartVariants } from "./variants";
4
+ import { PieProps } from "recharts";
4
5
  export type ChartType = "area" | "bar" | "bubble" | "line" | "pie";
5
6
  export type ChartColor = keyof typeof chartPalette;
6
7
  export type ChartDatum = Record<string, number | string | null | undefined>;
@@ -16,6 +17,7 @@ export type ChartSeries = {
16
17
  color?: ChartColor | string;
17
18
  textColor?: string;
18
19
  fill?: string;
20
+ stroke?: string;
19
21
  stackId?: string;
20
22
  zKey?: string;
21
23
  };
@@ -50,13 +52,15 @@ export type PieChartProps<TDatum extends ChartDatum = ChartDatum> = ChartSharedS
50
52
  tooltipColor?: string;
51
53
  emptyState?: ReactNode;
52
54
  containerStyle?: CSSProperties;
53
- paddingAngle?: number;
54
- cornerRadius?: number;
55
+ paddingAngle?: PieProps["paddingAngle"];
56
+ cornerRadius?: PieProps["cornerRadius"];
55
57
  label?: boolean;
56
58
  labelLine?: boolean;
57
- stroke?: string;
58
- colors?: string[];
59
- innerRadius?: number | string;
60
- outerRadius?: number | string;
59
+ labelColor?: string;
60
+ stroke?: PieProps["stroke"];
61
+ fill?: PieProps["fill"];
62
+ innerRadius?: PieProps["innerRadius"];
63
+ outerRadius?: PieProps["outerRadius"];
64
+ shape?: PieProps["shape"];
61
65
  };
62
66
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/charts/shared/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/charts/shared/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { buttonVariants } from './chunk-5TV7EL3H.mjs';
2
+ import { cn } from './chunk-4D54YOL6.mjs';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var ButtonBase = (props) => {
6
+ if (props.as === "link") {
7
+ const {
8
+ className: className2,
9
+ appearance: appearance2,
10
+ size: size2,
11
+ children: children2,
12
+ ref: ref2,
13
+ href,
14
+ target,
15
+ ...rest2
16
+ } = props;
17
+ return /* @__PURE__ */ jsx(
18
+ "a",
19
+ {
20
+ ref: ref2,
21
+ href,
22
+ target,
23
+ rel: target === "_blank" ? "noopener noreferrer" : void 0,
24
+ "data-slot": "button",
25
+ className: cn(buttonVariants({ appearance: appearance2, size: size2 }), className2),
26
+ ...rest2,
27
+ children: children2
28
+ }
29
+ );
30
+ }
31
+ const {
32
+ className,
33
+ appearance,
34
+ size,
35
+ type = "button",
36
+ children,
37
+ ref,
38
+ ...rest
39
+ } = props;
40
+ return /* @__PURE__ */ jsx(
41
+ "button",
42
+ {
43
+ ref,
44
+ type,
45
+ "data-slot": "button",
46
+ className: cn(buttonVariants({ appearance, size }), className),
47
+ ...rest,
48
+ children
49
+ }
50
+ );
51
+ };
52
+ ButtonBase.displayName = "Button";
53
+ var Button = (props) => {
54
+ return /* @__PURE__ */ jsx(ButtonBase, { ...props });
55
+ };
56
+ Button.displayName = "Button";
57
+
58
+ export { Button };
59
+ //# sourceMappingURL=chunk-7OHC4ERB.mjs.map
60
+ //# sourceMappingURL=chunk-7OHC4ERB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/buttons/button-base.tsx","../src/ui/buttons/button.tsx"],"names":["className","appearance","size","children","ref","rest","jsx"],"mappings":";;;;AAOO,IAAM,UAAA,GAAa,CAAC,KAAA,KAAuB;AAChD,EAAA,IAAI,KAAA,CAAM,OAAO,MAAA,EAAQ;AACvB,IAAA,MAAM;AAAA,MACJ,SAAA,EAAAA,UAAAA;AAAA,MACA,UAAA,EAAAC,WAAAA;AAAA,MACA,IAAA,EAAAC,KAAAA;AAAA,MACA,QAAA,EAAAC,SAAAA;AAAA,MACA,GAAA,EAAAC,IAAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAGC;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,uBACE,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAKD,IAAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA,EAAK,MAAA,KAAW,QAAA,GAAW,qBAAA,GAAwB,MAAA;AAAA,QACnD,WAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,EAAA,CAAG,cAAA,CAAe,EAAE,UAAA,EAAAH,aAAY,IAAA,EAAAC,KAAAA,EAAM,CAAA,EAAGF,UAAS,CAAA;AAAA,QAC5D,GAAGK,KAAAA;AAAA,QAEH,QAAA,EAAAF;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,YAAY,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAC5D,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,QAAA;ACtDlB,IAAM,MAAA,GAAS,CAAC,KAAA,KAAuB;AAC5C,EAAA,uBAAOG,GAAAA,CAAC,UAAA,EAAA,EAAY,GAAG,KAAA,EAAO,CAAA;AAChC;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-7OHC4ERB.mjs","sourcesContent":["\"use client\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { ButtonProps } from \"./types\";\nimport { buttonVariants } from \"./variants\";\n\nexport const ButtonBase = (props: ButtonProps) => {\n if (props.as === \"link\") {\n const {\n className,\n appearance,\n size,\n children,\n ref,\n href,\n target,\n ...rest\n } = props;\n\n return (\n <a\n ref={ref}\n href={href}\n target={target}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n const {\n className,\n appearance,\n size,\n type = \"button\",\n children,\n ref,\n ...rest\n } = props;\n\n return (\n <button\n ref={ref}\n type={type}\n data-slot=\"button\"\n className={cn(buttonVariants({ appearance, size }), className)}\n {...rest}\n >\n {children}\n </button>\n );\n};\n\nButtonBase.displayName = \"Button\";\n","// button.tsx — default static entry (no framer-motion)\nimport { ButtonBase } from \"./button-base\";\nimport type { ButtonProps } from \"./types\";\n\nexport const Button = (props: ButtonProps) => {\n return <ButtonBase {...props} />;\n};\n\nButton.displayName = \"Button\";\n"]}
@@ -27,5 +27,5 @@ function useControllableState({
27
27
  }
28
28
 
29
29
  exports.useControllableState = useControllableState;
30
- //# sourceMappingURL=chunk-2VQJ6OIL.js.map
31
- //# sourceMappingURL=chunk-2VQJ6OIL.js.map
30
+ //# sourceMappingURL=chunk-HPN7H5ZM.js.map
31
+ //# sourceMappingURL=chunk-HPN7H5ZM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useControllableState/useControllableState.ts"],"names":["useState","useRef","useCallback"],"mappings":";;;;;AAwBO,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA;AACF,CAAA,EAA6E;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,YAAY,CAAA;AAC7D,EAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,eAAe,SAAA,GAAY,YAAA;AACzC,EAAA,MAAM,WAAA,GAAcC,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AACjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B;AACA,MAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-2VQJ6OIL.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport type UseControllableStateParams<T> = {\n /** When defined, the hook is controlled and this value is returned as state. */\n value?: T;\n /** Initial / fallback value when uncontrolled (`value` is `undefined`). */\n defaultValue: T;\n /** Notified on every `setValue` with the resolved next value (controlled and uncontrolled). */\n onChange?: (next: T) => void;\n};\n\n/**\n * Implements the React “controlled vs uncontrolled” pattern as a single state tuple.\n *\n * - If `value` is `undefined`, internal state mirrors `defaultValue` and updates on `setValue`.\n * - If `value` is defined, returned state follows `value`; `setValue` still calls `onChange` so the parent can update.\n * - `setValue` accepts either the next value or an updater `(prev) => next` (updater uses the current `value` in controlled mode).\n *\n * @typeParam T - State value type.\n * @param params - `value`, `defaultValue`, and optional `onChange`.\n * @returns `[value, setValue]` compatible with `useState`-style usage.\n */\nexport function useControllableState<T>({\n value: valueProp,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>): [T, (next: T | ((prev: T) => T)) => void] {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : uncontrolled;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n if (!isControlled) {\n setUncontrolled(resolved);\n }\n onChangeRef.current?.(resolved);\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n"]}
1
+ {"version":3,"sources":["../src/hooks/useControllableState/useControllableState.ts"],"names":["useState","useRef","useCallback"],"mappings":";;;;;AAwBO,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA;AACF,CAAA,EAA6E;AAC3E,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,eAAS,YAAY,CAAA;AAC7D,EAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,EAAA,MAAM,KAAA,GAAQ,eAAe,SAAA,GAAY,YAAA;AACzC,EAAA,MAAM,WAAA,GAAcC,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,WACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AACjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,eAAA,CAAgB,QAAQ,CAAA;AAAA,MAC1B;AACA,MAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-HPN7H5ZM.js","sourcesContent":["\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\n\nexport type UseControllableStateParams<T> = {\n /** When defined, the hook is controlled and this value is returned as state. */\n value?: T;\n /** Initial / fallback value when uncontrolled (`value` is `undefined`). */\n defaultValue: T;\n /** Notified on every `setValue` with the resolved next value (controlled and uncontrolled). */\n onChange?: (next: T) => void;\n};\n\n/**\n * Implements the React “controlled vs uncontrolled” pattern as a single state tuple.\n *\n * - If `value` is `undefined`, internal state mirrors `defaultValue` and updates on `setValue`.\n * - If `value` is defined, returned state follows `value`; `setValue` still calls `onChange` so the parent can update.\n * - `setValue` accepts either the next value or an updater `(prev) => next` (updater uses the current `value` in controlled mode).\n *\n * @typeParam T - State value type.\n * @param params - `value`, `defaultValue`, and optional `onChange`.\n * @returns `[value, setValue]` compatible with `useState`-style usage.\n */\nexport function useControllableState<T>({\n value: valueProp,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>): [T, (next: T | ((prev: T) => T)) => void] {\n const [uncontrolled, setUncontrolled] = useState(defaultValue);\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : uncontrolled;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolved =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n if (!isControlled) {\n setUncontrolled(resolved);\n }\n onChangeRef.current?.(resolved);\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n"]}