@arolariu/components 0.4.0 → 0.4.2

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/changelog.md CHANGED
@@ -8,6 +8,14 @@ All notable changes to **@arolariu/components** are documented here following [K
8
8
 
9
9
  ## 🎉 Latest Releases
10
10
 
11
+ ### [0.4.2](https://www.npmjs.com/package/@arolariu/components/v/0.4.2) - 2025-12-18
12
+ **✨ New Features & Improvements**
13
+ - 🆕 **New Component: `CardAction`** - A component for adding actions to cards.
14
+
15
+ ### [0.4.1](https://www.npmjs.com/package/@arolariu/components/v/0.4.1) - 2025-12-08
16
+ **🔧 Bug Fixes & Maintenance**
17
+ - ⬆️ **Recharts V3** Upgraded chart.tsx to use Rechars v3.5
18
+
11
19
  ### [0.4.0](https://www.npmjs.com/package/@arolariu/components/v/0.4.0) - 2025-12-05
12
20
  **✨ New Features & Improvements**
13
21
  - 🔒 Switched to Trusted Publishing workflow for attestation of package.
@@ -5,5 +5,6 @@ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HT
5
5
  declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
6
6
  declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
7
7
  declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
8
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
8
+ declare const CardAction: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
9
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
9
10
  //# sourceMappingURL=card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,IAAI,6GASR,CAAC;AAGH,QAAA,MAAM,UAAU,6GAMd,CAAC;AAGH,QAAA,MAAM,SAAS,6GAMb,CAAC;AAGH,QAAA,MAAM,eAAe,6GAMnB,CAAC;AAGH,QAAA,MAAM,WAAW,6GAMf,CAAC;AAGH,QAAA,MAAM,UAAU,6GAMd,CAAC;AAGH,OAAO,EAAC,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,IAAI,6GASR,CAAC;AAGH,QAAA,MAAM,UAAU,6GAMd,CAAC;AAGH,QAAA,MAAM,SAAS,6GAMb,CAAC;AAGH,QAAA,MAAM,eAAe,6GAMnB,CAAC;AAGH,QAAA,MAAM,WAAW,6GAMf,CAAC;AAGH,QAAA,MAAM,UAAU,6GAMd,CAAC;AAGH,QAAA,MAAM,UAAU,6GAMd,CAAC;AAGH,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC"}
@@ -38,6 +38,12 @@ const CardFooter = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#_
38
38
  ...props
39
39
  }));
40
40
  CardFooter.displayName = "CardFooter";
41
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
41
+ const CardAction = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
42
+ ref: ref,
43
+ className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
44
+ ...props
45
+ }));
46
+ CardAction.displayName = "CardAction";
47
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
42
48
 
43
49
  //# sourceMappingURL=card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/card.js","sources":["../../../src/components/ui/card.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-xl border border-neutral-200 bg-white text-neutral-950 shadow dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nCard.displayName = \"Card\";\r\n\r\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"leading-none font-semibold tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm text-neutral-500 dark:text-neutral-400\", className)}\r\n {...props}\r\n />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nexport {Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle};\r\n"],"names":["Card","React","className","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter"],"mappings":";;;;AAMA,MAAMA,OAAO,WAAPA,GAAOC,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAC1G,IAAC;QACC,KAAKA;QACL,WAAWC,GACT,0IACAH;QAED,GAAGC,KAAK;;AAGbH,KAAK,WAAW,GAAG;AAEnB,MAAMM,aAAa,WAAbA,GAAaL,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAChH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,iCAAiCH;QAC9C,GAAGC,KAAK;;AAGbG,WAAW,WAAW,GAAG;AAEzB,MAAMC,YAAY,WAAZA,GAAYN,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAC/G,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,6CAA6CH;QAC1D,GAAGC,KAAK;;AAGbI,UAAU,WAAW,GAAG;AAExB,MAAMC,kBAAkB,WAAlBA,GAAkBP,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACrH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,kDAAkDH;QAC/D,GAAGC,KAAK;;AAGbK,gBAAgB,WAAW,GAAG;AAE9B,MAAMC,cAAc,WAAdA,GAAcR,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACjH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,YAAYH;QACzB,GAAGC,KAAK;;AAGbM,YAAY,WAAW,GAAG;AAE1B,MAAMC,aAAa,WAAbA,GAAaT,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAChH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,8BAA8BH;QAC3C,GAAGC,KAAK;;AAGbO,WAAW,WAAW,GAAG"}
