@viglet/viglet-design-system 2026.3.2 → 2026.3.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 +277 -7
- package/dist/assets.cjs +1 -0
- package/dist/assets.es.js +2 -0
- package/dist/badge-locale-BxI9TwkE.js +579 -0
- package/dist/badge-locale-sIsBdP_e.cjs +7 -0
- package/dist/bento/bento-actions-menu.d.ts +42 -0
- package/dist/bento/bento-actions-menu.d.ts.map +1 -0
- package/dist/bento/bento-back-to-top.d.ts +11 -0
- package/dist/bento/bento-back-to-top.d.ts.map +1 -0
- package/dist/bento/bento-command-palette.d.ts +28 -0
- package/dist/bento/bento-command-palette.d.ts.map +1 -0
- package/dist/bento/bento-count-tile.d.ts +18 -0
- package/dist/bento/bento-count-tile.d.ts.map +1 -0
- package/dist/bento/bento-empty-state.d.ts +35 -0
- package/dist/bento/bento-empty-state.d.ts.map +1 -0
- package/dist/bento/bento-entity-shell.d.ts +123 -0
- package/dist/bento/bento-entity-shell.d.ts.map +1 -0
- package/dist/bento/bento-entity-tile.d.ts +40 -0
- package/dist/bento/bento-entity-tile.d.ts.map +1 -0
- package/dist/bento/bento-form-hero.d.ts +91 -0
- package/dist/bento/bento-form-hero.d.ts.map +1 -0
- package/dist/bento/bento-form-section.d.ts +31 -0
- package/dist/bento/bento-form-section.d.ts.map +1 -0
- package/dist/bento/bento-hero-icon-picker.d.ts +35 -0
- package/dist/bento/bento-hero-icon-picker.d.ts.map +1 -0
- package/dist/bento/bento-hero.d.ts +62 -0
- package/dist/bento/bento-hero.d.ts.map +1 -0
- package/dist/bento/bento-inline-edit.d.ts +52 -0
- package/dist/bento/bento-inline-edit.d.ts.map +1 -0
- package/dist/bento/bento-layout.d.ts +52 -0
- package/dist/bento/bento-layout.d.ts.map +1 -0
- package/dist/bento/bento-list-page.d.ts +124 -0
- package/dist/bento/bento-list-page.d.ts.map +1 -0
- package/dist/bento/bento-nav-rail.d.ts +32 -0
- package/dist/bento/bento-nav-rail.d.ts.map +1 -0
- package/dist/bento/bento-nav.d.ts +69 -0
- package/dist/bento/bento-nav.d.ts.map +1 -0
- package/dist/bento/bento-save-bar.d.ts +36 -0
- package/dist/bento/bento-save-bar.d.ts.map +1 -0
- package/dist/bento/bento-scroll-fade.d.ts +20 -0
- package/dist/bento/bento-scroll-fade.d.ts.map +1 -0
- package/dist/bento/bento-scroll-save-bar.d.ts +22 -0
- package/dist/bento/bento-scroll-save-bar.d.ts.map +1 -0
- package/dist/bento/bento-section-chrome.d.ts +60 -0
- package/dist/bento/bento-section-chrome.d.ts.map +1 -0
- package/dist/bento/bento-section.d.ts +27 -0
- package/dist/bento/bento-section.d.ts.map +1 -0
- package/dist/bento/bento-shortcuts-dialog.d.ts +15 -0
- package/dist/bento/bento-shortcuts-dialog.d.ts.map +1 -0
- package/dist/bento/bento-status-marker.d.ts +26 -0
- package/dist/bento/bento-status-marker.d.ts.map +1 -0
- package/dist/bento/bento-tile.d.ts +42 -0
- package/dist/bento/bento-tile.d.ts.map +1 -0
- package/dist/bento/bento-tones.d.ts +33 -0
- package/dist/bento/bento-tones.d.ts.map +1 -0
- package/dist/bento/bento-user-menu.d.ts +31 -0
- package/dist/bento/bento-user-menu.d.ts.map +1 -0
- package/dist/bento/index.d.ts +59 -0
- package/dist/bento/index.d.ts.map +1 -0
- package/dist/bento.cjs +1 -0
- package/dist/bento.css +442 -0
- package/dist/bento.es.js +1501 -0
- package/dist/breadcrumb.context-CTnZ4rD0.cjs +1 -0
- package/dist/breadcrumb.context-h2A2IEJ_.js +928 -0
- package/dist/components/badge-locale.d.ts.map +1 -1
- package/dist/components/error-boundary.d.ts.map +1 -1
- package/dist/components/language-select.d.ts.map +1 -1
- package/dist/components/router/blank-slate.d.ts +10 -0
- package/dist/components/router/blank-slate.d.ts.map +1 -1
- package/dist/components/router/grid.list.d.ts +13 -0
- package/dist/components/router/grid.list.d.ts.map +1 -1
- package/dist/components/router/internal.sidebar.d.ts +27 -2
- package/dist/components/router/internal.sidebar.d.ts.map +1 -1
- package/dist/components/router/loading-provider.d.ts +6 -1
- package/dist/components/router/loading-provider.d.ts.map +1 -1
- package/dist/components/router/nav-main.d.ts +10 -0
- package/dist/components/router/nav-main.d.ts.map +1 -1
- package/dist/components/router/nav-user.d.ts +13 -0
- package/dist/components/router/nav-user.d.ts.map +1 -1
- package/dist/components/router/page-content.d.ts +10 -0
- package/dist/components/router/page-content.d.ts.map +1 -1
- package/dist/components/router/page-header.d.ts +13 -0
- package/dist/components/router/page-header.d.ts.map +1 -1
- package/dist/components/router/page.d.ts +13 -0
- package/dist/components/router/page.d.ts.map +1 -1
- package/dist/components/router/sticky.page.header.d.ts +14 -0
- package/dist/components/router/sticky.page.header.d.ts.map +1 -1
- package/dist/components/router/sub.page.d.ts +15 -11
- package/dist/components/router/sub.page.d.ts.map +1 -1
- package/dist/components/router/sub.page.header.d.ts +13 -0
- package/dist/components/router/sub.page.header.d.ts.map +1 -1
- package/dist/components/startup-first/startup-first.d.ts.map +1 -1
- package/dist/components/ui/floating-formulas-bg.d.ts +8 -1
- package/dist/components/ui/floating-formulas-bg.d.ts.map +1 -1
- package/dist/components/ui/form.d.ts +2 -2
- package/dist/components/ui/form.d.ts.map +1 -1
- package/dist/components/ui/gradient-button.d.ts.map +1 -1
- package/dist/components/ui/gradient-switch.d.ts.map +1 -1
- package/dist/components/ui/icon-picker-dialog.d.ts +35 -0
- package/dist/components/ui/icon-picker-dialog.d.ts.map +1 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/section-card.d.ts +3 -3
- package/dist/components/ui/section-card.d.ts.map +1 -1
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/slider.d.ts +1 -1
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/contexts/user.context.d.ts +24 -0
- package/dist/contexts/user.context.d.ts.map +1 -1
- package/dist/exports.json +404 -0
- package/dist/floating-formulas-bg.cjs +1 -0
- package/dist/floating-formulas-bg.css +21 -0
- package/dist/floating-formulas-bg.es.js +83 -56
- package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
- package/dist/fonts/plus-jakarta-sans-cyrillic-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
- package/dist/fonts/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
- package/dist/fonts/plus-jakarta-sans-vietnamese-wght-normal.woff2 +0 -0
- package/dist/fonts.css +126 -0
- package/dist/hooks/use-grid-adapter.d.ts.map +1 -1
- package/dist/hooks/use-mobile.d.ts +10 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -1
- package/dist/hooks/use-sub-page-breadcrumb.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +136 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locales/en/bento.json.d.ts +51 -0
- package/dist/i18n/locales/en/common.json.d.ts +7 -1
- package/dist/i18n/locales/en/forms.json.d.ts +15 -1
- package/dist/i18n/locales/en/nav.json.d.ts +3 -1
- package/dist/i18n/locales/pt/bento.json.d.ts +51 -0
- package/dist/i18n/locales/pt/common.json.d.ts +7 -1
- package/dist/i18n/locales/pt/forms.json.d.ts +15 -1
- package/dist/i18n/locales/pt/nav.json.d.ts +3 -1
- package/dist/i18n-DoNdMLEd.cjs +1 -0
- package/dist/{i18n-C94rDRaM.js → i18n-DuNITbWa.js} +155 -27
- package/dist/{i18n.cjs.js → i18n.cjs} +1 -1
- package/dist/i18n.es.js +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +492 -750
- package/dist/lib/axios.d.ts.map +1 -1
- package/dist/lib/export-xlsx.d.ts +7 -1
- package/dist/lib/export-xlsx.d.ts.map +1 -1
- package/dist/lib/react-markers.d.ts +17 -0
- package/dist/lib/react-markers.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +22 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/loading-provider-1mgM91iY.cjs +1 -0
- package/dist/loading-provider-CMnOuvdR.js +224 -0
- package/dist/preset.css +103 -3
- package/dist/products-DL_YYXkV.cjs +1 -0
- package/dist/products-Du9KB6Xl.js +9 -0
- package/dist/{rolldown-runtime-CMqjfN_6.cjs → rolldown-runtime-BocRIvOZ.cjs} +1 -1
- package/dist/router.cjs +1 -0
- package/dist/router.es.js +358 -555
- package/dist/user.context-kPAqKN4o.js +512 -0
- package/dist/user.context-r50nSWER.cjs +1 -0
- package/dist/viglet-design-system.css +1 -1
- package/dist/vite/boot-loader.d.ts +14 -4
- package/dist/vite/boot-loader.d.ts.map +1 -1
- package/dist/{vite.cjs.js → vite.cjs} +8 -8
- package/dist/vite.es.js +29 -16
- package/package.json +66 -22
- package/scripts/check-duplicates.mjs +198 -0
- package/dist/breadcrumb.context-C7VCfh49.js +0 -1501
- package/dist/breadcrumb.context-Td6Tjc_z.cjs +0 -7
- package/dist/floating-formulas-bg.cjs.js +0 -1
- package/dist/i18n-DN_2YzjB.cjs +0 -1
- package/dist/index.cjs.js +0 -1
- package/dist/router.cjs.js +0 -1
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import { D as e, F as t, H as n, M as r, U as i, k as a, l as o, u as s } from "./badge-locale-BxI9TwkE.js";
|
|
2
|
+
import c, { createContext as l, useCallback as u, useContext as d, useEffect as f, useRef as p, useState as m } from "react";
|
|
3
|
+
import { jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
4
|
+
import * as _ from "@radix-ui/react-avatar";
|
|
5
|
+
import { Slot as v } from "@radix-ui/react-slot";
|
|
6
|
+
import { cva as y } from "class-variance-authority";
|
|
7
|
+
import { IconChevronDown as b, IconLoader2 as x, IconSearch as S, IconSparkles as C, IconTrash as w } from "@tabler/icons-react";
|
|
8
|
+
import { useTranslation as T } from "react-i18next";
|
|
9
|
+
import { Icon as E } from "@iconify/react";
|
|
10
|
+
import { useTheme as D } from "next-themes";
|
|
11
|
+
import { Toaster as O, toast as k } from "sonner";
|
|
12
|
+
var A = n("circle-check", [["circle", {
|
|
13
|
+
cx: "12",
|
|
14
|
+
cy: "12",
|
|
15
|
+
r: "10",
|
|
16
|
+
key: "1mglay"
|
|
17
|
+
}], ["path", {
|
|
18
|
+
d: "m9 12 2 2 4-4",
|
|
19
|
+
key: "dzmm74"
|
|
20
|
+
}]]), j = n("info", [
|
|
21
|
+
["circle", {
|
|
22
|
+
cx: "12",
|
|
23
|
+
cy: "12",
|
|
24
|
+
r: "10",
|
|
25
|
+
key: "1mglay"
|
|
26
|
+
}],
|
|
27
|
+
["path", {
|
|
28
|
+
d: "M12 16v-4",
|
|
29
|
+
key: "1dtifu"
|
|
30
|
+
}],
|
|
31
|
+
["path", {
|
|
32
|
+
d: "M12 8h.01",
|
|
33
|
+
key: "e9boi3"
|
|
34
|
+
}]
|
|
35
|
+
]), M = n("loader-circle", [["path", {
|
|
36
|
+
d: "M21 12a9 9 0 1 1-6.219-8.56",
|
|
37
|
+
key: "13zald"
|
|
38
|
+
}]]), N = n("octagon-x", [
|
|
39
|
+
["path", {
|
|
40
|
+
d: "m15 9-6 6",
|
|
41
|
+
key: "1uzhvr"
|
|
42
|
+
}],
|
|
43
|
+
["path", {
|
|
44
|
+
d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
|
|
45
|
+
key: "2d38gg"
|
|
46
|
+
}],
|
|
47
|
+
["path", {
|
|
48
|
+
d: "m9 9 6 6",
|
|
49
|
+
key: "z0biqf"
|
|
50
|
+
}]
|
|
51
|
+
]), P = n("triangle-alert", [
|
|
52
|
+
["path", {
|
|
53
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
54
|
+
key: "wmoenq"
|
|
55
|
+
}],
|
|
56
|
+
["path", {
|
|
57
|
+
d: "M12 9v4",
|
|
58
|
+
key: "juzpu7"
|
|
59
|
+
}],
|
|
60
|
+
["path", {
|
|
61
|
+
d: "M12 17h.01",
|
|
62
|
+
key: "p32p05"
|
|
63
|
+
}]
|
|
64
|
+
]), F = y("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
65
|
+
variants: {
|
|
66
|
+
variant: {
|
|
67
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
68
|
+
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
69
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
70
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
71
|
+
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
72
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
73
|
+
},
|
|
74
|
+
size: {
|
|
75
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
76
|
+
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
77
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
78
|
+
icon: "size-9",
|
|
79
|
+
"icon-sm": "size-8",
|
|
80
|
+
"icon-lg": "size-10"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
defaultVariants: {
|
|
84
|
+
variant: "default",
|
|
85
|
+
size: "default"
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
function I({ className: e, variant: t, size: n, asChild: r = !1, ...a }) {
|
|
89
|
+
return /* @__PURE__ */ h(r ? v : "button", {
|
|
90
|
+
"data-slot": "button",
|
|
91
|
+
className: i(F({
|
|
92
|
+
variant: t,
|
|
93
|
+
size: n,
|
|
94
|
+
className: e
|
|
95
|
+
})),
|
|
96
|
+
...a
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/components/ui/icon-picker-dialog.tsx
|
|
101
|
+
var L = [
|
|
102
|
+
"lucide",
|
|
103
|
+
"tabler",
|
|
104
|
+
"mdi",
|
|
105
|
+
"ph",
|
|
106
|
+
"solar",
|
|
107
|
+
"heroicons"
|
|
108
|
+
], R = L.join(",");
|
|
109
|
+
async function z(e, t) {
|
|
110
|
+
try {
|
|
111
|
+
let n = await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${R}`);
|
|
112
|
+
if (n.ok) return (await n.json()).icons ?? [];
|
|
113
|
+
} catch {}
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
function B({ open: n, onOpenChange: i, value: c, onSelect: l, onClear: d, title: _, description: v, suggestKeywords: y }) {
|
|
117
|
+
let { t: b } = T(), [D, O] = m(""), [k, A] = m([]), [j, M] = m(!1), N = p(null), [P, F] = m(!1), [I, R] = m([]), B = p(0), [V, H] = m(null), U = u(async (e) => {
|
|
118
|
+
let t = ++B.current, n = () => t === B.current;
|
|
119
|
+
if (!e.trim()) {
|
|
120
|
+
A([]);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
M(!0);
|
|
124
|
+
try {
|
|
125
|
+
let t = await z(e, 60);
|
|
126
|
+
n() && A(t);
|
|
127
|
+
} catch {
|
|
128
|
+
n() && A([]);
|
|
129
|
+
} finally {
|
|
130
|
+
n() && M(!1);
|
|
131
|
+
}
|
|
132
|
+
}, []);
|
|
133
|
+
f(() => (N.current && clearTimeout(N.current), N.current = setTimeout(() => U(D), 350), () => {
|
|
134
|
+
N.current && clearTimeout(N.current);
|
|
135
|
+
}), [D, U]);
|
|
136
|
+
function W(e) {
|
|
137
|
+
l(e), i(!1), O(""), A([]), R([]), H(null);
|
|
138
|
+
}
|
|
139
|
+
async function G() {
|
|
140
|
+
if (!(!y || P)) {
|
|
141
|
+
F(!0), R([]), H(null);
|
|
142
|
+
try {
|
|
143
|
+
let e = (await y({
|
|
144
|
+
title: _,
|
|
145
|
+
description: v
|
|
146
|
+
})).filter((e) => typeof e == "string" && e.trim()).slice(0, 5), t = [];
|
|
147
|
+
for (let n of e) t.push({
|
|
148
|
+
keyword: n.trim(),
|
|
149
|
+
icons: await z(n.trim(), 30)
|
|
150
|
+
});
|
|
151
|
+
R(t);
|
|
152
|
+
} catch {
|
|
153
|
+
R([]);
|
|
154
|
+
} finally {
|
|
155
|
+
F(!1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
let K = V ? I.find((e) => e.keyword === V)?.icons ?? [] : I.flatMap((e) => e.icons.slice(0, 3)), q = !!y && !!(_?.trim() ?? v?.trim());
|
|
160
|
+
return /* @__PURE__ */ h(e, {
|
|
161
|
+
open: n,
|
|
162
|
+
onOpenChange: i,
|
|
163
|
+
children: /* @__PURE__ */ g(a, {
|
|
164
|
+
className: "flex max-h-[80vh] flex-col sm:max-w-lg",
|
|
165
|
+
children: [
|
|
166
|
+
/* @__PURE__ */ h(r, { children: /* @__PURE__ */ h(t, { children: b("forms.iconPicker.chooseAnIcon", { defaultValue: "Choose an icon" }) }) }),
|
|
167
|
+
/* @__PURE__ */ g("div", {
|
|
168
|
+
className: "flex gap-2",
|
|
169
|
+
children: [/* @__PURE__ */ g("div", {
|
|
170
|
+
className: "relative flex-1",
|
|
171
|
+
children: [/* @__PURE__ */ h(S, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ h(o, {
|
|
172
|
+
value: D,
|
|
173
|
+
onChange: (e) => O(e.target.value),
|
|
174
|
+
placeholder: b("forms.iconPicker.searchIcons", { defaultValue: "Search icons" }),
|
|
175
|
+
className: "pl-9",
|
|
176
|
+
autoFocus: !0
|
|
177
|
+
})]
|
|
178
|
+
}), q && /* @__PURE__ */ g(s, {
|
|
179
|
+
type: "button",
|
|
180
|
+
size: "sm",
|
|
181
|
+
variant: "outline",
|
|
182
|
+
onClick: G,
|
|
183
|
+
disabled: P,
|
|
184
|
+
className: "shrink-0 gap-1.5",
|
|
185
|
+
children: [P ? /* @__PURE__ */ h(x, { className: "size-4 animate-spin" }) : /* @__PURE__ */ h(C, { className: "size-4" }), b("forms.iconPicker.aiSuggest", { defaultValue: "Suggest" })]
|
|
186
|
+
})]
|
|
187
|
+
}),
|
|
188
|
+
I.length > 0 && /* @__PURE__ */ g("div", {
|
|
189
|
+
className: "rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3",
|
|
190
|
+
children: [
|
|
191
|
+
/* @__PURE__ */ g("div", {
|
|
192
|
+
className: "mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text",
|
|
193
|
+
children: [/* @__PURE__ */ h(C, { className: "size-3.5" }), b("forms.iconPicker.aiSuggestions", { defaultValue: "Suggestions" })]
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ h("div", {
|
|
196
|
+
className: "mb-3 flex flex-wrap gap-1.5",
|
|
197
|
+
children: I.map((e) => /* @__PURE__ */ g("button", {
|
|
198
|
+
type: "button",
|
|
199
|
+
onClick: () => H(V === e.keyword ? null : e.keyword),
|
|
200
|
+
className: `cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${V === e.keyword ? "vg-accent-solid text-white" : "bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]"}`,
|
|
201
|
+
children: [e.keyword, /* @__PURE__ */ h("span", {
|
|
202
|
+
className: "ml-1 opacity-60",
|
|
203
|
+
children: e.icons.length
|
|
204
|
+
})]
|
|
205
|
+
}, e.keyword))
|
|
206
|
+
}),
|
|
207
|
+
/* @__PURE__ */ h("div", {
|
|
208
|
+
className: "flex max-h-60 flex-wrap gap-2 overflow-y-auto",
|
|
209
|
+
children: K.map((e) => /* @__PURE__ */ g("button", {
|
|
210
|
+
type: "button",
|
|
211
|
+
onClick: () => W(e),
|
|
212
|
+
className: `flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text" : "border border-[var(--vg-accent-line)]"}`,
|
|
213
|
+
title: e,
|
|
214
|
+
children: [/* @__PURE__ */ h(E, {
|
|
215
|
+
icon: e,
|
|
216
|
+
className: "size-7"
|
|
217
|
+
}), /* @__PURE__ */ h("span", {
|
|
218
|
+
className: "max-w-[80px] truncate text-center text-[9px] leading-tight text-muted-foreground",
|
|
219
|
+
children: e.split(":")[1] ?? e
|
|
220
|
+
})]
|
|
221
|
+
}, e))
|
|
222
|
+
})
|
|
223
|
+
]
|
|
224
|
+
}),
|
|
225
|
+
/* @__PURE__ */ g("div", {
|
|
226
|
+
className: "max-h-[400px] min-h-[200px] flex-1 overflow-y-auto",
|
|
227
|
+
children: [
|
|
228
|
+
j && /* @__PURE__ */ h("div", {
|
|
229
|
+
className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
|
|
230
|
+
children: b("forms.iconPicker.searching", { defaultValue: "Searching…" })
|
|
231
|
+
}),
|
|
232
|
+
!j && D && k.length === 0 && /* @__PURE__ */ h("div", {
|
|
233
|
+
className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
|
|
234
|
+
children: b("forms.iconPicker.noIconsFound", {
|
|
235
|
+
query: D,
|
|
236
|
+
defaultValue: "No icons found for “{{query}}”"
|
|
237
|
+
})
|
|
238
|
+
}),
|
|
239
|
+
!j && !D && k.length === 0 && I.length === 0 && /* @__PURE__ */ g("div", {
|
|
240
|
+
className: "flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground",
|
|
241
|
+
children: [/* @__PURE__ */ h("span", { children: b("forms.iconPicker.typeToSearch", {
|
|
242
|
+
count: L.length,
|
|
243
|
+
defaultValue: "Type to search {{count}} icon collections"
|
|
244
|
+
}) }), q && /* @__PURE__ */ h("span", {
|
|
245
|
+
className: "text-xs leading-relaxed",
|
|
246
|
+
children: b("forms.iconPicker.orClickAi", { defaultValue: "…or let the title and description suggest some" })
|
|
247
|
+
})]
|
|
248
|
+
}),
|
|
249
|
+
k.length > 0 && /* @__PURE__ */ h("div", {
|
|
250
|
+
className: "grid grid-cols-6 gap-1.5 p-1",
|
|
251
|
+
children: k.map((e) => /* @__PURE__ */ g("button", {
|
|
252
|
+
type: "button",
|
|
253
|
+
onClick: () => W(e),
|
|
254
|
+
className: `flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text" : "border border-transparent hover:border-border"}`,
|
|
255
|
+
title: e,
|
|
256
|
+
children: [/* @__PURE__ */ h(E, {
|
|
257
|
+
icon: e,
|
|
258
|
+
className: "size-6"
|
|
259
|
+
}), /* @__PURE__ */ h("span", {
|
|
260
|
+
className: "w-full truncate text-center text-[9px] leading-tight text-muted-foreground",
|
|
261
|
+
children: e.split(":")[1] ?? e
|
|
262
|
+
})]
|
|
263
|
+
}, e))
|
|
264
|
+
})
|
|
265
|
+
]
|
|
266
|
+
}),
|
|
267
|
+
c && /* @__PURE__ */ g("div", {
|
|
268
|
+
className: "flex items-center justify-between border-t pt-2",
|
|
269
|
+
children: [/* @__PURE__ */ g("div", {
|
|
270
|
+
className: "flex items-center gap-2",
|
|
271
|
+
children: [/* @__PURE__ */ h(E, {
|
|
272
|
+
icon: c,
|
|
273
|
+
className: "size-5"
|
|
274
|
+
}), /* @__PURE__ */ h("span", {
|
|
275
|
+
className: "font-mono text-xs text-muted-foreground",
|
|
276
|
+
children: c
|
|
277
|
+
})]
|
|
278
|
+
}), /* @__PURE__ */ g("div", {
|
|
279
|
+
className: "flex gap-2",
|
|
280
|
+
children: [d && /* @__PURE__ */ g(s, {
|
|
281
|
+
size: "sm",
|
|
282
|
+
type: "button",
|
|
283
|
+
variant: "outline",
|
|
284
|
+
onClick: () => {
|
|
285
|
+
d(), i(!1);
|
|
286
|
+
},
|
|
287
|
+
children: [/* @__PURE__ */ h(w, { className: "size-4" }), b("forms.common.remove", { defaultValue: "Remove" })]
|
|
288
|
+
}), /* @__PURE__ */ h(s, {
|
|
289
|
+
size: "sm",
|
|
290
|
+
type: "button",
|
|
291
|
+
onClick: () => i(!1),
|
|
292
|
+
children: b("forms.iconPicker.done", { defaultValue: "Done" })
|
|
293
|
+
})]
|
|
294
|
+
})]
|
|
295
|
+
})
|
|
296
|
+
]
|
|
297
|
+
})
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
//#endregion
|
|
301
|
+
//#region src/components/ui/section-card.tsx
|
|
302
|
+
var V = {
|
|
303
|
+
blue: {
|
|
304
|
+
color: "text-blue-600 dark:text-blue-400",
|
|
305
|
+
bg: "from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20",
|
|
306
|
+
ring: "ring-blue-500/10 dark:ring-blue-400/10"
|
|
307
|
+
},
|
|
308
|
+
violet: {
|
|
309
|
+
color: "text-violet-600 dark:text-violet-400",
|
|
310
|
+
bg: "from-violet-500/10 to-purple-500/10 dark:from-violet-500/20 dark:to-purple-500/20",
|
|
311
|
+
ring: "ring-violet-500/10 dark:ring-violet-400/10"
|
|
312
|
+
},
|
|
313
|
+
emerald: {
|
|
314
|
+
color: "text-emerald-600 dark:text-emerald-400",
|
|
315
|
+
bg: "from-emerald-500/10 to-teal-500/10 dark:from-emerald-500/20 dark:to-teal-500/20",
|
|
316
|
+
ring: "ring-emerald-500/10 dark:ring-emerald-400/10"
|
|
317
|
+
},
|
|
318
|
+
amber: {
|
|
319
|
+
color: "text-amber-600 dark:text-amber-400",
|
|
320
|
+
bg: "from-amber-500/10 to-orange-500/10 dark:from-amber-500/20 dark:to-orange-500/20",
|
|
321
|
+
ring: "ring-amber-500/10 dark:ring-amber-400/10"
|
|
322
|
+
},
|
|
323
|
+
rose: {
|
|
324
|
+
color: "text-rose-600 dark:text-rose-400",
|
|
325
|
+
bg: "from-rose-500/10 to-pink-500/10 dark:from-rose-500/20 dark:to-pink-500/20",
|
|
326
|
+
ring: "ring-rose-500/10 dark:ring-rose-400/10"
|
|
327
|
+
},
|
|
328
|
+
cyan: {
|
|
329
|
+
color: "text-cyan-600 dark:text-cyan-400",
|
|
330
|
+
bg: "from-cyan-500/10 to-sky-500/10 dark:from-cyan-500/20 dark:to-sky-500/20",
|
|
331
|
+
ring: "ring-cyan-500/10 dark:ring-cyan-400/10"
|
|
332
|
+
},
|
|
333
|
+
orange: {
|
|
334
|
+
color: "text-orange-600 dark:text-orange-400",
|
|
335
|
+
bg: "from-orange-500/10 to-amber-500/10 dark:from-orange-500/20 dark:to-amber-500/20",
|
|
336
|
+
ring: "ring-orange-500/10 dark:ring-orange-400/10"
|
|
337
|
+
},
|
|
338
|
+
slate: {
|
|
339
|
+
color: "text-slate-600 dark:text-slate-400",
|
|
340
|
+
bg: "from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20",
|
|
341
|
+
ring: "ring-slate-500/10 dark:ring-slate-400/10"
|
|
342
|
+
}
|
|
343
|
+
}, H = l({
|
|
344
|
+
open: !0,
|
|
345
|
+
toggle: () => {},
|
|
346
|
+
variant: "blue"
|
|
347
|
+
});
|
|
348
|
+
function U({ variant: e = "blue", defaultOpen: t = !0, children: n, className: r }) {
|
|
349
|
+
let [a, o] = m(t);
|
|
350
|
+
return /* @__PURE__ */ h(H.Provider, {
|
|
351
|
+
value: {
|
|
352
|
+
open: a,
|
|
353
|
+
toggle: () => o((e) => !e),
|
|
354
|
+
variant: e
|
|
355
|
+
},
|
|
356
|
+
children: /* @__PURE__ */ h("div", {
|
|
357
|
+
className: i("rounded-xl border overflow-hidden", r),
|
|
358
|
+
children: n
|
|
359
|
+
})
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
function W({ icon: e, title: t, description: n, className: r }) {
|
|
363
|
+
let { open: a, toggle: o, variant: s } = d(H), c = V[s];
|
|
364
|
+
return /* @__PURE__ */ g("button", {
|
|
365
|
+
type: "button",
|
|
366
|
+
onClick: o,
|
|
367
|
+
className: i("flex w-full items-center gap-3 px-5 py-4 bg-muted/40 border-b cursor-pointer hover:bg-muted/60 transition-colors", r),
|
|
368
|
+
children: [
|
|
369
|
+
/* @__PURE__ */ h("div", {
|
|
370
|
+
className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${c.bg} ring-1 ${c.ring}`,
|
|
371
|
+
children: /* @__PURE__ */ h(e, { className: `size-4 ${c.color}` })
|
|
372
|
+
}),
|
|
373
|
+
/* @__PURE__ */ g("div", {
|
|
374
|
+
className: "min-w-0 text-left",
|
|
375
|
+
children: [/* @__PURE__ */ h("h3", {
|
|
376
|
+
className: "text-sm font-semibold text-foreground",
|
|
377
|
+
children: t
|
|
378
|
+
}), n && /* @__PURE__ */ h("p", {
|
|
379
|
+
className: "text-xs text-muted-foreground",
|
|
380
|
+
children: n
|
|
381
|
+
})]
|
|
382
|
+
}),
|
|
383
|
+
/* @__PURE__ */ h(b, { className: i("ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200", a && "rotate-180") })
|
|
384
|
+
]
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
function G({ icon: e, title: t, description: n, className: r }) {
|
|
388
|
+
let { variant: a } = d(H), o = V[a];
|
|
389
|
+
return /* @__PURE__ */ g("div", {
|
|
390
|
+
className: i("flex items-center gap-3 px-5 py-4 bg-muted/40 border-b", r),
|
|
391
|
+
children: [/* @__PURE__ */ h("div", {
|
|
392
|
+
className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${o.bg} ring-1 ${o.ring}`,
|
|
393
|
+
children: /* @__PURE__ */ h(e, { className: `size-4 ${o.color}` })
|
|
394
|
+
}), /* @__PURE__ */ g("div", {
|
|
395
|
+
className: "min-w-0",
|
|
396
|
+
children: [/* @__PURE__ */ h("h3", {
|
|
397
|
+
className: "text-sm font-semibold text-foreground",
|
|
398
|
+
children: t
|
|
399
|
+
}), n && /* @__PURE__ */ h("p", {
|
|
400
|
+
className: "text-xs text-muted-foreground",
|
|
401
|
+
children: n
|
|
402
|
+
})]
|
|
403
|
+
})]
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
function K({ children: e, className: t }) {
|
|
407
|
+
let { open: n } = d(H);
|
|
408
|
+
return n ? /* @__PURE__ */ h("div", {
|
|
409
|
+
className: i("p-5 space-y-6", t),
|
|
410
|
+
children: e
|
|
411
|
+
}) : null;
|
|
412
|
+
}
|
|
413
|
+
U.Header = W, U.StaticHeader = G, U.Content = K;
|
|
414
|
+
//#endregion
|
|
415
|
+
//#region src/components/ui/sonner.tsx
|
|
416
|
+
var q = ({ ...e }) => {
|
|
417
|
+
let { theme: t = "system" } = D();
|
|
418
|
+
return /* @__PURE__ */ h(O, {
|
|
419
|
+
theme: t,
|
|
420
|
+
className: "toaster group",
|
|
421
|
+
icons: {
|
|
422
|
+
success: /* @__PURE__ */ h(A, { className: "size-4" }),
|
|
423
|
+
info: /* @__PURE__ */ h(j, { className: "size-4" }),
|
|
424
|
+
warning: /* @__PURE__ */ h(P, { className: "size-4" }),
|
|
425
|
+
error: /* @__PURE__ */ h(N, { className: "size-4" }),
|
|
426
|
+
loading: /* @__PURE__ */ h(M, { className: "size-4 animate-spin" })
|
|
427
|
+
},
|
|
428
|
+
style: {
|
|
429
|
+
"--normal-bg": "var(--vg-popover)",
|
|
430
|
+
"--normal-text": "var(--vg-popover-foreground)",
|
|
431
|
+
"--normal-border": "var(--vg-border)",
|
|
432
|
+
"--border-radius": "var(--vg-radius)"
|
|
433
|
+
},
|
|
434
|
+
...e
|
|
435
|
+
});
|
|
436
|
+
};
|
|
437
|
+
//#endregion
|
|
438
|
+
//#region src/components/ui/user-avatar.tsx
|
|
439
|
+
function J({ givenName: e, familyName: t, name: n }) {
|
|
440
|
+
let r = (e ?? "").trim(), i = (t ?? "").trim();
|
|
441
|
+
if (r || i) {
|
|
442
|
+
let e = r ? r[0] : "", t = i.split(/\s+/).filter(Boolean), n = `${e}${t.length > 0 ? t[t.length - 1][0] : ""}`.toUpperCase();
|
|
443
|
+
if (n) return n;
|
|
444
|
+
}
|
|
445
|
+
let a = (n ?? "").trim();
|
|
446
|
+
if (a) {
|
|
447
|
+
let e = a.split(/\s+/).filter(Boolean);
|
|
448
|
+
return e.length === 1 ? e[0][0].toUpperCase() : `${e[0][0]}${e[e.length - 1][0]}`.toUpperCase();
|
|
449
|
+
}
|
|
450
|
+
return "U";
|
|
451
|
+
}
|
|
452
|
+
function Y({ className: e, givenName: t, familyName: n, name: r, src: a, alt: o, children: s, ...c }) {
|
|
453
|
+
let l = J({
|
|
454
|
+
givenName: t,
|
|
455
|
+
familyName: n,
|
|
456
|
+
name: r
|
|
457
|
+
}), u = o ?? r ?? [t, n].filter(Boolean).join(" ");
|
|
458
|
+
return /* @__PURE__ */ g(_.Root, {
|
|
459
|
+
"data-slot": "user-avatar",
|
|
460
|
+
className: i("relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full size-8", "bg-muted text-muted-foreground text-xs font-semibold", "ring-1 ring-border", e),
|
|
461
|
+
...c,
|
|
462
|
+
children: [a && /* @__PURE__ */ h(_.Image, {
|
|
463
|
+
"data-slot": "user-avatar-image",
|
|
464
|
+
src: a,
|
|
465
|
+
alt: u,
|
|
466
|
+
className: "aspect-square size-full object-cover"
|
|
467
|
+
}), /* @__PURE__ */ h(_.Fallback, {
|
|
468
|
+
"data-slot": "user-avatar-fallback",
|
|
469
|
+
className: "flex size-full items-center justify-center",
|
|
470
|
+
delayMs: a ? 600 : 0,
|
|
471
|
+
children: s ?? l
|
|
472
|
+
})]
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
//#endregion
|
|
476
|
+
//#region src/contexts/user.context.tsx
|
|
477
|
+
var X = c.createContext(null);
|
|
478
|
+
function Z({ children: e, fetchUser: t }) {
|
|
479
|
+
let [n, r] = c.useState({}), [i, a] = c.useState("loading"), [o, s] = c.useState(null), l = c.useRef(0), u = c.useCallback(() => {
|
|
480
|
+
let e = ++l.current;
|
|
481
|
+
t().then((t) => {
|
|
482
|
+
e === l.current && (r(t), s(null), a("ready"));
|
|
483
|
+
}, (t) => {
|
|
484
|
+
e === l.current && (s(t), a("failed"));
|
|
485
|
+
});
|
|
486
|
+
}, [t]);
|
|
487
|
+
c.useEffect(() => {
|
|
488
|
+
u();
|
|
489
|
+
}, [u]);
|
|
490
|
+
let d = c.useMemo(() => ({
|
|
491
|
+
user: n,
|
|
492
|
+
refreshUser: u,
|
|
493
|
+
status: i,
|
|
494
|
+
error: o
|
|
495
|
+
}), [
|
|
496
|
+
n,
|
|
497
|
+
u,
|
|
498
|
+
i,
|
|
499
|
+
o
|
|
500
|
+
]);
|
|
501
|
+
return /* @__PURE__ */ h(X, {
|
|
502
|
+
value: d,
|
|
503
|
+
children: e
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
function Q() {
|
|
507
|
+
let e = c.useContext(X);
|
|
508
|
+
if (!e) throw Error("useCurrentUser must be used within UserProvider");
|
|
509
|
+
return e;
|
|
510
|
+
}
|
|
511
|
+
//#endregion
|
|
512
|
+
export { q as a, B as c, J as i, I as l, Q as n, k as o, Y as r, U as s, Z as t, F as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./badge-locale-sIsBdP_e.cjs");let n=require("react");n=e.t(n,1);let r=require("react/jsx-runtime"),i=require("@radix-ui/react-avatar");i=e.t(i,1);let a=require("@radix-ui/react-slot"),o=require("class-variance-authority"),s=require("@tabler/icons-react"),c=require("react-i18next"),l=require("@iconify/react"),u=require("next-themes"),d=require("sonner");var f=t.H(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),p=t.H(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),m=t.H(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),h=t.H(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),g=t.H(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),_=(0,o.cva)(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function v({className:e,variant:n,size:i,asChild:o=!1,...s}){return(0,r.jsx)(o?a.Slot:`button`,{"data-slot":`button`,className:t.U(_({variant:n,size:i,className:e})),...s})}var y=[`lucide`,`tabler`,`mdi`,`ph`,`solar`,`heroicons`],b=y.join(`,`);async function x(e,t){try{let n=await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${b}`);if(n.ok)return(await n.json()).icons??[]}catch{}return[]}function S({open:e,onOpenChange:i,value:a,onSelect:o,onClear:u,title:d,description:f,suggestKeywords:p}){let{t:m}=(0,c.useTranslation)(),[h,g]=(0,n.useState)(``),[_,v]=(0,n.useState)([]),[b,S]=(0,n.useState)(!1),C=(0,n.useRef)(null),[w,T]=(0,n.useState)(!1),[E,D]=(0,n.useState)([]),O=(0,n.useRef)(0),[k,A]=(0,n.useState)(null),j=(0,n.useCallback)(async e=>{let t=++O.current,n=()=>t===O.current;if(!e.trim()){v([]);return}S(!0);try{let t=await x(e,60);n()&&v(t)}catch{n()&&v([])}finally{n()&&S(!1)}},[]);(0,n.useEffect)(()=>(C.current&&clearTimeout(C.current),C.current=setTimeout(()=>j(h),350),()=>{C.current&&clearTimeout(C.current)}),[h,j]);function M(e){o(e),i(!1),g(``),v([]),D([]),A(null)}async function N(){if(!(!p||w)){T(!0),D([]),A(null);try{let e=(await p({title:d,description:f})).filter(e=>typeof e==`string`&&e.trim()).slice(0,5),t=[];for(let n of e)t.push({keyword:n.trim(),icons:await x(n.trim(),30)});D(t)}catch{D([])}finally{T(!1)}}}let P=k?E.find(e=>e.keyword===k)?.icons??[]:E.flatMap(e=>e.icons.slice(0,3)),F=!!p&&!!(d?.trim()??f?.trim());return(0,r.jsx)(t.D,{open:e,onOpenChange:i,children:(0,r.jsxs)(t.k,{className:`flex max-h-[80vh] flex-col sm:max-w-lg`,children:[(0,r.jsx)(t.M,{children:(0,r.jsx)(t.F,{children:m(`forms.iconPicker.chooseAnIcon`,{defaultValue:`Choose an icon`})})}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsxs)(`div`,{className:`relative flex-1`,children:[(0,r.jsx)(s.IconSearch,{className:`absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,r.jsx)(t.l,{value:h,onChange:e=>g(e.target.value),placeholder:m(`forms.iconPicker.searchIcons`,{defaultValue:`Search icons`}),className:`pl-9`,autoFocus:!0})]}),F&&(0,r.jsxs)(t.u,{type:`button`,size:`sm`,variant:`outline`,onClick:N,disabled:w,className:`shrink-0 gap-1.5`,children:[w?(0,r.jsx)(s.IconLoader2,{className:`size-4 animate-spin`}):(0,r.jsx)(s.IconSparkles,{className:`size-4`}),m(`forms.iconPicker.aiSuggest`,{defaultValue:`Suggest`})]})]}),E.length>0&&(0,r.jsxs)(`div`,{className:`rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3`,children:[(0,r.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text`,children:[(0,r.jsx)(s.IconSparkles,{className:`size-3.5`}),m(`forms.iconPicker.aiSuggestions`,{defaultValue:`Suggestions`})]}),(0,r.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1.5`,children:E.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>A(k===e.keyword?null:e.keyword),className:`cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${k===e.keyword?`vg-accent-solid text-white`:`bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]`}`,children:[e.keyword,(0,r.jsx)(`span`,{className:`ml-1 opacity-60`,children:e.icons.length})]},e.keyword))}),(0,r.jsx)(`div`,{className:`flex max-h-60 flex-wrap gap-2 overflow-y-auto`,children:P.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text`:`border border-[var(--vg-accent-line)]`}`,title:e,children:[(0,r.jsx)(l.Icon,{icon:e,className:`size-7`}),(0,r.jsx)(`span`,{className:`max-w-[80px] truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),(0,r.jsxs)(`div`,{className:`max-h-[400px] min-h-[200px] flex-1 overflow-y-auto`,children:[b&&(0,r.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.searching`,{defaultValue:`Searching…`})}),!b&&h&&_.length===0&&(0,r.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.noIconsFound`,{query:h,defaultValue:`No icons found for “{{query}}”`})}),!b&&!h&&_.length===0&&E.length===0&&(0,r.jsxs)(`div`,{className:`flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground`,children:[(0,r.jsx)(`span`,{children:m(`forms.iconPicker.typeToSearch`,{count:y.length,defaultValue:`Type to search {{count}} icon collections`})}),F&&(0,r.jsx)(`span`,{className:`text-xs leading-relaxed`,children:m(`forms.iconPicker.orClickAi`,{defaultValue:`…or let the title and description suggest some`})})]}),_.length>0&&(0,r.jsx)(`div`,{className:`grid grid-cols-6 gap-1.5 p-1`,children:_.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text`:`border border-transparent hover:border-border`}`,title:e,children:[(0,r.jsx)(l.Icon,{icon:e,className:`size-6`}),(0,r.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),a&&(0,r.jsxs)(`div`,{className:`flex items-center justify-between border-t pt-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(l.Icon,{icon:a,className:`size-5`}),(0,r.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:a})]}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[u&&(0,r.jsxs)(t.u,{size:`sm`,type:`button`,variant:`outline`,onClick:()=>{u(),i(!1)},children:[(0,r.jsx)(s.IconTrash,{className:`size-4`}),m(`forms.common.remove`,{defaultValue:`Remove`})]}),(0,r.jsx)(t.u,{size:`sm`,type:`button`,onClick:()=>i(!1),children:m(`forms.iconPicker.done`,{defaultValue:`Done`})})]})]})]})})}var C={blue:{color:`text-blue-600 dark:text-blue-400`,bg:`from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20`,ring:`ring-blue-500/10 dark:ring-blue-400/10`},violet:{color:`text-violet-600 dark:text-violet-400`,bg:`from-violet-500/10 to-purple-500/10 dark:from-violet-500/20 dark:to-purple-500/20`,ring:`ring-violet-500/10 dark:ring-violet-400/10`},emerald:{color:`text-emerald-600 dark:text-emerald-400`,bg:`from-emerald-500/10 to-teal-500/10 dark:from-emerald-500/20 dark:to-teal-500/20`,ring:`ring-emerald-500/10 dark:ring-emerald-400/10`},amber:{color:`text-amber-600 dark:text-amber-400`,bg:`from-amber-500/10 to-orange-500/10 dark:from-amber-500/20 dark:to-orange-500/20`,ring:`ring-amber-500/10 dark:ring-amber-400/10`},rose:{color:`text-rose-600 dark:text-rose-400`,bg:`from-rose-500/10 to-pink-500/10 dark:from-rose-500/20 dark:to-pink-500/20`,ring:`ring-rose-500/10 dark:ring-rose-400/10`},cyan:{color:`text-cyan-600 dark:text-cyan-400`,bg:`from-cyan-500/10 to-sky-500/10 dark:from-cyan-500/20 dark:to-sky-500/20`,ring:`ring-cyan-500/10 dark:ring-cyan-400/10`},orange:{color:`text-orange-600 dark:text-orange-400`,bg:`from-orange-500/10 to-amber-500/10 dark:from-orange-500/20 dark:to-amber-500/20`,ring:`ring-orange-500/10 dark:ring-orange-400/10`},slate:{color:`text-slate-600 dark:text-slate-400`,bg:`from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20`,ring:`ring-slate-500/10 dark:ring-slate-400/10`}},w=(0,n.createContext)({open:!0,toggle:()=>{},variant:`blue`});function T({variant:e=`blue`,defaultOpen:i=!0,children:a,className:o}){let[s,c]=(0,n.useState)(i);return(0,r.jsx)(w.Provider,{value:{open:s,toggle:()=>c(e=>!e),variant:e},children:(0,r.jsx)(`div`,{className:t.U(`rounded-xl border overflow-hidden`,o),children:a})})}function E({icon:e,title:i,description:a,className:o}){let{open:c,toggle:l,variant:u}=(0,n.useContext)(w),d=C[u];return(0,r.jsxs)(`button`,{type:`button`,onClick:l,className:t.U(`flex w-full items-center gap-3 px-5 py-4 bg-muted/40 border-b cursor-pointer hover:bg-muted/60 transition-colors`,o),children:[(0,r.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${d.bg} ring-1 ${d.ring}`,children:(0,r.jsx)(e,{className:`size-4 ${d.color}`})}),(0,r.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,r.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:i}),a&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]}),(0,r.jsx)(s.IconChevronDown,{className:t.U(`ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200`,c&&`rotate-180`)})]})}function D({icon:e,title:i,description:a,className:o}){let{variant:s}=(0,n.useContext)(w),c=C[s];return(0,r.jsxs)(`div`,{className:t.U(`flex items-center gap-3 px-5 py-4 bg-muted/40 border-b`,o),children:[(0,r.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${c.bg} ring-1 ${c.ring}`,children:(0,r.jsx)(e,{className:`size-4 ${c.color}`})}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:i}),a&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]})]})}function O({children:e,className:i}){let{open:a}=(0,n.useContext)(w);return a?(0,r.jsx)(`div`,{className:t.U(`p-5 space-y-6`,i),children:e}):null}T.Header=E,T.StaticHeader=D,T.Content=O;var k=({...e})=>{let{theme:t=`system`}=(0,u.useTheme)();return(0,r.jsx)(d.Toaster,{theme:t,className:`toaster group`,icons:{success:(0,r.jsx)(f,{className:`size-4`}),info:(0,r.jsx)(p,{className:`size-4`}),warning:(0,r.jsx)(g,{className:`size-4`}),error:(0,r.jsx)(h,{className:`size-4`}),loading:(0,r.jsx)(m,{className:`size-4 animate-spin`})},style:{"--normal-bg":`var(--vg-popover)`,"--normal-text":`var(--vg-popover-foreground)`,"--normal-border":`var(--vg-border)`,"--border-radius":`var(--vg-radius)`},...e})};function A({givenName:e,familyName:t,name:n}){let r=(e??``).trim(),i=(t??``).trim();if(r||i){let e=r?r[0]:``,t=i.split(/\s+/).filter(Boolean),n=`${e}${t.length>0?t[t.length-1][0]:``}`.toUpperCase();if(n)return n}let a=(n??``).trim();if(a){let e=a.split(/\s+/).filter(Boolean);return e.length===1?e[0][0].toUpperCase():`${e[0][0]}${e[e.length-1][0]}`.toUpperCase()}return`U`}function j({className:e,givenName:n,familyName:a,name:o,src:s,alt:c,children:l,...u}){let d=A({givenName:n,familyName:a,name:o}),f=c??o??[n,a].filter(Boolean).join(` `);return(0,r.jsxs)(i.Root,{"data-slot":`user-avatar`,className:t.U(`relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full size-8`,`bg-muted text-muted-foreground text-xs font-semibold`,`ring-1 ring-border`,e),...u,children:[s&&(0,r.jsx)(i.Image,{"data-slot":`user-avatar-image`,src:s,alt:f,className:`aspect-square size-full object-cover`}),(0,r.jsx)(i.Fallback,{"data-slot":`user-avatar-fallback`,className:`flex size-full items-center justify-center`,delayMs:s?600:0,children:l??d})]})}var M=n.default.createContext(null);function N({children:e,fetchUser:t}){let[i,a]=n.default.useState({}),[o,s]=n.default.useState(`loading`),[c,l]=n.default.useState(null),u=n.default.useRef(0),d=n.default.useCallback(()=>{let e=++u.current;t().then(t=>{e===u.current&&(a(t),l(null),s(`ready`))},t=>{e===u.current&&(l(t),s(`failed`))})},[t]);n.default.useEffect(()=>{d()},[d]);let f=n.default.useMemo(()=>({user:i,refreshUser:d,status:o,error:c}),[i,d,o,c]);return(0,r.jsx)(M,{value:f,children:e})}function P(){let e=n.default.useContext(M);if(!e)throw Error(`useCurrentUser must be used within UserProvider`);return e}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}});
|