@e-infra/design-system 0.0.2 → 0.0.3
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/README.md +1 -1
- package/dist/index.cjs.js +4545 -295
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs2.js +248 -295
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs3.js +248 -295
- package/dist/index.cjs3.js.map +1 -1
- package/dist/index.es.js +4255 -48
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +1 -48
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es3.js +1 -48
- package/dist/index.es3.js.map +1 -1
- package/package.json +2 -2
- package/dist/index.cjs10.js +0 -105
- package/dist/index.cjs10.js.map +0 -1
- package/dist/index.cjs11.js +0 -56
- package/dist/index.cjs11.js.map +0 -1
- package/dist/index.cjs12.js +0 -206
- package/dist/index.cjs12.js.map +0 -1
- package/dist/index.cjs13.js +0 -92
- package/dist/index.cjs13.js.map +0 -1
- package/dist/index.cjs14.js +0 -216
- package/dist/index.cjs14.js.map +0 -1
- package/dist/index.cjs15.js +0 -261
- package/dist/index.cjs15.js.map +0 -1
- package/dist/index.cjs16.js +0 -50
- package/dist/index.cjs16.js.map +0 -1
- package/dist/index.cjs17.js +0 -53
- package/dist/index.cjs17.js.map +0 -1
- package/dist/index.cjs18.js +0 -173
- package/dist/index.cjs18.js.map +0 -1
- package/dist/index.cjs19.js +0 -242
- package/dist/index.cjs19.js.map +0 -1
- package/dist/index.cjs20.js +0 -156
- package/dist/index.cjs20.js.map +0 -1
- package/dist/index.cjs21.js +0 -130
- package/dist/index.cjs21.js.map +0 -1
- package/dist/index.cjs22.js +0 -251
- package/dist/index.cjs22.js.map +0 -1
- package/dist/index.cjs23.js +0 -134
- package/dist/index.cjs23.js.map +0 -1
- package/dist/index.cjs24.js +0 -57
- package/dist/index.cjs24.js.map +0 -1
- package/dist/index.cjs25.js +0 -23
- package/dist/index.cjs25.js.map +0 -1
- package/dist/index.cjs26.js +0 -85
- package/dist/index.cjs26.js.map +0 -1
- package/dist/index.cjs27.js +0 -41
- package/dist/index.cjs27.js.map +0 -1
- package/dist/index.cjs28.js +0 -271
- package/dist/index.cjs28.js.map +0 -1
- package/dist/index.cjs29.js +0 -189
- package/dist/index.cjs29.js.map +0 -1
- package/dist/index.cjs30.js +0 -120
- package/dist/index.cjs30.js.map +0 -1
- package/dist/index.cjs31.js +0 -63
- package/dist/index.cjs31.js.map +0 -1
- package/dist/index.cjs32.js +0 -51
- package/dist/index.cjs32.js.map +0 -1
- package/dist/index.cjs33.js +0 -64
- package/dist/index.cjs33.js.map +0 -1
- package/dist/index.cjs34.js +0 -49
- package/dist/index.cjs34.js.map +0 -1
- package/dist/index.cjs35.js +0 -79
- package/dist/index.cjs35.js.map +0 -1
- package/dist/index.cjs36.js +0 -198
- package/dist/index.cjs36.js.map +0 -1
- package/dist/index.cjs37.js +0 -45
- package/dist/index.cjs37.js.map +0 -1
- package/dist/index.cjs38.js +0 -146
- package/dist/index.cjs38.js.map +0 -1
- package/dist/index.cjs39.js +0 -657
- package/dist/index.cjs39.js.map +0 -1
- package/dist/index.cjs4.js +0 -83
- package/dist/index.cjs4.js.map +0 -1
- package/dist/index.cjs40.js +0 -16
- package/dist/index.cjs40.js.map +0 -1
- package/dist/index.cjs41.js +0 -82
- package/dist/index.cjs41.js.map +0 -1
- package/dist/index.cjs42.js +0 -33
- package/dist/index.cjs42.js.map +0 -1
- package/dist/index.cjs43.js +0 -50
- package/dist/index.cjs43.js.map +0 -1
- package/dist/index.cjs44.js +0 -117
- package/dist/index.cjs44.js.map +0 -1
- package/dist/index.cjs45.js +0 -86
- package/dist/index.cjs45.js.map +0 -1
- package/dist/index.cjs46.js +0 -20
- package/dist/index.cjs46.js.map +0 -1
- package/dist/index.cjs47.js +0 -63
- package/dist/index.cjs47.js.map +0 -1
- package/dist/index.cjs48.js +0 -88
- package/dist/index.cjs48.js.map +0 -1
- package/dist/index.cjs49.js +0 -74
- package/dist/index.cjs49.js.map +0 -1
- package/dist/index.cjs5.js +0 -68
- package/dist/index.cjs5.js.map +0 -1
- package/dist/index.cjs50.js +0 -9
- package/dist/index.cjs50.js.map +0 -1
- package/dist/index.cjs51.js +0 -38
- package/dist/index.cjs51.js.map +0 -1
- package/dist/index.cjs6.js +0 -166
- package/dist/index.cjs6.js.map +0 -1
- package/dist/index.cjs7.js +0 -29
- package/dist/index.cjs7.js.map +0 -1
- package/dist/index.cjs8.js +0 -72
- package/dist/index.cjs8.js.map +0 -1
- package/dist/index.cjs9.js +0 -42
- package/dist/index.cjs9.js.map +0 -1
- package/dist/index.es10.js +0 -105
- package/dist/index.es10.js.map +0 -1
- package/dist/index.es11.js +0 -56
- package/dist/index.es11.js.map +0 -1
- package/dist/index.es12.js +0 -189
- package/dist/index.es12.js.map +0 -1
- package/dist/index.es13.js +0 -92
- package/dist/index.es13.js.map +0 -1
- package/dist/index.es14.js +0 -199
- package/dist/index.es14.js.map +0 -1
- package/dist/index.es15.js +0 -243
- package/dist/index.es15.js.map +0 -1
- package/dist/index.es16.js +0 -33
- package/dist/index.es16.js.map +0 -1
- package/dist/index.es17.js +0 -36
- package/dist/index.es17.js.map +0 -1
- package/dist/index.es18.js +0 -173
- package/dist/index.es18.js.map +0 -1
- package/dist/index.es19.js +0 -225
- package/dist/index.es19.js.map +0 -1
- package/dist/index.es20.js +0 -139
- package/dist/index.es20.js.map +0 -1
- package/dist/index.es21.js +0 -130
- package/dist/index.es21.js.map +0 -1
- package/dist/index.es22.js +0 -234
- package/dist/index.es22.js.map +0 -1
- package/dist/index.es23.js +0 -117
- package/dist/index.es23.js.map +0 -1
- package/dist/index.es24.js +0 -40
- package/dist/index.es24.js.map +0 -1
- package/dist/index.es25.js +0 -23
- package/dist/index.es25.js.map +0 -1
- package/dist/index.es26.js +0 -68
- package/dist/index.es26.js.map +0 -1
- package/dist/index.es27.js +0 -24
- package/dist/index.es27.js.map +0 -1
- package/dist/index.es28.js +0 -254
- package/dist/index.es28.js.map +0 -1
- package/dist/index.es29.js +0 -172
- package/dist/index.es29.js.map +0 -1
- package/dist/index.es30.js +0 -120
- package/dist/index.es30.js.map +0 -1
- package/dist/index.es31.js +0 -46
- package/dist/index.es31.js.map +0 -1
- package/dist/index.es32.js +0 -34
- package/dist/index.es32.js.map +0 -1
- package/dist/index.es33.js +0 -47
- package/dist/index.es33.js.map +0 -1
- package/dist/index.es34.js +0 -49
- package/dist/index.es34.js.map +0 -1
- package/dist/index.es35.js +0 -62
- package/dist/index.es35.js.map +0 -1
- package/dist/index.es36.js +0 -181
- package/dist/index.es36.js.map +0 -1
- package/dist/index.es37.js +0 -28
- package/dist/index.es37.js.map +0 -1
- package/dist/index.es38.js +0 -129
- package/dist/index.es38.js.map +0 -1
- package/dist/index.es39.js +0 -640
- package/dist/index.es39.js.map +0 -1
- package/dist/index.es4.js +0 -66
- package/dist/index.es4.js.map +0 -1
- package/dist/index.es40.js +0 -16
- package/dist/index.es40.js.map +0 -1
- package/dist/index.es41.js +0 -64
- package/dist/index.es41.js.map +0 -1
- package/dist/index.es42.js +0 -33
- package/dist/index.es42.js.map +0 -1
- package/dist/index.es43.js +0 -33
- package/dist/index.es43.js.map +0 -1
- package/dist/index.es44.js +0 -117
- package/dist/index.es44.js.map +0 -1
- package/dist/index.es45.js +0 -69
- package/dist/index.es45.js.map +0 -1
- package/dist/index.es46.js +0 -20
- package/dist/index.es46.js.map +0 -1
- package/dist/index.es47.js +0 -46
- package/dist/index.es47.js.map +0 -1
- package/dist/index.es48.js +0 -70
- package/dist/index.es48.js.map +0 -1
- package/dist/index.es49.js +0 -57
- package/dist/index.es49.js.map +0 -1
- package/dist/index.es5.js +0 -68
- package/dist/index.es5.js.map +0 -1
- package/dist/index.es50.js +0 -9
- package/dist/index.es50.js.map +0 -1
- package/dist/index.es51.js +0 -21
- package/dist/index.es51.js.map +0 -1
- package/dist/index.es6.js +0 -149
- package/dist/index.es6.js.map +0 -1
- package/dist/index.es7.js +0 -12
- package/dist/index.es7.js.map +0 -1
- package/dist/index.es8.js +0 -55
- package/dist/index.es8.js.map +0 -1
- package/dist/index.es9.js +0 -42
- package/dist/index.es9.js.map +0 -1
package/dist/index.cjs13.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
require("react");
|
|
5
|
-
const utils = require("./index.cjs50.js");
|
|
6
|
-
function Card({ className, ...props }) {
|
|
7
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8
|
-
"div",
|
|
9
|
-
{
|
|
10
|
-
"data-slot": "card",
|
|
11
|
-
className: utils.cn(
|
|
12
|
-
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
13
|
-
className
|
|
14
|
-
),
|
|
15
|
-
...props
|
|
16
|
-
}
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
function CardHeader({ className, ...props }) {
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
-
"div",
|
|
22
|
-
{
|
|
23
|
-
"data-slot": "card-header",
|
|
24
|
-
className: utils.cn(
|
|
25
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
26
|
-
className
|
|
27
|
-
),
|
|
28
|
-
...props
|
|
29
|
-
}
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
function CardTitle({ className, ...props }) {
|
|
33
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
"data-slot": "card-title",
|
|
37
|
-
className: utils.cn("leading-none font-semibold", className),
|
|
38
|
-
...props
|
|
39
|
-
}
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
function CardDescription({ className, ...props }) {
|
|
43
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
-
"div",
|
|
45
|
-
{
|
|
46
|
-
"data-slot": "card-description",
|
|
47
|
-
className: utils.cn("text-muted-foreground text-sm", className),
|
|
48
|
-
...props
|
|
49
|
-
}
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
function CardAction({ className, ...props }) {
|
|
53
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
-
"div",
|
|
55
|
-
{
|
|
56
|
-
"data-slot": "card-action",
|
|
57
|
-
className: utils.cn(
|
|
58
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
59
|
-
className
|
|
60
|
-
),
|
|
61
|
-
...props
|
|
62
|
-
}
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
function CardContent({ className, ...props }) {
|
|
66
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
-
"div",
|
|
68
|
-
{
|
|
69
|
-
"data-slot": "card-content",
|
|
70
|
-
className: utils.cn("px-6", className),
|
|
71
|
-
...props
|
|
72
|
-
}
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
function CardFooter({ className, ...props }) {
|
|
76
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
77
|
-
"div",
|
|
78
|
-
{
|
|
79
|
-
"data-slot": "card-footer",
|
|
80
|
-
className: utils.cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
81
|
-
...props
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
exports.Card = Card;
|
|
86
|
-
exports.CardAction = CardAction;
|
|
87
|
-
exports.CardContent = CardContent;
|
|
88
|
-
exports.CardDescription = CardDescription;
|
|
89
|
-
exports.CardFooter = CardFooter;
|
|
90
|
-
exports.CardHeader = CardHeader;
|
|
91
|
-
exports.CardTitle = CardTitle;
|
|
92
|
-
//# sourceMappingURL=index.cjs13.js.map
|
package/dist/index.cjs13.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs13.js","sources":["../lib/components/ui/card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n"],"names":["jsx","cn"],"mappings":";;;;;AAIA,SAAS,KAAK,EAAE,WAAW,GAAG,SAAsC;AAClE,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;AACvE,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA,GAAG,8BAA8B,SAAS;AAAA,MACpD,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;AAC7E,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA,GAAG,iCAAiC,SAAS;AAAA,MACvD,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA,GAAG,QAAQ,SAAS;AAAA,MAC9B,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,MAAAA,GAAG,2CAA2C,SAAS;AAAA,MACjE,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;;;;;;;;"}
|
package/dist/index.cjs14.js
DELETED
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const React = require("react");
|
|
5
|
-
const useEmblaCarousel = require("embla-carousel-react");
|
|
6
|
-
const lucideReact = require("lucide-react");
|
|
7
|
-
const utils = require("./index.cjs50.js");
|
|
8
|
-
const button = require("./index.cjs11.js");
|
|
9
|
-
function _interopNamespaceDefault(e) {
|
|
10
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
11
|
-
if (e) {
|
|
12
|
-
for (const k in e) {
|
|
13
|
-
if (k !== "default") {
|
|
14
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: () => e[k]
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
n.default = e;
|
|
23
|
-
return Object.freeze(n);
|
|
24
|
-
}
|
|
25
|
-
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
26
|
-
const CarouselContext = React__namespace.createContext(null);
|
|
27
|
-
function useCarousel() {
|
|
28
|
-
const context = React__namespace.useContext(CarouselContext);
|
|
29
|
-
if (!context) {
|
|
30
|
-
throw new Error("useCarousel must be used within a <Carousel />");
|
|
31
|
-
}
|
|
32
|
-
return context;
|
|
33
|
-
}
|
|
34
|
-
function Carousel({
|
|
35
|
-
orientation = "horizontal",
|
|
36
|
-
opts,
|
|
37
|
-
setApi,
|
|
38
|
-
plugins,
|
|
39
|
-
className,
|
|
40
|
-
children,
|
|
41
|
-
...props
|
|
42
|
-
}) {
|
|
43
|
-
const [carouselRef, api] = useEmblaCarousel(
|
|
44
|
-
{
|
|
45
|
-
...opts,
|
|
46
|
-
axis: orientation === "horizontal" ? "x" : "y"
|
|
47
|
-
},
|
|
48
|
-
plugins
|
|
49
|
-
);
|
|
50
|
-
const [canScrollPrev, setCanScrollPrev] = React__namespace.useState(false);
|
|
51
|
-
const [canScrollNext, setCanScrollNext] = React__namespace.useState(false);
|
|
52
|
-
const onSelect = React__namespace.useCallback((api2) => {
|
|
53
|
-
if (!api2) return;
|
|
54
|
-
setCanScrollPrev(api2.canScrollPrev());
|
|
55
|
-
setCanScrollNext(api2.canScrollNext());
|
|
56
|
-
}, []);
|
|
57
|
-
const scrollPrev = React__namespace.useCallback(() => {
|
|
58
|
-
api?.scrollPrev();
|
|
59
|
-
}, [api]);
|
|
60
|
-
const scrollNext = React__namespace.useCallback(() => {
|
|
61
|
-
api?.scrollNext();
|
|
62
|
-
}, [api]);
|
|
63
|
-
const handleKeyDown = React__namespace.useCallback(
|
|
64
|
-
(event) => {
|
|
65
|
-
if (event.key === "ArrowLeft") {
|
|
66
|
-
event.preventDefault();
|
|
67
|
-
scrollPrev();
|
|
68
|
-
} else if (event.key === "ArrowRight") {
|
|
69
|
-
event.preventDefault();
|
|
70
|
-
scrollNext();
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
[scrollPrev, scrollNext]
|
|
74
|
-
);
|
|
75
|
-
React__namespace.useEffect(() => {
|
|
76
|
-
if (!api || !setApi) return;
|
|
77
|
-
setApi(api);
|
|
78
|
-
}, [api, setApi]);
|
|
79
|
-
React__namespace.useEffect(() => {
|
|
80
|
-
if (!api) return;
|
|
81
|
-
onSelect(api);
|
|
82
|
-
api.on("reInit", onSelect);
|
|
83
|
-
api.on("select", onSelect);
|
|
84
|
-
return () => {
|
|
85
|
-
api?.off("select", onSelect);
|
|
86
|
-
};
|
|
87
|
-
}, [api, onSelect]);
|
|
88
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
-
CarouselContext.Provider,
|
|
90
|
-
{
|
|
91
|
-
value: {
|
|
92
|
-
carouselRef,
|
|
93
|
-
api,
|
|
94
|
-
opts,
|
|
95
|
-
orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
|
|
96
|
-
scrollPrev,
|
|
97
|
-
scrollNext,
|
|
98
|
-
canScrollPrev,
|
|
99
|
-
canScrollNext
|
|
100
|
-
},
|
|
101
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
-
"div",
|
|
103
|
-
{
|
|
104
|
-
onKeyDownCapture: handleKeyDown,
|
|
105
|
-
className: utils.cn("relative", className),
|
|
106
|
-
role: "region",
|
|
107
|
-
"aria-roledescription": "carousel",
|
|
108
|
-
"data-slot": "carousel",
|
|
109
|
-
...props,
|
|
110
|
-
children
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
}
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
function CarouselContent({ className, ...props }) {
|
|
117
|
-
const { carouselRef, orientation } = useCarousel();
|
|
118
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
-
"div",
|
|
120
|
-
{
|
|
121
|
-
ref: carouselRef,
|
|
122
|
-
className: "overflow-hidden",
|
|
123
|
-
"data-slot": "carousel-content",
|
|
124
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
-
"div",
|
|
126
|
-
{
|
|
127
|
-
className: utils.cn(
|
|
128
|
-
"flex",
|
|
129
|
-
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
130
|
-
className
|
|
131
|
-
),
|
|
132
|
-
...props
|
|
133
|
-
}
|
|
134
|
-
)
|
|
135
|
-
}
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
function CarouselItem({ className, ...props }) {
|
|
139
|
-
const { orientation } = useCarousel();
|
|
140
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
141
|
-
"div",
|
|
142
|
-
{
|
|
143
|
-
role: "group",
|
|
144
|
-
"aria-roledescription": "slide",
|
|
145
|
-
"data-slot": "carousel-item",
|
|
146
|
-
className: utils.cn(
|
|
147
|
-
"min-w-0 shrink-0 grow-0 basis-full",
|
|
148
|
-
orientation === "horizontal" ? "pl-4" : "pt-4",
|
|
149
|
-
className
|
|
150
|
-
),
|
|
151
|
-
...props
|
|
152
|
-
}
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
function CarouselPrevious({
|
|
156
|
-
className,
|
|
157
|
-
variant = "outline",
|
|
158
|
-
size = "icon",
|
|
159
|
-
...props
|
|
160
|
-
}) {
|
|
161
|
-
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
162
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
163
|
-
button.Button,
|
|
164
|
-
{
|
|
165
|
-
"data-slot": "carousel-previous",
|
|
166
|
-
variant,
|
|
167
|
-
size,
|
|
168
|
-
className: utils.cn(
|
|
169
|
-
"absolute size-8 rounded-full",
|
|
170
|
-
orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
171
|
-
className
|
|
172
|
-
),
|
|
173
|
-
disabled: !canScrollPrev,
|
|
174
|
-
onClick: scrollPrev,
|
|
175
|
-
...props,
|
|
176
|
-
children: [
|
|
177
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, {}),
|
|
178
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })
|
|
179
|
-
]
|
|
180
|
-
}
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
function CarouselNext({
|
|
184
|
-
className,
|
|
185
|
-
variant = "outline",
|
|
186
|
-
size = "icon",
|
|
187
|
-
...props
|
|
188
|
-
}) {
|
|
189
|
-
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
190
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
191
|
-
button.Button,
|
|
192
|
-
{
|
|
193
|
-
"data-slot": "carousel-next",
|
|
194
|
-
variant,
|
|
195
|
-
size,
|
|
196
|
-
className: utils.cn(
|
|
197
|
-
"absolute size-8 rounded-full",
|
|
198
|
-
orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
199
|
-
className
|
|
200
|
-
),
|
|
201
|
-
disabled: !canScrollNext,
|
|
202
|
-
onClick: scrollNext,
|
|
203
|
-
...props,
|
|
204
|
-
children: [
|
|
205
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, {}),
|
|
206
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })
|
|
207
|
-
]
|
|
208
|
-
}
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
exports.Carousel = Carousel;
|
|
212
|
-
exports.CarouselContent = CarouselContent;
|
|
213
|
-
exports.CarouselItem = CarouselItem;
|
|
214
|
-
exports.CarouselNext = CarouselNext;
|
|
215
|
-
exports.CarouselPrevious = CarouselPrevious;
|
|
216
|
-
//# sourceMappingURL=index.cjs14.js.map
|
package/dist/index.cjs14.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs14.js","sources":["../lib/components/ui/carousel.tsx"],"sourcesContent":["import * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext]\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\n >\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\",\n className\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n"],"names":["React","api","jsx","cn","jsxs","Button","ArrowLeft","ArrowRight"],"mappings":"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"}
|
package/dist/index.cjs15.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const React = require("react");
|
|
5
|
-
const RechartsPrimitive = require("recharts");
|
|
6
|
-
const utils = require("./index.cjs50.js");
|
|
7
|
-
function _interopNamespaceDefault(e) {
|
|
8
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
|
-
if (e) {
|
|
10
|
-
for (const k in e) {
|
|
11
|
-
if (k !== "default") {
|
|
12
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: () => e[k]
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
n.default = e;
|
|
21
|
-
return Object.freeze(n);
|
|
22
|
-
}
|
|
23
|
-
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
24
|
-
const RechartsPrimitive__namespace = /* @__PURE__ */ _interopNamespaceDefault(RechartsPrimitive);
|
|
25
|
-
const THEMES = { light: "", dark: ".dark" };
|
|
26
|
-
const ChartContext = React__namespace.createContext(null);
|
|
27
|
-
function useChart() {
|
|
28
|
-
const context = React__namespace.useContext(ChartContext);
|
|
29
|
-
if (!context) {
|
|
30
|
-
throw new Error("useChart must be used within a <ChartContainer />");
|
|
31
|
-
}
|
|
32
|
-
return context;
|
|
33
|
-
}
|
|
34
|
-
function ChartContainer({
|
|
35
|
-
id,
|
|
36
|
-
className,
|
|
37
|
-
children,
|
|
38
|
-
config,
|
|
39
|
-
...props
|
|
40
|
-
}) {
|
|
41
|
-
const uniqueId = React__namespace.useId();
|
|
42
|
-
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
43
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44
|
-
"div",
|
|
45
|
-
{
|
|
46
|
-
"data-slot": "chart",
|
|
47
|
-
"data-chart": chartId,
|
|
48
|
-
className: utils.cn(
|
|
49
|
-
"[&_.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",
|
|
50
|
-
className
|
|
51
|
-
),
|
|
52
|
-
...props,
|
|
53
|
-
children: [
|
|
54
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartStyle, { id: chartId, config }),
|
|
55
|
-
/* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive__namespace.ResponsiveContainer, { children })
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
) });
|
|
59
|
-
}
|
|
60
|
-
const ChartStyle = ({ id, config }) => {
|
|
61
|
-
const colorConfig = Object.entries(config).filter(
|
|
62
|
-
([, config2]) => config2.theme || config2.color
|
|
63
|
-
);
|
|
64
|
-
if (!colorConfig.length) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
-
"style",
|
|
69
|
-
{
|
|
70
|
-
dangerouslySetInnerHTML: {
|
|
71
|
-
__html: Object.entries(THEMES).map(
|
|
72
|
-
([theme, prefix]) => `
|
|
73
|
-
${prefix} [data-chart=${id}] {
|
|
74
|
-
${colorConfig.map(([key, itemConfig]) => {
|
|
75
|
-
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
76
|
-
return color ? ` --color-${key}: ${color};` : null;
|
|
77
|
-
}).join("\n")}
|
|
78
|
-
}
|
|
79
|
-
`
|
|
80
|
-
).join("\n")
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
};
|
|
85
|
-
const ChartTooltip = RechartsPrimitive__namespace.Tooltip;
|
|
86
|
-
function ChartTooltipContent({
|
|
87
|
-
active,
|
|
88
|
-
payload,
|
|
89
|
-
className,
|
|
90
|
-
indicator = "dot",
|
|
91
|
-
hideLabel = false,
|
|
92
|
-
hideIndicator = false,
|
|
93
|
-
label,
|
|
94
|
-
labelFormatter,
|
|
95
|
-
labelClassName,
|
|
96
|
-
formatter,
|
|
97
|
-
color,
|
|
98
|
-
nameKey,
|
|
99
|
-
labelKey
|
|
100
|
-
}) {
|
|
101
|
-
const { config } = useChart();
|
|
102
|
-
const tooltipLabel = React__namespace.useMemo(() => {
|
|
103
|
-
if (hideLabel || !payload?.length) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
const [item] = payload;
|
|
107
|
-
const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
|
|
108
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
109
|
-
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
110
|
-
if (labelFormatter) {
|
|
111
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
112
|
-
}
|
|
113
|
-
if (!value) {
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("font-medium", labelClassName), children: value });
|
|
117
|
-
}, [
|
|
118
|
-
label,
|
|
119
|
-
labelFormatter,
|
|
120
|
-
payload,
|
|
121
|
-
hideLabel,
|
|
122
|
-
labelClassName,
|
|
123
|
-
config,
|
|
124
|
-
labelKey
|
|
125
|
-
]);
|
|
126
|
-
if (!active || !payload?.length) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
130
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
131
|
-
"div",
|
|
132
|
-
{
|
|
133
|
-
className: utils.cn(
|
|
134
|
-
"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",
|
|
135
|
-
className
|
|
136
|
-
),
|
|
137
|
-
children: [
|
|
138
|
-
!nestLabel ? tooltipLabel : null,
|
|
139
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
140
|
-
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
141
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
142
|
-
const indicatorColor = color || item.payload.fill || item.color;
|
|
143
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
144
|
-
"div",
|
|
145
|
-
{
|
|
146
|
-
className: utils.cn(
|
|
147
|
-
"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
|
|
148
|
-
indicator === "dot" && "items-center"
|
|
149
|
-
),
|
|
150
|
-
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
151
|
-
itemConfig?.icon ? /* @__PURE__ */ jsxRuntime.jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsxRuntime.jsx(
|
|
152
|
-
"div",
|
|
153
|
-
{
|
|
154
|
-
className: utils.cn(
|
|
155
|
-
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
156
|
-
{
|
|
157
|
-
"h-2.5 w-2.5": indicator === "dot",
|
|
158
|
-
"w-1": indicator === "line",
|
|
159
|
-
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
160
|
-
"my-0.5": nestLabel && indicator === "dashed"
|
|
161
|
-
}
|
|
162
|
-
),
|
|
163
|
-
style: {
|
|
164
|
-
"--color-bg": indicatorColor,
|
|
165
|
-
"--color-border": indicatorColor
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
),
|
|
169
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
170
|
-
"div",
|
|
171
|
-
{
|
|
172
|
-
className: utils.cn(
|
|
173
|
-
"flex flex-1 justify-between leading-none",
|
|
174
|
-
nestLabel ? "items-end" : "items-center"
|
|
175
|
-
),
|
|
176
|
-
children: [
|
|
177
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1.5", children: [
|
|
178
|
-
nestLabel ? tooltipLabel : null,
|
|
179
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
|
|
180
|
-
] }),
|
|
181
|
-
item.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
|
|
182
|
-
]
|
|
183
|
-
}
|
|
184
|
-
)
|
|
185
|
-
] })
|
|
186
|
-
},
|
|
187
|
-
item.dataKey
|
|
188
|
-
);
|
|
189
|
-
}) })
|
|
190
|
-
]
|
|
191
|
-
}
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
const ChartLegend = RechartsPrimitive__namespace.Legend;
|
|
195
|
-
function ChartLegendContent({
|
|
196
|
-
className,
|
|
197
|
-
hideIcon = false,
|
|
198
|
-
payload,
|
|
199
|
-
verticalAlign = "bottom",
|
|
200
|
-
nameKey
|
|
201
|
-
}) {
|
|
202
|
-
const { config } = useChart();
|
|
203
|
-
if (!payload?.length) {
|
|
204
|
-
return null;
|
|
205
|
-
}
|
|
206
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
207
|
-
"div",
|
|
208
|
-
{
|
|
209
|
-
className: utils.cn(
|
|
210
|
-
"flex items-center justify-center gap-4",
|
|
211
|
-
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
212
|
-
className
|
|
213
|
-
),
|
|
214
|
-
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
215
|
-
const key = `${nameKey || item.dataKey || "value"}`;
|
|
216
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
217
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
218
|
-
"div",
|
|
219
|
-
{
|
|
220
|
-
className: utils.cn(
|
|
221
|
-
"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
|
|
222
|
-
),
|
|
223
|
-
children: [
|
|
224
|
-
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsxRuntime.jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
225
|
-
"div",
|
|
226
|
-
{
|
|
227
|
-
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
228
|
-
style: {
|
|
229
|
-
backgroundColor: item.color
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
),
|
|
233
|
-
itemConfig?.label
|
|
234
|
-
]
|
|
235
|
-
},
|
|
236
|
-
item.value
|
|
237
|
-
);
|
|
238
|
-
})
|
|
239
|
-
}
|
|
240
|
-
);
|
|
241
|
-
}
|
|
242
|
-
function getPayloadConfigFromPayload(config, payload, key) {
|
|
243
|
-
if (typeof payload !== "object" || payload === null) {
|
|
244
|
-
return void 0;
|
|
245
|
-
}
|
|
246
|
-
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
247
|
-
let configLabelKey = key;
|
|
248
|
-
if (key in payload && typeof payload[key] === "string") {
|
|
249
|
-
configLabelKey = payload[key];
|
|
250
|
-
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
251
|
-
configLabelKey = payloadPayload[key];
|
|
252
|
-
}
|
|
253
|
-
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
254
|
-
}
|
|
255
|
-
exports.ChartContainer = ChartContainer;
|
|
256
|
-
exports.ChartLegend = ChartLegend;
|
|
257
|
-
exports.ChartLegendContent = ChartLegendContent;
|
|
258
|
-
exports.ChartStyle = ChartStyle;
|
|
259
|
-
exports.ChartTooltip = ChartTooltip;
|
|
260
|
-
exports.ChartTooltipContent = ChartTooltipContent;
|
|
261
|
-
//# sourceMappingURL=index.cjs15.js.map
|
package/dist/index.cjs15.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs15.js","sources":["../lib/components/ui/chart.tsx"],"sourcesContent":["import * 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\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n}) {\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-slot=\"chart\"\n data-chart={chartId}\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-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\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}\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\nfunction ChartTooltipContent({\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}: 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 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 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\n .filter((item) => item.type !== \"none\")\n .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\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .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\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"],"names":["React","jsxs","cn","jsx","RechartsPrimitive","config","Fragment"],"mappings":"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"}
|