1
+ {"version":3,"file":"components/ui/card.js","sources":["../../../src/components/ui/card.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-xl border border-neutral-200 bg-white text-neutral-950 shadow dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nCard.displayName = \"Card\";\r\n\r\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n />\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"leading-none font-semibold tracking-tight\", className)}\r\n {...props}\r\n />\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"text-sm text-neutral-500 dark:text-neutral-400\", className)}\r\n {...props}\r\n />\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n />\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nconst CardAction = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", className)}\r\n {...props}\r\n />\r\n));\r\nCardAction.displayName = \"CardAction\";\r\n\r\nexport {Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle};\r\n"],"names":["Card","React","className","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","CardAction"],"mappings":";;;;AAMA,MAAMA,OAAO,WAAPA,GAAOC,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAC1G,IAAC;QACC,KAAKA;QACL,WAAWC,GACT,0IACAH;QAED,GAAGC,KAAK;;AAGbH,KAAK,WAAW,GAAG;AAEnB,MAAMM,aAAa,WAAbA,GAAaL,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAChH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,iCAAiCH;QAC9C,GAAGC,KAAK;;AAGbG,WAAW,WAAW,GAAG;AAEzB,MAAMC,YAAY,WAAZA,GAAYN,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAC/G,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,6CAA6CH;QAC1D,GAAGC,KAAK;;AAGbI,UAAU,WAAW,GAAG;AAExB,MAAMC,kBAAkB,WAAlBA,GAAkBP,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACrH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,kDAAkDH;QAC/D,GAAGC,KAAK;;AAGbK,gBAAgB,WAAW,GAAG;AAE9B,MAAMC,cAAc,WAAdA,GAAcR,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GACjH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,YAAYH;QACzB,GAAGC,KAAK;;AAGbM,YAAY,WAAW,GAAG;AAE1B,MAAMC,aAAa,WAAbA,GAAaT,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAChH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,8BAA8BH;QAC3C,GAAGC,KAAK;;AAGbO,WAAW,WAAW,GAAG;AAEzB,MAAMC,aAAa,WAAbA,GAAaV,WAAuE,CAAC,EAACC,SAAS,EAAE,GAAGC,OAAM,EAAEC,MAAAA,WAAAA,GAChH,IAAC;QACC,KAAKA;QACL,WAAWC,GAAG,kEAAkEH;QAC/E,GAAGC,KAAK;;AAGbQ,WAAW,WAAW,GAAG"}
@@ -1,63 +1,41 @@
1
1
  import * as React from "react";
2
2
  import * as RechartsPrimitive from "recharts";
3
+ import type { NameType, ValueType } from "recharts/types/component/DefaultTooltipContent";
3
4
  declare const THEMES: {
4
5
  readonly light: "";
5
6
  readonly dark: ".dark";
6
7
  };
7
- export type ChartConfig = {
8
- [k in string]: {
9
- label?: React.ReactNode;
10
- icon?: React.ComponentType;
11
- } & ({
12
- color?: string;
13
- theme?: never;
14
- } | {
15
- color?: never;
16
- theme: Record<keyof typeof THEMES, string>;
17
- });
18
- };
19
- declare const ChartContainer: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
8
+ export type ChartConfig = Record<string, {
9
+ label?: React.ReactNode;
10
+ icon?: React.ComponentType;
11
+ } & ({
12
+ color?: string;
13
+ theme?: never;
14
+ } | {
15
+ color?: never;
16
+ theme: Record<keyof typeof THEMES, string>;
17
+ })>;
18
+ interface ChartContainerProps extends Omit<React.ComponentProps<"div">, "children">, Pick<React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>, "initialDimension" | "aspect" | "debounce" | "minHeight" | "minWidth" | "maxHeight" | "height" | "width" | "onResize" | "children"> {
20
19
  config: ChartConfig;
21
- children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
22
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
20
+ innerResponsiveContainerStyle?: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["style"];
21
+ }
22
+ declare function ChartContainer({ id, config, initialDimension, className, children, ...props }: Readonly<ChartContainerProps>): import("react/jsx-runtime").JSX.Element;
23
23
  declare const ChartStyle: ({ id, config }: {
24
24
  id: string;
25
25
  config: ChartConfig;
26
26
  }) => import("react/jsx-runtime").JSX.Element;
27
27
  declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
28
- declare const ChartTooltipContent: React.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType> & {
29
- accessibilityLayer?: boolean;
30
- active?: boolean | undefined;
31
- includeHidden?: boolean | undefined;
32
- allowEscapeViewBox?: import("recharts/types/util/types").AllowInDimension;
33
- animationDuration?: import("recharts/types/util/types").AnimationDuration;
34
- animationEasing?: import("recharts/types/util/types").AnimationTiming;
35
- content?: import("recharts/types/component/Tooltip").ContentType<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType>;
36
- coordinate?: Partial<import("recharts/types/util/types").Coordinate>;
37
- cursor?: boolean | React.ReactElement | React.SVGProps<SVGElement>;
38
- filterNull?: boolean;
39
- defaultIndex?: number;
40
- isAnimationActive?: boolean;
41
- offset?: number;
42
- payloadUniqBy?: import("recharts/types/util/payload/getUniqPayload").UniqueOption<import("recharts/types/component/DefaultTooltipContent").Payload<import("recharts/types/component/DefaultTooltipContent").ValueType, import("recharts/types/component/DefaultTooltipContent").NameType>>;
43
- position?: Partial<import("recharts/types/util/types").Coordinate>;
44
- reverseDirection?: import("recharts/types/util/types").AllowInDimension;
45
- shared?: boolean;
46
- trigger?: "hover" | "click";
47
- useTranslate3d?: boolean;
48
- viewBox?: import("recharts/types/util/types").CartesianViewBox;
49
- wrapperStyle?: React.CSSProperties;
50
- } & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
28
+ declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React.ComponentProps<typeof RechartsPrimitive.Tooltip> & React.ComponentProps<"div"> & {
51
29
  hideLabel?: boolean;
52
30
  hideIndicator?: boolean;
53
31
  indicator?: "line" | "dot" | "dashed";
54
32
  nameKey?: string;
55
33
  labelKey?: string;
56
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
34
+ } & Omit<RechartsPrimitive.DefaultTooltipContentProps<ValueType, NameType>, "accessibilityLayer">): import("react/jsx-runtime").JSX.Element;
57
35
  declare const ChartLegend: typeof RechartsPrimitive.Legend;
58
- declare const ChartLegendContent: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
36
+ declare function ChartLegendContent({ className, hideIcon, nameKey, payload, verticalAlign, }: React.ComponentProps<"div"> & {
59
37
  hideIcon?: boolean;
60
38
  nameKey?: string;
61
- }, "ref"> & React.RefAttributes<HTMLDivElement>>;
39
+ } & RechartsPrimitive.DefaultLegendContentProps): import("react/jsx-runtime").JSX.Element;
62
40
  export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
