@giddaa-housing/ui 1.0.0 → 1.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/css/generated/shared.css +1 -1
- package/css/giddaa.css +12 -2
- package/dist/accordion.d.ts +9 -10
- package/dist/accordion.js +41 -87
- package/dist/activity-timeline.d.ts +12 -16
- package/dist/activity-timeline.js +83 -198
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -111
- package/dist/auth-layout.d.ts +4 -4
- package/dist/auth-layout.js +143 -294
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +49 -19
- package/dist/badge.d.ts +12 -14
- package/dist/badge.js +71 -11
- package/dist/bar-chart.d.ts +65 -67
- package/dist/bar-chart.js +232 -207
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -118
- package/dist/bullet-chart.d.ts +41 -37
- package/dist/bullet-chart.js +125 -148
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +39 -88
- package/dist/button.d.ts +2 -19
- package/dist/button.js +94 -13
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +138 -17
- package/dist/card.d.ts +14 -16
- package/dist/card.js +59 -145
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +335 -20
- package/dist/chart.d.ts +90 -63
- package/dist/chart.js +573 -28
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +82 -47
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +22 -47
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +236 -44
- package/dist/cta.d.ts +12 -14
- package/dist/cta.js +175 -341
- package/dist/currency-selector.d.ts +31 -32
- package/dist/currency-selector.js +106 -184
- package/dist/data-table.d.ts +168 -0
- package/dist/data-table.js +676 -0
- package/dist/date-picker.d.ts +22 -23
- package/dist/date-picker.js +119 -192
- package/dist/details-card.d.ts +7 -7
- package/dist/details-card.js +104 -253
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +116 -209
- package/dist/dropdown-menu.d.ts +13 -13
- package/dist/dropdown-menu.js +180 -37
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +327 -439
- package/dist/editorial-card.d.ts +23 -25
- package/dist/editorial-card.js +129 -296
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -105
- package/dist/field.d.ts +23 -25
- package/dist/field.js +110 -221
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +8 -15
- package/dist/footer.js +197 -400
- package/dist/funnel-chart.d.ts +49 -48
- package/dist/funnel-chart.js +170 -189
- package/dist/gallery-indicator.d.ts +11 -12
- package/dist/gallery-indicator.js +75 -12
- package/dist/heatmap-chart.d.ts +47 -50
- package/dist/heatmap-chart.js +186 -237
- package/dist/infotip.d.ts +8 -9
- package/dist/infotip.js +33 -59
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -20
- package/dist/input-group.js +99 -23
- package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
- package/dist/input-size-context.d.ts +2 -11
- package/dist/input-size-context.js +17 -9
- package/dist/input.d.ts +2 -13
- package/dist/input.js +27 -11
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -59
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -192
- package/dist/label.d.ts +6 -6
- package/dist/label.js +40 -8
- package/dist/line-chart.d.ts +200 -129
- package/dist/line-chart.js +330 -105
- package/dist/list-item.d.ts +22 -0
- package/dist/list-item.js +84 -0
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +92 -9
- package/dist/map-indicator.d.ts +7 -7
- package/dist/map-indicator.js +80 -106
- package/dist/match.d.ts +10 -11
- package/dist/match.js +62 -107
- package/dist/media-gallery-hero.d.ts +40 -42
- package/dist/media-gallery-hero.js +182 -343
- package/dist/media-player.d.ts +17 -17
- package/dist/media-player.js +873 -1348
- package/dist/multi-step-form.d.ts +56 -0
- package/dist/multi-step-form.js +342 -0
- package/dist/number-input.d.ts +34 -34
- package/dist/number-input.js +64 -117
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -79
- package/dist/pagination.d.ts +17 -21
- package/dist/pagination.js +132 -207
- package/dist/password-input.d.ts +5 -13
- package/dist/password-input.js +31 -55
- package/dist/phone-input.d.ts +19 -20
- package/dist/phone-input.js +226 -344
- package/dist/photo-gallery.d.ts +19 -19
- package/dist/photo-gallery.js +313 -449
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +121 -90
- package/dist/pie-chart.js +183 -149
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +72 -23
- package/dist/price-tag.d.ts +26 -27
- package/dist/price-tag.js +113 -173
- package/dist/progress.d.ts +16 -17
- package/dist/progress.js +169 -24
- package/dist/property-listing-card.d.ts +14 -17
- package/dist/property-listing-card.js +102 -220
- package/dist/purchase-option-card.d.ts +79 -0
- package/dist/purchase-option-card.js +176 -0
- package/dist/radar-chart.d.ts +29 -31
- package/dist/radar-chart.js +162 -137
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +46 -60
- package/dist/review-block.d.ts +14 -16
- package/dist/review-block.js +154 -10
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +592 -716
- package/dist/scatter-chart.d.ts +45 -47
- package/dist/scatter-chart.js +236 -240
- package/dist/search-input.d.ts +8 -16
- package/dist/search-input.js +57 -109
- package/dist/select.d.ts +8 -8
- package/dist/select.js +144 -27
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +32 -8
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +103 -24
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +364 -634
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +17 -9
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +12 -8
- package/dist/slider.d.ts +8 -9
- package/dist/slider.js +64 -135
- package/dist/sparkline.d.ts +68 -58
- package/dist/sparkline.js +315 -251
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -246
- package/dist/styles.css +1004 -116
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +48 -70
- package/dist/table-card.d.ts +35 -0
- package/dist/table-card.js +125 -0
- package/dist/table.d.ts +18 -14
- package/dist/table.js +117 -154
- package/dist/tabs.d.ts +33 -15
- package/dist/tabs.js +110 -18
- package/dist/tag.d.ts +21 -23
- package/dist/tag.js +103 -159
- package/dist/testimonial-block.d.ts +18 -19
- package/dist/testimonial-block.js +189 -358
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +24 -11
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +245 -302
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -205
- package/dist/tooltip.d.ts +8 -9
- package/dist/tooltip.js +37 -12
- package/dist/tree-map.d.ts +59 -62
- package/dist/tree-map.js +226 -269
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +94 -97
- package/dist/waterfall-chart.js +455 -552
- package/package.json +36 -9
- package/dist/accordion.js.map +0 -1
- package/dist/activity-timeline.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/auth-layout.js.map +0 -1
- package/dist/avatar.js.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/bar-chart.js.map +0 -1
- package/dist/breadcrumb.js.map +0 -1
- package/dist/bullet-chart.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/calendar.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chart.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/chunk-322YCNVL.js +0 -278
- package/dist/chunk-322YCNVL.js.map +0 -1
- package/dist/chunk-3ACQVT7A.js +0 -25
- package/dist/chunk-3ACQVT7A.js.map +0 -1
- package/dist/chunk-3T65TLJX.js +0 -334
- package/dist/chunk-3T65TLJX.js.map +0 -1
- package/dist/chunk-6ZSGQHH2.js +0 -192
- package/dist/chunk-6ZSGQHH2.js.map +0 -1
- package/dist/chunk-7TBMLFGW.js +0 -41
- package/dist/chunk-7TBMLFGW.js.map +0 -1
- package/dist/chunk-B4H6RNDH.js +0 -135
- package/dist/chunk-B4H6RNDH.js.map +0 -1
- package/dist/chunk-BUXCGZ6X.js +0 -219
- package/dist/chunk-BUXCGZ6X.js.map +0 -1
- package/dist/chunk-CHII2QHH.js +0 -58
- package/dist/chunk-CHII2QHH.js.map +0 -1
- package/dist/chunk-DMNOXRRW.js +0 -147
- package/dist/chunk-DMNOXRRW.js.map +0 -1
- package/dist/chunk-EFSOSSIC.js +0 -130
- package/dist/chunk-EFSOSSIC.js.map +0 -1
- package/dist/chunk-FZDSVMKY.js +0 -363
- package/dist/chunk-FZDSVMKY.js.map +0 -1
- package/dist/chunk-GJOFIJS3.js +0 -246
- package/dist/chunk-GJOFIJS3.js.map +0 -1
- package/dist/chunk-HL3ZSYES.js +0 -23
- package/dist/chunk-HL3ZSYES.js.map +0 -1
- package/dist/chunk-JVLUBAPB.js +0 -129
- package/dist/chunk-JVLUBAPB.js.map +0 -1
- package/dist/chunk-KDPYSOYZ.js +0 -64
- package/dist/chunk-KDPYSOYZ.js.map +0 -1
- package/dist/chunk-KSMDANKI.js +0 -43
- package/dist/chunk-KSMDANKI.js.map +0 -1
- package/dist/chunk-MEKCCOP5.js +0 -46
- package/dist/chunk-MEKCCOP5.js.map +0 -1
- package/dist/chunk-NOFXVRWL.js +0 -451
- package/dist/chunk-NOFXVRWL.js.map +0 -1
- package/dist/chunk-PC5MHNVA.js +0 -171
- package/dist/chunk-PC5MHNVA.js.map +0 -1
- package/dist/chunk-QKAQZ2GU.js +0 -122
- package/dist/chunk-QKAQZ2GU.js.map +0 -1
- package/dist/chunk-QZHSHSVV.js +0 -26
- package/dist/chunk-QZHSHSVV.js.map +0 -1
- package/dist/chunk-RBMK26XD.js +0 -19
- package/dist/chunk-RBMK26XD.js.map +0 -1
- package/dist/chunk-SFNJGF6M.js +0 -262
- package/dist/chunk-SFNJGF6M.js.map +0 -1
- package/dist/chunk-UJJNLGTM.js +0 -112
- package/dist/chunk-UJJNLGTM.js.map +0 -1
- package/dist/chunk-VGR4ZWJ3.js +0 -418
- package/dist/chunk-VGR4ZWJ3.js.map +0 -1
- package/dist/chunk-XG47P6D4.js +0 -99
- package/dist/chunk-XG47P6D4.js.map +0 -1
- package/dist/chunk-XZZAHNVM.js +0 -21
- package/dist/chunk-XZZAHNVM.js.map +0 -1
- package/dist/chunk-Y4TTYVNE.js +0 -36
- package/dist/chunk-Y4TTYVNE.js.map +0 -1
- package/dist/chunk-YDWIHW6Q.js +0 -69
- package/dist/chunk-YDWIHW6Q.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/cta.js.map +0 -1
- package/dist/currency-selector.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/details-card.js.map +0 -1
- package/dist/dialog.js.map +0 -1
- package/dist/dropdown-menu.js.map +0 -1
- package/dist/dropzone.js.map +0 -1
- package/dist/editorial-card.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- package/dist/footer.js.map +0 -1
- package/dist/funnel-chart.js.map +0 -1
- package/dist/gallery-indicator.js.map +0 -1
- package/dist/heatmap-chart.js.map +0 -1
- package/dist/infotip.js.map +0 -1
- package/dist/input-group.js.map +0 -1
- package/dist/input-size-context.js.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/item.js.map +0 -1
- package/dist/kpi-card.js.map +0 -1
- package/dist/label.js.map +0 -1
- package/dist/line-chart.js.map +0 -1
- package/dist/logo.js.map +0 -1
- package/dist/map-indicator.js.map +0 -1
- package/dist/match.js.map +0 -1
- package/dist/media-gallery-hero.js.map +0 -1
- package/dist/media-player.js.map +0 -1
- package/dist/number-input.js.map +0 -1
- package/dist/page-header.js.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/password-input.js.map +0 -1
- package/dist/phone-input.js.map +0 -1
- package/dist/photo-gallery.js.map +0 -1
- package/dist/pie-chart.js.map +0 -1
- package/dist/popover.js.map +0 -1
- package/dist/price-tag.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/property-listing-card.js.map +0 -1
- package/dist/radar-chart.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/review-block.js.map +0 -1
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/scatter-chart.js.map +0 -1
- package/dist/search-input.js.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/separator.js.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sidebar.js.map +0 -1
- package/dist/size-context.js.map +0 -1
- package/dist/skeleton.js.map +0 -1
- package/dist/slider.js.map +0 -1
- package/dist/sparkline.js.map +0 -1
- package/dist/stepper.js.map +0 -1
- package/dist/switch.js.map +0 -1
- package/dist/tab-list.d.ts +0 -38
- package/dist/tab-list.js +0 -123
- package/dist/tab-list.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tag.js.map +0 -1
- package/dist/testimonial-block.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/time-picker.js.map +0 -1
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.js.map +0 -1
- package/dist/tree-map.js.map +0 -1
- package/dist/waterfall-chart.js.map +0 -1
package/dist/chart.js
CHANGED
|
@@ -1,30 +1,575 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
2
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
3
|
+
import { SizeProvider, useComponentSize } from "./size-context.js";
|
|
4
|
+
import { ArrowDown, ArrowUp } from "lucide-react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import * as RechartsPrimitive from "recharts";
|
|
9
|
+
//#region src/chart.tsx
|
|
10
|
+
/**
|
|
11
|
+
* Fallback colour for a legend marker or tooltip dot when a series resolves no
|
|
12
|
+
* colour of its own — it defaults to the first categorical slot (`chart-1`).
|
|
13
|
+
* A series almost always carries its own colour (set by the chart's `color`
|
|
14
|
+
* prop or `ChartConfig`), so this is only hit by an unconfigured series.
|
|
15
|
+
*/
|
|
16
|
+
const SERIES_COLOR_FALLBACK = "var(--color-chart-1)";
|
|
17
|
+
function formatChartValue(value, type) {
|
|
18
|
+
if (Array.isArray(value)) return value.join(", ");
|
|
19
|
+
if (typeof value !== "number") return value == null ? "" : String(value);
|
|
20
|
+
switch (type) {
|
|
21
|
+
case "currency": return `₦${value.toLocaleString("en-NG")}`;
|
|
22
|
+
case "percentage": return `${value.toLocaleString("en-NG", {
|
|
23
|
+
minimumFractionDigits: 1,
|
|
24
|
+
maximumFractionDigits: 1
|
|
25
|
+
})}%`;
|
|
26
|
+
default: return value.toLocaleString("en-NG");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const THEMES = {
|
|
30
|
+
light: "",
|
|
31
|
+
dark: ".dark"
|
|
29
32
|
};
|
|
30
|
-
|
|
33
|
+
const INITIAL_DIMENSION = {
|
|
34
|
+
width: 320,
|
|
35
|
+
height: 200
|
|
36
|
+
};
|
|
37
|
+
const ChartContext = React.createContext(null);
|
|
38
|
+
function useChart() {
|
|
39
|
+
const context = React.useContext(ChartContext);
|
|
40
|
+
if (!context) throw new Error("useChart must be used within a <ChartContainer />");
|
|
41
|
+
return context;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Shared chart frame — the chrome that surrounds the plot of any chart type
|
|
45
|
+
* (bar, line, area, pie). These are presentational, domain-free, and size-aware:
|
|
46
|
+
* a `size` flows through `SizeProvider` so the plot and its labels can scale
|
|
47
|
+
* with the card. Compose them with the plot primitives:
|
|
48
|
+
*
|
|
49
|
+
* <ChartCard size="md">
|
|
50
|
+
* <ChartHeader>
|
|
51
|
+
* <ChartTitle>Revenue Overview</ChartTitle>
|
|
52
|
+
* <ChartDescription>Monthly revenue · Jan–Jul</ChartDescription>
|
|
53
|
+
* </ChartHeader>
|
|
54
|
+
* <ChartContainer config={config}>{/* recharts plot *\/}</ChartContainer>
|
|
55
|
+
* </ChartCard>
|
|
56
|
+
*
|
|
57
|
+
* // Single-metric chart tile
|
|
58
|
+
* <ChartCard size="md">
|
|
59
|
+
* <ChartTitle>Properties sold</ChartTitle>
|
|
60
|
+
* <ChartMetric>
|
|
61
|
+
* <ChartValue>1.28k</ChartValue>
|
|
62
|
+
* <ChartTrend direction="up">
|
|
63
|
+
* <ChartTrendChip><ChartTrendValue>12.5%</ChartTrendValue></ChartTrendChip>
|
|
64
|
+
* <ChartTrendCaption>vs last month</ChartTrendCaption>
|
|
65
|
+
* </ChartTrend>
|
|
66
|
+
* </ChartMetric>
|
|
67
|
+
* <ChartFooter>{/* sparkline *\/}</ChartFooter>
|
|
68
|
+
* </ChartCard>
|
|
69
|
+
*/
|
|
70
|
+
const chartCardVariants = cva("flex w-full min-w-0 flex-col rounded-2xl border border-line-subtle bg-surface-raised text-fg-primary shadow-1", {
|
|
71
|
+
variants: { size: {
|
|
72
|
+
sm: "gap-3 p-4",
|
|
73
|
+
md: "gap-4 p-5",
|
|
74
|
+
lg: "gap-5 p-6"
|
|
75
|
+
} },
|
|
76
|
+
defaultVariants: { size: "md" }
|
|
77
|
+
});
|
|
78
|
+
function ChartCard({ className, size, children, ...props }) {
|
|
79
|
+
const resolvedSize = useComponentSize(size);
|
|
80
|
+
return /* @__PURE__ */ jsx(SizeProvider, {
|
|
81
|
+
size: resolvedSize,
|
|
82
|
+
children: /* @__PURE__ */ jsx("section", {
|
|
83
|
+
"data-slot": "chart-card",
|
|
84
|
+
className: cn(chartCardVariants({ size: resolvedSize }), className),
|
|
85
|
+
...props,
|
|
86
|
+
children
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function ChartHeader({ className, ...props }) {
|
|
91
|
+
return /* @__PURE__ */ jsx("div", {
|
|
92
|
+
"data-slot": "chart-header",
|
|
93
|
+
className: cn("flex min-w-0 flex-col gap-1", className),
|
|
94
|
+
...props
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const chartTitleVariants = cva("min-w-0 font-bold text-fg-primary", {
|
|
98
|
+
variants: { size: {
|
|
99
|
+
sm: "text-gdt-md",
|
|
100
|
+
md: "text-gdt-lg",
|
|
101
|
+
lg: "text-gdt-h5"
|
|
102
|
+
} },
|
|
103
|
+
defaultVariants: { size: "md" }
|
|
104
|
+
});
|
|
105
|
+
function ChartTitle({ className, size, ...props }) {
|
|
106
|
+
const resolvedSize = useComponentSize(size);
|
|
107
|
+
return /* @__PURE__ */ jsx("h3", {
|
|
108
|
+
"data-slot": "chart-title",
|
|
109
|
+
className: cn(chartTitleVariants({ size: resolvedSize }), className),
|
|
110
|
+
...props
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const chartDescriptionVariants = cva("min-w-0 font-normal text-fg-secondary", {
|
|
114
|
+
variants: { size: {
|
|
115
|
+
sm: "text-gdt-xs",
|
|
116
|
+
md: "text-gdt-sm",
|
|
117
|
+
lg: "text-gdt-sm"
|
|
118
|
+
} },
|
|
119
|
+
defaultVariants: { size: "md" }
|
|
120
|
+
});
|
|
121
|
+
function ChartDescription({ className, size, ...props }) {
|
|
122
|
+
const resolvedSize = useComponentSize(size);
|
|
123
|
+
return /* @__PURE__ */ jsx("p", {
|
|
124
|
+
"data-slot": "chart-description",
|
|
125
|
+
className: cn(chartDescriptionVariants({ size: resolvedSize }), className),
|
|
126
|
+
...props
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
const chartMetricVariants = cva("min-w-0", {
|
|
130
|
+
variants: {
|
|
131
|
+
layout: {
|
|
132
|
+
stacked: "flex flex-col items-start",
|
|
133
|
+
inline: "flex flex-wrap items-center"
|
|
134
|
+
},
|
|
135
|
+
size: {
|
|
136
|
+
sm: "gap-1.5",
|
|
137
|
+
md: "gap-2",
|
|
138
|
+
lg: "gap-3"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
defaultVariants: {
|
|
142
|
+
layout: "stacked",
|
|
143
|
+
size: "md"
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
function ChartMetric({ className, layout = "stacked", size, ...props }) {
|
|
147
|
+
const resolvedSize = useComponentSize(size);
|
|
148
|
+
return /* @__PURE__ */ jsx("div", {
|
|
149
|
+
"data-slot": "chart-metric",
|
|
150
|
+
"data-layout": layout,
|
|
151
|
+
className: cn(chartMetricVariants({
|
|
152
|
+
layout,
|
|
153
|
+
size: resolvedSize
|
|
154
|
+
}), className),
|
|
155
|
+
...props
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const chartValueVariants = cva("min-w-0 font-extrabold leading-none tracking-[-0.02em] text-fg-primary tabular-nums", {
|
|
159
|
+
variants: { size: {
|
|
160
|
+
sm: "text-[2.25rem]",
|
|
161
|
+
md: "text-[3rem]",
|
|
162
|
+
lg: "text-[3.875rem]"
|
|
163
|
+
} },
|
|
164
|
+
defaultVariants: { size: "md" }
|
|
165
|
+
});
|
|
166
|
+
function ChartValue({ className, size, ...props }) {
|
|
167
|
+
const resolvedSize = useComponentSize(size);
|
|
168
|
+
return /* @__PURE__ */ jsx("p", {
|
|
169
|
+
"data-slot": "chart-value",
|
|
170
|
+
className: cn(chartValueVariants({ size: resolvedSize }), className),
|
|
171
|
+
...props
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const ChartTrendContext = React.createContext(null);
|
|
175
|
+
function useChartTrend({ direction, size } = {}) {
|
|
176
|
+
const context = React.useContext(ChartTrendContext);
|
|
177
|
+
return {
|
|
178
|
+
direction: direction ?? context?.direction ?? "up",
|
|
179
|
+
size: size ?? context?.size ?? "md"
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
const chartTrendVariants = cva("min-w-0", {
|
|
183
|
+
variants: {
|
|
184
|
+
orientation: {
|
|
185
|
+
horizontal: "flex flex-wrap items-center gap-2",
|
|
186
|
+
vertical: "flex flex-col items-start"
|
|
187
|
+
},
|
|
188
|
+
size: {
|
|
189
|
+
sm: "",
|
|
190
|
+
md: "",
|
|
191
|
+
lg: ""
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
compoundVariants: [
|
|
195
|
+
{
|
|
196
|
+
orientation: "vertical",
|
|
197
|
+
size: "sm",
|
|
198
|
+
className: "gap-0.5"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
orientation: "vertical",
|
|
202
|
+
size: "md",
|
|
203
|
+
className: "gap-1"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
orientation: "vertical",
|
|
207
|
+
size: "lg",
|
|
208
|
+
className: "gap-1"
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
defaultVariants: {
|
|
212
|
+
orientation: "horizontal",
|
|
213
|
+
size: "md"
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
function ChartTrend({ className, direction = "up", orientation = "horizontal", size, ...props }) {
|
|
217
|
+
const resolvedSize = useComponentSize(size);
|
|
218
|
+
return /* @__PURE__ */ jsx(ChartTrendContext.Provider, {
|
|
219
|
+
value: {
|
|
220
|
+
direction,
|
|
221
|
+
size: resolvedSize
|
|
222
|
+
},
|
|
223
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
224
|
+
"data-slot": "chart-trend",
|
|
225
|
+
"data-direction": direction,
|
|
226
|
+
"data-orientation": orientation,
|
|
227
|
+
className: cn(chartTrendVariants({
|
|
228
|
+
orientation,
|
|
229
|
+
size: resolvedSize
|
|
230
|
+
}), className),
|
|
231
|
+
...props
|
|
232
|
+
})
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
const chartTrendChipVariants = cva("inline-flex shrink-0 items-center rounded-full font-semibold leading-none", {
|
|
236
|
+
variants: {
|
|
237
|
+
direction: {
|
|
238
|
+
up: "bg-surface-brand-subtle text-status-success",
|
|
239
|
+
down: "bg-surface-danger-subtle text-status-danger"
|
|
240
|
+
},
|
|
241
|
+
size: {
|
|
242
|
+
sm: "gap-1 px-2 py-0.5 [&>svg]:size-2.5",
|
|
243
|
+
md: "gap-1 px-[9px] py-1 [&>svg]:size-3",
|
|
244
|
+
lg: "gap-1 px-2.5 py-1.5 [&>svg]:size-3.5"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
defaultVariants: {
|
|
248
|
+
direction: "up",
|
|
249
|
+
size: "md"
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
function ChartTrendChip({ children, className, direction: directionProp, showIcon = true, size: sizeProp, ...props }) {
|
|
253
|
+
const { direction, size } = useChartTrend({
|
|
254
|
+
direction: directionProp,
|
|
255
|
+
size: sizeProp
|
|
256
|
+
});
|
|
257
|
+
const Icon = direction === "down" ? ArrowDown : ArrowUp;
|
|
258
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
259
|
+
"data-slot": "chart-trend-chip",
|
|
260
|
+
"data-direction": direction,
|
|
261
|
+
className: cn(chartTrendChipVariants({
|
|
262
|
+
direction,
|
|
263
|
+
size
|
|
264
|
+
}), className),
|
|
265
|
+
...props,
|
|
266
|
+
children: [showIcon ? /* @__PURE__ */ jsx(Icon, {
|
|
267
|
+
"aria-hidden": "true",
|
|
268
|
+
className: "shrink-0"
|
|
269
|
+
}) : null, children]
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const chartTrendValueVariants = cva("font-semibold leading-none text-current", {
|
|
273
|
+
variants: { size: {
|
|
274
|
+
sm: "text-[11px]",
|
|
275
|
+
md: "text-[13px]",
|
|
276
|
+
lg: "text-[15px]"
|
|
277
|
+
} },
|
|
278
|
+
defaultVariants: { size: "md" }
|
|
279
|
+
});
|
|
280
|
+
function ChartTrendValue({ className, size: sizeProp, ...props }) {
|
|
281
|
+
const { size } = useChartTrend({ size: sizeProp });
|
|
282
|
+
return /* @__PURE__ */ jsx("span", {
|
|
283
|
+
"data-slot": "chart-trend-value",
|
|
284
|
+
className: cn(chartTrendValueVariants({ size }), className),
|
|
285
|
+
...props
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
const chartTrendCaptionVariants = cva("min-w-0 truncate font-normal leading-none text-fg-secondary", {
|
|
289
|
+
variants: { size: {
|
|
290
|
+
sm: "text-[11px]",
|
|
291
|
+
md: "text-xs",
|
|
292
|
+
lg: "text-[13px]"
|
|
293
|
+
} },
|
|
294
|
+
defaultVariants: { size: "md" }
|
|
295
|
+
});
|
|
296
|
+
function ChartTrendCaption({ className, size: sizeProp, ...props }) {
|
|
297
|
+
const { size } = useChartTrend({ size: sizeProp });
|
|
298
|
+
return /* @__PURE__ */ jsx("span", {
|
|
299
|
+
"data-slot": "chart-trend-caption",
|
|
300
|
+
className: cn(chartTrendCaptionVariants({ size }), className),
|
|
301
|
+
...props
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
function ChartFooter({ className, ...props }) {
|
|
305
|
+
return /* @__PURE__ */ jsx("div", {
|
|
306
|
+
"data-slot": "chart-footer",
|
|
307
|
+
className: cn("mt-auto flex min-h-0 w-full flex-1 flex-col items-start justify-end", className),
|
|
308
|
+
...props
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
function ChartContainer({ id, className, children, config, initialDimension = INITIAL_DIMENSION, ...props }) {
|
|
312
|
+
const uniqueId = React.useId();
|
|
313
|
+
const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
|
|
314
|
+
return /* @__PURE__ */ jsx(ChartContext.Provider, {
|
|
315
|
+
value: { config },
|
|
316
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
317
|
+
"data-slot": "chart",
|
|
318
|
+
"data-chart": chartId,
|
|
319
|
+
className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-fg-caption-placeholder [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-line [&_.recharts-curve.recharts-tooltip-cursor]:stroke-line [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-line [&_.recharts-radial-bar-background-sector]:fill-surface-raised [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-surface-raised [&_.recharts-reference-line_[stroke='#ccc']]:stroke-line [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
|
|
320
|
+
...props,
|
|
321
|
+
children: [/* @__PURE__ */ jsx(ChartStyle, {
|
|
322
|
+
id: chartId,
|
|
323
|
+
config
|
|
324
|
+
}), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, {
|
|
325
|
+
initialDimension,
|
|
326
|
+
children
|
|
327
|
+
})]
|
|
328
|
+
})
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
const ChartStyle = ({ id, config }) => {
|
|
332
|
+
const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
|
|
333
|
+
if (!colorConfig.length) return null;
|
|
334
|
+
return /* @__PURE__ */ jsx("style", { children: Object.entries(THEMES).map(([theme, prefix]) => `
|
|
335
|
+
${prefix} [data-chart=${id}] {
|
|
336
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
337
|
+
const color = itemConfig.theme?.[theme] ?? itemConfig.color;
|
|
338
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
339
|
+
}).join("\n")}
|
|
340
|
+
}
|
|
341
|
+
`).join("\n") });
|
|
342
|
+
};
|
|
343
|
+
const ChartTooltip = RechartsPrimitive.Tooltip;
|
|
344
|
+
/**
|
|
345
|
+
* Hover tooltip for a chart data point. It surfaces a single precise value with
|
|
346
|
+
* type-appropriate formatting — grouped integers, percentages, or ₦-prefixed
|
|
347
|
+
* currency — sitting on an elevated overlay (bg-surface-overlay, Shadow-2,
|
|
348
|
+
* 1px border-subtle) so users can read exact figures without leaving the chart.
|
|
349
|
+
*
|
|
350
|
+
* Anatomy: series dot · metric label · hero value · period caption.
|
|
351
|
+
*/
|
|
352
|
+
const chartTooltipVariants = cva("flex flex-col bg-surface-overlay border border-line-subtle shadow-2", {
|
|
353
|
+
variants: { size: {
|
|
354
|
+
xs: "gap-0.5 rounded-md p-2",
|
|
355
|
+
sm: "gap-0.5 rounded-md p-2.5",
|
|
356
|
+
md: "gap-1 rounded-lg p-3",
|
|
357
|
+
lg: "gap-1 rounded-xl p-3.5"
|
|
358
|
+
} },
|
|
359
|
+
defaultVariants: { size: "md" }
|
|
360
|
+
});
|
|
361
|
+
const chartTooltipDotVariants = cva("shrink-0 rounded-full", {
|
|
362
|
+
variants: { size: {
|
|
363
|
+
xs: "size-1.5",
|
|
364
|
+
sm: "size-2",
|
|
365
|
+
md: "size-2.5",
|
|
366
|
+
lg: "size-2.5"
|
|
367
|
+
} },
|
|
368
|
+
defaultVariants: { size: "md" }
|
|
369
|
+
});
|
|
370
|
+
const chartTooltipLabelVariants = cva("font-medium text-fg-secondary", {
|
|
371
|
+
variants: { size: {
|
|
372
|
+
xs: "text-gdt-xs",
|
|
373
|
+
sm: "text-gdt-xs",
|
|
374
|
+
md: "text-gdt-sm",
|
|
375
|
+
lg: "text-gdt-sm"
|
|
376
|
+
} },
|
|
377
|
+
defaultVariants: { size: "md" }
|
|
378
|
+
});
|
|
379
|
+
const chartTooltipValueVariants = cva("font-extrabold text-fg-primary tabular-nums", {
|
|
380
|
+
variants: { size: {
|
|
381
|
+
xs: "text-gdt-sm",
|
|
382
|
+
sm: "text-gdt-md",
|
|
383
|
+
md: "text-gdt-lg",
|
|
384
|
+
lg: "text-gdt-xl"
|
|
385
|
+
} },
|
|
386
|
+
defaultVariants: { size: "md" }
|
|
387
|
+
});
|
|
388
|
+
function ChartTooltipContent({ active, payload, className, hideIndicator = false, label, labelFormatter, formatter, color, nameKey, valueType = "number", size = "md" }) {
|
|
389
|
+
const { config } = useChart();
|
|
390
|
+
if (!active || !payload?.length) return null;
|
|
391
|
+
const [item] = payload.filter((entry) => entry.type !== "none");
|
|
392
|
+
if (!item) return null;
|
|
393
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey ?? item.name ?? item.dataKey ?? "value"}`);
|
|
394
|
+
const dotColor = color ?? item.payload?.fill ?? item.color ?? SERIES_COLOR_FALLBACK;
|
|
395
|
+
const metricLabel = itemConfig?.label ?? item.name;
|
|
396
|
+
const heroValue = formatter ? formatter(item.value, item.name ?? "", item, 0, item.payload) : formatChartValue(item.value, valueType);
|
|
397
|
+
const periodCaption = labelFormatter ? labelFormatter(label, payload) : (typeof label === "string" ? config[label]?.label : null) ?? label;
|
|
398
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
399
|
+
className: cn(chartTooltipVariants({ size }), className),
|
|
400
|
+
children: [
|
|
401
|
+
metricLabel != null && /* @__PURE__ */ jsxs("div", {
|
|
402
|
+
className: "flex items-center gap-1.5 [&>svg]:size-3 [&>svg]:shrink-0",
|
|
403
|
+
children: [!hideIndicator && (itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("span", {
|
|
404
|
+
"aria-hidden": "true",
|
|
405
|
+
className: cn(chartTooltipDotVariants({ size })),
|
|
406
|
+
style: { backgroundColor: dotColor }
|
|
407
|
+
})), /* @__PURE__ */ jsx("span", {
|
|
408
|
+
className: cn(chartTooltipLabelVariants({ size })),
|
|
409
|
+
children: metricLabel
|
|
410
|
+
})]
|
|
411
|
+
}),
|
|
412
|
+
/* @__PURE__ */ jsx("p", {
|
|
413
|
+
className: cn(chartTooltipValueVariants({ size })),
|
|
414
|
+
children: heroValue
|
|
415
|
+
}),
|
|
416
|
+
periodCaption != null && periodCaption !== "" && /* @__PURE__ */ jsx("p", {
|
|
417
|
+
className: "text-gdt-xs text-fg-caption-placeholder",
|
|
418
|
+
children: periodCaption
|
|
419
|
+
})
|
|
420
|
+
]
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
const ChartLegend = RechartsPrimitive.Legend;
|
|
424
|
+
const chartLegendItemVariants = cva("group/legend-item flex items-center rounded-md leading-none text-fg-primary transition-colors [&>svg]:shrink-0", {
|
|
425
|
+
variants: {
|
|
426
|
+
size: {
|
|
427
|
+
sm: "gap-1.5 px-2 py-1 text-gdt-xs [&>svg]:size-3",
|
|
428
|
+
md: "gap-2 px-2.5 py-1.5 text-gdt-sm [&>svg]:size-3.5"
|
|
429
|
+
},
|
|
430
|
+
interactive: {
|
|
431
|
+
true: "cursor-pointer outline-none hover:bg-surface-raised focus-visible:bg-surface-raised",
|
|
432
|
+
false: ""
|
|
433
|
+
},
|
|
434
|
+
inactive: {
|
|
435
|
+
true: "text-fg-caption-placeholder line-through",
|
|
436
|
+
false: ""
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
defaultVariants: {
|
|
440
|
+
size: "md",
|
|
441
|
+
interactive: false,
|
|
442
|
+
inactive: false
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
const chartLegendMarkerSizeVariants = cva("shrink-0", {
|
|
446
|
+
variants: {
|
|
447
|
+
marker: {
|
|
448
|
+
dot: "rounded-full",
|
|
449
|
+
square: "rounded-[2px]",
|
|
450
|
+
line: "rounded-full"
|
|
451
|
+
},
|
|
452
|
+
size: {
|
|
453
|
+
sm: "",
|
|
454
|
+
md: ""
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
compoundVariants: [
|
|
458
|
+
{
|
|
459
|
+
marker: ["dot", "square"],
|
|
460
|
+
size: "sm",
|
|
461
|
+
className: "size-2"
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
marker: ["dot", "square"],
|
|
465
|
+
size: "md",
|
|
466
|
+
className: "size-2.5"
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
marker: "line",
|
|
470
|
+
size: "sm",
|
|
471
|
+
className: "h-[3px] w-3"
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
marker: "line",
|
|
475
|
+
size: "md",
|
|
476
|
+
className: "h-[3px] w-3.5"
|
|
477
|
+
}
|
|
478
|
+
],
|
|
479
|
+
defaultVariants: {
|
|
480
|
+
marker: "dot",
|
|
481
|
+
size: "md"
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
/**
|
|
485
|
+
* A shared legend for all chart types. Each item pairs a series marker with a
|
|
486
|
+
* label and can be toggled to hide or show its series — the inactive state mutes
|
|
487
|
+
* the marker and strikes through the label. Items compose into horizontal rows
|
|
488
|
+
* or vertical columns, in two sizes, with dot, square, or line markers.
|
|
489
|
+
*
|
|
490
|
+
* Toggling: pass `onToggle` to make items interactive. Inactive items are read
|
|
491
|
+
* from each payload entry's `inactive` flag (recharts sets this when wired) or
|
|
492
|
+
* the controlled `inactiveKeys` set.
|
|
493
|
+
*/
|
|
494
|
+
function ChartLegendContent({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey, marker = "dot", size = "md", orientation = "horizontal", inactiveKeys, onToggle }) {
|
|
495
|
+
const { config } = useChart();
|
|
496
|
+
if (!payload?.length) return null;
|
|
497
|
+
const inactiveSet = inactiveKeys ? new Set(inactiveKeys) : void 0;
|
|
498
|
+
const interactive = Boolean(onToggle);
|
|
499
|
+
return /* @__PURE__ */ jsx("div", {
|
|
500
|
+
className: cn("flex", orientation === "vertical" ? "flex-col items-start gap-0.5" : "flex-row flex-wrap items-center justify-center gap-x-1 gap-y-0.5", verticalAlign === "top" ? "pb-3" : "pt-3", className),
|
|
501
|
+
children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
502
|
+
const key = `${nameKey ?? item.dataKey ?? "value"}`;
|
|
503
|
+
const itemKey = `${item.dataKey ?? item.value ?? index}`;
|
|
504
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
505
|
+
const inactive = (inactiveSet?.has(key) ?? false) || Boolean(item.inactive);
|
|
506
|
+
const markerColor = inactive ? "var(--color-fg-caption-placeholder)" : item.color ?? SERIES_COLOR_FALLBACK;
|
|
507
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("span", {
|
|
508
|
+
"aria-hidden": "true",
|
|
509
|
+
className: cn(chartLegendMarkerSizeVariants({
|
|
510
|
+
marker,
|
|
511
|
+
size
|
|
512
|
+
})),
|
|
513
|
+
style: { backgroundColor: markerColor }
|
|
514
|
+
}), itemConfig?.label ?? item.value] });
|
|
515
|
+
if (interactive) return /* @__PURE__ */ jsx("button", {
|
|
516
|
+
type: "button",
|
|
517
|
+
"aria-pressed": !inactive,
|
|
518
|
+
onClick: () => onToggle?.(key),
|
|
519
|
+
className: cn(chartLegendItemVariants({
|
|
520
|
+
size,
|
|
521
|
+
interactive,
|
|
522
|
+
inactive
|
|
523
|
+
})),
|
|
524
|
+
children: content
|
|
525
|
+
}, itemKey);
|
|
526
|
+
return /* @__PURE__ */ jsx("div", {
|
|
527
|
+
className: cn(chartLegendItemVariants({
|
|
528
|
+
size,
|
|
529
|
+
interactive,
|
|
530
|
+
inactive
|
|
531
|
+
})),
|
|
532
|
+
children: content
|
|
533
|
+
}, itemKey);
|
|
534
|
+
})
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Shared `<XAxis>`/`<YAxis>` props — the giddaa cartesian-axis defaults (no tick
|
|
539
|
+
* or axis lines, a size-scaled tick font, and a reserved value-axis width) that
|
|
540
|
+
* every bar and line chart would otherwise repeat per axis. Spread the result
|
|
541
|
+
* onto the recharts axis, then add the chart-specific props (`dataKey`,
|
|
542
|
+
* `domain`, `ticks`, a `width`/`type` override, …). Chart modules build their
|
|
543
|
+
* per-size axis wrappers (`BarChartXAxis`, `LineChartXAxis`, …) on top of this:
|
|
544
|
+
*
|
|
545
|
+
* const axes = cartesianAxisProps({ tickMargin: 8, tickFontSize: 11, yAxisWidth: 32 });
|
|
546
|
+
* <XAxis dataKey="month" {...axes.xAxis} />
|
|
547
|
+
* <YAxis domain={[0, 120]} {...axes.yAxis} />
|
|
548
|
+
*/
|
|
549
|
+
function cartesianAxisProps(layout) {
|
|
550
|
+
const tick = { fontSize: layout.tickFontSize };
|
|
551
|
+
return {
|
|
552
|
+
xAxis: {
|
|
553
|
+
tickLine: false,
|
|
554
|
+
axisLine: false,
|
|
555
|
+
tickMargin: layout.tickMargin,
|
|
556
|
+
tick
|
|
557
|
+
},
|
|
558
|
+
yAxis: {
|
|
559
|
+
tickLine: false,
|
|
560
|
+
axisLine: false,
|
|
561
|
+
width: layout.yAxisWidth,
|
|
562
|
+
tick
|
|
563
|
+
}
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
567
|
+
if (typeof payload !== "object" || payload === null) return;
|
|
568
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
569
|
+
let configLabelKey = key;
|
|
570
|
+
if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
|
|
571
|
+
else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
|
|
572
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
573
|
+
}
|
|
574
|
+
//#endregion
|
|
575
|
+
export { ChartCard, ChartContainer, ChartDescription, ChartFooter, ChartHeader, ChartLegend, ChartLegendContent, ChartMetric, ChartStyle, ChartTitle, ChartTooltip, ChartTooltipContent, ChartTrend, ChartTrendCaption, ChartTrendChip, ChartTrendValue, ChartValue, cartesianAxisProps };
|
package/dist/checkbox.d.ts
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { VariantProps } from 'class-variance-authority';
|
|
6
|
-
|
|
1
|
+
import { VariantProps } from "class-variance-authority";
|
|
2
|
+
import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
|
|
3
|
+
import { CheckboxGroup } from "@base-ui/react/checkbox-group";
|
|
4
|
+
//#region src/checkbox.d.ts
|
|
7
5
|
declare const checkboxVariants: (props?: ({
|
|
8
|
-
|
|
9
|
-
} &
|
|
6
|
+
size?: "lg" | "md" | "sm" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
8
|
type CheckboxSize = NonNullable<VariantProps<typeof checkboxVariants>["size"]>;
|
|
11
9
|
type CheckboxProps = Checkbox$1.Root.Props & {
|
|
12
|
-
|
|
10
|
+
size?: CheckboxSize;
|
|
13
11
|
};
|
|
14
12
|
/**
|
|
15
13
|
* Compose with the shared field primitives for label and helper text.
|
|
@@ -68,6 +66,6 @@ type CheckboxProps = Checkbox$1.Root.Props & {
|
|
|
68
66
|
* </FieldSet>
|
|
69
67
|
* ```
|
|
70
68
|
*/
|
|
71
|
-
declare function Checkbox({ className, size, ...props }: CheckboxProps):
|
|
72
|
-
|
|
73
|
-
export { Checkbox, checkboxVariants };
|
|
69
|
+
declare function Checkbox({ className, size, ...props }: CheckboxProps): import("react").JSX.Element;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { Checkbox, CheckboxGroup, checkboxVariants };
|