@cryptlex/web-components 1.4.0 → 1.5.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/README.md +4 -13
- package/dist/components/data-table/column-picker.es.js +3 -4
- package/dist/components/data-table/column-picker.es.js.map +1 -1
- package/dist/components/data-table/data-table.es.js +84 -83
- package/dist/components/data-table/data-table.es.js.map +1 -1
- package/dist/components/data-table/page-size.es.js +5 -5
- package/dist/components/data-table/page-size.es.js.map +1 -1
- package/dist/components/data-table/paginator.es.js +25 -31
- package/dist/components/data-table/paginator.es.js.map +1 -1
- package/dist/components/data-table/table-actions.es.js +26 -27
- package/dist/components/data-table/table-actions.es.js.map +1 -1
- package/dist/components/data-table/table-commons.es.js +5 -4
- package/dist/components/data-table/table-commons.es.js.map +1 -1
- package/dist/components/data-table/table-content.es.js +34 -31
- package/dist/components/data-table/table-content.es.js.map +1 -1
- package/dist/components/data-table/table-filter.es.js +42 -45
- package/dist/components/data-table/table-filter.es.js.map +1 -1
- package/dist/components/key-value-card/key-value-card.es.js +17 -14
- package/dist/components/key-value-card/key-value-card.es.js.map +1 -1
- package/dist/components/sidebar/app-layout.es.js +11 -15
- package/dist/components/sidebar/app-layout.es.js.map +1 -1
- package/dist/components/sidebar/breadcrumb.es.js +2 -3
- package/dist/components/sidebar/breadcrumb.es.js.map +1 -1
- package/dist/components/sidebar/nav-main.es.js +18 -18
- package/dist/components/sidebar/nav-main.es.js.map +1 -1
- package/dist/components/static-data-table/data-table.es.js +14 -14
- package/dist/components/static-data-table/data-table.es.js.map +1 -1
- package/dist/components/ui/accordion.es.js +9 -9
- package/dist/components/ui/accordion.es.js.map +1 -1
- package/dist/components/ui/avatar.es.js +16 -16
- package/dist/components/ui/avatar.es.js.map +1 -1
- package/dist/components/ui/badge.es.js +5 -24
- package/dist/components/ui/badge.es.js.map +1 -1
- package/dist/components/ui/breadcrumb.es.js +10 -10
- package/dist/components/ui/breadcrumb.es.js.map +1 -1
- package/dist/components/ui/button.es.js +17 -18
- package/dist/components/ui/button.es.js.map +1 -1
- package/dist/components/ui/calendar.es.js +8 -8
- package/dist/components/ui/calendar.es.js.map +1 -1
- package/dist/components/ui/card.es.js +21 -21
- package/dist/components/ui/card.es.js.map +1 -1
- package/dist/components/ui/chart.es.js +76 -102
- package/dist/components/ui/chart.es.js.map +1 -1
- package/dist/components/ui/checkbox.es.js +13 -19
- package/dist/components/ui/checkbox.es.js.map +1 -1
- package/dist/components/ui/command.es.js +4 -4
- package/dist/components/ui/command.es.js.map +1 -1
- package/dist/components/ui/copy-button.es.js +20 -34
- package/dist/components/ui/copy-button.es.js.map +1 -1
- package/dist/components/ui/dialog.es.js +32 -32
- package/dist/components/ui/dialog.es.js.map +1 -1
- package/dist/components/ui/drawer.es.js +2 -2
- package/dist/components/ui/drawer.es.js.map +1 -1
- package/dist/components/ui/dropdown-menu.es.js +74 -82
- package/dist/components/ui/dropdown-menu.es.js.map +1 -1
- package/dist/components/ui/input-otp.es.js +17 -17
- package/dist/components/ui/input-otp.es.js.map +1 -1
- package/dist/components/ui/input.es.js +7 -7
- package/dist/components/ui/input.es.js.map +1 -1
- package/dist/components/ui/link-button.es.js +6 -6
- package/dist/components/ui/link-button.es.js.map +1 -1
- package/dist/components/ui/mutli-select.es.js +52 -52
- package/dist/components/ui/mutli-select.es.js.map +1 -1
- package/dist/components/ui/navigation-menu.es.js +34 -34
- package/dist/components/ui/navigation-menu.es.js.map +1 -1
- package/dist/components/ui/pagination.es.js +38 -38
- package/dist/components/ui/pagination.es.js.map +1 -1
- package/dist/components/ui/password-input.es.js +13 -13
- package/dist/components/ui/password-input.es.js.map +1 -1
- package/dist/components/ui/radio-group.es.js +11 -11
- package/dist/components/ui/radio-group.es.js.map +1 -1
- package/dist/components/ui/search-input.es.js +11 -11
- package/dist/components/ui/search-input.es.js.map +1 -1
- package/dist/components/ui/select.es.js +31 -49
- package/dist/components/ui/select.es.js.map +1 -1
- package/dist/components/ui/sheet.es.js +17 -17
- package/dist/components/ui/sheet.es.js.map +1 -1
- package/dist/components/ui/sidebar.es.js +2 -3
- package/dist/components/ui/sidebar.es.js.map +1 -1
- package/dist/components/ui/table-page-layout.es.js +2 -2
- package/dist/components/ui/table-page-layout.es.js.map +1 -1
- package/dist/components/ui/table.es.js +37 -37
- package/dist/components/ui/table.es.js.map +1 -1
- package/dist/components/ui/tabs.es.js +2 -2
- package/dist/components/ui/tabs.es.js.map +1 -1
- package/dist/components/ui/tooltip.es.js +8 -8
- package/dist/components/ui/tooltip.es.js.map +1 -1
- package/dist/index.es.d.ts +29 -54
- package/dist/index.es.js +253 -256
- package/dist/utils/index.es.js.map +1 -1
- package/lib/index.css +24 -5
- package/lib/tailwind.preset.css +52 -40
- package/lib/tokens.css +0 -9
- package/package.json +1 -1
|
@@ -1,132 +1,107 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as s, jsxs as
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
5
|
-
import { cn as
|
|
6
|
-
const
|
|
7
|
-
function
|
|
8
|
-
const
|
|
9
|
-
if (!
|
|
2
|
+
import { jsx as s, jsxs as p, Fragment as $ } from "react/jsx-runtime";
|
|
3
|
+
import * as h from "react";
|
|
4
|
+
import * as k from "recharts";
|
|
5
|
+
import { cn as i } from "../../utils/index.es.js";
|
|
6
|
+
const j = h.createContext(null);
|
|
7
|
+
function L() {
|
|
8
|
+
const o = h.useContext(j);
|
|
9
|
+
if (!o)
|
|
10
10
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
11
|
-
return
|
|
11
|
+
return o;
|
|
12
12
|
}
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
return /* @__PURE__ */ s(j.Provider, { value: { config: n }, children: /* @__PURE__ */
|
|
13
|
+
const I = h.forwardRef(({ id: o, className: e, children: t, config: n, ...c }, f) => {
|
|
14
|
+
const u = h.useId(), d = `chart-${o || u.replace(/:/g, "")}`;
|
|
15
|
+
return /* @__PURE__ */ s(j.Provider, { value: { config: n }, children: /* @__PURE__ */ s(
|
|
16
16
|
"div",
|
|
17
17
|
{
|
|
18
|
-
"data-chart":
|
|
18
|
+
"data-chart": d,
|
|
19
19
|
ref: f,
|
|
20
|
-
className:
|
|
21
|
-
"flex aspect-video justify-center
|
|
20
|
+
className: i(
|
|
21
|
+
"flex aspect-video justify-center caption [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted/20 [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden",
|
|
22
22
|
e
|
|
23
23
|
),
|
|
24
|
-
...
|
|
25
|
-
children:
|
|
26
|
-
/* @__PURE__ */ s(E, { id: a, config: n }),
|
|
27
|
-
/* @__PURE__ */ s(C.ResponsiveContainer, { children: t })
|
|
28
|
-
]
|
|
24
|
+
...c,
|
|
25
|
+
children: /* @__PURE__ */ s(k.ResponsiveContainer, { children: t })
|
|
29
26
|
}
|
|
30
27
|
) });
|
|
31
28
|
});
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
const t = Object.entries(e).filter(([n, o]) => o.theme || o.color);
|
|
35
|
-
return t.length ? /* @__PURE__ */ s(
|
|
36
|
-
"style",
|
|
37
|
-
{
|
|
38
|
-
dangerouslySetInnerHTML: {
|
|
39
|
-
__html: Object.entries(I).map(
|
|
40
|
-
([n, o]) => `
|
|
41
|
-
${o} [data-chart=${c}] {
|
|
42
|
-
${t.map(([f, l]) => {
|
|
43
|
-
var h;
|
|
44
|
-
const a = ((h = l.theme) == null ? void 0 : h[n]) || l.color;
|
|
45
|
-
return a ? ` --color-${f}: ${a};` : null;
|
|
46
|
-
}).join(`
|
|
47
|
-
`)}
|
|
48
|
-
}
|
|
49
|
-
`
|
|
50
|
-
).join(`
|
|
51
|
-
`)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
) : null;
|
|
55
|
-
}, q = C.Tooltip, K = g.forwardRef(
|
|
29
|
+
I.displayName = "Chart";
|
|
30
|
+
const M = k.Tooltip, K = h.forwardRef(
|
|
56
31
|
({
|
|
57
|
-
active:
|
|
32
|
+
active: o,
|
|
58
33
|
payload: e,
|
|
59
34
|
className: t,
|
|
60
35
|
indicator: n = "dot",
|
|
61
|
-
hideLabel:
|
|
36
|
+
hideLabel: c = !1,
|
|
62
37
|
hideIndicator: f = !1,
|
|
63
|
-
label:
|
|
64
|
-
labelFormatter:
|
|
65
|
-
labelClassName:
|
|
66
|
-
formatter:
|
|
67
|
-
color:
|
|
68
|
-
nameKey:
|
|
69
|
-
labelKey:
|
|
38
|
+
label: u,
|
|
39
|
+
labelFormatter: d,
|
|
40
|
+
labelClassName: g,
|
|
41
|
+
formatter: l,
|
|
42
|
+
color: R,
|
|
43
|
+
nameKey: P,
|
|
44
|
+
labelKey: w
|
|
70
45
|
}, T) => {
|
|
71
|
-
const { config:
|
|
72
|
-
var
|
|
73
|
-
if (
|
|
46
|
+
const { config: x } = L(), C = h.useMemo(() => {
|
|
47
|
+
var m;
|
|
48
|
+
if (c || !(e != null && e.length))
|
|
74
49
|
return null;
|
|
75
|
-
const [r] = e,
|
|
76
|
-
return
|
|
77
|
-
}, [
|
|
78
|
-
if (!
|
|
50
|
+
const [r] = e, _ = `${w || r.dataKey || r.name || "value"}`, v = N(x, r, _), a = !w && typeof u == "string" ? ((m = x[u]) == null ? void 0 : m.label) || u : v == null ? void 0 : v.label;
|
|
51
|
+
return d ? /* @__PURE__ */ s("div", { className: i("font-medium", g), children: d(a, e) }) : a ? /* @__PURE__ */ s("div", { className: i("font-medium", g), children: a }) : null;
|
|
52
|
+
}, [u, d, e, c, g, x, w]);
|
|
53
|
+
if (!o || !(e != null && e.length))
|
|
79
54
|
return null;
|
|
80
|
-
const
|
|
81
|
-
return /* @__PURE__ */
|
|
55
|
+
const b = e.length === 1 && n !== "dot";
|
|
56
|
+
return /* @__PURE__ */ p(
|
|
82
57
|
"div",
|
|
83
58
|
{
|
|
84
59
|
ref: T,
|
|
85
|
-
className:
|
|
60
|
+
className: i(
|
|
86
61
|
"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-caption shadow-xl",
|
|
87
62
|
t
|
|
88
63
|
),
|
|
89
64
|
children: [
|
|
90
|
-
|
|
91
|
-
/* @__PURE__ */ s("div", { className: "grid gap-1.5", children: e.map((r,
|
|
92
|
-
const
|
|
65
|
+
b ? null : C,
|
|
66
|
+
/* @__PURE__ */ s("div", { className: "grid gap-1.5", children: e.map((r, _) => {
|
|
67
|
+
const v = `${P || r.name || r.dataKey || "value"}`, a = N(x, r, v), m = R || r.payload.fill || r.color;
|
|
93
68
|
return /* @__PURE__ */ s(
|
|
94
69
|
"div",
|
|
95
70
|
{
|
|
96
|
-
className:
|
|
71
|
+
className: i(
|
|
97
72
|
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
98
73
|
n === "dot" && "items-center"
|
|
99
74
|
),
|
|
100
|
-
children:
|
|
101
|
-
|
|
75
|
+
children: l && (r == null ? void 0 : r.value) !== void 0 && r.name ? l(r.value, r.name, r, _, r.payload) : /* @__PURE__ */ p($, { children: [
|
|
76
|
+
a != null && a.icon ? /* @__PURE__ */ s(a.icon, {}) : !f && /* @__PURE__ */ s(
|
|
102
77
|
"div",
|
|
103
78
|
{
|
|
104
|
-
className:
|
|
105
|
-
"shrink-0 rounded-[2px] border-
|
|
79
|
+
className: i(
|
|
80
|
+
"shrink-0 rounded-[2px] border-border bg-background",
|
|
106
81
|
{
|
|
107
82
|
"h-2.5 w-2.5": n === "dot",
|
|
108
83
|
"w-1": n === "line",
|
|
109
84
|
"w-0 border-[1.5px] border-dashed bg-transparent": n === "dashed",
|
|
110
|
-
"my-0.5":
|
|
85
|
+
"my-0.5": b && n === "dashed"
|
|
111
86
|
}
|
|
112
87
|
),
|
|
113
88
|
style: {
|
|
114
|
-
"--color-bg":
|
|
115
|
-
"--color-border":
|
|
89
|
+
"--color-bg": m,
|
|
90
|
+
"--color-border": m
|
|
116
91
|
}
|
|
117
92
|
}
|
|
118
93
|
),
|
|
119
|
-
/* @__PURE__ */
|
|
94
|
+
/* @__PURE__ */ p(
|
|
120
95
|
"div",
|
|
121
96
|
{
|
|
122
|
-
className:
|
|
97
|
+
className: i(
|
|
123
98
|
"flex flex-1 justify-between leading-none",
|
|
124
|
-
|
|
99
|
+
b ? "items-end" : "items-center"
|
|
125
100
|
),
|
|
126
101
|
children: [
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
-
|
|
129
|
-
/* @__PURE__ */ s("span", { className: "text-muted-foreground", children: (
|
|
102
|
+
/* @__PURE__ */ p("div", { className: "grid gap-1.5", children: [
|
|
103
|
+
b ? C : null,
|
|
104
|
+
/* @__PURE__ */ s("span", { className: "text-muted-foreground", children: (a == null ? void 0 : a.label) || r.name })
|
|
130
105
|
] }),
|
|
131
106
|
r.value && /* @__PURE__ */ s("span", { className: "font-mono font-medium tabular-nums text-foreground", children: r.value.toLocaleString() })
|
|
132
107
|
]
|
|
@@ -143,58 +118,57 @@ ${t.map(([f, l]) => {
|
|
|
143
118
|
}
|
|
144
119
|
);
|
|
145
120
|
K.displayName = "ChartTooltip";
|
|
146
|
-
const
|
|
147
|
-
const { config:
|
|
121
|
+
const S = k.Legend, q = h.forwardRef(({ className: o, hideIcon: e = !1, payload: t, verticalAlign: n = "bottom", nameKey: c }, f) => {
|
|
122
|
+
const { config: u } = L();
|
|
148
123
|
return t != null && t.length ? /* @__PURE__ */ s(
|
|
149
124
|
"div",
|
|
150
125
|
{
|
|
151
126
|
ref: f,
|
|
152
|
-
className:
|
|
127
|
+
className: i(
|
|
153
128
|
"flex items-center justify-center gap-4",
|
|
154
129
|
n === "top" ? "pb-3" : "pt-3",
|
|
155
|
-
|
|
130
|
+
o
|
|
156
131
|
),
|
|
157
|
-
children: t.map((
|
|
158
|
-
const
|
|
159
|
-
return /* @__PURE__ */
|
|
132
|
+
children: t.map((d) => {
|
|
133
|
+
const g = `${c || d.dataKey || "value"}`, l = N(u, d, g);
|
|
134
|
+
return /* @__PURE__ */ p(
|
|
160
135
|
"div",
|
|
161
136
|
{
|
|
162
|
-
className:
|
|
137
|
+
className: i(
|
|
163
138
|
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
164
139
|
),
|
|
165
140
|
children: [
|
|
166
|
-
|
|
141
|
+
l != null && l.icon && !e ? /* @__PURE__ */ s(l.icon, {}) : /* @__PURE__ */ s(
|
|
167
142
|
"div",
|
|
168
143
|
{
|
|
169
|
-
className: "
|
|
144
|
+
className: "size-2 shrink-0 rounded-[2px]",
|
|
170
145
|
style: {
|
|
171
|
-
backgroundColor:
|
|
146
|
+
backgroundColor: d.color
|
|
172
147
|
}
|
|
173
148
|
}
|
|
174
149
|
),
|
|
175
|
-
|
|
150
|
+
l == null ? void 0 : l.label
|
|
176
151
|
]
|
|
177
152
|
},
|
|
178
|
-
|
|
153
|
+
d.value
|
|
179
154
|
);
|
|
180
155
|
})
|
|
181
156
|
}
|
|
182
157
|
) : null;
|
|
183
158
|
});
|
|
184
|
-
|
|
185
|
-
function
|
|
159
|
+
q.displayName = "ChartLegend";
|
|
160
|
+
function N(o, e, t) {
|
|
186
161
|
if (typeof e != "object" || e === null)
|
|
187
162
|
return;
|
|
188
163
|
const n = "payload" in e && typeof e.payload == "object" && e.payload !== null ? e.payload : void 0;
|
|
189
|
-
let
|
|
190
|
-
return t in e && typeof e[t] == "string" ?
|
|
164
|
+
let c = t;
|
|
165
|
+
return t in e && typeof e[t] == "string" ? c = e[t] : n && t in n && typeof n[t] == "string" && (c = n[t]), c in o ? o[c] : o[t];
|
|
191
166
|
}
|
|
192
167
|
export {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
q as ChartTooltip,
|
|
168
|
+
I as ChartContainer,
|
|
169
|
+
S as ChartLegend,
|
|
170
|
+
q as ChartLegendContent,
|
|
171
|
+
M as ChartTooltip,
|
|
198
172
|
K as ChartTooltipContent
|
|
199
173
|
};
|
|
200
174
|
//# sourceMappingURL=chart.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.es.js","sources":["../../../lib/components/ui/chart.tsx"],"sourcesContent":["'use client';\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/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<typeof RechartsPrimitive.ResponsiveContainer>['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 \"flex aspect-video justify-center text-caption [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.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 [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</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(([_, config]) => config.theme || config.color);\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 = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || 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)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\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 'grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-caption 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 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\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=\"font-mono font-medium tabular-nums text-foreground\">\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>(({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {\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 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground',\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});\nChartLegendContent.displayName = 'ChartLegend';\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\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[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n"],"names":["THEMES","ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","ref","uniqueId","chartId","jsxs","cn","jsx","ChartStyle","RechartsPrimitive","colorConfig","_","theme","prefix","key","itemConfig","color","_a","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chart.es.js","sources":["../../../lib/components/ui/chart.tsx"],"sourcesContent":["'use client';\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/utils';\n\nexport type ChartConfig = Record<string, {\n label?: React.ReactNode;\n icon?: React.ComponentType;\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\n// TODO, use Tremor based charts or create abstractions for specific charts.\n// Fix tootlip inconsistencies.\n// Fix color inconsistencies.\n// Create abstraction such that the input is just a single component.\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['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 \"flex aspect-video justify-center caption [&_.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-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted/20 [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n {/* <ChartStyle id={chartId} config={config} /> */}\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nChartContainer.displayName = 'Chart';\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)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\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 'grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-caption 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 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground',\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-border bg-background',\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=\"font-mono font-medium tabular-nums text-foreground\">\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>(({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {\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 'flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"size-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});\nChartLegendContent.displayName = 'ChartLegend';\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\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[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent\n};\n\n"],"names":["ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","ref","uniqueId","chartId","jsx","cn","RechartsPrimitive","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","color","nameKey","labelKey","tooltipLabel","item","key","itemConfig","getPayloadConfigFromPayload","value","_a","nestLabel","jsxs","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}
|
|
@@ -1,28 +1,22 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { cn as
|
|
6
|
-
const
|
|
7
|
-
|
|
2
|
+
import * as o from "@radix-ui/react-checkbox";
|
|
3
|
+
import { CheckIcon as s } from "@radix-ui/react-icons";
|
|
4
|
+
import * as c from "react";
|
|
5
|
+
import { cn as d } from "../../utils/index.es.js";
|
|
6
|
+
const t = c.forwardRef(({ className: r, ...i }, a) => /* @__PURE__ */ e(
|
|
7
|
+
o.Root,
|
|
8
8
|
{
|
|
9
9
|
ref: a,
|
|
10
|
-
className:
|
|
11
|
-
"peer
|
|
12
|
-
|
|
10
|
+
className: d(
|
|
11
|
+
"peer size-icon rounded-sm border border-border focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
|
|
12
|
+
r
|
|
13
13
|
),
|
|
14
|
-
...
|
|
15
|
-
children: /* @__PURE__ */ e(
|
|
16
|
-
r.Indicator,
|
|
17
|
-
{
|
|
18
|
-
className: o("flex items-center justify-center text-current"),
|
|
19
|
-
children: /* @__PURE__ */ e(c, { className: "h-4 w-4" })
|
|
20
|
-
}
|
|
21
|
-
)
|
|
14
|
+
...i,
|
|
15
|
+
children: /* @__PURE__ */ e(o.Indicator, { children: /* @__PURE__ */ e(s, { className: "size-icon" }) })
|
|
22
16
|
}
|
|
23
17
|
));
|
|
24
|
-
|
|
18
|
+
t.displayName = o.Root.displayName;
|
|
25
19
|
export {
|
|
26
|
-
|
|
20
|
+
t as Checkbox
|
|
27
21
|
};
|
|
28
22
|
//# sourceMappingURL=checkbox.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.es.js","sources":["../../../lib/components/ui/checkbox.tsx"],"sourcesContent":["import * as
|
|
1
|
+
{"version":3,"file":"checkbox.es.js","sources":["../../../lib/components/ui/checkbox.tsx"],"sourcesContent":["import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer size-icon rounded-sm border border-border focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator>\n <CheckIcon className=\"size-icon\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n"],"names":["Checkbox","React","className","props","ref","jsx","CheckboxPrimitive","cn","CheckIcon"],"mappings":";;;;;AAMM,MAAAA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC,EAAkB;AAAA,EAAlB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,IAEJ,UAAA,gBAAAE,EAACC,EAAkB,WAAlB,EACC,4BAACE,GAAU,EAAA,WAAU,YAAY,CAAA,EACnC,CAAA;AAAA,EAAA;AACF,CACD;AACDR,EAAS,cAAcM,EAAkB,KAAK;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as o, jsxs as p } from "react/jsx-runtime";
|
|
2
|
-
import * as m from "react";
|
|
3
2
|
import { MagnifyingGlassIcon as s } from "@radix-ui/react-icons";
|
|
4
3
|
import { Command as d } from "cmdk";
|
|
5
|
-
import
|
|
4
|
+
import * as m from "react";
|
|
6
5
|
import { Dialog as i, DialogContent as c } from "./dialog.es.js";
|
|
6
|
+
import { cn as r } from "../../utils/index.es.js";
|
|
7
7
|
const n = m.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ o(
|
|
8
8
|
d,
|
|
9
9
|
{
|
|
@@ -17,13 +17,13 @@ const n = m.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ o(
|
|
|
17
17
|
));
|
|
18
18
|
n.displayName = d.displayName;
|
|
19
19
|
const v = ({ children: e, ...a }) => /* @__PURE__ */ o(i, { ...a, children: /* @__PURE__ */ o(c, { className: "overflow-hidden p-0", children: /* @__PURE__ */ o(n, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: e }) }) }), l = m.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ p("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
|
|
20
|
-
/* @__PURE__ */ o(s, { className: "mr-2
|
|
20
|
+
/* @__PURE__ */ o(s, { className: "mr-2 size-4 shrink-0 opacity-50" }),
|
|
21
21
|
/* @__PURE__ */ o(
|
|
22
22
|
d.Input,
|
|
23
23
|
{
|
|
24
24
|
ref: t,
|
|
25
25
|
className: r(
|
|
26
|
-
"flex h-
|
|
26
|
+
"flex h-input w-full rounded-md bg-transparent py-3 text-body outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
27
27
|
e
|
|
28
28
|
),
|
|
29
29
|
...a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.es.js","sources":["../../../lib/components/ui/command.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"command.es.js","sources":["../../../lib/components/ui/command.tsx"],"sourcesContent":["import { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport * as React from \"react\"\n\nimport { Dialog, DialogContent } from \"@/components/ui/dialog\"\nimport { cn } from \"@/utils\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps { }\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-input w-full rounded-md bg-transparent py-3 text-body outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-body\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-caption [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-body outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-caption tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog, CommandEmpty,\n CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut\n}\n\n"],"names":["Command","React","className","props","ref","jsx","CommandPrimitive","cn","CommandDialog","children","Dialog","DialogContent","CommandInput","jsxs","MagnifyingGlassIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut"],"mappings":";;;;;;AAQM,MAAAA,IAAUC,EAAM,WAGpB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAQ,cAAcM,EAAiB;AAIvC,MAAME,IAAgB,CAAC,EAAE,UAAAC,GAAU,GAAGN,QAEjC,gBAAAE,EAAAK,GAAA,EAAQ,GAAGP,GACV,4BAACQ,GAAc,EAAA,WAAU,uBACvB,UAAA,gBAAAN,EAACL,GAAQ,EAAA,WAAU,+WAChB,UAAAS,EAAA,CACH,EACF,CAAA,GACF,GAIEG,IAAeX,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,MACzB,gBAAAS,EAAA,OAAA,EAAI,WAAU,mCAAkC,sBAAmB,IAClE,UAAA;AAAA,EAAC,gBAAAR,EAAAS,GAAA,EAAoB,WAAU,kCAAkC,CAAA;AAAA,EACjE,gBAAAT;AAAA,IAACC,EAAiB;AAAA,IAAjB;AAAA,MACC,KAAAF;AAAA,MACA,WAAWG;AAAA,QACT;AAAA,QACAL;AAAA,MACF;AAAA,MACC,GAAGC;AAAA,IAAA;AAAA,EAAA;AACN,GACF,CACD;AAEDS,EAAa,cAAcN,EAAiB,MAAM;AAE5C,MAAAS,IAAcd,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG,EAAG,mDAAmDL,CAAS;AAAA,IACzE,GAAGC;AAAA,EAAA;AACN,CACD;AAEDY,EAAY,cAAcT,EAAiB,KAAK;AAEhD,MAAMU,IAAef,EAAM,WAGzB,CAACE,GAAOC,MACR,gBAAAC;AAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAF;AAAA,IACA,WAAU;AAAA,IACT,GAAGD;AAAA,EAAA;AACN,CACD;AAEDa,EAAa,cAAcV,EAAiB,MAAM;AAE5C,MAAAW,IAAehB,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AAEDc,EAAa,cAAcX,EAAiB,MAAM;AAE5C,MAAAY,IAAmBjB,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG,EAAG,wBAAwBL,CAAS;AAAA,IAC9C,GAAGC;AAAA,EAAA;AACN,CACD;AACDe,EAAiB,cAAcZ,EAAiB,UAAU;AAEpD,MAAAa,IAAclB,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAM,GAAGC,MAC1B,gBAAAC;AAAA,EAACC,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN,CACD;AAEDgB,EAAY,cAAcb,EAAiB,KAAK;AAEhD,MAAMc,IAAkB,CAAC;AAAA,EACvB,WAAAlB;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWE;AAAA,MACT;AAAA,MACAL;AAAA,IACF;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAGJiB,EAAgB,cAAc;"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
3
|
import "./accordion.es.js";
|
|
4
4
|
import "./avatar.es.js";
|
|
5
|
-
import "./badge.es.js";
|
|
6
5
|
import "./breadcrumb.es.js";
|
|
7
|
-
import { Button as
|
|
6
|
+
import { Button as l } from "./button.es.js";
|
|
8
7
|
import "./calendar.es.js";
|
|
9
8
|
import "./card.es.js";
|
|
10
9
|
import "./chart.es.js";
|
|
11
10
|
import "./checkbox.es.js";
|
|
12
11
|
import "@radix-ui/react-collapsible";
|
|
13
12
|
import "./command.es.js";
|
|
14
|
-
import { CheckCheck as
|
|
15
|
-
import { useState as
|
|
13
|
+
import { CheckCheck as a, Copy as s } from "lucide-react";
|
|
14
|
+
import { useState as d } from "react";
|
|
16
15
|
import "./dialog.es.js";
|
|
17
16
|
import "./drawer.es.js";
|
|
18
17
|
import "./dropdown-menu.es.js";
|
|
@@ -34,43 +33,30 @@ import "./sidebar.es.js";
|
|
|
34
33
|
import "sonner";
|
|
35
34
|
import "./table.es.js";
|
|
36
35
|
import "./tabs.es.js";
|
|
37
|
-
import { TooltipProvider as
|
|
38
|
-
|
|
36
|
+
import { TooltipProvider as T, Tooltip as u, TooltipTrigger as f, TooltipContent as h } from "./tooltip.es.js";
|
|
37
|
+
const C = 5e3;
|
|
38
|
+
function $({
|
|
39
39
|
value: r,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
onCopy: t,
|
|
43
|
-
position: p = "leading"
|
|
44
|
-
// Default position to trailing
|
|
40
|
+
tooltipMessage: m = "Copy to clipboard",
|
|
41
|
+
onCopy: o
|
|
45
42
|
}) {
|
|
46
|
-
const [
|
|
43
|
+
const [i, p] = d(!1), e = async () => {
|
|
47
44
|
try {
|
|
48
|
-
await navigator.clipboard.writeText(r),
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
} catch (
|
|
52
|
-
console.error("Failed to copy text:",
|
|
45
|
+
await navigator.clipboard.writeText(r), p(!0), o == null || o(), setTimeout(() => {
|
|
46
|
+
p(!1);
|
|
47
|
+
}, C);
|
|
48
|
+
} catch (c) {
|
|
49
|
+
console.error("Failed to copy text:", c);
|
|
53
50
|
}
|
|
54
51
|
};
|
|
55
52
|
if (r)
|
|
56
|
-
return /* @__PURE__ */
|
|
57
|
-
/* @__PURE__ */
|
|
58
|
-
|
|
59
|
-
/* @__PURE__ */ i(T, { asChild: !0, children: /* @__PURE__ */ i(
|
|
60
|
-
d,
|
|
61
|
-
{
|
|
62
|
-
onClick: l,
|
|
63
|
-
variant: "ghost",
|
|
64
|
-
size: "icon",
|
|
65
|
-
icon: m ? s : h
|
|
66
|
-
}
|
|
67
|
-
) }),
|
|
68
|
-
p === "trailing" && /* @__PURE__ */ i("span", { children: o ?? r })
|
|
69
|
-
] }),
|
|
70
|
-
/* @__PURE__ */ i(C, { children: m ? "Copied!" : c })
|
|
53
|
+
return /* @__PURE__ */ t(T, { children: /* @__PURE__ */ n(u, { delayDuration: 0, children: [
|
|
54
|
+
/* @__PURE__ */ t(f, { asChild: !0, children: /* @__PURE__ */ t(l, { onClick: e, variant: "outline", size: "sm", icon: i ? a : s }) }),
|
|
55
|
+
/* @__PURE__ */ t(h, { children: i ? "Copied" : m })
|
|
71
56
|
] }) });
|
|
72
57
|
}
|
|
73
58
|
export {
|
|
74
|
-
|
|
59
|
+
C as COPY_BUTTON_STATE_TIMEOUT,
|
|
60
|
+
$ as CopyButton
|
|
75
61
|
};
|
|
76
62
|
//# sourceMappingURL=copy-button.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-button.es.js","sources":["../../../lib/components/ui/copy-button.tsx"],"sourcesContent":["'use client';\nimport { Button, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/index';\nimport { CheckCheck, Copy } from 'lucide-react';\nimport { useState } from 'react';\n\ninterface CopyProps {\n value: string;\n
|
|
1
|
+
{"version":3,"file":"copy-button.es.js","sources":["../../../lib/components/ui/copy-button.tsx"],"sourcesContent":["'use client';\nimport { Button, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/index';\nimport { CheckCheck, Copy } from 'lucide-react';\nimport { useState } from 'react';\n\ninterface CopyProps {\n value: string;\n tooltipMessage?: string;\n onCopy?: () => void;\n}\n\nexport const COPY_BUTTON_STATE_TIMEOUT = 5000;\nexport function CopyButton({\n value,\n tooltipMessage = 'Copy to clipboard',\n onCopy,\n}: CopyProps) {\n const [copied, setCopied] = useState(false);\n\n const copyToClipboard = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n onCopy?.();\n\n setTimeout(() => {\n setCopied(false);\n }, COPY_BUTTON_STATE_TIMEOUT);\n } catch (err) {\n console.error('Failed to copy text:', err);\n }\n };\n if (!value) return;\n return (\n <TooltipProvider>\n <Tooltip delayDuration={0}>\n <TooltipTrigger asChild>\n <Button onClick={copyToClipboard} variant=\"outline\" size=\"sm\" icon={copied ? CheckCheck : Copy} />\n </TooltipTrigger>\n <TooltipContent>{copied ? 'Copied' : tooltipMessage}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n"],"names":["COPY_BUTTON_STATE_TIMEOUT","CopyButton","value","tooltipMessage","onCopy","copied","setCopied","useState","copyToClipboard","err","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","Button","CheckCheck","Copy","TooltipContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,MAAMA,IAA4B;AAClC,SAASC,EAAW;AAAA,EACzB,OAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,QAAAC;AACF,GAAc;AACZ,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GAEpCC,IAAkB,YAAY;AAC9B,QAAA;AACI,YAAA,UAAU,UAAU,UAAUN,CAAK,GACzCI,EAAU,EAAI,GACLF,KAAA,QAAAA,KAET,WAAW,MAAM;AACf,QAAAE,EAAU,EAAK;AAAA,SACdN,CAAyB;AAAA,aACrBS,GAAK;AACJ,cAAA,MAAM,wBAAwBA,CAAG;AAAA,IAAA;AAAA,EAE7C;AACA,MAAKP;AACL,WACG,gBAAAQ,EAAAC,GAAA,EACC,UAAC,gBAAAC,EAAAC,GAAA,EAAQ,eAAe,GACtB,UAAA;AAAA,MAAA,gBAAAH,EAACI,GAAe,EAAA,SAAO,IACrB,UAAA,gBAAAJ,EAACK,KAAO,SAASP,GAAiB,SAAQ,WAAU,MAAK,MAAK,MAAMH,IAASW,IAAaC,EAAM,CAAA,GAClG;AAAA,MACC,gBAAAP,EAAAQ,GAAA,EAAgB,UAASb,IAAA,WAAWF,EAAe,CAAA;AAAA,IAAA,EAAA,CACtD,EACF,CAAA;AAEJ;"}
|