63
41
  //# sourceMappingURL=chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../src/components/ui/chart.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAK9C,QAAA,MAAM,MAAM;;;CAAsC,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,MAAM,GAAG;QACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC5B,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,CAAC;CACpG,CAAC;AAkBF,QAAA,MAAM,cAAc;YAGR,WAAW;cACT,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC;gDAwB1F,CAAC;AAGH,QAAA,MAAM,UAAU,GAAI,gBAAc;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,4CA2BlE,CAAC;AAEF,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;gBAIP,OAAO;oBACH,OAAO;gBACX,MAAM,GAAG,KAAK,GAAG,QAAQ;cAC3B,MAAM;eACL,MAAM;gDAqHtB,CAAC;AAGF,QAAA,MAAM,WAAW,iCAA2B,CAAC;AAE7C,QAAA,MAAM,kBAAkB;eAIP,OAAO;cACR,MAAM;gDAuCpB,CAAC;AAuBH,OAAO,EAAC,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAC,CAAC"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../src/components/ui/chart.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,gDAAgD,CAAC;AAGxF,QAAA,MAAM,MAAM;;;CAAsC,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,MAAM,EACN;IACE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC5B,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAC,GAAG;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAAC,CAAC,CACpG,CAAC;AAkBF,UAAU,mBACR,SACE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,EAC7C,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,EAClE,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CACnI;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,6BAA6B,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC;CAC7G;AAED,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,MAAM,EACN,gBAA4C,EAC5C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CAsB/B;AAED,QAAA,MAAM,UAAU,GAAI,gBAAc;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,4CA2BlE,CAAC;AAEF,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,GACrD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,oBAAoB,CAAC,2CA+FlG;AAED,QAAA,MAAM,WAAW,iCAA2B,CAAC;AAE7C,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,OAAO,EACP,aAAa,GACd,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,iBAAiB,CAAC,yBAAyB,2CAmC9C;AAsBD,OAAO,EAAC,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { createContext, forwardRef, useContext, useId, useMemo } from "react";
4
- import { Legend, ResponsiveContainer, Tooltip } from "recharts";
5
3
  import { cn } from "../../lib/utilities.js";
