@sqlrooms/ui 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/radio-group.d.ts +6 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +16 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/components/chart.d.ts +0 -35
- package/dist/components/chart.d.ts.map +0 -1
- package/dist/components/chart.js +0 -132
- package/dist/components/chart.js.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
3
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
export { RadioGroup, RadioGroupItem };
|
|
6
|
+
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAKnE,QAAA,MAAM,UAAU,+JAWd,CAAC;AAGH,QAAA,MAAM,cAAc,yKAkBlB,CAAC;AAGH,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
5
|
+
import { Circle } from 'lucide-react';
|
|
6
|
+
import { cn } from '../lib/utils';
|
|
7
|
+
const RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
|
|
8
|
+
return (_jsx(RadioGroupPrimitive.Root, { className: cn('grid gap-2', className), ...props, ref: ref }));
|
|
9
|
+
});
|
|
10
|
+
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
11
|
+
const RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
|
|
12
|
+
return (_jsx(RadioGroupPrimitive.Item, { ref: ref, className: cn('border-primary text-primary focus-visible:ring-ring aspect-square h-4 w-4 rounded-full border shadow focus:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50', className), ...props, children: _jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: _jsx(Circle, { className: "fill-primary h-3.5 w-3.5" }) }) }));
|
|
13
|
+
});
|
|
14
|
+
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
15
|
+
export { RadioGroup, RadioGroupItem };
|
|
16
|
+
//# sourceMappingURL=radio-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAEhC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAGjC,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,mBAAmB,CAAC,IAAI,IACvB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAClC,KAAK,EACT,GAAG,EAAE,GAAG,GACR,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,UAAU,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE9D,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,EAAE,EAAE;IAC/B,OAAO,CACL,KAAC,mBAAmB,CAAC,IAAI,IACvB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,8LAA8L,EAC9L,SAAS,CACV,KACG,KAAK,YAET,KAAC,mBAAmB,CAAC,SAAS,IAAC,SAAS,EAAC,kCAAkC,YACzE,KAAC,MAAM,IAAC,SAAS,EAAC,0BAA0B,GAAG,GACjB,GACP,CAC5B,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AAElE,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,CAAC","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport {Circle} from 'lucide-react';\n\nimport {cn} from '../lib/utils';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({className, ...props}, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn('grid gap-2', className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({className, ...props}, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'border-primary text-primary focus-visible:ring-ring aspect-square h-4 w-4 rounded-full border shadow focus:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"fill-primary h-3.5 w-3.5\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport {RadioGroup, RadioGroupItem};\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export * from './components/label';
|
|
|
23
23
|
export * from './components/popover';
|
|
24
24
|
export * from './components/progress-modal';
|
|
25
25
|
export * from './components/progress';
|
|
26
|
+
export * from './components/radio-group';
|
|
26
27
|
export * from './components/resizable';
|
|
27
28
|
export * from './components/select';
|
|
28
29
|
export * from './components/skeleton-pane';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ export * from './components/label';
|
|
|
23
23
|
export * from './components/popover';
|
|
24
24
|
export * from './components/progress-modal';
|
|
25
25
|
export * from './components/progress';
|
|
26
|
+
export * from './components/radio-group';
|
|
26
27
|
export * from './components/resizable';
|
|
27
28
|
export * from './components/select';
|
|
28
29
|
export * from './components/skeleton-pane';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nexport * from './components/accordion';\nexport * from './components/alert';\nexport * from './components/aspect-ratio';\nexport * from './components/badge';\nexport * from './components/breadcrumb';\nexport * from './components/button';\nexport * from './components/calendar';\nexport * from './components/card';\nexport * from './components/checkbox';\nexport * from './components/collapsible';\nexport * from './components/dialog';\nexport * from './components/dropdown-menu';\nexport * from './components/editable-text';\nexport * from './components/error-boundary';\nexport * from './components/error-pane';\nexport * from './components/form';\nexport * from './components/input';\nexport * from './components/label';\nexport * from './components/popover';\nexport * from './components/progress-modal';\nexport * from './components/progress';\nexport * from './components/resizable';\nexport * from './components/select';\nexport * from './components/skeleton-pane';\nexport * from './components/skeleton';\nexport * from './components/slider';\nexport * from './components/spinner-pane';\nexport * from './components/spinner';\nexport * from './components/switch';\nexport * from './components/table';\nexport * from './components/tabs';\nexport * from './components/textarea';\nexport * from './components/theme-switch';\nexport * from './components/toast';\nexport * from './components/toaster';\nexport * from './components/toggle-group';\nexport * from './components/toggle';\nexport * from './components/tooltip';\nexport * from './components/tree';\nexport * from './hooks/use-toast';\nexport * from './hooks/useAspectRatioDimensions';\nexport * from './hooks/useDisclosure';\nexport * from './hooks/useRelativeCoordinates';\nexport * from './lib/utils';\nexport * from './tailwind-preset';\nexport * from './theme/theme-provider';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nexport * from './components/accordion';\nexport * from './components/alert';\nexport * from './components/aspect-ratio';\nexport * from './components/badge';\nexport * from './components/breadcrumb';\nexport * from './components/button';\nexport * from './components/calendar';\nexport * from './components/card';\nexport * from './components/checkbox';\nexport * from './components/collapsible';\nexport * from './components/dialog';\nexport * from './components/dropdown-menu';\nexport * from './components/editable-text';\nexport * from './components/error-boundary';\nexport * from './components/error-pane';\nexport * from './components/form';\nexport * from './components/input';\nexport * from './components/label';\nexport * from './components/popover';\nexport * from './components/progress-modal';\nexport * from './components/progress';\nexport * from './components/radio-group';\nexport * from './components/resizable';\nexport * from './components/select';\nexport * from './components/skeleton-pane';\nexport * from './components/skeleton';\nexport * from './components/slider';\nexport * from './components/spinner-pane';\nexport * from './components/spinner';\nexport * from './components/switch';\nexport * from './components/table';\nexport * from './components/tabs';\nexport * from './components/textarea';\nexport * from './components/theme-switch';\nexport * from './components/toast';\nexport * from './components/toaster';\nexport * from './components/toggle-group';\nexport * from './components/toggle';\nexport * from './components/tooltip';\nexport * from './components/tree';\nexport * from './hooks/use-toast';\nexport * from './hooks/useAspectRatioDimensions';\nexport * from './hooks/useDisclosure';\nexport * from './hooks/useRelativeCoordinates';\nexport * from './lib/utils';\nexport * from './tailwind-preset';\nexport * from './theme/theme-provider';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Ilya Boyandin <ilya@boyandin.me>",
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
"@radix-ui/react-label": "^2.1.1",
|
|
37
37
|
"@radix-ui/react-popover": "^1.1.4",
|
|
38
38
|
"@radix-ui/react-progress": "^1.1.1",
|
|
39
|
+
"@radix-ui/react-radio-group": "^1.2.4",
|
|
39
40
|
"@radix-ui/react-select": "^2.1.4",
|
|
40
41
|
"@radix-ui/react-slider": "^1.2.3",
|
|
41
42
|
"@radix-ui/react-slot": "^1.1.1",
|
|
@@ -62,5 +63,5 @@
|
|
|
62
63
|
"autoprefixer": "^10.4.20",
|
|
63
64
|
"tailwindcss": "^3.4.17"
|
|
64
65
|
},
|
|
65
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "e95db819427f8f783db46e80899f3209b8474c5f"
|
|
66
67
|
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import * as RechartsPrimitive from 'recharts';
|
|
3
|
-
declare const THEMES: {
|
|
4
|
-
readonly light: "";
|
|
5
|
-
readonly dark: ".dark";
|
|
6
|
-
};
|
|
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> & {
|
|
20
|
-
config: ChartConfig;
|
|
21
|
-
children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
|
|
22
|
-
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
-
declare const ChartStyle: ({ id, config }: {
|
|
24
|
-
id: string;
|
|
25
|
-
config: ChartConfig;
|
|
26
|
-
}) => import("react/jsx-runtime").JSX.Element | null;
|
|
27
|
-
declare const ChartTooltip: any;
|
|
28
|
-
declare const ChartTooltipContent: React.ForwardRefExoticComponent<any>;
|
|
29
|
-
declare const ChartLegend: any;
|
|
30
|
-
declare const ChartLegendContent: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
|
|
31
|
-
hideIcon?: boolean;
|
|
32
|
-
nameKey?: string;
|
|
33
|
-
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
34
|
-
export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle, };
|
|
35
|
-
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"AAEA,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,CACA;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAC,GAC/B;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;KAAC,CAC9D;CACF,CAAC;AAkBF,QAAA,MAAM,cAAc;YAGR,WAAW;cACT,KAAK,CAAC,cAAc,CAC5B,OAAO,iBAAiB,CAAC,mBAAmB,CAC7C,CAAC,UAAU,CAAC;gDAwBf,CAAC;AAGH,QAAA,MAAM,UAAU,GAAI,gBAAc;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,mDA+BlE,CAAC;AAEF,QAAA,MAAM,YAAY,KAA4B,CAAC;AAE/C,QAAA,MAAM,mBAAmB,sCAuJxB,CAAC;AAGF,QAAA,MAAM,WAAW,KAA2B,CAAC;AAE7C,QAAA,MAAM,kBAAkB;eAIP,OAAO;cACR,MAAM;gDAkDrB,CAAC;AA0CF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,UAAU,GACX,CAAC"}
|
package/dist/components/chart.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import * as RechartsPrimitive from 'recharts';
|
|
5
|
-
import { cn } from '../lib/utils';
|
|
6
|
-
// Format: { THEME_NAME: CSS_SELECTOR }
|
|
7
|
-
const THEMES = { light: '', dark: '.dark' };
|
|
8
|
-
const ChartContext = React.createContext(null);
|
|
9
|
-
function useChart() {
|
|
10
|
-
const context = React.useContext(ChartContext);
|
|
11
|
-
if (!context) {
|
|
12
|
-
throw new Error('useChart must be used within a <ChartContainer />');
|
|
13
|
-
}
|
|
14
|
-
return context;
|
|
15
|
-
}
|
|
16
|
-
const ChartContainer = React.forwardRef(({ id, className, children, config, ...props }, ref) => {
|
|
17
|
-
const uniqueId = React.useId();
|
|
18
|
-
const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;
|
|
19
|
-
return (_jsx(ChartContext.Provider, { value: { config }, children: _jsxs("div", { "data-chart": chartId, ref: ref, 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[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none", className), ...props, children: [_jsx(ChartStyle, { id: chartId, config: config }), _jsx(RechartsPrimitive.ResponsiveContainer, { children: children })] }) }));
|
|
20
|
-
});
|
|
21
|
-
ChartContainer.displayName = 'Chart';
|
|
22
|
-
const ChartStyle = ({ id, config }) => {
|
|
23
|
-
const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);
|
|
24
|
-
if (!colorConfig.length) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
return (_jsx("style", { dangerouslySetInnerHTML: {
|
|
28
|
-
__html: Object.entries(THEMES)
|
|
29
|
-
.map(([theme, prefix]) => `
|
|
30
|
-
${prefix} [data-chart=${id}] {
|
|
31
|
-
${colorConfig
|
|
32
|
-
.map(([key, itemConfig]) => {
|
|
33
|
-
const color = itemConfig.theme?.[theme] ||
|
|
34
|
-
itemConfig.color;
|
|
35
|
-
return color ? ` --color-${key}: ${color};` : null;
|
|
36
|
-
})
|
|
37
|
-
.join('\n')}
|
|
38
|
-
}
|
|
39
|
-
`)
|
|
40
|
-
.join('\n'),
|
|
41
|
-
} }));
|
|
42
|
-
};
|
|
43
|
-
const ChartTooltip = RechartsPrimitive.Tooltip;
|
|
44
|
-
const ChartTooltipContent = React.forwardRef(({ active, payload, className, indicator = 'dot', hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }, ref) => {
|
|
45
|
-
const { config } = useChart();
|
|
46
|
-
const tooltipLabel = React.useMemo(() => {
|
|
47
|
-
if (hideLabel || !payload?.length) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
const [item] = payload;
|
|
51
|
-
const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;
|
|
52
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
53
|
-
const value = !labelKey && typeof label === 'string'
|
|
54
|
-
? config[label]?.label || label
|
|
55
|
-
: itemConfig?.label;
|
|
56
|
-
if (labelFormatter) {
|
|
57
|
-
return (_jsx("div", { className: cn('font-medium', labelClassName), children: labelFormatter(value, payload) }));
|
|
58
|
-
}
|
|
59
|
-
if (!value) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
return _jsx("div", { className: cn('font-medium', labelClassName), children: value });
|
|
63
|
-
}, [
|
|
64
|
-
label,
|
|
65
|
-
labelFormatter,
|
|
66
|
-
payload,
|
|
67
|
-
hideLabel,
|
|
68
|
-
labelClassName,
|
|
69
|
-
config,
|
|
70
|
-
labelKey,
|
|
71
|
-
]);
|
|
72
|
-
if (!active || !payload?.length) {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
const nestLabel = payload.length === 1 && indicator !== 'dot';
|
|
76
|
-
return (_jsxs("div", { ref: ref, 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), children: [!nestLabel ? tooltipLabel : null, _jsx("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
|
|
77
|
-
const key = `${nameKey || item.name || item.dataKey || 'value'}`;
|
|
78
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
79
|
-
const indicatorColor = color || item.payload.fill || item.color;
|
|
80
|
-
return (_jsx("div", { className: cn('[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5', indicator === 'dot' && 'items-center'), children: formatter && item?.value !== undefined && item.name ? (formatter(item.value, item.name, item, index, item.payload)) : (_jsxs(_Fragment, { children: [itemConfig?.icon ? (_jsx(itemConfig.icon, {})) : (!hideIndicator && (_jsx("div", { className: cn('shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]', {
|
|
81
|
-
'h-2.5 w-2.5': indicator === 'dot',
|
|
82
|
-
'w-1': indicator === 'line',
|
|
83
|
-
'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',
|
|
84
|
-
'my-0.5': nestLabel && indicator === 'dashed',
|
|
85
|
-
}), style: {
|
|
86
|
-
'--color-bg': indicatorColor,
|
|
87
|
-
'--color-border': indicatorColor,
|
|
88
|
-
} }))), _jsxs("div", { className: cn('flex flex-1 justify-between leading-none', nestLabel ? 'items-end' : 'items-center'), children: [_jsxs("div", { className: "grid gap-1.5", children: [nestLabel ? tooltipLabel : null, _jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })] }), item.value && (_jsx("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() }))] })] })) }, item.dataKey));
|
|
89
|
-
}) })] }));
|
|
90
|
-
});
|
|
91
|
-
ChartTooltipContent.displayName = 'ChartTooltip';
|
|
92
|
-
const ChartLegend = RechartsPrimitive.Legend;
|
|
93
|
-
const ChartLegendContent = React.forwardRef(({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {
|
|
94
|
-
const { config } = useChart();
|
|
95
|
-
if (!payload?.length) {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
return (_jsx("div", { ref: ref, className: cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className), children: payload.map((item) => {
|
|
99
|
-
const key = `${nameKey || item.dataKey || 'value'}`;
|
|
100
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
101
|
-
return (_jsxs("div", { className: cn('[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3'), children: [itemConfig?.icon && !hideIcon ? (_jsx(itemConfig.icon, {})) : (_jsx("div", { className: "h-2 w-2 shrink-0 rounded-[2px]", style: {
|
|
102
|
-
backgroundColor: item.color,
|
|
103
|
-
} })), itemConfig?.label] }, item.value));
|
|
104
|
-
}) }));
|
|
105
|
-
});
|
|
106
|
-
ChartLegendContent.displayName = 'ChartLegend';
|
|
107
|
-
// Helper to extract item config from a payload.
|
|
108
|
-
function getPayloadConfigFromPayload(config, payload, key) {
|
|
109
|
-
if (typeof payload !== 'object' || payload === null) {
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
const payloadPayload = 'payload' in payload &&
|
|
113
|
-
typeof payload.payload === 'object' &&
|
|
114
|
-
payload.payload !== null
|
|
115
|
-
? payload.payload
|
|
116
|
-
: undefined;
|
|
117
|
-
let configLabelKey = key;
|
|
118
|
-
if (key in payload &&
|
|
119
|
-
typeof payload[key] === 'string') {
|
|
120
|
-
configLabelKey = payload[key];
|
|
121
|
-
}
|
|
122
|
-
else if (payloadPayload &&
|
|
123
|
-
key in payloadPayload &&
|
|
124
|
-
typeof payloadPayload[key] === 'string') {
|
|
125
|
-
configLabelKey = payloadPayload[key];
|
|
126
|
-
}
|
|
127
|
-
return configLabelKey in config
|
|
128
|
-
? config[configLabelKey]
|
|
129
|
-
: config[key];
|
|
130
|
-
}
|
|
131
|
-
export { ChartContainer, ChartTooltip, ChartTooltipContent, ChartLegend, ChartLegendContent, ChartStyle, };
|
|
132
|
-
//# sourceMappingURL=chart.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport {cn} from '../lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = {light: '', dark: '.dark'} as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | {color?: string; theme?: never}\n | {color?: never; theme: Record<keyof typeof THEMES, string>}\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n }\n>(({id, className, children, config, ...props}, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{config}}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\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[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nChartContainer.displayName = 'Chart';\n\nconst ChartStyle = ({id, config}: {id: string; config: ChartConfig}) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme || config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref,\n ) => {\n const {config} = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n ref={ref}\n className={cn(\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',\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]',\n {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n },\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center',\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n },\n);\nChartTooltipContent.displayName = 'ChartTooltip';\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> &\n Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(\n (\n {className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey},\n ref,\n ) => {\n const {config} = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n '[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n },\n);\nChartLegendContent.displayName = 'ChartLegend';\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"]}
|