4
+ import { createContext, useContext, useId, useMemo } from "react";
5
+ import { Legend, ResponsiveContainer, Tooltip } from "recharts";
6
6
  const THEMES = {
7
7
  light: "",
8
8
  dark: ".dark"
@@ -13,17 +13,20 @@ function useChart() {
13
13
  if (!context) throw new Error("useChart must be used within a <ChartContainer />");
14
14
  return context;
15
15
  }
16
- const ChartContainer = /*#__PURE__*/ forwardRef(({ id, className, children, config, ...props }, ref)=>{
16
+ function ChartContainer({ id, config, initialDimension = {
17
+ width: 320,
18
+ height: 200
19
+ }, className, children, ...props }) {
17
20
  const uniqueId = useId();
18
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
21
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
19
22
  return /*#__PURE__*/ jsx(ChartContext.Provider, {
20
23
  value: {
21
24
  config
22
25
  },
23
26
  children: /*#__PURE__*/ jsxs("div", {
27
+ "data-slot": "chart",
24
28
  "data-chart": chartId,
25
- ref: ref,
26
- className: cn("[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-sector]:outline-none [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-none", className),
29
+ className: cn("[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
27
30
  ...props,
28
31
  children: [
29
32
  /*#__PURE__*/ jsx(ChartStyle, {
@@ -31,38 +34,38 @@ const ChartContainer = /*#__PURE__*/ forwardRef(({ id, className, children, conf
31
34
  config: config
32
35
  }),
33
36
  /*#__PURE__*/ jsx(ResponsiveContainer, {
37
+ initialDimension: initialDimension,
34
38
  children: children
35
39
  })
36
40
  ]
37
41
  })
38
42
  });
39
- });
40
- ChartContainer.displayName = "Chart";
43
+ }
41
44
  const ChartStyle = ({ id, config })=>{
42
- const colorConfig = Object.entries(config).filter(([, config])=>config.theme || config.color);
45
+ const colorConfig = Object.entries(config).filter(([, config])=>config.theme ?? config.color);
43
46
  if (!colorConfig.length) return null;
44
47
  return /*#__PURE__*/ jsx("style", {
45
48
  dangerouslySetInnerHTML: {
46
49
  __html: Object.entries(THEMES).map(([theme, prefix])=>`
47
50
  ${prefix} [data-chart=${id}] {
48
51
  ${colorConfig.map(([key, itemConfig])=>{
49
- const color = itemConfig.theme?.[theme] || itemConfig.color;
52
+ const color = itemConfig.theme?.[theme] ?? itemConfig.color;
50
53
  return color ? ` --color-${key}: ${color};` : null;
51
- }).join("")}
54
+ }).join("\n")}
52
55
  }
53
- `).join("")
56
+ `).join("\n")
54
57
  }
55
58
  });
56
59
  };
57
60
  const ChartTooltip = Tooltip;
58
- const ChartTooltipContent = /*#__PURE__*/ forwardRef(({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }, ref)=>{
61
+ function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }) {
59
62
  const { config } = useChart();
60
63
  const tooltipLabel = useMemo(()=>{
61
64
  if (hideLabel || !payload?.length) return null;
62
65
  const [item] = payload;
63
- const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
66
+ const key = `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`;
64
67
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
65
- const value = labelKey || "string" != typeof label ? itemConfig?.label : config[label]?.label || label;
68
+ const value = labelKey || "string" != typeof label ? itemConfig?.label : config[label]?.label ?? label;
66
69
  if (labelFormatter) return /*#__PURE__*/ jsx("div", {
67
70
  className: cn("font-medium", labelClassName),
68
71
  children: labelFormatter(value, payload)
@@ -84,22 +87,21 @@ const ChartTooltipContent = /*#__PURE__*/ forwardRef(({ active, payload, classNa
84
87
  if (!active || !payload?.length) return null;
85
88
  const nestLabel = 1 === payload.length && "dot" !== indicator;
86
89
  return /*#__PURE__*/ jsxs("div", {
87
- ref: ref,
88
- className: cn("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-neutral-200 border-neutral-200/50 bg-white px-2.5 py-1.5 text-xs shadow-xl dark:border-neutral-800 dark:border-neutral-800/50 dark:bg-neutral-950", className),
90
+ className: cn("border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl", className),
89
91
  children: [
90
92
  nestLabel ? null : tooltipLabel,
91
93
  /*#__PURE__*/ jsx("div", {
92
94
  className: "grid gap-1.5",
93
95
  children: payload.filter((item)=>"none" !== item.type).map((item, index)=>{
94
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
96
+ const key = `${nameKey ?? item.name ?? item.dataKey ?? "value"}`;
95
97
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
96
- const indicatorColor = color || item.payload.fill || item.color;
98
+ const indicatorColor = color ?? item.payload?.fill ?? item.color;
97
99
  return /*#__PURE__*/ jsx("div", {
98
- className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-neutral-500 dark:[&>svg]:text-neutral-400", "dot" === indicator && "items-center"),
100
+ className: cn("[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5", "dot" === indicator && "items-center"),
99
101
  children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /*#__PURE__*/ jsxs(Fragment, {
100
102
  children: [
101
103
  itemConfig?.icon ? /*#__PURE__*/ jsx(itemConfig.icon, {}) : !hideIndicator && /*#__PURE__*/ jsx("div", {
102
- className: cn("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]", {
104
+ className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
103
105
  "h-2.5 w-2.5": "dot" === indicator,
104
106
  "w-1": "line" === indicator,
105
107
  "w-0 border-[1.5px] border-dashed bg-transparent": "dashed" === indicator,
@@ -118,38 +120,36 @@ const ChartTooltipContent = /*#__PURE__*/ forwardRef(({ active, payload, classNa
118
120
  children: [
119
121
  nestLabel ? tooltipLabel : null,
120
122
  /*#__PURE__*/ jsx("span", {
121
- className: "text-neutral-500 dark:text-neutral-400",
122
- children: itemConfig?.label || item.name
123
+ className: "text-muted-foreground",
124
+ children: itemConfig?.label ?? item.name
123
125
  })
124
126
  ]
125
127
  }),
126
- item.value && /*#__PURE__*/ jsx("span", {
127
- className: "font-mono font-medium text-neutral-950 tabular-nums dark:text-neutral-50",
128
- children: item.value.toLocaleString()
128
+ null != item.value && /*#__PURE__*/ jsx("span", {
129
+ className: "text-foreground font-mono font-medium tabular-nums",
130
+ children: "number" == typeof item.value ? item.value.toLocaleString() : String(item.value)
129
131
  })
130
132
  ]
131
133
  })
132
134
  ]
133
135
  })
134
- }, item.dataKey);
136
+ }, index);
135
137
  })
136
138
  })
137
139
  ]
138
140
  });
139
- });
140
- ChartTooltipContent.displayName = "ChartTooltip";
141
+ }
141
142
  const ChartLegend = Legend;
142
- const ChartLegendContent = /*#__PURE__*/ forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref)=>{
143
+ function ChartLegendContent({ className, hideIcon = false, nameKey, payload, verticalAlign }) {
143
144
  const { config } = useChart();
144
145
  if (!payload?.length) return null;
145
146
  return /*#__PURE__*/ jsx("div", {
146
- ref: ref,
147
147
  className: cn("flex items-center justify-center gap-4", "top" === verticalAlign ? "pb-3" : "pt-3", className),
148
148
  children: payload.filter((item)=>"none" !== item.type).map((item)=>{
149
- const key = `${nameKey || item.dataKey || "value"}`;
149
+ const key = `${nameKey ?? item.dataKey ?? "value"}`;
150
150
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
151
151
  return /*#__PURE__*/ jsxs("div", {
152
- className: cn("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-neutral-500 dark:[&>svg]:text-neutral-400"),
152
+ className: cn("[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"),
153
153
  children: [
154
154
  itemConfig?.icon && !hideIcon ? /*#__PURE__*/ jsx(itemConfig.icon, {}) : /*#__PURE__*/ jsx("div", {
155
155
  className: "h-2 w-2 shrink-0 rounded-[2px]",
@@ -162,8 +162,7 @@ const ChartLegendContent = /*#__PURE__*/ forwardRef(({ className, hideIcon = fal
162
162
  }, item.value);
163
163
  })
164
164
  });
165
- });
166
- ChartLegendContent.displayName = "ChartLegend";
165
+ }
167
166
  function getPayloadConfigFromPayload(config, payload, key) {
168
167
  if ("object" != typeof payload || null === payload) return;
169
168
  const payloadPayload = "payload" in payload && "object" == typeof payload.payload && null !== payload.payload ? payload.payload : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/chart.js","sources":["../../../src/components/ui/chart.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable */\r\n\r\nimport * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = {light: \"\", dark: \".dark\"} as const;\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & ({color?: string; theme?: never} | {color?: never; theme: Record<keyof typeof THEMES, string>});\r\n};\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig;\r\n};\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst ChartContainer = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n config: ChartConfig;\r\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\r\n }\r\n>(({id, className, children, config, ...props}, ref) => {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{config}}>\r\n <div\r\n data-chart={chartId}\r\n ref={ref}\r\n className={cn(\r\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-sector]:outline-none [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-none\",\r\n className,\r\n )}\r\n {...props}>\r\n <ChartStyle\r\n id={chartId}\r\n config={config}\r\n />\r\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n});\r\nChartContainer.displayName = \"Chart\";\r\n\r\nconst ChartStyle = ({id, config}: {id: string; config: ChartConfig}) => {\r\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\")}\r\n}\r\n`,\r\n )\r\n .join(\"\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\nconst ChartTooltipContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<typeof RechartsPrimitive.Tooltip>\r\n & React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n }\r\n>(\r\n (\r\n {\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n },\r\n ref,\r\n ) => {\r\n const {config} = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value = !labelKey && typeof label === \"string\" ? config[label as keyof typeof config]?.label || label : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>;\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\r\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-neutral-200 border-neutral-200/50 bg-white px-2.5 py-1.5 text-xs shadow-xl dark:border-neutral-800 dark:border-neutral-800/50 dark:bg-neutral-950\",\r\n className,\r\n )}>\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className='grid gap-1.5'>\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor = color || item.payload.fill || item.color;\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-neutral-500 dark:[&>svg]:text-neutral-400\",\r\n indicator === \"dot\" && \"items-center\",\r\n )}>\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\"shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]\", {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\": indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n })}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div className={cn(\"flex flex-1 justify-between leading-none\", nestLabel ? \"items-end\" : \"items-center\")}>\r\n <div className='grid gap-1.5'>\r\n {nestLabel ? tooltipLabel : null}\r\n <span className='text-neutral-500 dark:text-neutral-400'>{itemConfig?.label || item.name}</span>\r\n </div>\r\n {item.value && (\r\n <span className='font-mono font-medium text-neutral-950 tabular-nums dark:text-neutral-50'>\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n },\r\n);\r\nChartTooltipContent.displayName = \"ChartTooltip\";\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\nconst ChartLegendContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\">\r\n & Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\r\n hideIcon?: boolean;\r\n nameKey?: string;\r\n }\r\n>(({className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey}, ref) => {\r\n const {config} = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center justify-center gap-4\", verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\", className)}>\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-neutral-500 dark:[&>svg]:text-neutral-400\")}>\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className='h-2 w-2 shrink-0 rounded-[2px]'\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n});\r\nChartLegendContent.displayName = \"ChartLegend\";\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null ? payload.payload : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\") {\r\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\r\n }\r\n\r\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\r\n}\r\n\r\nexport {ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent};\r\n"],"names":["THEMES","ChartContext","React","useChart","context","Error","ChartContainer","id","className","children","config","props","ref","uniqueId","chartId","cn","ChartStyle","RechartsPrimitive","colorConfig","Object","theme","prefix","key","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","undefined","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}
1
+ {"version":3,"file":"components/ui/chart.js","sources":["../../../src/components/ui/chart.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable */\r\n\r\nimport {cn} from \"@/lib/utilities\";\r\nimport * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\nimport type {NameType, ValueType} from \"recharts/types/component/DefaultTooltipContent\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = {light: \"\", dark: \".dark\"} as const;\r\n\r\nexport type ChartConfig = Record<\r\n string,\r\n {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & ({color?: string; theme?: never} | {color?: never; theme: Record<keyof typeof THEMES, string>})\r\n>;\r\n\r\ninterface ChartContextProps {\r\n config: ChartConfig;\r\n}\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\ninterface ChartContainerProps\r\n extends\r\n Omit<React.ComponentProps<\"div\">, \"children\">,\r\n Pick<\r\n React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>,\r\n \"initialDimension\" | \"aspect\" | \"debounce\" | \"minHeight\" | \"minWidth\" | \"maxHeight\" | \"height\" | \"width\" | \"onResize\" | \"children\"\r\n > {\r\n config: ChartConfig;\r\n innerResponsiveContainerStyle?: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"style\"];\r\n}\r\n\r\nfunction ChartContainer({\r\n id,\r\n config,\r\n initialDimension = {width: 320, height: 200},\r\n className,\r\n children,\r\n ...props\r\n}: Readonly<ChartContainerProps>) {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{config}}>\r\n <div\r\n data-slot='chart'\r\n data-chart={chartId}\r\n className={cn(\r\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\r\n className,\r\n )}\r\n {...props}>\r\n <ChartStyle\r\n id={chartId}\r\n config={config}\r\n />\r\n <RechartsPrimitive.ResponsiveContainer initialDimension={initialDimension}>{children}</RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n}\r\n\r\nconst ChartStyle = ({id, config}: {id: string; config: ChartConfig}) => {\r\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n${prefix} [data-chart=${id}] {\r\n${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\\n\")}\r\n}\r\n`,\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\nfunction ChartTooltipContent({\r\n active,\r\n payload,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n label,\r\n labelFormatter,\r\n labelClassName,\r\n formatter,\r\n color,\r\n nameKey,\r\n labelKey,\r\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip>\r\n & React.ComponentProps<\"div\"> & {\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n } & Omit<RechartsPrimitive.DefaultTooltipContentProps<ValueType, NameType>, \"accessibilityLayer\">) {\r\n const {config} = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value = !labelKey && typeof label === \"string\" ? (config[label]?.label ?? label) : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>;\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\r\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\r\n className,\r\n )}>\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className='grid gap-1.5'>\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item, index) => {\r\n const key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor = color ?? item.payload?.fill ?? item.color;\r\n\r\n return (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\r\n indicator === \"dot\" && \"items-center\",\r\n )}>\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\", {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\": indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n })}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div className={cn(\"flex flex-1 justify-between leading-none\", nestLabel ? \"items-end\" : \"items-center\")}>\r\n <div className='grid gap-1.5'>\r\n {nestLabel ? tooltipLabel : null}\r\n <span className='text-muted-foreground'>{itemConfig?.label ?? item.name}</span>\r\n </div>\r\n {item.value != null && (\r\n <span className='text-foreground font-mono font-medium tabular-nums'>\r\n {typeof item.value === \"number\" ? item.value.toLocaleString() : String(item.value)}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\nfunction ChartLegendContent({\r\n className,\r\n hideIcon = false,\r\n nameKey,\r\n payload,\r\n verticalAlign,\r\n}: React.ComponentProps<\"div\"> & {\r\n hideIcon?: boolean;\r\n nameKey?: string;\r\n} & RechartsPrimitive.DefaultLegendContentProps) {\r\n const {config} = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className={cn(\"flex items-center justify-center gap-4\", verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\", className)}>\r\n {payload\r\n .filter((item) => item.type !== \"none\")\r\n .map((item) => {\r\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\")}>\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className='h-2 w-2 shrink-0 rounded-[2px]'\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null ? payload.payload : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\") {\r\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\r\n }\r\n\r\n return configLabelKey in config ? config[configLabelKey] : config[key];\r\n}\r\n\r\nexport {ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent};\r\n"],"names":["THEMES","ChartContext","React","useChart","context","Error","ChartContainer","id","config","initialDimension","className","children","props","uniqueId","chartId","cn","ChartStyle","RechartsPrimitive","colorConfig","Object","theme","prefix","key","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","undefined","String","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":";;;;;AAUA,MAAMA,SAAS;IAAC,OAAO;IAAI,MAAM;AAAO;AAcxC,MAAMC,eAAe,WAAfA,GAAeC,cAA8C;AAEnE,SAASC;IACP,MAAMC,UAAUF,WAAiBD;IAEjC,IAAI,CAACG,SACH,MAAM,IAAIC,MAAM;IAGlB,OAAOD;AACT;AAaA,SAASE,eAAe,EACtBC,EAAE,EACFC,MAAM,EACNC,mBAAmB;IAAC,OAAO;IAAK,QAAQ;AAAG,CAAC,EAC5CC,SAAS,EACTC,QAAQ,EACR,GAAGC,OAC2B;IAC9B,MAAMC,WAAWX;IACjB,MAAMY,UAAU,CAAC,MAAM,EAAEP,MAAMM,SAAS,OAAO,CAAC,MAAM,KAAK;IAE3D,OAAO,WAAP,GACE,IAACZ,aAAa,QAAQ;QAAC,OAAO;YAACO;QAAM;kBACnC,mBAAC;YACC,aAAU;YACV,cAAYM;YACZ,WAAWC,GACT,+pBACAL;YAED,GAAGE,KAAK;;8BACT,IAACI,YAAAA;oBACC,IAAIF;oBACJ,QAAQN;;8BAEV,IAACS,qBAAqC;oBAAC,kBAAkBR;8BAAmBE;;;;;AAIpF;AAEA,MAAMK,aAAa,CAAC,EAACT,EAAE,EAAEC,MAAM,EAAoC;IACjE,MAAMU,cAAcC,OAAO,OAAO,CAACX,QAAQ,MAAM,CAAC,CAAC,GAAGA,OAAO,GAAKA,OAAO,KAAK,IAAIA,OAAO,KAAK;IAE9F,IAAI,CAACU,YAAY,MAAM,EACrB,OAAO;IAGT,OAAO,WAAP,GACE,IAAC;QACC,yBAAyB;YACvB,QAAQC,OAAO,OAAO,CAACnB,QACpB,GAAG,CACF,CAAC,CAACoB,OAAOC,OAAO,GAAK,CAAC;AAClC,EAAEA,OAAO,aAAa,EAAEd,GAAG;AAC3B,EAAEW,YACC,GAAG,CAAC,CAAC,CAACI,KAAKC,WAAW;oBACrB,MAAMC,QAAQD,WAAW,KAAK,EAAE,CAACH,MAAuC,IAAIG,WAAW,KAAK;oBAC5F,OAAOC,QAAQ,CAAC,UAAU,EAAEF,IAAI,EAAE,EAAEE,MAAM,CAAC,CAAC,GAAG;gBACjD,GACC,IAAI,CAAC,MAAM;;AAEd,CAAC,EAEU,IAAI,CAAC;QACV;;AAGN;AAEA,MAAMC,eAAeR;AAErB,SAASS,oBAAoB,EAC3BC,MAAM,EACNC,OAAO,EACPlB,SAAS,EACTmB,YAAY,KAAK,EACjBC,YAAY,KAAK,EACjBC,gBAAgB,KAAK,EACrBC,KAAK,EACLC,cAAc,EACdC,cAAc,EACdC,SAAS,EACTX,KAAK,EACLY,OAAO,EACPC,QAAQ,EAQyF;IACjG,MAAM,EAAC7B,MAAM,EAAC,GAAGL;IAEjB,MAAMmC,eAAepC,QAAc;QACjC,IAAI4B,aAAa,CAACF,SAAS,QACzB,OAAO;QAGT,MAAM,CAACW,KAAK,GAAGX;QACf,MAAMN,MAAM,GAAGe,YAAYE,MAAM,WAAWA,MAAM,QAAQ,SAAS;QACnE,MAAMhB,aAAaiB,4BAA4BhC,QAAQ+B,MAAMjB;QAC7D,MAAMmB,QAAQ,AAACJ,YAAY,AAAiB,YAAjB,OAAOL,QAAuDT,YAAY,QAA7Cf,MAAM,CAACwB,MAAM,EAAE,SAASA;QAEhF,IAAIC,gBACF,OAAO,WAAP,GAAO,IAAC;YAAI,WAAWlB,GAAG,eAAemB;sBAAkBD,eAAeQ,OAAOb;;QAGnF,IAAI,CAACa,OACH,OAAO;QAGT,OAAO,WAAP,GAAO,IAAC;YAAI,WAAW1B,GAAG,eAAemB;sBAAkBO;;IAC7D,GAAG;QAACT;QAAOC;QAAgBL;QAASE;QAAWI;QAAgB1B;QAAQ6B;KAAS;IAEhF,IAAI,CAACV,UAAU,CAACC,SAAS,QACvB,OAAO;IAGT,MAAMc,YAAYd,AAAmB,MAAnBA,QAAQ,MAAM,IAAUC,AAAc,UAAdA;IAE1C,OAAO,WAAP,GACE,KAAC;QACC,WAAWd,GACT,0HACAL;;YAEAgC,YAA2B,OAAfJ;0BACd,IAAC;gBAAI,WAAU;0BACZV,QACE,MAAM,CAAC,CAACW,OAASA,AAAc,WAAdA,KAAK,IAAI,EAC1B,GAAG,CAAC,CAACA,MAAMI;oBACV,MAAMrB,MAAM,GAAGc,WAAWG,KAAK,IAAI,IAAIA,KAAK,OAAO,IAAI,SAAS;oBAChE,MAAMhB,aAAaiB,4BAA4BhC,QAAQ+B,MAAMjB;oBAC7D,MAAMsB,iBAAiBpB,SAASe,KAAK,OAAO,EAAE,QAAQA,KAAK,KAAK;oBAEhE,OAAO,WAAP,GACE,IAAC;wBAEC,WAAWxB,GACT,uGACAc,AAAc,UAAdA,aAAuB;kCAExBM,aAAaI,MAAM,UAAUM,UAAaN,KAAK,IAAI,GAClDJ,UAAUI,KAAK,KAAK,EAAEA,KAAK,IAAI,EAAEA,MAAMI,OAAOJ,KAAK,OAAO,kBAE1D;;gCACGhB,YAAY,OAAO,WAAP,GACX,IAACA,WAAW,IAAI,QAEhB,CAACQ,iBAAiB,WAAjBA,GACC,IAAC;oCACC,WAAWhB,GAAG,kEAAkE;wCAC9E,eAAec,AAAc,UAAdA;wCACf,OAAOA,AAAc,WAAdA;wCACP,mDAAmDA,AAAc,aAAdA;wCACnD,UAAUa,aAAab,AAAc,aAAdA;oCACzB;oCACA,OACE;wCACE,cAAce;wCACd,kBAAkBA;oCACpB;;8CAKR,KAAC;oCAAI,WAAW7B,GAAG,4CAA4C2B,YAAY,cAAc;;sDACvF,KAAC;4CAAI,WAAU;;gDACZA,YAAYJ,eAAe;8DAC5B,IAAC;oDAAK,WAAU;8DAAyBf,YAAY,SAASgB,KAAK,IAAI;;;;wCAE1D,QAAdA,KAAK,KAAK,IAAY,WAAR,GACb,IAAC;4CAAK,WAAU;sDACb,AAAsB,YAAtB,OAAOA,KAAK,KAAK,GAAgBA,KAAK,KAAK,CAAC,cAAc,KAAKO,OAAOP,KAAK,KAAK;;;;;;uBApCtFI;gBA4CX;;;;AAIV;AAEA,MAAMI,cAAc9B;AAEpB,SAAS+B,mBAAmB,EAC1BtC,SAAS,EACTuC,WAAW,KAAK,EAChBb,OAAO,EACPR,OAAO,EACPsB,aAAa,EAIgC;IAC7C,MAAM,EAAC1C,MAAM,EAAC,GAAGL;IAEjB,IAAI,CAACyB,SAAS,QACZ,OAAO;IAGT,OAAO,WAAP,GACE,IAAC;QAAI,WAAWb,GAAG,0CAA0CmC,AAAkB,UAAlBA,gBAA0B,SAAS,QAAQxC;kBACrGkB,QACE,MAAM,CAAC,CAACW,OAASA,AAAc,WAAdA,KAAK,IAAI,EAC1B,GAAG,CAAC,CAACA;YACJ,MAAMjB,MAAM,GAAGc,WAAWG,KAAK,OAAO,IAAI,SAAS;YACnD,MAAMhB,aAAaiB,4BAA4BhC,QAAQ+B,MAAMjB;YAE7D,OAAO,WAAP,GACE,KAAC;gBAEC,WAAWP,GAAG;;oBACbQ,YAAY,QAAQ,CAAC0B,WAAW,WAAXA,GACpB,IAAC1B,WAAW,IAAI,sBAEhB,IAAC;wBACC,WAAU;wBACV,OAAO;4BACL,iBAAiBgB,KAAK,KAAK;wBAC7B;;oBAGHhB,YAAY;;eAZRgB,KAAK,KAAK;QAerB;;AAGR;AAGA,SAASC,4BAA4BhC,MAAmB,EAAEoB,OAAgB,EAAEN,GAAW;IACrF,IAAI,AAAmB,YAAnB,OAAOM,WAAwBA,AAAY,SAAZA,SACjC;IAGF,MAAMuB,iBACJ,aAAavB,WAAW,AAA2B,YAA3B,OAAOA,QAAQ,OAAO,IAAiBA,AAAoB,SAApBA,QAAQ,OAAO,GAAYA,QAAQ,OAAO,GAAGiB;IAE9G,IAAIO,iBAAyB9B;IAE7B,IAAIA,OAAOM,WAAW,AAAgD,YAAhD,OAAOA,OAAO,CAACN,IAA4B,EAC/D8B,iBAAiBxB,OAAO,CAACN,IAA4B;SAChD,IAAI6B,kBAAkB7B,OAAO6B,kBAAkB,AAA8D,YAA9D,OAAOA,cAAc,CAAC7B,IAAmC,EAC7G8B,iBAAiBD,cAAc,CAAC7B,IAAmC;IAGrE,OAAO8B,kBAAkB5C,SAASA,MAAM,CAAC4C,eAAe,GAAG5C,MAAM,CAACc,IAAI;AACxE"}
@@ -1,6 +1,5 @@
1
1
  import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
2
2
  declare const Collapsible: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & import("react").RefAttributes<HTMLDivElement>>;
3
- declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
4
- declare const CollapsibleContent: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleContentProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ declare const CollapsibleTrigger: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & import("react").RefAttributes<HTMLButtonElement>>, CollapsibleContent: import("react").ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleContentProps & import("react").RefAttributes<HTMLDivElement>>;
5
4
  export { Collapsible, CollapsibleContent, CollapsibleTrigger };
6
5
  //# sourceMappingURL=collapsible.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAE9C,QAAA,MAAM,kBAAkB,4IAA0C,CAAC;AAEnE,QAAA,MAAM,kBAAkB,yIAA0C,CAAC;AAEnE,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,CAAC"}
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAE9C,QAAA,MAAO,kBAAkB,8IAAE,kBAAkB,yIAAwB,CAAC;AAEtE,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,CAAC"}
@@ -1,8 +1,36 @@
1
1
  "use client";
2
2
  import { CollapsibleContent, CollapsibleTrigger, Root } from "@radix-ui/react-collapsible";
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports)=>{
17
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var react_collapsible_namespaceObject = {};
26
+ __webpack_require__.r(react_collapsible_namespaceObject);
27
+ __webpack_require__.d(react_collapsible_namespaceObject, {
28
+ CollapsibleContent: ()=>CollapsibleContent,
29
+ CollapsibleTrigger: ()=>CollapsibleTrigger,
30
+ Root: ()=>Root
31
+ });
3
32
  const Collapsible = Root;
4
- const collapsible_CollapsibleTrigger = CollapsibleTrigger;
5
- const collapsible_CollapsibleContent = CollapsibleContent;
33
+ const { CollapsibleTrigger: collapsible_CollapsibleTrigger, CollapsibleContent: collapsible_CollapsibleContent } = react_collapsible_namespaceObject;
6
34
  export { Collapsible, collapsible_CollapsibleContent as CollapsibleContent, collapsible_CollapsibleTrigger as CollapsibleTrigger };
7
35
 
8
36
  //# sourceMappingURL=collapsible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components/ui/collapsible.js","sources":["../../../src/components/ui/collapsible.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root;\r\n\r\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\r\n\r\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\r\n\r\nexport {Collapsible, CollapsibleContent, CollapsibleTrigger};\r\n"],"names":["Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":";;AAIA,MAAMA,cAAcC;AAEpB,MAAMC,iCAAqBD;AAE3B,MAAME,iCAAqBF"}
1
+ {"version":3,"file":"components/ui/collapsible.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/components/ui/collapsible.tsx"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\"use client\";\r\n\r\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\r\n\r\nconst Collapsible = CollapsiblePrimitive.Root;\r\n\r\nconst {CollapsibleTrigger, CollapsibleContent} = CollapsiblePrimitive;\r\n\r\nexport {Collapsible, CollapsibleContent, CollapsibleTrigger};\r\n"],"names":["__webpack_require__","exports","definition","key","Object","obj","prop","Symbol","Collapsible","CollapsiblePrimitive","CollapsibleTrigger","CollapsibleContent"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAACC,SAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGF,oBAAoB,CAAC,CAACE,YAAYC,QAAQ,CAACH,oBAAoB,CAAC,CAACC,SAASE,MACzEC,OAAO,cAAc,CAACH,SAASE,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAH,oBAAoB,CAAC,GAAG,CAACK,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFN,oBAAoB,CAAC,GAAG,CAACC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAACH,SAASM,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAACH,SAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;ACFA,MAAMO,cAAcC;AAEpB,MAAM,EAACC,oBAAkB,gCAAEC,oBAAkB,gCAAC,GAAGF"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
2
+ declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "textAlign" | "maxLength" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
3
3
  value?: string;
4
4
  onChange?: (newValue: string) => unknown;
5
5
  maxLength: number;
@@ -12,7 +12,7 @@ declare const InputOTP: React.ForwardRefExoticComponent<(Omit<Omit<React.InputHT
12
12
  } & {
13
13
  render: (props: import("input-otp").RenderProps) => React.ReactNode;
14
14
  children?: never;
15
- } & React.RefAttributes<HTMLInputElement>, "ref"> | Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
15
+ } & React.RefAttributes<HTMLInputElement>, "ref"> | Omit<Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "textAlign" | "maxLength" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
16
16
  value?: string;
17
17
  onChange?: (newValue: string) => unknown;
18
18
  maxLength: number;
@@ -7,7 +7,7 @@ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogC
7
7
  declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
8
8
  declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
9
  declare const sheetVariants: (props?: {
10
- side?: "left" | "right" | "top" | "bottom";
10
+ side?: "left" | "right" | "bottom" | "top";
11
11
  } & import("class-variance-authority/types").ClassProp) => string;
12
12
  interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> {
13
13
  }