@saasflare/ui 1.0.0 → 1.0.1
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 +258 -0
- package/dist/button-B2DR7obe.d.mts +316 -0
- package/dist/button-B2DR7obe.d.ts +316 -0
- package/dist/chunk-7UB3R5JU.js +590 -0
- package/dist/chunk-JOVJRQO3.js +13 -0
- package/dist/chunk-P2JF7JDY.mjs +550 -0
- package/dist/chunk-S26666D6.mjs +11 -0
- package/dist/entries/carousel.d.mts +24 -0
- package/dist/entries/carousel.d.ts +24 -0
- package/dist/entries/carousel.js +223 -0
- package/dist/entries/carousel.mjs +194 -0
- package/dist/entries/chart.d.mts +69 -0
- package/dist/entries/chart.d.ts +69 -0
- package/dist/entries/chart.js +265 -0
- package/dist/entries/chart.mjs +237 -0
- package/dist/index.d.mts +173 -545
- package/dist/index.d.ts +173 -545
- package/dist/index.js +1094 -2018
- package/dist/index.mjs +650 -1638
- package/package.json +82 -18
package/dist/index.mjs
CHANGED
|
@@ -1,82 +1,56 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
2
|
+
import { useReducedMotion, noMotion, springGentle, springBouncy, buttonVariants, spring, Button, useSaasflareProps } from './chunk-P2JF7JDY.mjs';
|
|
3
|
+
export { Button, SaasflareProvider, SaasflareScript, SaasflareShell, SmoothScrollProvider, buttonVariants, fadeIn, noMotion, scaleIn, slideDown, slideUp, spring, springBouncy, springGentle, springStiff, useAnimation, useReducedMotion, useSaasflareProps, useSaasflareTheme } from './chunk-P2JF7JDY.mjs';
|
|
4
|
+
import { cn } from './chunk-S26666D6.mjs';
|
|
5
|
+
export { cn } from './chunk-S26666D6.mjs';
|
|
6
|
+
import * as React9 from 'react';
|
|
7
|
+
import { useState, useCallback, useMemo, useRef, useEffect, Suspense } from 'react';
|
|
8
|
+
import { m, useMotionValue, useSpring, useTransform, AnimatePresence } from 'framer-motion';
|
|
9
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
11
|
+
import { XIcon, ChevronDownIcon, CheckIcon, ChevronUpIcon, CircleIcon, ChevronRightIcon, ChevronLeftIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, ChevronRight, MoreHorizontal, SearchIcon, MinusIcon, MoreHorizontalIcon, GripVerticalIcon, PanelLeftIcon, ArrowUpIcon, Sun, Moon } from 'lucide-react';
|
|
12
|
+
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
13
|
+
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
6
14
|
import { cva } from 'class-variance-authority';
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
15
|
+
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
16
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
17
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
18
|
+
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
19
|
+
import * as Slot7 from '@radix-ui/react-slot';
|
|
20
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
21
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
22
|
+
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
|
23
|
+
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
24
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
12
25
|
import { Drawer as Drawer$1 } from 'vaul';
|
|
13
|
-
import
|
|
26
|
+
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
27
|
+
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
28
|
+
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
29
|
+
import * as MenubarPrimitive from '@radix-ui/react-menubar';
|
|
30
|
+
import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
|
|
31
|
+
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
32
|
+
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
14
33
|
import { getDefaultClassNames, DayPicker } from 'react-day-picker';
|
|
34
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
35
|
+
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
36
|
+
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
37
|
+
import { useTheme } from 'next-themes';
|
|
15
38
|
import { Toaster as Toaster$1 } from 'sonner';
|
|
16
|
-
import * as
|
|
17
|
-
import
|
|
39
|
+
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
40
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
18
41
|
import { Command as Command$1 } from 'cmdk';
|
|
42
|
+
import * as Direction from '@radix-ui/react-direction';
|
|
43
|
+
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
19
44
|
import { FormProvider, Controller, useFormContext, useFormState } from 'react-hook-form';
|
|
20
45
|
import { OTPInput, OTPInputContext } from 'input-otp';
|
|
21
46
|
import * as ResizablePrimitive from 'react-resizable-panels';
|
|
22
|
-
import
|
|
47
|
+
import Image2 from 'next/image';
|
|
23
48
|
import { usePathname, useSearchParams } from 'next/navigation';
|
|
24
|
-
import NProgress from 'nprogress';
|
|
25
|
-
import 'nprogress/nprogress.css';
|
|
26
49
|
|
|
27
|
-
// src/lib/utils.ts
|
|
28
|
-
function cn(...inputs) {
|
|
29
|
-
return twMerge(clsx(inputs));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// src/lib/color.ts
|
|
33
|
-
function hexToOklch(hex) {
|
|
34
|
-
const normalized = normalizeHex(hex);
|
|
35
|
-
if (!normalized) return null;
|
|
36
|
-
const r = srgbToLinear(parseInt(normalized.slice(0, 2), 16) / 255);
|
|
37
|
-
const g = srgbToLinear(parseInt(normalized.slice(2, 4), 16) / 255);
|
|
38
|
-
const b = srgbToLinear(parseInt(normalized.slice(4, 6), 16) / 255);
|
|
39
|
-
const l_ = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;
|
|
40
|
-
const m_ = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;
|
|
41
|
-
const s_ = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;
|
|
42
|
-
const lc = Math.cbrt(l_);
|
|
43
|
-
const mc = Math.cbrt(m_);
|
|
44
|
-
const sc = Math.cbrt(s_);
|
|
45
|
-
const L = 0.2104542553 * lc + 0.793617785 * mc - 0.0040720468 * sc;
|
|
46
|
-
const a = 1.9779984951 * lc - 2.428592205 * mc + 0.4505937099 * sc;
|
|
47
|
-
const b2 = 0.0259040371 * lc + 0.7827717662 * mc - 0.808675766 * sc;
|
|
48
|
-
const c = Math.sqrt(a * a + b2 * b2);
|
|
49
|
-
let h = Math.atan2(b2, a) * 180 / Math.PI;
|
|
50
|
-
if (h < 0) h += 360;
|
|
51
|
-
return { l: L, c, h };
|
|
52
|
-
}
|
|
53
|
-
function normalizeHex(input) {
|
|
54
|
-
if (typeof input !== "string") return null;
|
|
55
|
-
const s = input.trim().replace(/^#/, "").toLowerCase();
|
|
56
|
-
if (/^[0-9a-f]{3}$/.test(s)) {
|
|
57
|
-
return s[0] + s[0] + s[1] + s[1] + s[2] + s[2];
|
|
58
|
-
}
|
|
59
|
-
if (/^[0-9a-f]{4}$/.test(s)) {
|
|
60
|
-
return s[0] + s[0] + s[1] + s[1] + s[2] + s[2];
|
|
61
|
-
}
|
|
62
|
-
if (/^[0-9a-f]{6}$/.test(s)) {
|
|
63
|
-
return s;
|
|
64
|
-
}
|
|
65
|
-
if (/^[0-9a-f]{8}$/.test(s)) {
|
|
66
|
-
return s.slice(0, 6);
|
|
67
|
-
}
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
function srgbToLinear(c) {
|
|
71
|
-
return c <= 0.04045 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
72
|
-
}
|
|
73
|
-
function isHex(input) {
|
|
74
|
-
return typeof input === "string" && /^#?[0-9a-f]{3,8}$/i.test(input.trim());
|
|
75
|
-
}
|
|
76
50
|
var MOBILE_BREAKPOINT = 768;
|
|
77
51
|
function useIsMobile() {
|
|
78
|
-
const [isMobile, setIsMobile] =
|
|
79
|
-
|
|
52
|
+
const [isMobile, setIsMobile] = React9.useState(void 0);
|
|
53
|
+
React9.useEffect(() => {
|
|
80
54
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
81
55
|
const onChange = () => {
|
|
82
56
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -87,17 +61,6 @@ function useIsMobile() {
|
|
|
87
61
|
}, []);
|
|
88
62
|
return !!isMobile;
|
|
89
63
|
}
|
|
90
|
-
var QUERY = "(prefers-reduced-motion: reduce)";
|
|
91
|
-
var subscribe = (cb) => {
|
|
92
|
-
const mql = window.matchMedia(QUERY);
|
|
93
|
-
mql.addEventListener("change", cb);
|
|
94
|
-
return () => mql.removeEventListener("change", cb);
|
|
95
|
-
};
|
|
96
|
-
var getSnapshot = () => window.matchMedia(QUERY).matches;
|
|
97
|
-
var getServerSnapshot = () => false;
|
|
98
|
-
function useReducedMotion() {
|
|
99
|
-
return React13.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
100
|
-
}
|
|
101
64
|
function useDisclosure(options = {}) {
|
|
102
65
|
const { defaultOpen = false, isOpen: controlledOpen, onChange } = options;
|
|
103
66
|
const isControlled = controlledOpen !== void 0;
|
|
@@ -215,488 +178,10 @@ function usePagination(options) {
|
|
|
215
178
|
}, [activePage, safeTotal, siblings, boundaries]);
|
|
216
179
|
return { activePage, range, setPage, next, previous, first, last };
|
|
217
180
|
}
|
|
218
|
-
|
|
219
|
-
// src/components/ui/motion-config.ts
|
|
220
|
-
var spring = { type: "spring", stiffness: 400, damping: 25 };
|
|
221
|
-
var springBouncy = { type: "spring", stiffness: 300, damping: 15 };
|
|
222
|
-
var springGentle = { type: "spring", stiffness: 200, damping: 20 };
|
|
223
|
-
var springStiff = { type: "spring", stiffness: 500, damping: 30 };
|
|
224
|
-
var noMotion = { duration: 0 };
|
|
225
|
-
var fadeIn = { initial: { opacity: 0 }, animate: { opacity: 1 } };
|
|
226
|
-
var scaleIn = { initial: { opacity: 0, scale: 0.95 }, animate: { opacity: 1, scale: 1 } };
|
|
227
|
-
var slideUp = { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 } };
|
|
228
|
-
var slideDown = { initial: { opacity: 0, y: -8 }, animate: { opacity: 1, y: 0 } };
|
|
229
|
-
var AnimationContext = createContext(
|
|
230
|
-
void 0
|
|
231
|
-
);
|
|
232
|
-
function useAnimation() {
|
|
233
|
-
const context = useContext(AnimationContext);
|
|
234
|
-
const prefersReduced = useReducedMotion();
|
|
235
|
-
if (context) return context;
|
|
236
|
-
return { animated: !prefersReduced };
|
|
237
|
-
}
|
|
238
|
-
function SmoothScrollProvider({
|
|
239
|
-
children,
|
|
240
|
-
enabled = true
|
|
241
|
-
}) {
|
|
242
|
-
const reduced = useReducedMotion();
|
|
243
|
-
const shouldSmooth = enabled && !reduced;
|
|
244
|
-
useEffect(() => {
|
|
245
|
-
if (!shouldSmooth) return;
|
|
246
|
-
const html = document.documentElement;
|
|
247
|
-
const previous = html.style.scrollBehavior;
|
|
248
|
-
html.style.scrollBehavior = "smooth";
|
|
249
|
-
return () => {
|
|
250
|
-
html.style.scrollBehavior = previous;
|
|
251
|
-
};
|
|
252
|
-
}, [shouldSmooth]);
|
|
253
|
-
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// src/lib/constants.ts
|
|
257
|
-
var UI_PREFS_STORAGE_KEY = "sf-ui-prefs";
|
|
258
|
-
var THEME_STORAGE_KEY = "theme";
|
|
259
|
-
var SAASFLARE_DATA_ATTR = {
|
|
260
|
-
/** Active brand palette id (matches `:root[data-palette="…"]` in palettes.css). */
|
|
261
|
-
palette: "data-palette",
|
|
262
|
-
/** Active surface style (matches `[data-style="…"]` in surfaces.css). */
|
|
263
|
-
style: "data-style",
|
|
264
|
-
/** Active radius preset (matches `:root[data-radius="…"]` in theme.css). */
|
|
265
|
-
radius: "data-radius",
|
|
266
|
-
/** Animation kill-switch (matches `[data-animated="false"]` in motion.css). */
|
|
267
|
-
animated: "data-animated"
|
|
268
|
-
};
|
|
269
|
-
var SYNC_PREFIX = "sf-ls:";
|
|
270
|
-
function useLocalStorage(key, initialValue, options) {
|
|
271
|
-
const initialRef = useRef(initialValue);
|
|
272
|
-
const optionsRef = useRef(options);
|
|
273
|
-
optionsRef.current = options;
|
|
274
|
-
const serialize = useCallback(
|
|
275
|
-
(value) => (optionsRef.current?.serializer ?? JSON.stringify)(value),
|
|
276
|
-
[]
|
|
277
|
-
);
|
|
278
|
-
const deserialize = useCallback(
|
|
279
|
-
(raw) => (optionsRef.current?.deserializer ?? JSON.parse)(raw),
|
|
280
|
-
[]
|
|
281
|
-
);
|
|
282
|
-
const handleError = useCallback(
|
|
283
|
-
(error, operation) => {
|
|
284
|
-
if (optionsRef.current?.onError) {
|
|
285
|
-
optionsRef.current.onError(error, operation);
|
|
286
|
-
} else {
|
|
287
|
-
console.warn(`useLocalStorage: ${operation} failed for "${key}"`, error);
|
|
288
|
-
}
|
|
289
|
-
},
|
|
290
|
-
[key]
|
|
291
|
-
);
|
|
292
|
-
const readValue = useCallback(() => {
|
|
293
|
-
if (typeof window === "undefined") return initialRef.current;
|
|
294
|
-
try {
|
|
295
|
-
const item = window.localStorage.getItem(key);
|
|
296
|
-
return item !== null ? deserialize(item) : initialRef.current;
|
|
297
|
-
} catch (error) {
|
|
298
|
-
handleError(error, "read");
|
|
299
|
-
return initialRef.current;
|
|
300
|
-
}
|
|
301
|
-
}, [key, deserialize, handleError]);
|
|
302
|
-
const [storedValue, setStoredValue] = useState(() => readValue());
|
|
303
|
-
const setValue = useCallback(
|
|
304
|
-
(value) => {
|
|
305
|
-
try {
|
|
306
|
-
setStoredValue((prev) => {
|
|
307
|
-
const next = typeof value === "function" ? value(prev) : value;
|
|
308
|
-
if (typeof window !== "undefined") {
|
|
309
|
-
window.localStorage.setItem(key, serialize(next));
|
|
310
|
-
window.dispatchEvent(new CustomEvent(`${SYNC_PREFIX}${key}`));
|
|
311
|
-
}
|
|
312
|
-
return next;
|
|
313
|
-
});
|
|
314
|
-
} catch (error) {
|
|
315
|
-
handleError(error, "write");
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
[key, serialize, handleError]
|
|
319
|
-
);
|
|
320
|
-
const removeValue = useCallback(() => {
|
|
321
|
-
try {
|
|
322
|
-
if (typeof window !== "undefined") {
|
|
323
|
-
window.localStorage.removeItem(key);
|
|
324
|
-
window.dispatchEvent(new CustomEvent(`${SYNC_PREFIX}${key}`));
|
|
325
|
-
}
|
|
326
|
-
setStoredValue(initialRef.current);
|
|
327
|
-
} catch (error) {
|
|
328
|
-
handleError(error, "remove");
|
|
329
|
-
}
|
|
330
|
-
}, [key, handleError]);
|
|
331
|
-
useEffect(() => {
|
|
332
|
-
const onStorage = (e) => {
|
|
333
|
-
if (e.key === key) setStoredValue(readValue());
|
|
334
|
-
};
|
|
335
|
-
const onSync = () => setStoredValue(readValue());
|
|
336
|
-
const syncEvent = `${SYNC_PREFIX}${key}`;
|
|
337
|
-
window.addEventListener("storage", onStorage);
|
|
338
|
-
window.addEventListener(syncEvent, onSync);
|
|
339
|
-
return () => {
|
|
340
|
-
window.removeEventListener("storage", onStorage);
|
|
341
|
-
window.removeEventListener(syncEvent, onSync);
|
|
342
|
-
};
|
|
343
|
-
}, [key, readValue]);
|
|
344
|
-
useEffect(() => {
|
|
345
|
-
setStoredValue(readValue());
|
|
346
|
-
}, [readValue]);
|
|
347
|
-
return [storedValue, setValue, removeValue];
|
|
348
|
-
}
|
|
349
|
-
function encode(value) {
|
|
350
|
-
return JSON.stringify(value ?? null).replace(/</g, "\\u003c");
|
|
351
|
-
}
|
|
352
|
-
function buildSaasflareScript(palette, surface, radius, animated, storageKey = UI_PREFS_STORAGE_KEY) {
|
|
353
|
-
return buildScript(palette, surface, radius, animated, storageKey);
|
|
354
|
-
}
|
|
355
|
-
function buildScript(palette, surface, radius, animated, storageKey) {
|
|
356
|
-
const forcePalette = palette || null;
|
|
357
|
-
const forceSurface = surface || null;
|
|
358
|
-
const forceRadius = radius || null;
|
|
359
|
-
const forceAnimated = typeof animated === "boolean" ? animated : null;
|
|
360
|
-
return `(function(){try{var r=document.documentElement;var p={};try{p=JSON.parse(localStorage.getItem(${encode(storageKey)})||"{}")||{}}catch(_){}var t=${encode(forcePalette)};if(t===null&&typeof p.palette==="string")t=p.palette;if(typeof t==="string"&&t.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.palette)},t);var s=${encode(forceSurface)};if(s===null&&typeof p.surface==="string")s=p.surface;if(typeof s==="string"&&s.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.style)},s);var d=${encode(forceRadius)};if(d===null&&typeof p.radius==="string")d=p.radius;if(typeof d==="string"&&d.length)r.setAttribute(${encode(SAASFLARE_DATA_ATTR.radius)},d);var a=${encode(forceAnimated)};if(a===null&&typeof p.animated==="boolean")a=p.animated;if(typeof a==="boolean")r.setAttribute(${encode(SAASFLARE_DATA_ATTR.animated)},String(a));}catch(e){}})();`;
|
|
361
|
-
}
|
|
362
|
-
function SaasflareScript({ nonce, palette, surface, radius, animated, storageKey = UI_PREFS_STORAGE_KEY }) {
|
|
363
|
-
return /* @__PURE__ */ jsx(
|
|
364
|
-
"script",
|
|
365
|
-
{
|
|
366
|
-
nonce,
|
|
367
|
-
dangerouslySetInnerHTML: { __html: buildScript(palette, surface, radius, animated, storageKey) }
|
|
368
|
-
}
|
|
369
|
-
);
|
|
370
|
-
}
|
|
371
|
-
var DEFAULT_CONTEXT = {
|
|
372
|
-
palette: null,
|
|
373
|
-
surface: "flat",
|
|
374
|
-
radius: "rounded",
|
|
375
|
-
setPalette: () => {
|
|
376
|
-
},
|
|
377
|
-
setSurface: () => {
|
|
378
|
-
},
|
|
379
|
-
setRadius: () => {
|
|
380
|
-
}
|
|
381
|
-
};
|
|
382
|
-
var SaasflareThemeContext = createContext(DEFAULT_CONTEXT);
|
|
383
|
-
function useSaasflareTheme() {
|
|
384
|
-
return useContext(SaasflareThemeContext);
|
|
385
|
-
}
|
|
386
|
-
function applyColorAxis(root, prefix, value, injected) {
|
|
387
|
-
if (isHex(value)) {
|
|
388
|
-
const oklch = hexToOklch(value);
|
|
389
|
-
if (oklch) {
|
|
390
|
-
const hKey = `--${prefix}-h`;
|
|
391
|
-
const cKey = `--${prefix}-c`;
|
|
392
|
-
const lKey = `--${prefix}-l`;
|
|
393
|
-
root.style.setProperty(hKey, oklch.h.toFixed(2));
|
|
394
|
-
root.style.setProperty(cKey, oklch.c.toFixed(4));
|
|
395
|
-
if (prefix === "primary") {
|
|
396
|
-
root.style.setProperty(lKey, oklch.l.toFixed(4));
|
|
397
|
-
injected.push(lKey);
|
|
398
|
-
}
|
|
399
|
-
injected.push(hKey, cKey);
|
|
400
|
-
return;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
const key = `--${prefix}`;
|
|
404
|
-
root.style.setProperty(key, value);
|
|
405
|
-
injected.push(key);
|
|
406
|
-
}
|
|
407
|
-
function CustomPaletteInjector({ palette }) {
|
|
408
|
-
const { resolvedTheme } = useTheme();
|
|
409
|
-
useEffect(() => {
|
|
410
|
-
const root = document.documentElement;
|
|
411
|
-
const injected = [];
|
|
412
|
-
applyColorAxis(root, "primary", palette.primary, injected);
|
|
413
|
-
if (palette.neutral) {
|
|
414
|
-
applyColorAxis(root, "neutral", palette.neutral, injected);
|
|
415
|
-
}
|
|
416
|
-
if (palette.radius) {
|
|
417
|
-
root.style.setProperty("--radius", palette.radius);
|
|
418
|
-
injected.push("--radius");
|
|
419
|
-
}
|
|
420
|
-
const extras = resolvedTheme === "dark" ? palette.dark : palette.light;
|
|
421
|
-
if (extras) {
|
|
422
|
-
for (const [key, value] of Object.entries(extras)) {
|
|
423
|
-
root.style.setProperty(key, value);
|
|
424
|
-
injected.push(key);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
return () => {
|
|
428
|
-
for (const key of injected) {
|
|
429
|
-
root.style.removeProperty(key);
|
|
430
|
-
}
|
|
431
|
-
};
|
|
432
|
-
}, [resolvedTheme, palette]);
|
|
433
|
-
return null;
|
|
434
|
-
}
|
|
435
|
-
var PERSISTED_DEFAULTS = {
|
|
436
|
-
palette: null,
|
|
437
|
-
surface: null,
|
|
438
|
-
radius: null,
|
|
439
|
-
animated: null
|
|
440
|
-
};
|
|
441
|
-
function SaasflareProvider({
|
|
442
|
-
children,
|
|
443
|
-
theme = "system",
|
|
444
|
-
palette,
|
|
445
|
-
surface,
|
|
446
|
-
radius,
|
|
447
|
-
animated = true,
|
|
448
|
-
smoothScrolling = false,
|
|
449
|
-
disableScript = false,
|
|
450
|
-
scriptNonce,
|
|
451
|
-
storageKey = UI_PREFS_STORAGE_KEY,
|
|
452
|
-
themeStorageKey = THEME_STORAGE_KEY
|
|
453
|
-
}) {
|
|
454
|
-
const isCustomPalette = typeof palette === "object";
|
|
455
|
-
const scriptPalette = !isCustomPalette && typeof palette === "string" ? palette : void 0;
|
|
456
|
-
const scriptSurface = typeof surface === "string" ? surface : void 0;
|
|
457
|
-
const scriptRadius = typeof radius === "string" ? radius : void 0;
|
|
458
|
-
const scriptHtml = disableScript ? null : buildSaasflareScript(scriptPalette, scriptSurface, scriptRadius, animated, storageKey);
|
|
459
|
-
const [persisted, setPersisted] = useLocalStorage(
|
|
460
|
-
storageKey,
|
|
461
|
-
PERSISTED_DEFAULTS
|
|
462
|
-
);
|
|
463
|
-
const currentPalette = isCustomPalette ? palette.name : palette ?? persisted.palette;
|
|
464
|
-
const currentStyle = surface ?? persisted.surface ?? "flat";
|
|
465
|
-
const currentRadius = radius ?? persisted.radius ?? "rounded";
|
|
466
|
-
const setPalette = useCallback(
|
|
467
|
-
(id) => setPersisted((prev) => ({ ...prev, palette: id })),
|
|
468
|
-
[setPersisted]
|
|
469
|
-
);
|
|
470
|
-
const setSurface = useCallback(
|
|
471
|
-
(style) => setPersisted((prev) => ({ ...prev, surface: style })),
|
|
472
|
-
[setPersisted]
|
|
473
|
-
);
|
|
474
|
-
const setRadius = useCallback(
|
|
475
|
-
(r) => setPersisted((prev) => ({ ...prev, radius: r })),
|
|
476
|
-
[setPersisted]
|
|
477
|
-
);
|
|
478
|
-
const prefersReduced = useReducedMotion();
|
|
479
|
-
const effectiveAnimated = animated && !prefersReduced;
|
|
480
|
-
useEffect(() => {
|
|
481
|
-
const root = document.documentElement;
|
|
482
|
-
if (currentPalette) {
|
|
483
|
-
root.setAttribute(SAASFLARE_DATA_ATTR.palette, currentPalette);
|
|
484
|
-
} else {
|
|
485
|
-
root.removeAttribute(SAASFLARE_DATA_ATTR.palette);
|
|
486
|
-
}
|
|
487
|
-
root.setAttribute(SAASFLARE_DATA_ATTR.style, currentStyle);
|
|
488
|
-
root.setAttribute(SAASFLARE_DATA_ATTR.radius, currentRadius);
|
|
489
|
-
root.setAttribute(SAASFLARE_DATA_ATTR.animated, String(effectiveAnimated));
|
|
490
|
-
}, [currentPalette, currentStyle, currentRadius, effectiveAnimated]);
|
|
491
|
-
return /* @__PURE__ */ jsxs(
|
|
492
|
-
ThemeProvider,
|
|
493
|
-
{
|
|
494
|
-
attribute: "class",
|
|
495
|
-
defaultTheme: theme,
|
|
496
|
-
enableSystem: theme === "system",
|
|
497
|
-
storageKey: themeStorageKey,
|
|
498
|
-
disableTransitionOnChange: true,
|
|
499
|
-
children: [
|
|
500
|
-
scriptHtml !== null && /* @__PURE__ */ jsx(
|
|
501
|
-
"script",
|
|
502
|
-
{
|
|
503
|
-
nonce: scriptNonce,
|
|
504
|
-
dangerouslySetInnerHTML: { __html: scriptHtml }
|
|
505
|
-
}
|
|
506
|
-
),
|
|
507
|
-
/* @__PURE__ */ jsx(
|
|
508
|
-
SaasflareThemeContext.Provider,
|
|
509
|
-
{
|
|
510
|
-
value: {
|
|
511
|
-
palette: currentPalette,
|
|
512
|
-
surface: currentStyle,
|
|
513
|
-
radius: currentRadius,
|
|
514
|
-
setPalette,
|
|
515
|
-
setSurface,
|
|
516
|
-
setRadius
|
|
517
|
-
},
|
|
518
|
-
children: /* @__PURE__ */ jsxs(AnimationContext.Provider, { value: { animated: effectiveAnimated }, children: [
|
|
519
|
-
isCustomPalette && /* @__PURE__ */ jsx(CustomPaletteInjector, { palette }),
|
|
520
|
-
/* @__PURE__ */ jsx(SmoothScrollProvider, { enabled: smoothScrolling, children })
|
|
521
|
-
] })
|
|
522
|
-
}
|
|
523
|
-
)
|
|
524
|
-
]
|
|
525
|
-
}
|
|
526
|
-
);
|
|
527
|
-
}
|
|
528
|
-
function SaasflareShell({
|
|
529
|
-
children,
|
|
530
|
-
lang = "en",
|
|
531
|
-
className,
|
|
532
|
-
bodyClassName,
|
|
533
|
-
head,
|
|
534
|
-
palette,
|
|
535
|
-
surface,
|
|
536
|
-
radius,
|
|
537
|
-
animated,
|
|
538
|
-
theme,
|
|
539
|
-
smoothScrolling,
|
|
540
|
-
storageKey,
|
|
541
|
-
themeStorageKey
|
|
542
|
-
}) {
|
|
543
|
-
const dataPalette = typeof palette === "object" ? palette.name : palette;
|
|
544
|
-
const dataAnimated = typeof animated === "boolean" ? String(animated) : void 0;
|
|
545
|
-
return /* @__PURE__ */ jsxs(
|
|
546
|
-
"html",
|
|
547
|
-
{
|
|
548
|
-
lang,
|
|
549
|
-
className,
|
|
550
|
-
suppressHydrationWarning: true,
|
|
551
|
-
"data-palette": dataPalette,
|
|
552
|
-
"data-style": surface,
|
|
553
|
-
"data-radius": radius,
|
|
554
|
-
"data-animated": dataAnimated,
|
|
555
|
-
children: [
|
|
556
|
-
head ? /* @__PURE__ */ jsx("head", { children: head }) : null,
|
|
557
|
-
/* @__PURE__ */ jsx("body", { className: bodyClassName, children: /* @__PURE__ */ jsx(
|
|
558
|
-
SaasflareProvider,
|
|
559
|
-
{
|
|
560
|
-
palette,
|
|
561
|
-
surface,
|
|
562
|
-
radius,
|
|
563
|
-
animated,
|
|
564
|
-
theme,
|
|
565
|
-
smoothScrolling,
|
|
566
|
-
storageKey,
|
|
567
|
-
themeStorageKey,
|
|
568
|
-
disableScript: true,
|
|
569
|
-
children
|
|
570
|
-
}
|
|
571
|
-
) })
|
|
572
|
-
]
|
|
573
|
-
}
|
|
574
|
-
);
|
|
575
|
-
}
|
|
576
|
-
function useSaasflareProps(props = {}) {
|
|
577
|
-
const ctx = useSaasflareTheme();
|
|
578
|
-
const anim = useContext(AnimationContext);
|
|
579
|
-
return {
|
|
580
|
-
surface: props.surface ?? ctx.surface,
|
|
581
|
-
radius: props.radius ?? ctx.radius,
|
|
582
|
-
animated: props.animated ?? anim?.animated ?? true,
|
|
583
|
-
palette: ctx.palette
|
|
584
|
-
};
|
|
585
|
-
}
|
|
586
|
-
var LEGACY_VARIANT_MAP = {
|
|
587
|
-
default: { variant: "solid", intent: "primary" },
|
|
588
|
-
destructive: { variant: "solid", intent: "danger" },
|
|
589
|
-
secondary: { variant: "soft", intent: "neutral" }
|
|
590
|
-
};
|
|
591
|
-
var buttonVariants = cva(
|
|
592
|
-
"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
593
|
-
{
|
|
594
|
-
variants: {
|
|
595
|
-
variant: {
|
|
596
|
-
solid: "bg-[var(--intent)] text-[var(--intent-fg)] shadow-xs hover:brightness-110 dark:hover:brightness-125",
|
|
597
|
-
soft: "bg-[var(--intent)]/15 text-[var(--intent)] hover:bg-[var(--intent)]/25 dark:bg-[var(--intent)]/20 dark:hover:bg-[var(--intent)]/30",
|
|
598
|
-
outline: "border border-[var(--intent)]/30 text-[var(--intent)] shadow-xs hover:bg-[var(--intent)]/10 dark:border-[var(--intent)]/40 dark:hover:bg-[var(--intent)]/15",
|
|
599
|
-
ghost: "text-[var(--intent)] hover:bg-[var(--intent)]/10 dark:hover:bg-[var(--intent)]/15",
|
|
600
|
-
link: "text-[var(--intent)] underline-offset-4 hover:underline",
|
|
601
|
-
glass: "bg-[var(--glass-bg)] text-[var(--intent)] border border-[var(--glass-border)] backdrop-blur-lg shadow-[var(--glass-shadow)] hover:bg-[var(--glass-bg-hover)] hover:border-[var(--glass-border-hover)]",
|
|
602
|
-
shadow: "bg-[var(--intent)] text-[var(--intent-fg)] shadow-[var(--btn-shadow)] hover:shadow-[var(--btn-shadow-hover)] hover:brightness-110 dark:hover:brightness-125"
|
|
603
|
-
},
|
|
604
|
-
size: {
|
|
605
|
-
xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
606
|
-
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
607
|
-
md: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
608
|
-
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
609
|
-
xl: "h-12 rounded-lg px-8 text-base has-[>svg]:px-5 [&_svg:not([class*='size-'])]:size-5",
|
|
610
|
-
icon: "size-9",
|
|
611
|
-
"icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
|
|
612
|
-
"icon-sm": "size-8",
|
|
613
|
-
"icon-lg": "size-10"
|
|
614
|
-
}
|
|
615
|
-
},
|
|
616
|
-
defaultVariants: {
|
|
617
|
-
variant: "solid",
|
|
618
|
-
size: "md"
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
);
|
|
622
|
-
function Button({
|
|
623
|
-
className,
|
|
624
|
-
variant: variantProp,
|
|
625
|
-
size = "md",
|
|
626
|
-
intent: intentProp = "primary",
|
|
627
|
-
asChild = false,
|
|
628
|
-
loading = false,
|
|
629
|
-
fullWidth = false,
|
|
630
|
-
surface,
|
|
631
|
-
animated,
|
|
632
|
-
disabled,
|
|
633
|
-
children,
|
|
634
|
-
...props
|
|
635
|
-
}) {
|
|
636
|
-
const sfProps = useSaasflareProps({ surface, animated });
|
|
637
|
-
const reduced = useReducedMotion();
|
|
638
|
-
const effectiveVariant = variantProp ?? (sfProps.surface === "glass" ? "glass" : "solid");
|
|
639
|
-
let resolvedVariant = effectiveVariant;
|
|
640
|
-
let resolvedIntent = intentProp;
|
|
641
|
-
const legacy = LEGACY_VARIANT_MAP[effectiveVariant];
|
|
642
|
-
if (legacy) {
|
|
643
|
-
resolvedVariant = legacy.variant;
|
|
644
|
-
if (legacy.intent) {
|
|
645
|
-
resolvedIntent = legacy.intent;
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
const motionDisabled = !sfProps.animated || reduced || disabled || loading;
|
|
649
|
-
const transition = !sfProps.animated || reduced ? noMotion : spring;
|
|
650
|
-
if (asChild) {
|
|
651
|
-
return /* @__PURE__ */ jsx(
|
|
652
|
-
Slot.Root,
|
|
653
|
-
{
|
|
654
|
-
"data-slot": "button",
|
|
655
|
-
"data-variant": resolvedVariant,
|
|
656
|
-
"data-intent": resolvedIntent,
|
|
657
|
-
"data-size": size,
|
|
658
|
-
"data-surface": sfProps.surface,
|
|
659
|
-
className: cn(
|
|
660
|
-
buttonVariants({ variant: resolvedVariant, size }),
|
|
661
|
-
fullWidth && "w-full",
|
|
662
|
-
className
|
|
663
|
-
),
|
|
664
|
-
...props,
|
|
665
|
-
children
|
|
666
|
-
}
|
|
667
|
-
);
|
|
668
|
-
}
|
|
669
|
-
return /* @__PURE__ */ jsxs(
|
|
670
|
-
motion.button,
|
|
671
|
-
{
|
|
672
|
-
"data-slot": "button",
|
|
673
|
-
"data-variant": resolvedVariant,
|
|
674
|
-
"data-intent": resolvedIntent,
|
|
675
|
-
"data-size": size,
|
|
676
|
-
"data-surface": sfProps.surface,
|
|
677
|
-
whileHover: motionDisabled ? void 0 : { scale: 1.02 },
|
|
678
|
-
whileTap: motionDisabled ? void 0 : { scale: 0.97 },
|
|
679
|
-
transition,
|
|
680
|
-
className: cn(
|
|
681
|
-
buttonVariants({ variant: resolvedVariant, size }),
|
|
682
|
-
fullWidth && "w-full",
|
|
683
|
-
className
|
|
684
|
-
),
|
|
685
|
-
disabled,
|
|
686
|
-
"aria-busy": loading || void 0,
|
|
687
|
-
"aria-disabled": disabled || void 0,
|
|
688
|
-
...props,
|
|
689
|
-
children: [
|
|
690
|
-
loading && /* @__PURE__ */ jsx(Loader2Icon, { className: "animate-spin", "aria-hidden": "true" }),
|
|
691
|
-
children
|
|
692
|
-
]
|
|
693
|
-
}
|
|
694
|
-
);
|
|
695
|
-
}
|
|
696
181
|
function Card({ className, ...props }) {
|
|
697
182
|
const reduced = useReducedMotion();
|
|
698
183
|
return /* @__PURE__ */ jsx(
|
|
699
|
-
|
|
184
|
+
m.div,
|
|
700
185
|
{
|
|
701
186
|
"data-slot": "card",
|
|
702
187
|
whileHover: reduced ? void 0 : { y: -2, boxShadow: "0 8px 30px rgba(0,0,0,0.08)" },
|
|
@@ -778,29 +263,29 @@ function CardFooter({ className, ...props }) {
|
|
|
778
263
|
function Dialog({
|
|
779
264
|
...props
|
|
780
265
|
}) {
|
|
781
|
-
return /* @__PURE__ */ jsx(
|
|
266
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
782
267
|
}
|
|
783
268
|
function DialogTrigger({
|
|
784
269
|
...props
|
|
785
270
|
}) {
|
|
786
|
-
return /* @__PURE__ */ jsx(
|
|
271
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
|
|
787
272
|
}
|
|
788
273
|
function DialogPortal({
|
|
789
274
|
...props
|
|
790
275
|
}) {
|
|
791
|
-
return /* @__PURE__ */ jsx(
|
|
276
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
|
|
792
277
|
}
|
|
793
278
|
function DialogClose({
|
|
794
279
|
...props
|
|
795
280
|
}) {
|
|
796
|
-
return /* @__PURE__ */ jsx(
|
|
281
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
|
|
797
282
|
}
|
|
798
283
|
function DialogOverlay({
|
|
799
284
|
className,
|
|
800
285
|
...props
|
|
801
286
|
}) {
|
|
802
287
|
return /* @__PURE__ */ jsx(
|
|
803
|
-
|
|
288
|
+
DialogPrimitive.Overlay,
|
|
804
289
|
{
|
|
805
290
|
"data-slot": "dialog-overlay",
|
|
806
291
|
className: cn(
|
|
@@ -820,13 +305,13 @@ function DialogContent({
|
|
|
820
305
|
return /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
821
306
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
822
307
|
/* @__PURE__ */ jsx(
|
|
823
|
-
|
|
308
|
+
DialogPrimitive.Content,
|
|
824
309
|
{
|
|
825
310
|
"data-slot": "dialog-content",
|
|
826
311
|
asChild: true,
|
|
827
312
|
...props,
|
|
828
313
|
children: /* @__PURE__ */ jsxs(
|
|
829
|
-
|
|
314
|
+
m.div,
|
|
830
315
|
{
|
|
831
316
|
initial: reduced ? { opacity: 1 } : { opacity: 0, scale: 0.95, y: 10 },
|
|
832
317
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -838,7 +323,7 @@ function DialogContent({
|
|
|
838
323
|
),
|
|
839
324
|
children: [
|
|
840
325
|
children,
|
|
841
|
-
/* @__PURE__ */ jsxs(
|
|
326
|
+
/* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none cursor-pointer [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [
|
|
842
327
|
/* @__PURE__ */ jsx(XIcon, {}),
|
|
843
328
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
844
329
|
] })
|
|
@@ -874,7 +359,7 @@ function DialogTitle({
|
|
|
874
359
|
...props
|
|
875
360
|
}) {
|
|
876
361
|
return /* @__PURE__ */ jsx(
|
|
877
|
-
|
|
362
|
+
DialogPrimitive.Title,
|
|
878
363
|
{
|
|
879
364
|
"data-slot": "dialog-title",
|
|
880
365
|
className: cn("text-lg leading-none font-semibold", className),
|
|
@@ -887,7 +372,7 @@ function DialogDescription({
|
|
|
887
372
|
...props
|
|
888
373
|
}) {
|
|
889
374
|
return /* @__PURE__ */ jsx(
|
|
890
|
-
|
|
375
|
+
DialogPrimitive.Description,
|
|
891
376
|
{
|
|
892
377
|
"data-slot": "dialog-description",
|
|
893
378
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -898,24 +383,24 @@ function DialogDescription({
|
|
|
898
383
|
function AlertDialog({
|
|
899
384
|
...props
|
|
900
385
|
}) {
|
|
901
|
-
return /* @__PURE__ */ jsx(
|
|
386
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
902
387
|
}
|
|
903
388
|
function AlertDialogTrigger({
|
|
904
389
|
...props
|
|
905
390
|
}) {
|
|
906
|
-
return /* @__PURE__ */ jsx(
|
|
391
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props });
|
|
907
392
|
}
|
|
908
393
|
function AlertDialogPortal({
|
|
909
394
|
...props
|
|
910
395
|
}) {
|
|
911
|
-
return /* @__PURE__ */ jsx(
|
|
396
|
+
return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
|
|
912
397
|
}
|
|
913
398
|
function AlertDialogOverlay({
|
|
914
399
|
className,
|
|
915
400
|
...props
|
|
916
401
|
}) {
|
|
917
402
|
return /* @__PURE__ */ jsx(
|
|
918
|
-
|
|
403
|
+
AlertDialogPrimitive.Overlay,
|
|
919
404
|
{
|
|
920
405
|
"data-slot": "alert-dialog-overlay",
|
|
921
406
|
className: cn(
|
|
@@ -935,13 +420,13 @@ function AlertDialogContent({
|
|
|
935
420
|
return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
|
|
936
421
|
/* @__PURE__ */ jsx(AlertDialogOverlay, {}),
|
|
937
422
|
/* @__PURE__ */ jsx(
|
|
938
|
-
|
|
423
|
+
AlertDialogPrimitive.Content,
|
|
939
424
|
{
|
|
940
425
|
"data-slot": "alert-dialog-content",
|
|
941
426
|
asChild: true,
|
|
942
427
|
...props,
|
|
943
428
|
children: /* @__PURE__ */ jsx(
|
|
944
|
-
|
|
429
|
+
m.div,
|
|
945
430
|
{
|
|
946
431
|
initial: reduced ? { opacity: 1 } : { opacity: 0, scale: 0.95, y: 10 },
|
|
947
432
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -983,7 +468,7 @@ function AlertDialogTitle({
|
|
|
983
468
|
...props
|
|
984
469
|
}) {
|
|
985
470
|
return /* @__PURE__ */ jsx(
|
|
986
|
-
|
|
471
|
+
AlertDialogPrimitive.Title,
|
|
987
472
|
{
|
|
988
473
|
"data-slot": "alert-dialog-title",
|
|
989
474
|
className: cn("text-lg font-semibold", className),
|
|
@@ -996,7 +481,7 @@ function AlertDialogDescription({
|
|
|
996
481
|
...props
|
|
997
482
|
}) {
|
|
998
483
|
return /* @__PURE__ */ jsx(
|
|
999
|
-
|
|
484
|
+
AlertDialogPrimitive.Description,
|
|
1000
485
|
{
|
|
1001
486
|
"data-slot": "alert-dialog-description",
|
|
1002
487
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -1009,7 +494,7 @@ function AlertDialogAction({
|
|
|
1009
494
|
...props
|
|
1010
495
|
}) {
|
|
1011
496
|
return /* @__PURE__ */ jsx(
|
|
1012
|
-
|
|
497
|
+
AlertDialogPrimitive.Action,
|
|
1013
498
|
{
|
|
1014
499
|
"data-intent": "primary",
|
|
1015
500
|
className: cn(buttonVariants({ variant: "solid" }), className),
|
|
@@ -1022,7 +507,7 @@ function AlertDialogCancel({
|
|
|
1022
507
|
...props
|
|
1023
508
|
}) {
|
|
1024
509
|
return /* @__PURE__ */ jsx(
|
|
1025
|
-
|
|
510
|
+
AlertDialogPrimitive.Cancel,
|
|
1026
511
|
{
|
|
1027
512
|
"data-intent": "neutral",
|
|
1028
513
|
className: cn(buttonVariants({ variant: "outline" }), className),
|
|
@@ -1033,14 +518,14 @@ function AlertDialogCancel({
|
|
|
1033
518
|
function Accordion({
|
|
1034
519
|
...props
|
|
1035
520
|
}) {
|
|
1036
|
-
return /* @__PURE__ */ jsx(
|
|
521
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
|
|
1037
522
|
}
|
|
1038
523
|
function AccordionItem({
|
|
1039
524
|
className,
|
|
1040
525
|
...props
|
|
1041
526
|
}) {
|
|
1042
527
|
return /* @__PURE__ */ jsx(
|
|
1043
|
-
|
|
528
|
+
AccordionPrimitive.Item,
|
|
1044
529
|
{
|
|
1045
530
|
"data-slot": "accordion-item",
|
|
1046
531
|
className: cn("border-b last:border-b-0", className),
|
|
@@ -1054,8 +539,8 @@ function AccordionTrigger({
|
|
|
1054
539
|
...props
|
|
1055
540
|
}) {
|
|
1056
541
|
const reduced = useReducedMotion();
|
|
1057
|
-
return /* @__PURE__ */ jsx(
|
|
1058
|
-
|
|
542
|
+
return /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
543
|
+
AccordionPrimitive.Trigger,
|
|
1059
544
|
{
|
|
1060
545
|
"data-slot": "accordion-trigger",
|
|
1061
546
|
className: cn(
|
|
@@ -1066,7 +551,7 @@ function AccordionTrigger({
|
|
|
1066
551
|
children: [
|
|
1067
552
|
children,
|
|
1068
553
|
/* @__PURE__ */ jsx(
|
|
1069
|
-
|
|
554
|
+
m.div,
|
|
1070
555
|
{
|
|
1071
556
|
className: "pointer-events-none shrink-0 translate-y-0.5 text-muted-foreground",
|
|
1072
557
|
animate: { rotate: 0 },
|
|
@@ -1085,13 +570,13 @@ function AccordionContent({
|
|
|
1085
570
|
}) {
|
|
1086
571
|
const reduced = useReducedMotion();
|
|
1087
572
|
return /* @__PURE__ */ jsx(
|
|
1088
|
-
|
|
573
|
+
AccordionPrimitive.Content,
|
|
1089
574
|
{
|
|
1090
575
|
"data-slot": "accordion-content",
|
|
1091
576
|
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
1092
577
|
...props,
|
|
1093
578
|
children: /* @__PURE__ */ jsx(
|
|
1094
|
-
|
|
579
|
+
m.div,
|
|
1095
580
|
{
|
|
1096
581
|
initial: reduced ? false : { opacity: 0 },
|
|
1097
582
|
animate: { opacity: 1 },
|
|
@@ -1108,8 +593,8 @@ function Tabs({
|
|
|
1108
593
|
orientation = "horizontal",
|
|
1109
594
|
...props
|
|
1110
595
|
}) {
|
|
1111
|
-
return /* @__PURE__ */ jsx(
|
|
1112
|
-
|
|
596
|
+
return /* @__PURE__ */ jsx(
|
|
597
|
+
TabsPrimitive.Root,
|
|
1113
598
|
{
|
|
1114
599
|
"data-slot": "tabs",
|
|
1115
600
|
"data-orientation": orientation,
|
|
@@ -1120,7 +605,7 @@ function Tabs({
|
|
|
1120
605
|
),
|
|
1121
606
|
...props
|
|
1122
607
|
}
|
|
1123
|
-
)
|
|
608
|
+
);
|
|
1124
609
|
}
|
|
1125
610
|
var tabsListVariants = cva(
|
|
1126
611
|
"group/tabs-list relative inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none",
|
|
@@ -1139,59 +624,96 @@ var tabsListVariants = cva(
|
|
|
1139
624
|
function TabsList({
|
|
1140
625
|
className,
|
|
1141
626
|
variant = "default",
|
|
627
|
+
children,
|
|
1142
628
|
...props
|
|
1143
629
|
}) {
|
|
1144
|
-
|
|
1145
|
-
|
|
630
|
+
const listRef = React9.useRef(null);
|
|
631
|
+
const reduced = useReducedMotion();
|
|
632
|
+
const [pos, setPos] = React9.useState(null);
|
|
633
|
+
React9.useLayoutEffect(() => {
|
|
634
|
+
const list = listRef.current;
|
|
635
|
+
if (!list) return;
|
|
636
|
+
const measure = () => {
|
|
637
|
+
const active = list.querySelector(
|
|
638
|
+
'[data-slot="tabs-trigger"][data-state="active"]'
|
|
639
|
+
);
|
|
640
|
+
if (!active) {
|
|
641
|
+
setPos(null);
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
const listRect = list.getBoundingClientRect();
|
|
645
|
+
const activeRect = active.getBoundingClientRect();
|
|
646
|
+
const next = {
|
|
647
|
+
x: activeRect.left - listRect.left,
|
|
648
|
+
y: activeRect.top - listRect.top,
|
|
649
|
+
width: activeRect.width,
|
|
650
|
+
height: activeRect.height
|
|
651
|
+
};
|
|
652
|
+
setPos(
|
|
653
|
+
(prev) => prev && prev.x === next.x && prev.y === next.y && prev.width === next.width && prev.height === next.height ? prev : next
|
|
654
|
+
);
|
|
655
|
+
};
|
|
656
|
+
measure();
|
|
657
|
+
const mutationObserver = new MutationObserver(measure);
|
|
658
|
+
mutationObserver.observe(list, {
|
|
659
|
+
subtree: true,
|
|
660
|
+
attributes: true,
|
|
661
|
+
attributeFilter: ["data-state"]
|
|
662
|
+
});
|
|
663
|
+
const resizeObserver = new ResizeObserver(measure);
|
|
664
|
+
resizeObserver.observe(list);
|
|
665
|
+
return () => {
|
|
666
|
+
mutationObserver.disconnect();
|
|
667
|
+
resizeObserver.disconnect();
|
|
668
|
+
};
|
|
669
|
+
}, []);
|
|
670
|
+
return /* @__PURE__ */ jsxs(
|
|
671
|
+
TabsPrimitive.List,
|
|
1146
672
|
{
|
|
673
|
+
ref: listRef,
|
|
1147
674
|
"data-slot": "tabs-list",
|
|
1148
675
|
"data-variant": variant,
|
|
1149
676
|
className: cn(tabsListVariants({ variant }), className),
|
|
1150
|
-
...props
|
|
677
|
+
...props,
|
|
678
|
+
children: [
|
|
679
|
+
pos !== null && /* @__PURE__ */ jsx(
|
|
680
|
+
m.div,
|
|
681
|
+
{
|
|
682
|
+
"data-slot": "tabs-indicator",
|
|
683
|
+
"aria-hidden": true,
|
|
684
|
+
initial: false,
|
|
685
|
+
animate: {
|
|
686
|
+
x: pos.x,
|
|
687
|
+
y: pos.y,
|
|
688
|
+
width: pos.width,
|
|
689
|
+
height: pos.height
|
|
690
|
+
},
|
|
691
|
+
transition: reduced ? noMotion : spring,
|
|
692
|
+
className: "pointer-events-none absolute top-0 left-0 rounded-md bg-background shadow-sm dark:border dark:border-input dark:bg-input/30",
|
|
693
|
+
style: { zIndex: 0 }
|
|
694
|
+
}
|
|
695
|
+
),
|
|
696
|
+
children
|
|
697
|
+
]
|
|
1151
698
|
}
|
|
1152
699
|
);
|
|
1153
700
|
}
|
|
1154
701
|
function TabsTrigger({
|
|
1155
702
|
className,
|
|
1156
703
|
children,
|
|
1157
|
-
value,
|
|
1158
704
|
...props
|
|
1159
705
|
}) {
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
Tabs$1.Trigger,
|
|
706
|
+
return /* @__PURE__ */ jsx(
|
|
707
|
+
TabsPrimitive.Trigger,
|
|
1163
708
|
{
|
|
1164
709
|
"data-slot": "tabs-trigger",
|
|
1165
|
-
value,
|
|
1166
710
|
className: cn(
|
|
1167
|
-
"relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
711
|
+
"relative z-10 inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1168
712
|
"data-[state=active]:text-foreground dark:data-[state=active]:text-foreground",
|
|
1169
713
|
className
|
|
1170
714
|
),
|
|
1171
715
|
...props,
|
|
1172
|
-
children
|
|
1173
|
-
children,
|
|
1174
|
-
/* @__PURE__ */ jsx(
|
|
1175
|
-
Tabs$1.Trigger,
|
|
1176
|
-
{
|
|
1177
|
-
value,
|
|
1178
|
-
asChild: true,
|
|
1179
|
-
"data-slot": "tabs-indicator",
|
|
1180
|
-
className: "pointer-events-none absolute inset-0",
|
|
1181
|
-
tabIndex: -1,
|
|
1182
|
-
"aria-hidden": true,
|
|
1183
|
-
children: /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
|
|
1184
|
-
motion.span,
|
|
1185
|
-
{
|
|
1186
|
-
layoutId: "sf-tab-indicator",
|
|
1187
|
-
className: "absolute inset-0 rounded-md bg-background shadow-sm dark:border dark:border-input dark:bg-input/30",
|
|
1188
|
-
style: { zIndex: -1 },
|
|
1189
|
-
transition: reduced ? noMotion : spring
|
|
1190
|
-
}
|
|
1191
|
-
) })
|
|
1192
|
-
}
|
|
1193
|
-
)
|
|
1194
|
-
]
|
|
716
|
+
children
|
|
1195
717
|
}
|
|
1196
718
|
);
|
|
1197
719
|
}
|
|
@@ -1200,7 +722,7 @@ function TabsContent({
|
|
|
1200
722
|
...props
|
|
1201
723
|
}) {
|
|
1202
724
|
return /* @__PURE__ */ jsx(
|
|
1203
|
-
|
|
725
|
+
TabsPrimitive.Content,
|
|
1204
726
|
{
|
|
1205
727
|
"data-slot": "tabs-content",
|
|
1206
728
|
className: cn("flex-1 outline-none", className),
|
|
@@ -1210,7 +732,7 @@ function TabsContent({
|
|
|
1210
732
|
}
|
|
1211
733
|
function Input({ className, type, ...props }) {
|
|
1212
734
|
return /* @__PURE__ */ jsx(
|
|
1213
|
-
|
|
735
|
+
m.input,
|
|
1214
736
|
{
|
|
1215
737
|
type,
|
|
1216
738
|
"data-slot": "input",
|
|
@@ -1228,7 +750,7 @@ function Input({ className, type, ...props }) {
|
|
|
1228
750
|
}
|
|
1229
751
|
function Textarea({ className, ...props }) {
|
|
1230
752
|
return /* @__PURE__ */ jsx(
|
|
1231
|
-
|
|
753
|
+
m.textarea,
|
|
1232
754
|
{
|
|
1233
755
|
"data-slot": "textarea",
|
|
1234
756
|
whileFocus: { boxShadow: "0 0 0 3px hsl(var(--ring) / 0.3)" },
|
|
@@ -1249,7 +771,7 @@ function Checkbox({
|
|
|
1249
771
|
...props
|
|
1250
772
|
}) {
|
|
1251
773
|
return /* @__PURE__ */ jsx(
|
|
1252
|
-
|
|
774
|
+
CheckboxPrimitive.Root,
|
|
1253
775
|
{
|
|
1254
776
|
"data-slot": "checkbox",
|
|
1255
777
|
className: cn(
|
|
@@ -1258,13 +780,13 @@ function Checkbox({
|
|
|
1258
780
|
),
|
|
1259
781
|
...props,
|
|
1260
782
|
children: /* @__PURE__ */ jsx(
|
|
1261
|
-
|
|
783
|
+
CheckboxPrimitive.Indicator,
|
|
1262
784
|
{
|
|
1263
785
|
"data-slot": "checkbox-indicator",
|
|
1264
786
|
className: "grid place-content-center text-current",
|
|
1265
787
|
asChild: true,
|
|
1266
788
|
children: /* @__PURE__ */ jsx(
|
|
1267
|
-
|
|
789
|
+
m.span,
|
|
1268
790
|
{
|
|
1269
791
|
initial: { scale: 0, opacity: 0 },
|
|
1270
792
|
animate: { scale: 1, opacity: 1 },
|
|
@@ -1284,7 +806,7 @@ function Switch({
|
|
|
1284
806
|
...props
|
|
1285
807
|
}) {
|
|
1286
808
|
return /* @__PURE__ */ jsx(
|
|
1287
|
-
|
|
809
|
+
SwitchPrimitive.Root,
|
|
1288
810
|
{
|
|
1289
811
|
"data-slot": "switch",
|
|
1290
812
|
"data-size": size,
|
|
@@ -1295,12 +817,12 @@ function Switch({
|
|
|
1295
817
|
),
|
|
1296
818
|
...props,
|
|
1297
819
|
children: /* @__PURE__ */ jsx(
|
|
1298
|
-
|
|
820
|
+
SwitchPrimitive.Thumb,
|
|
1299
821
|
{
|
|
1300
822
|
"data-slot": "switch-thumb",
|
|
1301
823
|
asChild: true,
|
|
1302
824
|
children: /* @__PURE__ */ jsx(
|
|
1303
|
-
|
|
825
|
+
m.span,
|
|
1304
826
|
{
|
|
1305
827
|
className: "pointer-events-none block rounded-full bg-background ring-0 group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground",
|
|
1306
828
|
layout: true,
|
|
@@ -1319,7 +841,7 @@ function Progress({
|
|
|
1319
841
|
}) {
|
|
1320
842
|
const reduced = useReducedMotion();
|
|
1321
843
|
return /* @__PURE__ */ jsx(
|
|
1322
|
-
|
|
844
|
+
ProgressPrimitive.Root,
|
|
1323
845
|
{
|
|
1324
846
|
"data-slot": "progress",
|
|
1325
847
|
className: cn(
|
|
@@ -1327,8 +849,8 @@ function Progress({
|
|
|
1327
849
|
className
|
|
1328
850
|
),
|
|
1329
851
|
...props,
|
|
1330
|
-
children: /* @__PURE__ */ jsx(
|
|
1331
|
-
|
|
852
|
+
children: /* @__PURE__ */ jsx(ProgressPrimitive.Indicator, { "data-slot": "progress-indicator", asChild: true, children: /* @__PURE__ */ jsx(
|
|
853
|
+
m.div,
|
|
1332
854
|
{
|
|
1333
855
|
className: "h-full bg-primary",
|
|
1334
856
|
initial: { width: "0%" },
|
|
@@ -1339,7 +861,7 @@ function Progress({
|
|
|
1339
861
|
}
|
|
1340
862
|
);
|
|
1341
863
|
}
|
|
1342
|
-
var
|
|
864
|
+
var LEGACY_VARIANT_MAP = {
|
|
1343
865
|
default: { variant: "solid", intent: "primary" },
|
|
1344
866
|
destructive: { variant: "solid", intent: "danger" },
|
|
1345
867
|
secondary: { variant: "soft", intent: "neutral" }
|
|
@@ -1375,7 +897,7 @@ function Badge({
|
|
|
1375
897
|
const reduced = useReducedMotion();
|
|
1376
898
|
let resolvedVariant = variantProp;
|
|
1377
899
|
let resolvedIntent = intentProp;
|
|
1378
|
-
const legacy =
|
|
900
|
+
const legacy = LEGACY_VARIANT_MAP[variantProp];
|
|
1379
901
|
if (legacy) {
|
|
1380
902
|
resolvedVariant = legacy.variant;
|
|
1381
903
|
if (legacy.intent) {
|
|
@@ -1384,7 +906,7 @@ function Badge({
|
|
|
1384
906
|
}
|
|
1385
907
|
if (asChild) {
|
|
1386
908
|
return /* @__PURE__ */ jsx(
|
|
1387
|
-
|
|
909
|
+
Slot7.Root,
|
|
1388
910
|
{
|
|
1389
911
|
"data-slot": "badge",
|
|
1390
912
|
"data-variant": resolvedVariant,
|
|
@@ -1395,7 +917,7 @@ function Badge({
|
|
|
1395
917
|
);
|
|
1396
918
|
}
|
|
1397
919
|
return /* @__PURE__ */ jsx(
|
|
1398
|
-
|
|
920
|
+
m.span,
|
|
1399
921
|
{
|
|
1400
922
|
"data-slot": "badge",
|
|
1401
923
|
"data-variant": resolvedVariant,
|
|
@@ -1412,7 +934,7 @@ function TooltipProvider({
|
|
|
1412
934
|
...props
|
|
1413
935
|
}) {
|
|
1414
936
|
return /* @__PURE__ */ jsx(
|
|
1415
|
-
|
|
937
|
+
TooltipPrimitive.Provider,
|
|
1416
938
|
{
|
|
1417
939
|
"data-slot": "tooltip-provider",
|
|
1418
940
|
delayDuration,
|
|
@@ -1423,12 +945,12 @@ function TooltipProvider({
|
|
|
1423
945
|
function Tooltip({
|
|
1424
946
|
...props
|
|
1425
947
|
}) {
|
|
1426
|
-
return /* @__PURE__ */ jsx(
|
|
948
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
1427
949
|
}
|
|
1428
950
|
function TooltipTrigger({
|
|
1429
951
|
...props
|
|
1430
952
|
}) {
|
|
1431
|
-
return /* @__PURE__ */ jsx(
|
|
953
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
1432
954
|
}
|
|
1433
955
|
function TooltipContent({
|
|
1434
956
|
className,
|
|
@@ -1436,15 +958,15 @@ function TooltipContent({
|
|
|
1436
958
|
children,
|
|
1437
959
|
...props
|
|
1438
960
|
}) {
|
|
1439
|
-
return /* @__PURE__ */ jsx(
|
|
1440
|
-
|
|
961
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
962
|
+
TooltipPrimitive.Content,
|
|
1441
963
|
{
|
|
1442
964
|
"data-slot": "tooltip-content",
|
|
1443
965
|
sideOffset,
|
|
1444
966
|
asChild: true,
|
|
1445
967
|
...props,
|
|
1446
968
|
children: /* @__PURE__ */ jsx(
|
|
1447
|
-
|
|
969
|
+
m.div,
|
|
1448
970
|
{
|
|
1449
971
|
initial: { opacity: 0, scale: 0.92, y: 2 },
|
|
1450
972
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -1463,17 +985,17 @@ function TooltipContent({
|
|
|
1463
985
|
function Popover({
|
|
1464
986
|
...props
|
|
1465
987
|
}) {
|
|
1466
|
-
return /* @__PURE__ */ jsx(
|
|
988
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
1467
989
|
}
|
|
1468
990
|
function PopoverTrigger({
|
|
1469
991
|
...props
|
|
1470
992
|
}) {
|
|
1471
|
-
return /* @__PURE__ */ jsx(
|
|
993
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
1472
994
|
}
|
|
1473
995
|
function PopoverAnchor({
|
|
1474
996
|
...props
|
|
1475
997
|
}) {
|
|
1476
|
-
return /* @__PURE__ */ jsx(
|
|
998
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
1477
999
|
}
|
|
1478
1000
|
function PopoverContent({
|
|
1479
1001
|
className,
|
|
@@ -1481,8 +1003,8 @@ function PopoverContent({
|
|
|
1481
1003
|
sideOffset = 4,
|
|
1482
1004
|
...props
|
|
1483
1005
|
}) {
|
|
1484
|
-
return /* @__PURE__ */ jsx(
|
|
1485
|
-
|
|
1006
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1007
|
+
PopoverPrimitive.Content,
|
|
1486
1008
|
{
|
|
1487
1009
|
"data-slot": "popover-content",
|
|
1488
1010
|
align,
|
|
@@ -1490,7 +1012,7 @@ function PopoverContent({
|
|
|
1490
1012
|
asChild: true,
|
|
1491
1013
|
...props,
|
|
1492
1014
|
children: /* @__PURE__ */ jsx(
|
|
1493
|
-
|
|
1015
|
+
m.div,
|
|
1494
1016
|
{
|
|
1495
1017
|
initial: { opacity: 0, scale: 0.95, y: -4 },
|
|
1496
1018
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -1508,12 +1030,12 @@ function PopoverContent({
|
|
|
1508
1030
|
function HoverCard({
|
|
1509
1031
|
...props
|
|
1510
1032
|
}) {
|
|
1511
|
-
return /* @__PURE__ */ jsx(
|
|
1033
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
|
|
1512
1034
|
}
|
|
1513
1035
|
function HoverCardTrigger({
|
|
1514
1036
|
...props
|
|
1515
1037
|
}) {
|
|
1516
|
-
return /* @__PURE__ */ jsx(
|
|
1038
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
|
|
1517
1039
|
}
|
|
1518
1040
|
function HoverCardContent({
|
|
1519
1041
|
className,
|
|
@@ -1521,8 +1043,8 @@ function HoverCardContent({
|
|
|
1521
1043
|
sideOffset = 4,
|
|
1522
1044
|
...props
|
|
1523
1045
|
}) {
|
|
1524
|
-
return /* @__PURE__ */ jsx(
|
|
1525
|
-
|
|
1046
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1047
|
+
HoverCardPrimitive.Content,
|
|
1526
1048
|
{
|
|
1527
1049
|
"data-slot": "hover-card-content",
|
|
1528
1050
|
align,
|
|
@@ -1530,7 +1052,7 @@ function HoverCardContent({
|
|
|
1530
1052
|
asChild: true,
|
|
1531
1053
|
...props,
|
|
1532
1054
|
children: /* @__PURE__ */ jsx(
|
|
1533
|
-
|
|
1055
|
+
m.div,
|
|
1534
1056
|
{
|
|
1535
1057
|
initial: { opacity: 0, scale: 0.95, y: 4 },
|
|
1536
1058
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -1548,17 +1070,17 @@ function HoverCardContent({
|
|
|
1548
1070
|
function Select({
|
|
1549
1071
|
...props
|
|
1550
1072
|
}) {
|
|
1551
|
-
return /* @__PURE__ */ jsx(
|
|
1073
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
1552
1074
|
}
|
|
1553
1075
|
function SelectGroup({
|
|
1554
1076
|
...props
|
|
1555
1077
|
}) {
|
|
1556
|
-
return /* @__PURE__ */ jsx(
|
|
1078
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Group, { "data-slot": "select-group", ...props });
|
|
1557
1079
|
}
|
|
1558
1080
|
function SelectValue({
|
|
1559
1081
|
...props
|
|
1560
1082
|
}) {
|
|
1561
|
-
return /* @__PURE__ */ jsx(
|
|
1083
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
1562
1084
|
}
|
|
1563
1085
|
function SelectTrigger({
|
|
1564
1086
|
className,
|
|
@@ -1567,7 +1089,7 @@ function SelectTrigger({
|
|
|
1567
1089
|
...props
|
|
1568
1090
|
}) {
|
|
1569
1091
|
return /* @__PURE__ */ jsxs(
|
|
1570
|
-
|
|
1092
|
+
SelectPrimitive.Trigger,
|
|
1571
1093
|
{
|
|
1572
1094
|
"data-slot": "select-trigger",
|
|
1573
1095
|
"data-size": size,
|
|
@@ -1579,7 +1101,7 @@ function SelectTrigger({
|
|
|
1579
1101
|
...props,
|
|
1580
1102
|
children: [
|
|
1581
1103
|
children,
|
|
1582
|
-
/* @__PURE__ */ jsx(
|
|
1104
|
+
/* @__PURE__ */ jsx(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
1583
1105
|
]
|
|
1584
1106
|
}
|
|
1585
1107
|
);
|
|
@@ -1590,15 +1112,15 @@ function SelectContent({
|
|
|
1590
1112
|
position = "popper",
|
|
1591
1113
|
...props
|
|
1592
1114
|
}) {
|
|
1593
|
-
return /* @__PURE__ */ jsx(
|
|
1594
|
-
|
|
1115
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1116
|
+
SelectPrimitive.Content,
|
|
1595
1117
|
{
|
|
1596
1118
|
"data-slot": "select-content",
|
|
1597
1119
|
position,
|
|
1598
1120
|
asChild: true,
|
|
1599
1121
|
...props,
|
|
1600
1122
|
children: /* @__PURE__ */ jsxs(
|
|
1601
|
-
|
|
1123
|
+
m.div,
|
|
1602
1124
|
{
|
|
1603
1125
|
initial: { opacity: 0, scale: 0.96, y: -4 },
|
|
1604
1126
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -1611,7 +1133,7 @@ function SelectContent({
|
|
|
1611
1133
|
children: [
|
|
1612
1134
|
/* @__PURE__ */ jsx(SelectScrollUpButton, {}),
|
|
1613
1135
|
/* @__PURE__ */ jsx(
|
|
1614
|
-
|
|
1136
|
+
SelectPrimitive.Viewport,
|
|
1615
1137
|
{
|
|
1616
1138
|
className: cn(
|
|
1617
1139
|
"p-1",
|
|
@@ -1632,7 +1154,7 @@ function SelectLabel({
|
|
|
1632
1154
|
...props
|
|
1633
1155
|
}) {
|
|
1634
1156
|
return /* @__PURE__ */ jsx(
|
|
1635
|
-
|
|
1157
|
+
SelectPrimitive.Label,
|
|
1636
1158
|
{
|
|
1637
1159
|
"data-slot": "select-label",
|
|
1638
1160
|
className: cn("px-2 py-1.5 text-sm font-medium", className),
|
|
@@ -1646,7 +1168,7 @@ function SelectItem({
|
|
|
1646
1168
|
...props
|
|
1647
1169
|
}) {
|
|
1648
1170
|
return /* @__PURE__ */ jsxs(
|
|
1649
|
-
|
|
1171
|
+
SelectPrimitive.Item,
|
|
1650
1172
|
{
|
|
1651
1173
|
"data-slot": "select-item",
|
|
1652
1174
|
className: cn(
|
|
@@ -1655,8 +1177,8 @@ function SelectItem({
|
|
|
1655
1177
|
),
|
|
1656
1178
|
...props,
|
|
1657
1179
|
children: [
|
|
1658
|
-
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
1659
|
-
/* @__PURE__ */ jsx(
|
|
1180
|
+
/* @__PURE__ */ jsx("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
|
|
1181
|
+
/* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })
|
|
1660
1182
|
]
|
|
1661
1183
|
}
|
|
1662
1184
|
);
|
|
@@ -1666,7 +1188,7 @@ function SelectSeparator({
|
|
|
1666
1188
|
...props
|
|
1667
1189
|
}) {
|
|
1668
1190
|
return /* @__PURE__ */ jsx(
|
|
1669
|
-
|
|
1191
|
+
SelectPrimitive.Separator,
|
|
1670
1192
|
{
|
|
1671
1193
|
"data-slot": "select-separator",
|
|
1672
1194
|
className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
|
|
@@ -1679,7 +1201,7 @@ function SelectScrollUpButton({
|
|
|
1679
1201
|
...props
|
|
1680
1202
|
}) {
|
|
1681
1203
|
return /* @__PURE__ */ jsx(
|
|
1682
|
-
|
|
1204
|
+
SelectPrimitive.ScrollUpButton,
|
|
1683
1205
|
{
|
|
1684
1206
|
"data-slot": "select-scroll-up-button",
|
|
1685
1207
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
@@ -1693,7 +1215,7 @@ function SelectScrollDownButton({
|
|
|
1693
1215
|
...props
|
|
1694
1216
|
}) {
|
|
1695
1217
|
return /* @__PURE__ */ jsx(
|
|
1696
|
-
|
|
1218
|
+
SelectPrimitive.ScrollDownButton,
|
|
1697
1219
|
{
|
|
1698
1220
|
"data-slot": "select-scroll-down-button",
|
|
1699
1221
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
@@ -1703,37 +1225,37 @@ function SelectScrollDownButton({
|
|
|
1703
1225
|
);
|
|
1704
1226
|
}
|
|
1705
1227
|
function DropdownMenu({ ...props }) {
|
|
1706
|
-
return /* @__PURE__ */ jsx(
|
|
1228
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
|
|
1707
1229
|
}
|
|
1708
1230
|
function DropdownMenuPortal({ ...props }) {
|
|
1709
|
-
return /* @__PURE__ */ jsx(
|
|
1231
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { "data-slot": "dropdown-menu-portal", ...props });
|
|
1710
1232
|
}
|
|
1711
1233
|
function DropdownMenuTrigger({ className, ...props }) {
|
|
1712
|
-
return /* @__PURE__ */ jsx(
|
|
1234
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", className: cn("cursor-pointer", className), ...props });
|
|
1713
1235
|
}
|
|
1714
1236
|
function DropdownMenuGroup({ ...props }) {
|
|
1715
|
-
return /* @__PURE__ */ jsx(
|
|
1237
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
|
|
1716
1238
|
}
|
|
1717
1239
|
function DropdownMenuSub({ ...props }) {
|
|
1718
|
-
return /* @__PURE__ */ jsx(
|
|
1240
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Sub, { "data-slot": "dropdown-menu-sub", ...props });
|
|
1719
1241
|
}
|
|
1720
1242
|
function DropdownMenuRadioGroup({ ...props }) {
|
|
1721
|
-
return /* @__PURE__ */ jsx(
|
|
1243
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.RadioGroup, { "data-slot": "dropdown-menu-radio-group", ...props });
|
|
1722
1244
|
}
|
|
1723
1245
|
function DropdownMenuContent({
|
|
1724
1246
|
className,
|
|
1725
1247
|
sideOffset = 4,
|
|
1726
1248
|
...props
|
|
1727
1249
|
}) {
|
|
1728
|
-
return /* @__PURE__ */ jsx(
|
|
1729
|
-
|
|
1250
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1251
|
+
DropdownMenuPrimitive.Content,
|
|
1730
1252
|
{
|
|
1731
1253
|
"data-slot": "dropdown-menu-content",
|
|
1732
1254
|
sideOffset,
|
|
1733
1255
|
asChild: true,
|
|
1734
1256
|
...props,
|
|
1735
1257
|
children: /* @__PURE__ */ jsx(
|
|
1736
|
-
|
|
1258
|
+
m.div,
|
|
1737
1259
|
{
|
|
1738
1260
|
initial: { opacity: 0, scale: 0.95, y: -4 },
|
|
1739
1261
|
animate: { opacity: 1, scale: 1, y: 0 },
|
|
@@ -1750,7 +1272,7 @@ function DropdownMenuContent({
|
|
|
1750
1272
|
}
|
|
1751
1273
|
function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
1752
1274
|
return /* @__PURE__ */ jsx(
|
|
1753
|
-
|
|
1275
|
+
DropdownMenuPrimitive.Item,
|
|
1754
1276
|
{
|
|
1755
1277
|
"data-slot": "dropdown-menu-item",
|
|
1756
1278
|
"data-inset": inset,
|
|
@@ -1765,7 +1287,7 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
|
1765
1287
|
}
|
|
1766
1288
|
function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
1767
1289
|
return /* @__PURE__ */ jsxs(
|
|
1768
|
-
|
|
1290
|
+
DropdownMenuPrimitive.CheckboxItem,
|
|
1769
1291
|
{
|
|
1770
1292
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
1771
1293
|
className: cn(
|
|
@@ -1775,7 +1297,7 @@ function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
|
1775
1297
|
checked,
|
|
1776
1298
|
...props,
|
|
1777
1299
|
children: [
|
|
1778
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
1300
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
|
|
1779
1301
|
children
|
|
1780
1302
|
]
|
|
1781
1303
|
}
|
|
@@ -1783,7 +1305,7 @@ function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
|
1783
1305
|
}
|
|
1784
1306
|
function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
1785
1307
|
return /* @__PURE__ */ jsxs(
|
|
1786
|
-
|
|
1308
|
+
DropdownMenuPrimitive.RadioItem,
|
|
1787
1309
|
{
|
|
1788
1310
|
"data-slot": "dropdown-menu-radio-item",
|
|
1789
1311
|
className: cn(
|
|
@@ -1792,7 +1314,7 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
|
1792
1314
|
),
|
|
1793
1315
|
...props,
|
|
1794
1316
|
children: [
|
|
1795
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
1317
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
1796
1318
|
children
|
|
1797
1319
|
]
|
|
1798
1320
|
}
|
|
@@ -1800,7 +1322,7 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
|
1800
1322
|
}
|
|
1801
1323
|
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
1802
1324
|
return /* @__PURE__ */ jsx(
|
|
1803
|
-
|
|
1325
|
+
DropdownMenuPrimitive.Label,
|
|
1804
1326
|
{
|
|
1805
1327
|
"data-slot": "dropdown-menu-label",
|
|
1806
1328
|
"data-inset": inset,
|
|
@@ -1811,7 +1333,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
|
|
|
1811
1333
|
}
|
|
1812
1334
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
1813
1335
|
return /* @__PURE__ */ jsx(
|
|
1814
|
-
|
|
1336
|
+
DropdownMenuPrimitive.Separator,
|
|
1815
1337
|
{
|
|
1816
1338
|
"data-slot": "dropdown-menu-separator",
|
|
1817
1339
|
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
@@ -1831,7 +1353,7 @@ function DropdownMenuShortcut({ className, ...props }) {
|
|
|
1831
1353
|
}
|
|
1832
1354
|
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
1833
1355
|
return /* @__PURE__ */ jsxs(
|
|
1834
|
-
|
|
1356
|
+
DropdownMenuPrimitive.SubTrigger,
|
|
1835
1357
|
{
|
|
1836
1358
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
1837
1359
|
"data-inset": inset,
|
|
@@ -1849,7 +1371,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
|
1849
1371
|
}
|
|
1850
1372
|
function DropdownMenuSubContent({ className, ...props }) {
|
|
1851
1373
|
return /* @__PURE__ */ jsx(
|
|
1852
|
-
|
|
1374
|
+
DropdownMenuPrimitive.SubContent,
|
|
1853
1375
|
{
|
|
1854
1376
|
"data-slot": "dropdown-menu-sub-content",
|
|
1855
1377
|
className: cn(
|
|
@@ -1967,29 +1489,29 @@ function DrawerDescription({
|
|
|
1967
1489
|
);
|
|
1968
1490
|
}
|
|
1969
1491
|
function Sheet({ ...props }) {
|
|
1970
|
-
return /* @__PURE__ */ jsx(
|
|
1492
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
1971
1493
|
}
|
|
1972
1494
|
function SheetTrigger({
|
|
1973
1495
|
...props
|
|
1974
1496
|
}) {
|
|
1975
|
-
return /* @__PURE__ */ jsx(
|
|
1497
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
1976
1498
|
}
|
|
1977
1499
|
function SheetClose({
|
|
1978
1500
|
...props
|
|
1979
1501
|
}) {
|
|
1980
|
-
return /* @__PURE__ */ jsx(
|
|
1502
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
1981
1503
|
}
|
|
1982
1504
|
function SheetPortal({
|
|
1983
1505
|
...props
|
|
1984
1506
|
}) {
|
|
1985
|
-
return /* @__PURE__ */ jsx(
|
|
1507
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
1986
1508
|
}
|
|
1987
1509
|
function SheetOverlay({
|
|
1988
1510
|
className,
|
|
1989
1511
|
...props
|
|
1990
1512
|
}) {
|
|
1991
1513
|
return /* @__PURE__ */ jsx(
|
|
1992
|
-
|
|
1514
|
+
DialogPrimitive.Overlay,
|
|
1993
1515
|
{
|
|
1994
1516
|
"data-slot": "sheet-overlay",
|
|
1995
1517
|
className: cn(
|
|
@@ -2010,7 +1532,7 @@ function SheetContent({
|
|
|
2010
1532
|
return /* @__PURE__ */ jsxs(SheetPortal, { children: [
|
|
2011
1533
|
/* @__PURE__ */ jsx(SheetOverlay, {}),
|
|
2012
1534
|
/* @__PURE__ */ jsxs(
|
|
2013
|
-
|
|
1535
|
+
DialogPrimitive.Content,
|
|
2014
1536
|
{
|
|
2015
1537
|
"data-slot": "sheet-content",
|
|
2016
1538
|
className: cn(
|
|
@@ -2024,7 +1546,7 @@ function SheetContent({
|
|
|
2024
1546
|
...props,
|
|
2025
1547
|
children: [
|
|
2026
1548
|
children,
|
|
2027
|
-
showCloseButton && /* @__PURE__ */ jsxs(
|
|
1549
|
+
showCloseButton && /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
|
|
2028
1550
|
/* @__PURE__ */ jsx(XIcon, { className: "size-4" }),
|
|
2029
1551
|
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
2030
1552
|
] })
|
|
@@ -2058,7 +1580,7 @@ function SheetTitle({
|
|
|
2058
1580
|
...props
|
|
2059
1581
|
}) {
|
|
2060
1582
|
return /* @__PURE__ */ jsx(
|
|
2061
|
-
|
|
1583
|
+
DialogPrimitive.Title,
|
|
2062
1584
|
{
|
|
2063
1585
|
"data-slot": "sheet-title",
|
|
2064
1586
|
className: cn("font-semibold text-foreground", className),
|
|
@@ -2071,7 +1593,7 @@ function SheetDescription({
|
|
|
2071
1593
|
...props
|
|
2072
1594
|
}) {
|
|
2073
1595
|
return /* @__PURE__ */ jsx(
|
|
2074
|
-
|
|
1596
|
+
DialogPrimitive.Description,
|
|
2075
1597
|
{
|
|
2076
1598
|
"data-slot": "sheet-description",
|
|
2077
1599
|
className: cn("text-sm text-muted-foreground", className),
|
|
@@ -2087,12 +1609,12 @@ function Slider({
|
|
|
2087
1609
|
max = 100,
|
|
2088
1610
|
...props
|
|
2089
1611
|
}) {
|
|
2090
|
-
const _values =
|
|
1612
|
+
const _values = React9.useMemo(
|
|
2091
1613
|
() => value ?? defaultValue ?? [min],
|
|
2092
1614
|
[value, defaultValue, min]
|
|
2093
1615
|
);
|
|
2094
1616
|
return /* @__PURE__ */ jsxs(
|
|
2095
|
-
|
|
1617
|
+
SliderPrimitive.Root,
|
|
2096
1618
|
{
|
|
2097
1619
|
"data-slot": "slider",
|
|
2098
1620
|
defaultValue,
|
|
@@ -2106,12 +1628,12 @@ function Slider({
|
|
|
2106
1628
|
...props,
|
|
2107
1629
|
children: [
|
|
2108
1630
|
/* @__PURE__ */ jsx(
|
|
2109
|
-
|
|
1631
|
+
SliderPrimitive.Track,
|
|
2110
1632
|
{
|
|
2111
1633
|
"data-slot": "slider-track",
|
|
2112
1634
|
className: "relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5",
|
|
2113
1635
|
children: /* @__PURE__ */ jsx(
|
|
2114
|
-
|
|
1636
|
+
SliderPrimitive.Range,
|
|
2115
1637
|
{
|
|
2116
1638
|
"data-slot": "slider-range",
|
|
2117
1639
|
className: "absolute rounded-full bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
|
|
@@ -2120,12 +1642,12 @@ function Slider({
|
|
|
2120
1642
|
}
|
|
2121
1643
|
),
|
|
2122
1644
|
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
|
|
2123
|
-
|
|
1645
|
+
SliderPrimitive.Thumb,
|
|
2124
1646
|
{
|
|
2125
1647
|
"data-slot": "slider-thumb",
|
|
2126
1648
|
asChild: true,
|
|
2127
1649
|
children: /* @__PURE__ */ jsx(
|
|
2128
|
-
|
|
1650
|
+
m.span,
|
|
2129
1651
|
{
|
|
2130
1652
|
className: "block size-4 shrink-0 cursor-grab rounded-full border border-primary/50 bg-background shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing",
|
|
2131
1653
|
whileHover: { scale: 1.2 },
|
|
@@ -2209,7 +1731,7 @@ function Avatar({
|
|
|
2209
1731
|
...props
|
|
2210
1732
|
}) {
|
|
2211
1733
|
return /* @__PURE__ */ jsx(
|
|
2212
|
-
|
|
1734
|
+
AvatarPrimitive.Root,
|
|
2213
1735
|
{
|
|
2214
1736
|
"data-slot": "avatar",
|
|
2215
1737
|
"data-size": size,
|
|
@@ -2226,7 +1748,7 @@ function AvatarImage({
|
|
|
2226
1748
|
...props
|
|
2227
1749
|
}) {
|
|
2228
1750
|
return /* @__PURE__ */ jsx(
|
|
2229
|
-
|
|
1751
|
+
AvatarPrimitive.Image,
|
|
2230
1752
|
{
|
|
2231
1753
|
"data-slot": "avatar-image",
|
|
2232
1754
|
className: cn("aspect-square size-full", className),
|
|
@@ -2239,7 +1761,7 @@ function AvatarFallback({
|
|
|
2239
1761
|
...props
|
|
2240
1762
|
}) {
|
|
2241
1763
|
return /* @__PURE__ */ jsx(
|
|
2242
|
-
|
|
1764
|
+
AvatarPrimitive.Fallback,
|
|
2243
1765
|
{
|
|
2244
1766
|
"data-slot": "avatar-fallback",
|
|
2245
1767
|
className: cn(
|
|
@@ -2298,33 +1820,33 @@ function AvatarGroupCount({
|
|
|
2298
1820
|
function ContextMenu({
|
|
2299
1821
|
...props
|
|
2300
1822
|
}) {
|
|
2301
|
-
return /* @__PURE__ */ jsx(
|
|
1823
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
|
|
2302
1824
|
}
|
|
2303
1825
|
function ContextMenuTrigger({
|
|
2304
1826
|
...props
|
|
2305
1827
|
}) {
|
|
2306
|
-
return /* @__PURE__ */ jsx(
|
|
1828
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Trigger, { "data-slot": "context-menu-trigger", ...props });
|
|
2307
1829
|
}
|
|
2308
1830
|
function ContextMenuGroup({
|
|
2309
1831
|
...props
|
|
2310
1832
|
}) {
|
|
2311
|
-
return /* @__PURE__ */ jsx(
|
|
1833
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
|
|
2312
1834
|
}
|
|
2313
1835
|
function ContextMenuPortal({
|
|
2314
1836
|
...props
|
|
2315
1837
|
}) {
|
|
2316
|
-
return /* @__PURE__ */ jsx(
|
|
1838
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
|
|
2317
1839
|
}
|
|
2318
1840
|
function ContextMenuSub({
|
|
2319
1841
|
...props
|
|
2320
1842
|
}) {
|
|
2321
|
-
return /* @__PURE__ */ jsx(
|
|
1843
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
|
|
2322
1844
|
}
|
|
2323
1845
|
function ContextMenuRadioGroup({
|
|
2324
1846
|
...props
|
|
2325
1847
|
}) {
|
|
2326
1848
|
return /* @__PURE__ */ jsx(
|
|
2327
|
-
|
|
1849
|
+
ContextMenuPrimitive.RadioGroup,
|
|
2328
1850
|
{
|
|
2329
1851
|
"data-slot": "context-menu-radio-group",
|
|
2330
1852
|
...props
|
|
@@ -2338,7 +1860,7 @@ function ContextMenuSubTrigger({
|
|
|
2338
1860
|
...props
|
|
2339
1861
|
}) {
|
|
2340
1862
|
return /* @__PURE__ */ jsxs(
|
|
2341
|
-
|
|
1863
|
+
ContextMenuPrimitive.SubTrigger,
|
|
2342
1864
|
{
|
|
2343
1865
|
"data-slot": "context-menu-sub-trigger",
|
|
2344
1866
|
"data-inset": inset,
|
|
@@ -2359,7 +1881,7 @@ function ContextMenuSubContent({
|
|
|
2359
1881
|
...props
|
|
2360
1882
|
}) {
|
|
2361
1883
|
return /* @__PURE__ */ jsx(
|
|
2362
|
-
|
|
1884
|
+
ContextMenuPrimitive.SubContent,
|
|
2363
1885
|
{
|
|
2364
1886
|
"data-slot": "context-menu-sub-content",
|
|
2365
1887
|
className: cn(
|
|
@@ -2374,8 +1896,8 @@ function ContextMenuContent({
|
|
|
2374
1896
|
className,
|
|
2375
1897
|
...props
|
|
2376
1898
|
}) {
|
|
2377
|
-
return /* @__PURE__ */ jsx(
|
|
2378
|
-
|
|
1899
|
+
return /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1900
|
+
ContextMenuPrimitive.Content,
|
|
2379
1901
|
{
|
|
2380
1902
|
"data-slot": "context-menu-content",
|
|
2381
1903
|
className: cn(
|
|
@@ -2393,7 +1915,7 @@ function ContextMenuItem({
|
|
|
2393
1915
|
...props
|
|
2394
1916
|
}) {
|
|
2395
1917
|
return /* @__PURE__ */ jsx(
|
|
2396
|
-
|
|
1918
|
+
ContextMenuPrimitive.Item,
|
|
2397
1919
|
{
|
|
2398
1920
|
"data-slot": "context-menu-item",
|
|
2399
1921
|
"data-inset": inset,
|
|
@@ -2413,7 +1935,7 @@ function ContextMenuCheckboxItem({
|
|
|
2413
1935
|
...props
|
|
2414
1936
|
}) {
|
|
2415
1937
|
return /* @__PURE__ */ jsxs(
|
|
2416
|
-
|
|
1938
|
+
ContextMenuPrimitive.CheckboxItem,
|
|
2417
1939
|
{
|
|
2418
1940
|
"data-slot": "context-menu-checkbox-item",
|
|
2419
1941
|
className: cn(
|
|
@@ -2423,7 +1945,7 @@ function ContextMenuCheckboxItem({
|
|
|
2423
1945
|
checked,
|
|
2424
1946
|
...props,
|
|
2425
1947
|
children: [
|
|
2426
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
1948
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
|
|
2427
1949
|
children
|
|
2428
1950
|
]
|
|
2429
1951
|
}
|
|
@@ -2435,7 +1957,7 @@ function ContextMenuRadioItem({
|
|
|
2435
1957
|
...props
|
|
2436
1958
|
}) {
|
|
2437
1959
|
return /* @__PURE__ */ jsxs(
|
|
2438
|
-
|
|
1960
|
+
ContextMenuPrimitive.RadioItem,
|
|
2439
1961
|
{
|
|
2440
1962
|
"data-slot": "context-menu-radio-item",
|
|
2441
1963
|
className: cn(
|
|
@@ -2444,7 +1966,7 @@ function ContextMenuRadioItem({
|
|
|
2444
1966
|
),
|
|
2445
1967
|
...props,
|
|
2446
1968
|
children: [
|
|
2447
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
1969
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
2448
1970
|
children
|
|
2449
1971
|
]
|
|
2450
1972
|
}
|
|
@@ -2456,7 +1978,7 @@ function ContextMenuLabel({
|
|
|
2456
1978
|
...props
|
|
2457
1979
|
}) {
|
|
2458
1980
|
return /* @__PURE__ */ jsx(
|
|
2459
|
-
|
|
1981
|
+
ContextMenuPrimitive.Label,
|
|
2460
1982
|
{
|
|
2461
1983
|
"data-slot": "context-menu-label",
|
|
2462
1984
|
"data-inset": inset,
|
|
@@ -2473,7 +1995,7 @@ function ContextMenuSeparator({
|
|
|
2473
1995
|
...props
|
|
2474
1996
|
}) {
|
|
2475
1997
|
return /* @__PURE__ */ jsx(
|
|
2476
|
-
|
|
1998
|
+
ContextMenuPrimitive.Separator,
|
|
2477
1999
|
{
|
|
2478
2000
|
"data-slot": "context-menu-separator",
|
|
2479
2001
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
@@ -2502,7 +2024,7 @@ function Menubar({
|
|
|
2502
2024
|
...props
|
|
2503
2025
|
}) {
|
|
2504
2026
|
return /* @__PURE__ */ jsx(
|
|
2505
|
-
|
|
2027
|
+
MenubarPrimitive.Root,
|
|
2506
2028
|
{
|
|
2507
2029
|
"data-slot": "menubar",
|
|
2508
2030
|
className: cn(
|
|
@@ -2516,29 +2038,29 @@ function Menubar({
|
|
|
2516
2038
|
function MenubarMenu({
|
|
2517
2039
|
...props
|
|
2518
2040
|
}) {
|
|
2519
|
-
return /* @__PURE__ */ jsx(
|
|
2041
|
+
return /* @__PURE__ */ jsx(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
|
|
2520
2042
|
}
|
|
2521
2043
|
function MenubarGroup({
|
|
2522
2044
|
...props
|
|
2523
2045
|
}) {
|
|
2524
|
-
return /* @__PURE__ */ jsx(
|
|
2046
|
+
return /* @__PURE__ */ jsx(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
|
|
2525
2047
|
}
|
|
2526
2048
|
function MenubarPortal({
|
|
2527
2049
|
...props
|
|
2528
2050
|
}) {
|
|
2529
|
-
return /* @__PURE__ */ jsx(
|
|
2051
|
+
return /* @__PURE__ */ jsx(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
|
|
2530
2052
|
}
|
|
2531
2053
|
function MenubarRadioGroup({
|
|
2532
2054
|
...props
|
|
2533
2055
|
}) {
|
|
2534
|
-
return /* @__PURE__ */ jsx(
|
|
2056
|
+
return /* @__PURE__ */ jsx(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
|
|
2535
2057
|
}
|
|
2536
2058
|
function MenubarTrigger({
|
|
2537
2059
|
className,
|
|
2538
2060
|
...props
|
|
2539
2061
|
}) {
|
|
2540
2062
|
return /* @__PURE__ */ jsx(
|
|
2541
|
-
|
|
2063
|
+
MenubarPrimitive.Trigger,
|
|
2542
2064
|
{
|
|
2543
2065
|
"data-slot": "menubar-trigger",
|
|
2544
2066
|
className: cn(
|
|
@@ -2557,7 +2079,7 @@ function MenubarContent({
|
|
|
2557
2079
|
...props
|
|
2558
2080
|
}) {
|
|
2559
2081
|
return /* @__PURE__ */ jsx(MenubarPortal, { children: /* @__PURE__ */ jsx(
|
|
2560
|
-
|
|
2082
|
+
MenubarPrimitive.Content,
|
|
2561
2083
|
{
|
|
2562
2084
|
"data-slot": "menubar-content",
|
|
2563
2085
|
align,
|
|
@@ -2578,7 +2100,7 @@ function MenubarItem({
|
|
|
2578
2100
|
...props
|
|
2579
2101
|
}) {
|
|
2580
2102
|
return /* @__PURE__ */ jsx(
|
|
2581
|
-
|
|
2103
|
+
MenubarPrimitive.Item,
|
|
2582
2104
|
{
|
|
2583
2105
|
"data-slot": "menubar-item",
|
|
2584
2106
|
"data-inset": inset,
|
|
@@ -2598,7 +2120,7 @@ function MenubarCheckboxItem({
|
|
|
2598
2120
|
...props
|
|
2599
2121
|
}) {
|
|
2600
2122
|
return /* @__PURE__ */ jsxs(
|
|
2601
|
-
|
|
2123
|
+
MenubarPrimitive.CheckboxItem,
|
|
2602
2124
|
{
|
|
2603
2125
|
"data-slot": "menubar-checkbox-item",
|
|
2604
2126
|
className: cn(
|
|
@@ -2608,7 +2130,7 @@ function MenubarCheckboxItem({
|
|
|
2608
2130
|
checked,
|
|
2609
2131
|
...props,
|
|
2610
2132
|
children: [
|
|
2611
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
2133
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) }) }),
|
|
2612
2134
|
children
|
|
2613
2135
|
]
|
|
2614
2136
|
}
|
|
@@ -2620,7 +2142,7 @@ function MenubarRadioItem({
|
|
|
2620
2142
|
...props
|
|
2621
2143
|
}) {
|
|
2622
2144
|
return /* @__PURE__ */ jsxs(
|
|
2623
|
-
|
|
2145
|
+
MenubarPrimitive.RadioItem,
|
|
2624
2146
|
{
|
|
2625
2147
|
"data-slot": "menubar-radio-item",
|
|
2626
2148
|
className: cn(
|
|
@@ -2629,7 +2151,7 @@ function MenubarRadioItem({
|
|
|
2629
2151
|
),
|
|
2630
2152
|
...props,
|
|
2631
2153
|
children: [
|
|
2632
|
-
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
2154
|
+
/* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
2633
2155
|
children
|
|
2634
2156
|
]
|
|
2635
2157
|
}
|
|
@@ -2641,7 +2163,7 @@ function MenubarLabel({
|
|
|
2641
2163
|
...props
|
|
2642
2164
|
}) {
|
|
2643
2165
|
return /* @__PURE__ */ jsx(
|
|
2644
|
-
|
|
2166
|
+
MenubarPrimitive.Label,
|
|
2645
2167
|
{
|
|
2646
2168
|
"data-slot": "menubar-label",
|
|
2647
2169
|
"data-inset": inset,
|
|
@@ -2658,7 +2180,7 @@ function MenubarSeparator({
|
|
|
2658
2180
|
...props
|
|
2659
2181
|
}) {
|
|
2660
2182
|
return /* @__PURE__ */ jsx(
|
|
2661
|
-
|
|
2183
|
+
MenubarPrimitive.Separator,
|
|
2662
2184
|
{
|
|
2663
2185
|
"data-slot": "menubar-separator",
|
|
2664
2186
|
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
@@ -2685,7 +2207,7 @@ function MenubarShortcut({
|
|
|
2685
2207
|
function MenubarSub({
|
|
2686
2208
|
...props
|
|
2687
2209
|
}) {
|
|
2688
|
-
return /* @__PURE__ */ jsx(
|
|
2210
|
+
return /* @__PURE__ */ jsx(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
|
|
2689
2211
|
}
|
|
2690
2212
|
function MenubarSubTrigger({
|
|
2691
2213
|
className,
|
|
@@ -2694,7 +2216,7 @@ function MenubarSubTrigger({
|
|
|
2694
2216
|
...props
|
|
2695
2217
|
}) {
|
|
2696
2218
|
return /* @__PURE__ */ jsxs(
|
|
2697
|
-
|
|
2219
|
+
MenubarPrimitive.SubTrigger,
|
|
2698
2220
|
{
|
|
2699
2221
|
"data-slot": "menubar-sub-trigger",
|
|
2700
2222
|
"data-inset": inset,
|
|
@@ -2715,7 +2237,7 @@ function MenubarSubContent({
|
|
|
2715
2237
|
...props
|
|
2716
2238
|
}) {
|
|
2717
2239
|
return /* @__PURE__ */ jsx(
|
|
2718
|
-
|
|
2240
|
+
MenubarPrimitive.SubContent,
|
|
2719
2241
|
{
|
|
2720
2242
|
"data-slot": "menubar-sub-content",
|
|
2721
2243
|
className: cn(
|
|
@@ -2733,7 +2255,7 @@ function NavigationMenu({
|
|
|
2733
2255
|
...props
|
|
2734
2256
|
}) {
|
|
2735
2257
|
return /* @__PURE__ */ jsxs(
|
|
2736
|
-
|
|
2258
|
+
NavigationMenuPrimitive.Root,
|
|
2737
2259
|
{
|
|
2738
2260
|
"data-slot": "navigation-menu",
|
|
2739
2261
|
"data-viewport": viewport,
|
|
@@ -2754,7 +2276,7 @@ function NavigationMenuList({
|
|
|
2754
2276
|
...props
|
|
2755
2277
|
}) {
|
|
2756
2278
|
return /* @__PURE__ */ jsx(
|
|
2757
|
-
|
|
2279
|
+
NavigationMenuPrimitive.List,
|
|
2758
2280
|
{
|
|
2759
2281
|
"data-slot": "navigation-menu-list",
|
|
2760
2282
|
className: cn(
|
|
@@ -2770,7 +2292,7 @@ function NavigationMenuItem({
|
|
|
2770
2292
|
...props
|
|
2771
2293
|
}) {
|
|
2772
2294
|
return /* @__PURE__ */ jsx(
|
|
2773
|
-
|
|
2295
|
+
NavigationMenuPrimitive.Item,
|
|
2774
2296
|
{
|
|
2775
2297
|
"data-slot": "navigation-menu-item",
|
|
2776
2298
|
className: cn("relative", className),
|
|
@@ -2787,7 +2309,7 @@ function NavigationMenuTrigger({
|
|
|
2787
2309
|
...props
|
|
2788
2310
|
}) {
|
|
2789
2311
|
return /* @__PURE__ */ jsxs(
|
|
2790
|
-
|
|
2312
|
+
NavigationMenuPrimitive.Trigger,
|
|
2791
2313
|
{
|
|
2792
2314
|
"data-slot": "navigation-menu-trigger",
|
|
2793
2315
|
className: cn(navigationMenuTriggerStyle(), "group", className),
|
|
@@ -2811,7 +2333,7 @@ function NavigationMenuContent({
|
|
|
2811
2333
|
...props
|
|
2812
2334
|
}) {
|
|
2813
2335
|
return /* @__PURE__ */ jsx(
|
|
2814
|
-
|
|
2336
|
+
NavigationMenuPrimitive.Content,
|
|
2815
2337
|
{
|
|
2816
2338
|
"data-slot": "navigation-menu-content",
|
|
2817
2339
|
className: cn(
|
|
@@ -2834,7 +2356,7 @@ function NavigationMenuViewport({
|
|
|
2834
2356
|
"absolute top-full left-0 isolate z-50 flex justify-center"
|
|
2835
2357
|
),
|
|
2836
2358
|
children: /* @__PURE__ */ jsx(
|
|
2837
|
-
|
|
2359
|
+
NavigationMenuPrimitive.Viewport,
|
|
2838
2360
|
{
|
|
2839
2361
|
"data-slot": "navigation-menu-viewport",
|
|
2840
2362
|
className: cn(
|
|
@@ -2852,7 +2374,7 @@ function NavigationMenuLink({
|
|
|
2852
2374
|
...props
|
|
2853
2375
|
}) {
|
|
2854
2376
|
return /* @__PURE__ */ jsx(
|
|
2855
|
-
|
|
2377
|
+
NavigationMenuPrimitive.Link,
|
|
2856
2378
|
{
|
|
2857
2379
|
"data-slot": "navigation-menu-link",
|
|
2858
2380
|
className: cn(
|
|
@@ -2868,7 +2390,7 @@ function NavigationMenuIndicator({
|
|
|
2868
2390
|
...props
|
|
2869
2391
|
}) {
|
|
2870
2392
|
return /* @__PURE__ */ jsx(
|
|
2871
|
-
|
|
2393
|
+
NavigationMenuPrimitive.Indicator,
|
|
2872
2394
|
{
|
|
2873
2395
|
"data-slot": "navigation-menu-indicator",
|
|
2874
2396
|
className: cn(
|
|
@@ -2928,7 +2450,7 @@ function Toggle({
|
|
|
2928
2450
|
...props
|
|
2929
2451
|
}) {
|
|
2930
2452
|
return /* @__PURE__ */ jsx(
|
|
2931
|
-
|
|
2453
|
+
TogglePrimitive.Root,
|
|
2932
2454
|
{
|
|
2933
2455
|
"data-slot": "toggle",
|
|
2934
2456
|
className: cn(toggleVariants({ variant, size, className })),
|
|
@@ -2936,7 +2458,7 @@ function Toggle({
|
|
|
2936
2458
|
}
|
|
2937
2459
|
);
|
|
2938
2460
|
}
|
|
2939
|
-
var ToggleGroupContext =
|
|
2461
|
+
var ToggleGroupContext = React9.createContext({
|
|
2940
2462
|
size: "default",
|
|
2941
2463
|
variant: "default",
|
|
2942
2464
|
spacing: 0
|
|
@@ -2950,7 +2472,7 @@ function ToggleGroup({
|
|
|
2950
2472
|
...props
|
|
2951
2473
|
}) {
|
|
2952
2474
|
return /* @__PURE__ */ jsx(
|
|
2953
|
-
|
|
2475
|
+
ToggleGroupPrimitive.Root,
|
|
2954
2476
|
{
|
|
2955
2477
|
"data-slot": "toggle-group",
|
|
2956
2478
|
"data-variant": variant,
|
|
@@ -2973,9 +2495,9 @@ function ToggleGroupItem({
|
|
|
2973
2495
|
size,
|
|
2974
2496
|
...props
|
|
2975
2497
|
}) {
|
|
2976
|
-
const context =
|
|
2498
|
+
const context = React9.useContext(ToggleGroupContext);
|
|
2977
2499
|
return /* @__PURE__ */ jsx(
|
|
2978
|
-
|
|
2500
|
+
ToggleGroupPrimitive.Item,
|
|
2979
2501
|
{
|
|
2980
2502
|
"data-slot": "toggle-group-item",
|
|
2981
2503
|
"data-variant": context.variant || variant,
|
|
@@ -2995,210 +2517,25 @@ function ToggleGroupItem({
|
|
|
2995
2517
|
}
|
|
2996
2518
|
);
|
|
2997
2519
|
}
|
|
2998
|
-
|
|
2999
|
-
function useCarousel() {
|
|
3000
|
-
const context = React13.useContext(CarouselContext);
|
|
3001
|
-
if (!context) {
|
|
3002
|
-
throw new Error("useCarousel must be used within a <Carousel />");
|
|
3003
|
-
}
|
|
3004
|
-
return context;
|
|
3005
|
-
}
|
|
3006
|
-
function Carousel({
|
|
3007
|
-
orientation = "horizontal",
|
|
3008
|
-
opts,
|
|
3009
|
-
setApi,
|
|
3010
|
-
plugins,
|
|
2520
|
+
function Calendar({
|
|
3011
2521
|
className,
|
|
3012
|
-
|
|
2522
|
+
classNames,
|
|
2523
|
+
showOutsideDays = true,
|
|
2524
|
+
captionLayout = "label",
|
|
2525
|
+
buttonVariant = "ghost",
|
|
2526
|
+
formatters,
|
|
2527
|
+
components,
|
|
3013
2528
|
...props
|
|
3014
2529
|
}) {
|
|
3015
|
-
const
|
|
3016
|
-
{
|
|
3017
|
-
...opts,
|
|
3018
|
-
axis: orientation === "horizontal" ? "x" : "y"
|
|
3019
|
-
},
|
|
3020
|
-
plugins
|
|
3021
|
-
);
|
|
3022
|
-
const [canScrollPrev, setCanScrollPrev] = React13.useState(false);
|
|
3023
|
-
const [canScrollNext, setCanScrollNext] = React13.useState(false);
|
|
3024
|
-
const onSelect = React13.useCallback((api2) => {
|
|
3025
|
-
if (!api2) return;
|
|
3026
|
-
setCanScrollPrev(api2.canScrollPrev());
|
|
3027
|
-
setCanScrollNext(api2.canScrollNext());
|
|
3028
|
-
}, []);
|
|
3029
|
-
const scrollPrev = React13.useCallback(() => {
|
|
3030
|
-
api?.scrollPrev();
|
|
3031
|
-
}, [api]);
|
|
3032
|
-
const scrollNext = React13.useCallback(() => {
|
|
3033
|
-
api?.scrollNext();
|
|
3034
|
-
}, [api]);
|
|
3035
|
-
const handleKeyDown = React13.useCallback(
|
|
3036
|
-
(event) => {
|
|
3037
|
-
if (event.key === "ArrowLeft") {
|
|
3038
|
-
event.preventDefault();
|
|
3039
|
-
scrollPrev();
|
|
3040
|
-
} else if (event.key === "ArrowRight") {
|
|
3041
|
-
event.preventDefault();
|
|
3042
|
-
scrollNext();
|
|
3043
|
-
}
|
|
3044
|
-
},
|
|
3045
|
-
[scrollPrev, scrollNext]
|
|
3046
|
-
);
|
|
3047
|
-
React13.useEffect(() => {
|
|
3048
|
-
if (!api || !setApi) return;
|
|
3049
|
-
setApi(api);
|
|
3050
|
-
}, [api, setApi]);
|
|
3051
|
-
React13.useEffect(() => {
|
|
3052
|
-
if (!api) return;
|
|
3053
|
-
onSelect(api);
|
|
3054
|
-
api.on("reInit", onSelect);
|
|
3055
|
-
api.on("select", onSelect);
|
|
3056
|
-
return () => {
|
|
3057
|
-
api?.off("select", onSelect);
|
|
3058
|
-
};
|
|
3059
|
-
}, [api, onSelect]);
|
|
3060
|
-
return /* @__PURE__ */ jsx(
|
|
3061
|
-
CarouselContext.Provider,
|
|
3062
|
-
{
|
|
3063
|
-
value: {
|
|
3064
|
-
carouselRef,
|
|
3065
|
-
api,
|
|
3066
|
-
opts,
|
|
3067
|
-
orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
|
|
3068
|
-
scrollPrev,
|
|
3069
|
-
scrollNext,
|
|
3070
|
-
canScrollPrev,
|
|
3071
|
-
canScrollNext
|
|
3072
|
-
},
|
|
3073
|
-
children: /* @__PURE__ */ jsx(
|
|
3074
|
-
"div",
|
|
3075
|
-
{
|
|
3076
|
-
onKeyDownCapture: handleKeyDown,
|
|
3077
|
-
className: cn("relative", className),
|
|
3078
|
-
role: "region",
|
|
3079
|
-
"aria-roledescription": "carousel",
|
|
3080
|
-
"data-slot": "carousel",
|
|
3081
|
-
...props,
|
|
3082
|
-
children
|
|
3083
|
-
}
|
|
3084
|
-
)
|
|
3085
|
-
}
|
|
3086
|
-
);
|
|
3087
|
-
}
|
|
3088
|
-
function CarouselContent({ className, ...props }) {
|
|
3089
|
-
const { carouselRef, orientation } = useCarousel();
|
|
3090
|
-
return /* @__PURE__ */ jsx(
|
|
3091
|
-
"div",
|
|
3092
|
-
{
|
|
3093
|
-
ref: carouselRef,
|
|
3094
|
-
className: "overflow-hidden",
|
|
3095
|
-
"data-slot": "carousel-content",
|
|
3096
|
-
children: /* @__PURE__ */ jsx(
|
|
3097
|
-
"div",
|
|
3098
|
-
{
|
|
3099
|
-
className: cn(
|
|
3100
|
-
"flex",
|
|
3101
|
-
orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
|
|
3102
|
-
className
|
|
3103
|
-
),
|
|
3104
|
-
...props
|
|
3105
|
-
}
|
|
3106
|
-
)
|
|
3107
|
-
}
|
|
3108
|
-
);
|
|
3109
|
-
}
|
|
3110
|
-
function CarouselItem({ className, ...props }) {
|
|
3111
|
-
const { orientation } = useCarousel();
|
|
2530
|
+
const defaultClassNames = getDefaultClassNames();
|
|
3112
2531
|
return /* @__PURE__ */ jsx(
|
|
3113
|
-
|
|
2532
|
+
DayPicker,
|
|
3114
2533
|
{
|
|
3115
|
-
|
|
3116
|
-
"aria-roledescription": "slide",
|
|
3117
|
-
"data-slot": "carousel-item",
|
|
2534
|
+
showOutsideDays,
|
|
3118
2535
|
className: cn(
|
|
3119
|
-
"
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
),
|
|
3123
|
-
...props
|
|
3124
|
-
}
|
|
3125
|
-
);
|
|
3126
|
-
}
|
|
3127
|
-
function CarouselPrevious({
|
|
3128
|
-
className,
|
|
3129
|
-
variant = "outline",
|
|
3130
|
-
size = "icon",
|
|
3131
|
-
...props
|
|
3132
|
-
}) {
|
|
3133
|
-
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
3134
|
-
return /* @__PURE__ */ jsxs(
|
|
3135
|
-
Button,
|
|
3136
|
-
{
|
|
3137
|
-
"data-slot": "carousel-previous",
|
|
3138
|
-
variant,
|
|
3139
|
-
size,
|
|
3140
|
-
className: cn(
|
|
3141
|
-
"absolute size-8 rounded-full",
|
|
3142
|
-
orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
3143
|
-
className
|
|
3144
|
-
),
|
|
3145
|
-
disabled: !canScrollPrev,
|
|
3146
|
-
onClick: scrollPrev,
|
|
3147
|
-
...props,
|
|
3148
|
-
children: [
|
|
3149
|
-
/* @__PURE__ */ jsx(ArrowLeft, {}),
|
|
3150
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Previous slide" })
|
|
3151
|
-
]
|
|
3152
|
-
}
|
|
3153
|
-
);
|
|
3154
|
-
}
|
|
3155
|
-
function CarouselNext({
|
|
3156
|
-
className,
|
|
3157
|
-
variant = "outline",
|
|
3158
|
-
size = "icon",
|
|
3159
|
-
...props
|
|
3160
|
-
}) {
|
|
3161
|
-
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
3162
|
-
return /* @__PURE__ */ jsxs(
|
|
3163
|
-
Button,
|
|
3164
|
-
{
|
|
3165
|
-
"data-slot": "carousel-next",
|
|
3166
|
-
variant,
|
|
3167
|
-
size,
|
|
3168
|
-
className: cn(
|
|
3169
|
-
"absolute size-8 rounded-full",
|
|
3170
|
-
orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
|
|
3171
|
-
className
|
|
3172
|
-
),
|
|
3173
|
-
disabled: !canScrollNext,
|
|
3174
|
-
onClick: scrollNext,
|
|
3175
|
-
...props,
|
|
3176
|
-
children: [
|
|
3177
|
-
/* @__PURE__ */ jsx(ArrowRight, {}),
|
|
3178
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Next slide" })
|
|
3179
|
-
]
|
|
3180
|
-
}
|
|
3181
|
-
);
|
|
3182
|
-
}
|
|
3183
|
-
function Calendar({
|
|
3184
|
-
className,
|
|
3185
|
-
classNames,
|
|
3186
|
-
showOutsideDays = true,
|
|
3187
|
-
captionLayout = "label",
|
|
3188
|
-
buttonVariant = "ghost",
|
|
3189
|
-
formatters,
|
|
3190
|
-
components,
|
|
3191
|
-
...props
|
|
3192
|
-
}) {
|
|
3193
|
-
const defaultClassNames = getDefaultClassNames();
|
|
3194
|
-
return /* @__PURE__ */ jsx(
|
|
3195
|
-
DayPicker,
|
|
3196
|
-
{
|
|
3197
|
-
showOutsideDays,
|
|
3198
|
-
className: cn(
|
|
3199
|
-
"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
3200
|
-
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
3201
|
-
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
2536
|
+
"group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
2537
|
+
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
2538
|
+
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
3202
2539
|
className
|
|
3203
2540
|
),
|
|
3204
2541
|
captionLayout,
|
|
@@ -3333,8 +2670,8 @@ function CalendarDayButton({
|
|
|
3333
2670
|
...props
|
|
3334
2671
|
}) {
|
|
3335
2672
|
const defaultClassNames = getDefaultClassNames();
|
|
3336
|
-
const ref =
|
|
3337
|
-
|
|
2673
|
+
const ref = React9.useRef(null);
|
|
2674
|
+
React9.useEffect(() => {
|
|
3338
2675
|
if (modifiers.focused) ref.current?.focus();
|
|
3339
2676
|
}, [modifiers.focused]);
|
|
3340
2677
|
return /* @__PURE__ */ jsx(
|
|
@@ -3357,12 +2694,12 @@ function CalendarDayButton({
|
|
|
3357
2694
|
}
|
|
3358
2695
|
);
|
|
3359
2696
|
}
|
|
3360
|
-
function
|
|
2697
|
+
function RadioGroup4({
|
|
3361
2698
|
className,
|
|
3362
2699
|
...props
|
|
3363
2700
|
}) {
|
|
3364
2701
|
return /* @__PURE__ */ jsx(
|
|
3365
|
-
|
|
2702
|
+
RadioGroupPrimitive.Root,
|
|
3366
2703
|
{
|
|
3367
2704
|
"data-slot": "radio-group",
|
|
3368
2705
|
className: cn("grid gap-3", className),
|
|
@@ -3375,7 +2712,7 @@ function RadioGroupItem({
|
|
|
3375
2712
|
...props
|
|
3376
2713
|
}) {
|
|
3377
2714
|
return /* @__PURE__ */ jsx(
|
|
3378
|
-
|
|
2715
|
+
RadioGroupPrimitive.Item,
|
|
3379
2716
|
{
|
|
3380
2717
|
"data-slot": "radio-group-item",
|
|
3381
2718
|
className: cn(
|
|
@@ -3384,7 +2721,7 @@ function RadioGroupItem({
|
|
|
3384
2721
|
),
|
|
3385
2722
|
...props,
|
|
3386
2723
|
children: /* @__PURE__ */ jsx(
|
|
3387
|
-
|
|
2724
|
+
RadioGroupPrimitive.Indicator,
|
|
3388
2725
|
{
|
|
3389
2726
|
"data-slot": "radio-group-indicator",
|
|
3390
2727
|
className: "relative flex items-center justify-center",
|
|
@@ -3397,24 +2734,24 @@ function RadioGroupItem({
|
|
|
3397
2734
|
function Collapsible({
|
|
3398
2735
|
...props
|
|
3399
2736
|
}) {
|
|
3400
|
-
return /* @__PURE__ */ jsx(
|
|
2737
|
+
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, { "data-slot": "collapsible", ...props });
|
|
3401
2738
|
}
|
|
3402
|
-
function
|
|
2739
|
+
function CollapsibleTrigger2({
|
|
3403
2740
|
...props
|
|
3404
2741
|
}) {
|
|
3405
2742
|
return /* @__PURE__ */ jsx(
|
|
3406
|
-
|
|
2743
|
+
CollapsiblePrimitive.CollapsibleTrigger,
|
|
3407
2744
|
{
|
|
3408
2745
|
"data-slot": "collapsible-trigger",
|
|
3409
2746
|
...props
|
|
3410
2747
|
}
|
|
3411
2748
|
);
|
|
3412
2749
|
}
|
|
3413
|
-
function
|
|
2750
|
+
function CollapsibleContent2({
|
|
3414
2751
|
...props
|
|
3415
2752
|
}) {
|
|
3416
2753
|
return /* @__PURE__ */ jsx(
|
|
3417
|
-
|
|
2754
|
+
CollapsiblePrimitive.CollapsibleContent,
|
|
3418
2755
|
{
|
|
3419
2756
|
"data-slot": "collapsible-content",
|
|
3420
2757
|
...props
|
|
@@ -3438,14 +2775,14 @@ function ScrollArea({
|
|
|
3438
2775
|
...props
|
|
3439
2776
|
}) {
|
|
3440
2777
|
return /* @__PURE__ */ jsxs(
|
|
3441
|
-
|
|
2778
|
+
ScrollAreaPrimitive.Root,
|
|
3442
2779
|
{
|
|
3443
2780
|
"data-slot": "scroll-area",
|
|
3444
2781
|
className: cn("relative", className),
|
|
3445
2782
|
...props,
|
|
3446
2783
|
children: [
|
|
3447
2784
|
/* @__PURE__ */ jsx(
|
|
3448
|
-
|
|
2785
|
+
ScrollAreaPrimitive.Viewport,
|
|
3449
2786
|
{
|
|
3450
2787
|
"data-slot": "scroll-area-viewport",
|
|
3451
2788
|
className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
|
|
@@ -3453,7 +2790,7 @@ function ScrollArea({
|
|
|
3453
2790
|
}
|
|
3454
2791
|
),
|
|
3455
2792
|
/* @__PURE__ */ jsx(ScrollBar, {}),
|
|
3456
|
-
/* @__PURE__ */ jsx(
|
|
2793
|
+
/* @__PURE__ */ jsx(ScrollAreaPrimitive.Corner, {})
|
|
3457
2794
|
]
|
|
3458
2795
|
}
|
|
3459
2796
|
);
|
|
@@ -3464,7 +2801,7 @@ function ScrollBar({
|
|
|
3464
2801
|
...props
|
|
3465
2802
|
}) {
|
|
3466
2803
|
return /* @__PURE__ */ jsx(
|
|
3467
|
-
|
|
2804
|
+
ScrollAreaPrimitive.ScrollAreaScrollbar,
|
|
3468
2805
|
{
|
|
3469
2806
|
"data-slot": "scroll-area-scrollbar",
|
|
3470
2807
|
orientation,
|
|
@@ -3476,7 +2813,7 @@ function ScrollBar({
|
|
|
3476
2813
|
),
|
|
3477
2814
|
...props,
|
|
3478
2815
|
children: /* @__PURE__ */ jsx(
|
|
3479
|
-
|
|
2816
|
+
ScrollAreaPrimitive.ScrollAreaThumb,
|
|
3480
2817
|
{
|
|
3481
2818
|
"data-slot": "scroll-area-thumb",
|
|
3482
2819
|
className: "relative flex-1 rounded-full bg-border"
|
|
@@ -3512,7 +2849,7 @@ var Toaster = ({ ...props }) => {
|
|
|
3512
2849
|
function AspectRatio({
|
|
3513
2850
|
...props
|
|
3514
2851
|
}) {
|
|
3515
|
-
return /* @__PURE__ */ jsx(
|
|
2852
|
+
return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
|
|
3516
2853
|
}
|
|
3517
2854
|
function Breadcrumb({ ...props }) {
|
|
3518
2855
|
return /* @__PURE__ */ jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
|
|
@@ -3545,7 +2882,7 @@ function BreadcrumbLink({
|
|
|
3545
2882
|
className,
|
|
3546
2883
|
...props
|
|
3547
2884
|
}) {
|
|
3548
|
-
const Comp = asChild ?
|
|
2885
|
+
const Comp = asChild ? Slot7.Root : "a";
|
|
3549
2886
|
return /* @__PURE__ */ jsx(
|
|
3550
2887
|
Comp,
|
|
3551
2888
|
{
|
|
@@ -3604,14 +2941,14 @@ function BreadcrumbEllipsis({
|
|
|
3604
2941
|
}
|
|
3605
2942
|
);
|
|
3606
2943
|
}
|
|
3607
|
-
function
|
|
2944
|
+
function Separator5({
|
|
3608
2945
|
className,
|
|
3609
2946
|
orientation = "horizontal",
|
|
3610
2947
|
decorative = true,
|
|
3611
2948
|
...props
|
|
3612
2949
|
}) {
|
|
3613
2950
|
return /* @__PURE__ */ jsx(
|
|
3614
|
-
|
|
2951
|
+
SeparatorPrimitive.Root,
|
|
3615
2952
|
{
|
|
3616
2953
|
"data-slot": "separator",
|
|
3617
2954
|
decorative,
|
|
@@ -3659,671 +2996,178 @@ function ButtonGroupText({
|
|
|
3659
2996
|
asChild = false,
|
|
3660
2997
|
...props
|
|
3661
2998
|
}) {
|
|
3662
|
-
const Comp = asChild ?
|
|
2999
|
+
const Comp = asChild ? Slot7.Root : "div";
|
|
3663
3000
|
return /* @__PURE__ */ jsx(
|
|
3664
3001
|
Comp,
|
|
3665
3002
|
{
|
|
3666
3003
|
className: cn(
|
|
3667
3004
|
"flex items-center gap-2 rounded-md border bg-muted px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
3668
3005
|
className
|
|
3669
|
-
),
|
|
3670
|
-
...props
|
|
3671
|
-
}
|
|
3672
|
-
);
|
|
3673
|
-
}
|
|
3674
|
-
function ButtonGroupSeparator({
|
|
3675
|
-
className,
|
|
3676
|
-
orientation = "vertical",
|
|
3677
|
-
...props
|
|
3678
|
-
}) {
|
|
3679
|
-
return /* @__PURE__ */ jsx(
|
|
3680
|
-
Separator,
|
|
3681
|
-
{
|
|
3682
|
-
"data-slot": "button-group-separator",
|
|
3683
|
-
orientation,
|
|
3684
|
-
className: cn(
|
|
3685
|
-
"relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto",
|
|
3686
|
-
className
|
|
3687
|
-
),
|
|
3688
|
-
...props
|
|
3689
|
-
}
|
|
3690
|
-
);
|
|
3691
|
-
}
|
|
3692
|
-
var THEMES = { light: "", dark: ".dark" };
|
|
3693
|
-
var ChartContext = React13.createContext(null);
|
|
3694
|
-
function useChart() {
|
|
3695
|
-
const context = React13.useContext(ChartContext);
|
|
3696
|
-
if (!context) {
|
|
3697
|
-
throw new Error("useChart must be used within a <ChartContainer />");
|
|
3698
|
-
}
|
|
3699
|
-
return context;
|
|
3700
|
-
}
|
|
3701
|
-
function ChartContainer({
|
|
3702
|
-
id,
|
|
3703
|
-
className,
|
|
3704
|
-
children,
|
|
3705
|
-
config,
|
|
3706
|
-
...props
|
|
3707
|
-
}) {
|
|
3708
|
-
const uniqueId = React13.useId();
|
|
3709
|
-
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
3710
|
-
return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
|
|
3711
|
-
"div",
|
|
3712
|
-
{
|
|
3713
|
-
"data-slot": "chart",
|
|
3714
|
-
"data-chart": chartId,
|
|
3715
|
-
className: cn(
|
|
3716
|
-
"flex aspect-video justify-center text-xs [&_.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]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",
|
|
3717
|
-
className
|
|
3718
|
-
),
|
|
3719
|
-
...props,
|
|
3720
|
-
children: [
|
|
3721
|
-
/* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
|
|
3722
|
-
/* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
|
|
3723
|
-
]
|
|
3724
|
-
}
|
|
3725
|
-
) });
|
|
3726
|
-
}
|
|
3727
|
-
var ChartStyle = ({ id, config }) => {
|
|
3728
|
-
const colorConfig = Object.entries(config).filter(
|
|
3729
|
-
([, config2]) => config2.theme || config2.color
|
|
3730
|
-
);
|
|
3731
|
-
if (!colorConfig.length) {
|
|
3732
|
-
return null;
|
|
3733
|
-
}
|
|
3734
|
-
return /* @__PURE__ */ jsx(
|
|
3735
|
-
"style",
|
|
3736
|
-
{
|
|
3737
|
-
dangerouslySetInnerHTML: {
|
|
3738
|
-
__html: Object.entries(THEMES).map(
|
|
3739
|
-
([theme, prefix]) => `
|
|
3740
|
-
${prefix} [data-chart=${id}] {
|
|
3741
|
-
${colorConfig.map(([key, itemConfig]) => {
|
|
3742
|
-
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
3743
|
-
return color ? ` --color-${key}: ${color};` : null;
|
|
3744
|
-
}).join("\n")}
|
|
3745
|
-
}
|
|
3746
|
-
`
|
|
3747
|
-
).join("\n")
|
|
3748
|
-
}
|
|
3749
|
-
}
|
|
3750
|
-
);
|
|
3751
|
-
};
|
|
3752
|
-
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
3753
|
-
function ChartTooltipContent({
|
|
3754
|
-
active,
|
|
3755
|
-
payload,
|
|
3756
|
-
className,
|
|
3757
|
-
indicator = "dot",
|
|
3758
|
-
hideLabel = false,
|
|
3759
|
-
hideIndicator = false,
|
|
3760
|
-
label,
|
|
3761
|
-
labelFormatter,
|
|
3762
|
-
labelClassName,
|
|
3763
|
-
formatter,
|
|
3764
|
-
color,
|
|
3765
|
-
nameKey,
|
|
3766
|
-
labelKey
|
|
3767
|
-
}) {
|
|
3768
|
-
const { config } = useChart();
|
|
3769
|
-
const tooltipLabel = React13.useMemo(() => {
|
|
3770
|
-
if (hideLabel || !payload?.length) {
|
|
3771
|
-
return null;
|
|
3772
|
-
}
|
|
3773
|
-
const [item] = payload;
|
|
3774
|
-
const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
|
|
3775
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3776
|
-
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
3777
|
-
if (labelFormatter) {
|
|
3778
|
-
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
3779
|
-
}
|
|
3780
|
-
if (!value) {
|
|
3781
|
-
return null;
|
|
3782
|
-
}
|
|
3783
|
-
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
|
|
3784
|
-
}, [
|
|
3785
|
-
label,
|
|
3786
|
-
labelFormatter,
|
|
3787
|
-
payload,
|
|
3788
|
-
hideLabel,
|
|
3789
|
-
labelClassName,
|
|
3790
|
-
config,
|
|
3791
|
-
labelKey
|
|
3792
|
-
]);
|
|
3793
|
-
if (!active || !payload?.length) {
|
|
3794
|
-
return null;
|
|
3795
|
-
}
|
|
3796
|
-
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
3797
|
-
return /* @__PURE__ */ jsxs(
|
|
3798
|
-
"div",
|
|
3799
|
-
{
|
|
3800
|
-
className: cn(
|
|
3801
|
-
"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
|
|
3802
|
-
className
|
|
3803
|
-
),
|
|
3804
|
-
children: [
|
|
3805
|
-
!nestLabel ? tooltipLabel : null,
|
|
3806
|
-
/* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
3807
|
-
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
3808
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3809
|
-
const indicatorColor = color || item.payload?.fill || item.color;
|
|
3810
|
-
return /* @__PURE__ */ jsx(
|
|
3811
|
-
"div",
|
|
3812
|
-
{
|
|
3813
|
-
className: cn(
|
|
3814
|
-
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
|
|
3815
|
-
indicator === "dot" && "items-center"
|
|
3816
|
-
),
|
|
3817
|
-
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3818
|
-
itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
|
|
3819
|
-
"div",
|
|
3820
|
-
{
|
|
3821
|
-
className: cn(
|
|
3822
|
-
"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
|
|
3823
|
-
{
|
|
3824
|
-
"h-2.5 w-2.5": indicator === "dot",
|
|
3825
|
-
"w-1": indicator === "line",
|
|
3826
|
-
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
3827
|
-
"my-0.5": nestLabel && indicator === "dashed"
|
|
3828
|
-
}
|
|
3829
|
-
),
|
|
3830
|
-
style: {
|
|
3831
|
-
"--color-bg": indicatorColor,
|
|
3832
|
-
"--color-border": indicatorColor
|
|
3833
|
-
}
|
|
3834
|
-
}
|
|
3835
|
-
),
|
|
3836
|
-
/* @__PURE__ */ jsxs(
|
|
3837
|
-
"div",
|
|
3838
|
-
{
|
|
3839
|
-
className: cn(
|
|
3840
|
-
"flex flex-1 justify-between leading-none",
|
|
3841
|
-
nestLabel ? "items-end" : "items-center"
|
|
3842
|
-
),
|
|
3843
|
-
children: [
|
|
3844
|
-
/* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
|
|
3845
|
-
nestLabel ? tooltipLabel : null,
|
|
3846
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
|
|
3847
|
-
] }),
|
|
3848
|
-
item.value && /* @__PURE__ */ jsx("span", { className: "font-mono font-medium text-foreground tabular-nums", children: item.value.toLocaleString() })
|
|
3849
|
-
]
|
|
3850
|
-
}
|
|
3851
|
-
)
|
|
3852
|
-
] })
|
|
3853
|
-
},
|
|
3854
|
-
item.dataKey
|
|
3855
|
-
);
|
|
3856
|
-
}) })
|
|
3857
|
-
]
|
|
3858
|
-
}
|
|
3859
|
-
);
|
|
3860
|
-
}
|
|
3861
|
-
var ChartLegend = RechartsPrimitive.Legend;
|
|
3862
|
-
function ChartLegendContent({
|
|
3863
|
-
className,
|
|
3864
|
-
hideIcon = false,
|
|
3865
|
-
payload,
|
|
3866
|
-
verticalAlign = "bottom",
|
|
3867
|
-
nameKey
|
|
3868
|
-
}) {
|
|
3869
|
-
const { config } = useChart();
|
|
3870
|
-
if (!payload?.length) {
|
|
3871
|
-
return null;
|
|
3872
|
-
}
|
|
3873
|
-
return /* @__PURE__ */ jsx(
|
|
3874
|
-
"div",
|
|
3875
|
-
{
|
|
3876
|
-
className: cn(
|
|
3877
|
-
"flex items-center justify-center gap-4",
|
|
3878
|
-
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
3879
|
-
className
|
|
3880
|
-
),
|
|
3881
|
-
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
3882
|
-
const key = `${nameKey || item.dataKey || "value"}`;
|
|
3883
|
-
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
3884
|
-
return /* @__PURE__ */ jsxs(
|
|
3885
|
-
"div",
|
|
3886
|
-
{
|
|
3887
|
-
className: cn(
|
|
3888
|
-
"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
|
|
3889
|
-
),
|
|
3890
|
-
children: [
|
|
3891
|
-
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
|
|
3892
|
-
"div",
|
|
3893
|
-
{
|
|
3894
|
-
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
3895
|
-
style: {
|
|
3896
|
-
backgroundColor: item.color
|
|
3897
|
-
}
|
|
3898
|
-
}
|
|
3899
|
-
),
|
|
3900
|
-
itemConfig?.label
|
|
3901
|
-
]
|
|
3902
|
-
},
|
|
3903
|
-
item.value
|
|
3904
|
-
);
|
|
3905
|
-
})
|
|
3906
|
-
}
|
|
3907
|
-
);
|
|
3908
|
-
}
|
|
3909
|
-
function getPayloadConfigFromPayload(config, payload, key) {
|
|
3910
|
-
if (typeof payload !== "object" || payload === null) {
|
|
3911
|
-
return void 0;
|
|
3912
|
-
}
|
|
3913
|
-
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
3914
|
-
let configLabelKey = key;
|
|
3915
|
-
if (key in payload && typeof payload[key] === "string") {
|
|
3916
|
-
configLabelKey = payload[key];
|
|
3917
|
-
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
3918
|
-
configLabelKey = payloadPayload[key];
|
|
3919
|
-
}
|
|
3920
|
-
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
3921
|
-
}
|
|
3922
|
-
function InputGroup({ className, ...props }) {
|
|
3923
|
-
return /* @__PURE__ */ jsx(
|
|
3924
|
-
"div",
|
|
3925
|
-
{
|
|
3926
|
-
"data-slot": "input-group",
|
|
3927
|
-
role: "group",
|
|
3928
|
-
className: cn(
|
|
3929
|
-
"group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30",
|
|
3930
|
-
"h-9 min-w-0 has-[>textarea]:h-auto",
|
|
3931
|
-
// Variants based on alignment.
|
|
3932
|
-
"has-[>[data-align=inline-start]]:[&>input]:pl-2",
|
|
3933
|
-
"has-[>[data-align=inline-end]]:[&>input]:pr-2",
|
|
3934
|
-
"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
|
|
3935
|
-
"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
|
|
3936
|
-
// Focus state.
|
|
3937
|
-
"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
|
|
3938
|
-
// Error state.
|
|
3939
|
-
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
|
|
3940
|
-
className
|
|
3941
|
-
),
|
|
3942
|
-
...props
|
|
3943
|
-
}
|
|
3944
|
-
);
|
|
3945
|
-
}
|
|
3946
|
-
var inputGroupAddonVariants = cva(
|
|
3947
|
-
"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
|
|
3948
|
-
{
|
|
3949
|
-
variants: {
|
|
3950
|
-
align: {
|
|
3951
|
-
"inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
|
|
3952
|
-
"inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
|
|
3953
|
-
"block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
|
|
3954
|
-
"block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
|
|
3955
|
-
}
|
|
3956
|
-
},
|
|
3957
|
-
defaultVariants: {
|
|
3958
|
-
align: "inline-start"
|
|
3959
|
-
}
|
|
3960
|
-
}
|
|
3961
|
-
);
|
|
3962
|
-
function InputGroupAddon({
|
|
3963
|
-
className,
|
|
3964
|
-
align = "inline-start",
|
|
3965
|
-
...props
|
|
3966
|
-
}) {
|
|
3967
|
-
return /* @__PURE__ */ jsx(
|
|
3968
|
-
"div",
|
|
3969
|
-
{
|
|
3970
|
-
role: "group",
|
|
3971
|
-
"data-slot": "input-group-addon",
|
|
3972
|
-
"data-align": align,
|
|
3973
|
-
className: cn(inputGroupAddonVariants({ align }), className),
|
|
3974
|
-
onClick: (e) => {
|
|
3975
|
-
if (e.target.closest("button")) {
|
|
3976
|
-
return;
|
|
3977
|
-
}
|
|
3978
|
-
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
3979
|
-
},
|
|
3980
|
-
...props
|
|
3981
|
-
}
|
|
3982
|
-
);
|
|
3983
|
-
}
|
|
3984
|
-
var inputGroupButtonVariants = cva(
|
|
3985
|
-
"flex items-center gap-2 text-sm shadow-none",
|
|
3986
|
-
{
|
|
3987
|
-
variants: {
|
|
3988
|
-
size: {
|
|
3989
|
-
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
|
|
3990
|
-
sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
|
|
3991
|
-
"icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
3992
|
-
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
3993
|
-
}
|
|
3994
|
-
},
|
|
3995
|
-
defaultVariants: {
|
|
3996
|
-
size: "xs"
|
|
3997
|
-
}
|
|
3998
|
-
}
|
|
3999
|
-
);
|
|
4000
|
-
function InputGroupButton({
|
|
4001
|
-
className,
|
|
4002
|
-
type = "button",
|
|
4003
|
-
variant = "ghost",
|
|
4004
|
-
size = "xs",
|
|
4005
|
-
...props
|
|
4006
|
-
}) {
|
|
4007
|
-
return /* @__PURE__ */ jsx(
|
|
4008
|
-
Button,
|
|
4009
|
-
{
|
|
4010
|
-
type,
|
|
4011
|
-
"data-size": size,
|
|
4012
|
-
variant,
|
|
4013
|
-
className: cn(inputGroupButtonVariants({ size }), className),
|
|
4014
|
-
...props
|
|
4015
|
-
}
|
|
4016
|
-
);
|
|
4017
|
-
}
|
|
4018
|
-
function InputGroupText({ className, ...props }) {
|
|
4019
|
-
return /* @__PURE__ */ jsx(
|
|
4020
|
-
"span",
|
|
4021
|
-
{
|
|
4022
|
-
className: cn(
|
|
4023
|
-
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
4024
|
-
className
|
|
4025
|
-
),
|
|
4026
|
-
...props
|
|
4027
|
-
}
|
|
4028
|
-
);
|
|
4029
|
-
}
|
|
4030
|
-
function InputGroupInput({
|
|
4031
|
-
className,
|
|
4032
|
-
...props
|
|
4033
|
-
}) {
|
|
4034
|
-
return /* @__PURE__ */ jsx(
|
|
4035
|
-
Input,
|
|
4036
|
-
{
|
|
4037
|
-
"data-slot": "input-group-control",
|
|
4038
|
-
className: cn(
|
|
4039
|
-
"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
4040
|
-
className
|
|
4041
|
-
),
|
|
4042
|
-
...props
|
|
4043
|
-
}
|
|
4044
|
-
);
|
|
4045
|
-
}
|
|
4046
|
-
function InputGroupTextarea({
|
|
4047
|
-
className,
|
|
4048
|
-
...props
|
|
4049
|
-
}) {
|
|
4050
|
-
return /* @__PURE__ */ jsx(
|
|
4051
|
-
Textarea,
|
|
4052
|
-
{
|
|
4053
|
-
"data-slot": "input-group-control",
|
|
4054
|
-
className: cn(
|
|
4055
|
-
"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
4056
|
-
className
|
|
4057
|
-
),
|
|
4058
|
-
...props
|
|
4059
|
-
}
|
|
4060
|
-
);
|
|
4061
|
-
}
|
|
4062
|
-
var Combobox = Combobox$1.Root;
|
|
4063
|
-
function ComboboxValue({ ...props }) {
|
|
4064
|
-
return /* @__PURE__ */ jsx(Combobox$1.Value, { "data-slot": "combobox-value", ...props });
|
|
4065
|
-
}
|
|
4066
|
-
function ComboboxTrigger({
|
|
4067
|
-
className,
|
|
4068
|
-
children,
|
|
4069
|
-
...props
|
|
4070
|
-
}) {
|
|
4071
|
-
return /* @__PURE__ */ jsxs(
|
|
4072
|
-
Combobox$1.Trigger,
|
|
4073
|
-
{
|
|
4074
|
-
"data-slot": "combobox-trigger",
|
|
4075
|
-
className: cn("[&_svg:not([class*='size-'])]:size-4", className),
|
|
4076
|
-
...props,
|
|
4077
|
-
children: [
|
|
4078
|
-
children,
|
|
4079
|
-
/* @__PURE__ */ jsx(
|
|
4080
|
-
ChevronDownIcon,
|
|
4081
|
-
{
|
|
4082
|
-
"data-slot": "combobox-trigger-icon",
|
|
4083
|
-
className: "pointer-events-none size-4 text-muted-foreground"
|
|
4084
|
-
}
|
|
4085
|
-
)
|
|
4086
|
-
]
|
|
4087
|
-
}
|
|
4088
|
-
);
|
|
4089
|
-
}
|
|
4090
|
-
function ComboboxClear({ className, ...props }) {
|
|
4091
|
-
return /* @__PURE__ */ jsx(
|
|
4092
|
-
Combobox$1.Clear,
|
|
4093
|
-
{
|
|
4094
|
-
"data-slot": "combobox-clear",
|
|
4095
|
-
render: /* @__PURE__ */ jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }),
|
|
4096
|
-
className: cn(className),
|
|
4097
|
-
...props,
|
|
4098
|
-
children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
|
|
4099
|
-
}
|
|
4100
|
-
);
|
|
4101
|
-
}
|
|
4102
|
-
function ComboboxInput({
|
|
4103
|
-
className,
|
|
4104
|
-
children,
|
|
4105
|
-
disabled = false,
|
|
4106
|
-
showTrigger = true,
|
|
4107
|
-
showClear = false,
|
|
4108
|
-
...props
|
|
4109
|
-
}) {
|
|
4110
|
-
return /* @__PURE__ */ jsxs(InputGroup, { className: cn("w-auto", className), children: [
|
|
4111
|
-
/* @__PURE__ */ jsx(
|
|
4112
|
-
Combobox$1.Input,
|
|
4113
|
-
{
|
|
4114
|
-
render: /* @__PURE__ */ jsx(InputGroupInput, { disabled }),
|
|
4115
|
-
...props
|
|
4116
|
-
}
|
|
4117
|
-
),
|
|
4118
|
-
/* @__PURE__ */ jsxs(InputGroupAddon, { align: "inline-end", children: [
|
|
4119
|
-
showTrigger && /* @__PURE__ */ jsx(
|
|
4120
|
-
InputGroupButton,
|
|
4121
|
-
{
|
|
4122
|
-
size: "icon-xs",
|
|
4123
|
-
variant: "ghost",
|
|
4124
|
-
asChild: true,
|
|
4125
|
-
"data-slot": "input-group-button",
|
|
4126
|
-
className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent",
|
|
4127
|
-
disabled,
|
|
4128
|
-
children: /* @__PURE__ */ jsx(ComboboxTrigger, {})
|
|
4129
|
-
}
|
|
4130
|
-
),
|
|
4131
|
-
showClear && /* @__PURE__ */ jsx(ComboboxClear, { disabled })
|
|
4132
|
-
] }),
|
|
4133
|
-
children
|
|
4134
|
-
] });
|
|
4135
|
-
}
|
|
4136
|
-
function ComboboxContent({
|
|
4137
|
-
className,
|
|
4138
|
-
side = "bottom",
|
|
4139
|
-
sideOffset = 6,
|
|
4140
|
-
align = "start",
|
|
4141
|
-
alignOffset = 0,
|
|
4142
|
-
anchor,
|
|
4143
|
-
...props
|
|
4144
|
-
}) {
|
|
4145
|
-
return /* @__PURE__ */ jsx(Combobox$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
4146
|
-
Combobox$1.Positioner,
|
|
4147
|
-
{
|
|
4148
|
-
side,
|
|
4149
|
-
sideOffset,
|
|
4150
|
-
align,
|
|
4151
|
-
alignOffset,
|
|
4152
|
-
anchor,
|
|
4153
|
-
className: "isolate z-50",
|
|
4154
|
-
children: /* @__PURE__ */ jsx(
|
|
4155
|
-
Combobox$1.Popup,
|
|
4156
|
-
{
|
|
4157
|
-
"data-slot": "combobox-content",
|
|
4158
|
-
"data-chips": !!anchor,
|
|
4159
|
-
className: cn(
|
|
4160
|
-
"group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
4161
|
-
className
|
|
4162
|
-
),
|
|
4163
|
-
...props
|
|
4164
|
-
}
|
|
4165
|
-
)
|
|
4166
|
-
}
|
|
4167
|
-
) });
|
|
4168
|
-
}
|
|
4169
|
-
function ComboboxList({ className, ...props }) {
|
|
4170
|
-
return /* @__PURE__ */ jsx(
|
|
4171
|
-
Combobox$1.List,
|
|
4172
|
-
{
|
|
4173
|
-
"data-slot": "combobox-list",
|
|
4174
|
-
className: cn(
|
|
4175
|
-
"max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0",
|
|
4176
|
-
className
|
|
4177
|
-
),
|
|
4178
|
-
...props
|
|
4179
|
-
}
|
|
4180
|
-
);
|
|
4181
|
-
}
|
|
4182
|
-
function ComboboxItem({
|
|
4183
|
-
className,
|
|
4184
|
-
children,
|
|
4185
|
-
...props
|
|
4186
|
-
}) {
|
|
4187
|
-
return /* @__PURE__ */ jsxs(
|
|
4188
|
-
Combobox$1.Item,
|
|
4189
|
-
{
|
|
4190
|
-
"data-slot": "combobox-item",
|
|
4191
|
-
className: cn(
|
|
4192
|
-
"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
4193
|
-
className
|
|
4194
|
-
),
|
|
4195
|
-
...props,
|
|
4196
|
-
children: [
|
|
4197
|
-
children,
|
|
4198
|
-
/* @__PURE__ */ jsx(
|
|
4199
|
-
Combobox$1.ItemIndicator,
|
|
4200
|
-
{
|
|
4201
|
-
"data-slot": "combobox-item-indicator",
|
|
4202
|
-
render: /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }),
|
|
4203
|
-
children: /* @__PURE__ */ jsx(CheckIcon, { className: "pointer-events-none size-4 pointer-coarse:size-5" })
|
|
4204
|
-
}
|
|
4205
|
-
)
|
|
4206
|
-
]
|
|
4207
|
-
}
|
|
4208
|
-
);
|
|
4209
|
-
}
|
|
4210
|
-
function ComboboxGroup({ className, ...props }) {
|
|
4211
|
-
return /* @__PURE__ */ jsx(
|
|
4212
|
-
Combobox$1.Group,
|
|
4213
|
-
{
|
|
4214
|
-
"data-slot": "combobox-group",
|
|
4215
|
-
className: cn(className),
|
|
3006
|
+
),
|
|
4216
3007
|
...props
|
|
4217
3008
|
}
|
|
4218
3009
|
);
|
|
4219
3010
|
}
|
|
4220
|
-
function
|
|
3011
|
+
function ButtonGroupSeparator({
|
|
4221
3012
|
className,
|
|
3013
|
+
orientation = "vertical",
|
|
4222
3014
|
...props
|
|
4223
3015
|
}) {
|
|
4224
3016
|
return /* @__PURE__ */ jsx(
|
|
4225
|
-
|
|
3017
|
+
Separator5,
|
|
4226
3018
|
{
|
|
4227
|
-
"data-slot": "
|
|
3019
|
+
"data-slot": "button-group-separator",
|
|
3020
|
+
orientation,
|
|
4228
3021
|
className: cn(
|
|
4229
|
-
"
|
|
3022
|
+
"relative m-0! self-stretch bg-input data-[orientation=vertical]:h-auto",
|
|
4230
3023
|
className
|
|
4231
3024
|
),
|
|
4232
3025
|
...props
|
|
4233
3026
|
}
|
|
4234
3027
|
);
|
|
4235
3028
|
}
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
3029
|
+
var Combobox = PopoverPrimitive.Root;
|
|
3030
|
+
var ComboboxTrigger = PopoverPrimitive.Trigger;
|
|
3031
|
+
function ComboboxContent({
|
|
3032
|
+
className,
|
|
3033
|
+
align = "start",
|
|
3034
|
+
sideOffset = 6,
|
|
3035
|
+
children,
|
|
3036
|
+
...props
|
|
3037
|
+
}) {
|
|
3038
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
3039
|
+
PopoverPrimitive.Content,
|
|
4242
3040
|
{
|
|
4243
|
-
"data-slot": "combobox-
|
|
3041
|
+
"data-slot": "combobox-content",
|
|
3042
|
+
align,
|
|
3043
|
+
sideOffset,
|
|
4244
3044
|
className: cn(
|
|
4245
|
-
"
|
|
3045
|
+
"z-50 w-[var(--radix-popover-trigger-width)] min-w-[12rem] origin-[var(--radix-popover-content-transform-origin)] overflow-hidden rounded-md bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
|
|
4246
3046
|
className
|
|
4247
3047
|
),
|
|
4248
|
-
...props
|
|
3048
|
+
...props,
|
|
3049
|
+
children: /* @__PURE__ */ jsx(
|
|
3050
|
+
Command$1,
|
|
3051
|
+
{
|
|
3052
|
+
"data-slot": "combobox",
|
|
3053
|
+
className: "flex w-full flex-col",
|
|
3054
|
+
children
|
|
3055
|
+
}
|
|
3056
|
+
)
|
|
4249
3057
|
}
|
|
4250
|
-
);
|
|
3058
|
+
) });
|
|
4251
3059
|
}
|
|
4252
|
-
function
|
|
3060
|
+
function ComboboxInput({
|
|
4253
3061
|
className,
|
|
4254
3062
|
...props
|
|
4255
3063
|
}) {
|
|
4256
|
-
return /* @__PURE__ */
|
|
4257
|
-
|
|
3064
|
+
return /* @__PURE__ */ jsxs(
|
|
3065
|
+
"div",
|
|
4258
3066
|
{
|
|
4259
|
-
"data-slot": "combobox-
|
|
4260
|
-
className:
|
|
4261
|
-
|
|
3067
|
+
"data-slot": "combobox-input-wrapper",
|
|
3068
|
+
className: "flex h-9 items-center gap-2 border-b px-3",
|
|
3069
|
+
children: [
|
|
3070
|
+
/* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }),
|
|
3071
|
+
/* @__PURE__ */ jsx(
|
|
3072
|
+
Command$1.Input,
|
|
3073
|
+
{
|
|
3074
|
+
"data-slot": "combobox-input",
|
|
3075
|
+
className: cn(
|
|
3076
|
+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
3077
|
+
className
|
|
3078
|
+
),
|
|
3079
|
+
...props
|
|
3080
|
+
}
|
|
3081
|
+
)
|
|
3082
|
+
]
|
|
4262
3083
|
}
|
|
4263
3084
|
);
|
|
4264
3085
|
}
|
|
4265
|
-
function
|
|
3086
|
+
function ComboboxList({
|
|
4266
3087
|
className,
|
|
4267
3088
|
...props
|
|
4268
3089
|
}) {
|
|
4269
3090
|
return /* @__PURE__ */ jsx(
|
|
4270
|
-
|
|
3091
|
+
Command$1.List,
|
|
4271
3092
|
{
|
|
4272
|
-
"data-slot": "combobox-
|
|
3093
|
+
"data-slot": "combobox-list",
|
|
4273
3094
|
className: cn(
|
|
4274
|
-
"
|
|
3095
|
+
"max-h-[min(24rem,var(--radix-popover-content-available-height))] scroll-py-1 overflow-x-hidden overflow-y-auto p-1",
|
|
4275
3096
|
className
|
|
4276
3097
|
),
|
|
4277
3098
|
...props
|
|
4278
3099
|
}
|
|
4279
3100
|
);
|
|
4280
3101
|
}
|
|
4281
|
-
function
|
|
3102
|
+
function ComboboxItem({
|
|
4282
3103
|
className,
|
|
4283
3104
|
children,
|
|
4284
|
-
|
|
3105
|
+
selected,
|
|
4285
3106
|
...props
|
|
4286
3107
|
}) {
|
|
4287
3108
|
return /* @__PURE__ */ jsxs(
|
|
4288
|
-
|
|
3109
|
+
Command$1.Item,
|
|
4289
3110
|
{
|
|
4290
|
-
"data-slot": "combobox-
|
|
3111
|
+
"data-slot": "combobox-item",
|
|
4291
3112
|
className: cn(
|
|
4292
|
-
"flex
|
|
3113
|
+
"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
4293
3114
|
className
|
|
4294
3115
|
),
|
|
4295
3116
|
...props,
|
|
4296
3117
|
children: [
|
|
4297
3118
|
children,
|
|
4298
|
-
|
|
4299
|
-
|
|
3119
|
+
selected ? /* @__PURE__ */ jsx(
|
|
3120
|
+
CheckIcon,
|
|
4300
3121
|
{
|
|
4301
|
-
|
|
4302
|
-
className: "
|
|
4303
|
-
"data-slot": "combobox-chip-remove",
|
|
4304
|
-
children: /* @__PURE__ */ jsx(XIcon, { className: "pointer-events-none" })
|
|
3122
|
+
"data-slot": "combobox-item-indicator",
|
|
3123
|
+
className: "absolute right-2 size-4"
|
|
4305
3124
|
}
|
|
4306
|
-
)
|
|
3125
|
+
) : null
|
|
4307
3126
|
]
|
|
4308
3127
|
}
|
|
4309
3128
|
);
|
|
4310
3129
|
}
|
|
4311
|
-
function
|
|
3130
|
+
function ComboboxGroup({
|
|
3131
|
+
className,
|
|
3132
|
+
...props
|
|
3133
|
+
}) {
|
|
3134
|
+
return /* @__PURE__ */ jsx(
|
|
3135
|
+
Command$1.Group,
|
|
3136
|
+
{
|
|
3137
|
+
"data-slot": "combobox-group",
|
|
3138
|
+
className: cn(
|
|
3139
|
+
"overflow-hidden text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
3140
|
+
className
|
|
3141
|
+
),
|
|
3142
|
+
...props
|
|
3143
|
+
}
|
|
3144
|
+
);
|
|
3145
|
+
}
|
|
3146
|
+
function ComboboxEmpty({
|
|
4312
3147
|
className,
|
|
4313
|
-
children,
|
|
4314
3148
|
...props
|
|
4315
3149
|
}) {
|
|
4316
3150
|
return /* @__PURE__ */ jsx(
|
|
4317
|
-
|
|
3151
|
+
Command$1.Empty,
|
|
4318
3152
|
{
|
|
4319
|
-
"data-slot": "combobox-
|
|
4320
|
-
className: cn("
|
|
3153
|
+
"data-slot": "combobox-empty",
|
|
3154
|
+
className: cn("py-6 text-center text-sm text-muted-foreground", className),
|
|
4321
3155
|
...props
|
|
4322
3156
|
}
|
|
4323
3157
|
);
|
|
4324
3158
|
}
|
|
4325
|
-
function
|
|
4326
|
-
|
|
3159
|
+
function ComboboxSeparator({
|
|
3160
|
+
className,
|
|
3161
|
+
...props
|
|
3162
|
+
}) {
|
|
3163
|
+
return /* @__PURE__ */ jsx(
|
|
3164
|
+
Command$1.Separator,
|
|
3165
|
+
{
|
|
3166
|
+
"data-slot": "combobox-separator",
|
|
3167
|
+
className: cn("-mx-1 my-1 h-px bg-border", className),
|
|
3168
|
+
...props
|
|
3169
|
+
}
|
|
3170
|
+
);
|
|
4327
3171
|
}
|
|
4328
3172
|
function Command({
|
|
4329
3173
|
className,
|
|
@@ -4477,14 +3321,14 @@ function CommandShortcut({
|
|
|
4477
3321
|
}
|
|
4478
3322
|
);
|
|
4479
3323
|
}
|
|
4480
|
-
function
|
|
3324
|
+
function DirectionProvider2({
|
|
4481
3325
|
dir,
|
|
4482
3326
|
direction,
|
|
4483
3327
|
children
|
|
4484
3328
|
}) {
|
|
4485
3329
|
return /* @__PURE__ */ jsx(Direction.DirectionProvider, { dir: direction ?? dir, children });
|
|
4486
3330
|
}
|
|
4487
|
-
var
|
|
3331
|
+
var useDirection2 = Direction.useDirection;
|
|
4488
3332
|
function Empty({ className, ...props }) {
|
|
4489
3333
|
return /* @__PURE__ */ jsx(
|
|
4490
3334
|
"div",
|
|
@@ -4576,12 +3420,12 @@ function EmptyContent({ className, ...props }) {
|
|
|
4576
3420
|
}
|
|
4577
3421
|
);
|
|
4578
3422
|
}
|
|
4579
|
-
function
|
|
3423
|
+
function Label5({
|
|
4580
3424
|
className,
|
|
4581
3425
|
...props
|
|
4582
3426
|
}) {
|
|
4583
3427
|
return /* @__PURE__ */ jsx(
|
|
4584
|
-
|
|
3428
|
+
LabelPrimitive.Root,
|
|
4585
3429
|
{
|
|
4586
3430
|
"data-slot": "label",
|
|
4587
3431
|
className: cn(
|
|
@@ -4696,7 +3540,7 @@ function FieldLabel({
|
|
|
4696
3540
|
...props
|
|
4697
3541
|
}) {
|
|
4698
3542
|
return /* @__PURE__ */ jsx(
|
|
4699
|
-
|
|
3543
|
+
Label5,
|
|
4700
3544
|
{
|
|
4701
3545
|
"data-slot": "field-label",
|
|
4702
3546
|
className: cn(
|
|
@@ -4753,7 +3597,7 @@ function FieldSeparator({
|
|
|
4753
3597
|
),
|
|
4754
3598
|
...props,
|
|
4755
3599
|
children: [
|
|
4756
|
-
/* @__PURE__ */ jsx(
|
|
3600
|
+
/* @__PURE__ */ jsx(Separator5, { className: "absolute inset-0 top-1/2" }),
|
|
4757
3601
|
children && /* @__PURE__ */ jsx(
|
|
4758
3602
|
"span",
|
|
4759
3603
|
{
|
|
@@ -4804,7 +3648,7 @@ function FieldError({
|
|
|
4804
3648
|
);
|
|
4805
3649
|
}
|
|
4806
3650
|
var Form = FormProvider;
|
|
4807
|
-
var FormFieldContext =
|
|
3651
|
+
var FormFieldContext = React9.createContext(
|
|
4808
3652
|
{}
|
|
4809
3653
|
);
|
|
4810
3654
|
var FormField = ({
|
|
@@ -4813,8 +3657,8 @@ var FormField = ({
|
|
|
4813
3657
|
return /* @__PURE__ */ jsx(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx(Controller, { ...props }) });
|
|
4814
3658
|
};
|
|
4815
3659
|
var useFormField = () => {
|
|
4816
|
-
const fieldContext =
|
|
4817
|
-
const itemContext =
|
|
3660
|
+
const fieldContext = React9.useContext(FormFieldContext);
|
|
3661
|
+
const itemContext = React9.useContext(FormItemContext);
|
|
4818
3662
|
const { getFieldState } = useFormContext();
|
|
4819
3663
|
const formState = useFormState({ name: fieldContext.name });
|
|
4820
3664
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -4831,11 +3675,11 @@ var useFormField = () => {
|
|
|
4831
3675
|
...fieldState
|
|
4832
3676
|
};
|
|
4833
3677
|
};
|
|
4834
|
-
var FormItemContext =
|
|
3678
|
+
var FormItemContext = React9.createContext(
|
|
4835
3679
|
{}
|
|
4836
3680
|
);
|
|
4837
3681
|
function FormItem({ className, ...props }) {
|
|
4838
|
-
const id =
|
|
3682
|
+
const id = React9.useId();
|
|
4839
3683
|
return /* @__PURE__ */ jsx(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx(
|
|
4840
3684
|
"div",
|
|
4841
3685
|
{
|
|
@@ -4851,7 +3695,7 @@ function FormLabel({
|
|
|
4851
3695
|
}) {
|
|
4852
3696
|
const { error, formItemId } = useFormField();
|
|
4853
3697
|
return /* @__PURE__ */ jsx(
|
|
4854
|
-
|
|
3698
|
+
Label5,
|
|
4855
3699
|
{
|
|
4856
3700
|
"data-slot": "form-label",
|
|
4857
3701
|
"data-error": !!error,
|
|
@@ -4864,7 +3708,7 @@ function FormLabel({
|
|
|
4864
3708
|
function FormControl({ ...props }) {
|
|
4865
3709
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
4866
3710
|
return /* @__PURE__ */ jsx(
|
|
4867
|
-
|
|
3711
|
+
Slot7.Root,
|
|
4868
3712
|
{
|
|
4869
3713
|
"data-slot": "form-control",
|
|
4870
3714
|
id: formItemId,
|
|
@@ -5075,6 +3919,146 @@ var Icons = {
|
|
|
5075
3919
|
/* @__PURE__ */ jsx("path", { d: "M18 9a9 9 0 0 1-9 9" })
|
|
5076
3920
|
] })
|
|
5077
3921
|
};
|
|
3922
|
+
function InputGroup({ className, ...props }) {
|
|
3923
|
+
return /* @__PURE__ */ jsx(
|
|
3924
|
+
"div",
|
|
3925
|
+
{
|
|
3926
|
+
"data-slot": "input-group",
|
|
3927
|
+
role: "group",
|
|
3928
|
+
className: cn(
|
|
3929
|
+
"group/input-group relative flex w-full items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none dark:bg-input/30",
|
|
3930
|
+
"h-9 min-w-0 has-[>textarea]:h-auto",
|
|
3931
|
+
// Variants based on alignment.
|
|
3932
|
+
"has-[>[data-align=inline-start]]:[&>input]:pl-2",
|
|
3933
|
+
"has-[>[data-align=inline-end]]:[&>input]:pr-2",
|
|
3934
|
+
"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",
|
|
3935
|
+
"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",
|
|
3936
|
+
// Focus state.
|
|
3937
|
+
"has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50",
|
|
3938
|
+
// Error state.
|
|
3939
|
+
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",
|
|
3940
|
+
className
|
|
3941
|
+
),
|
|
3942
|
+
...props
|
|
3943
|
+
}
|
|
3944
|
+
);
|
|
3945
|
+
}
|
|
3946
|
+
var inputGroupAddonVariants = cva(
|
|
3947
|
+
"flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
|
|
3948
|
+
{
|
|
3949
|
+
variants: {
|
|
3950
|
+
align: {
|
|
3951
|
+
"inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
|
|
3952
|
+
"inline-end": "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",
|
|
3953
|
+
"block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3",
|
|
3954
|
+
"block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3"
|
|
3955
|
+
}
|
|
3956
|
+
},
|
|
3957
|
+
defaultVariants: {
|
|
3958
|
+
align: "inline-start"
|
|
3959
|
+
}
|
|
3960
|
+
}
|
|
3961
|
+
);
|
|
3962
|
+
function InputGroupAddon({
|
|
3963
|
+
className,
|
|
3964
|
+
align = "inline-start",
|
|
3965
|
+
...props
|
|
3966
|
+
}) {
|
|
3967
|
+
return /* @__PURE__ */ jsx(
|
|
3968
|
+
"div",
|
|
3969
|
+
{
|
|
3970
|
+
role: "group",
|
|
3971
|
+
"data-slot": "input-group-addon",
|
|
3972
|
+
"data-align": align,
|
|
3973
|
+
className: cn(inputGroupAddonVariants({ align }), className),
|
|
3974
|
+
onClick: (e) => {
|
|
3975
|
+
if (e.target.closest("button")) {
|
|
3976
|
+
return;
|
|
3977
|
+
}
|
|
3978
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
3979
|
+
},
|
|
3980
|
+
...props
|
|
3981
|
+
}
|
|
3982
|
+
);
|
|
3983
|
+
}
|
|
3984
|
+
var inputGroupButtonVariants = cva(
|
|
3985
|
+
"flex items-center gap-2 text-sm shadow-none",
|
|
3986
|
+
{
|
|
3987
|
+
variants: {
|
|
3988
|
+
size: {
|
|
3989
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
|
|
3990
|
+
sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
|
|
3991
|
+
"icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
3992
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
3993
|
+
}
|
|
3994
|
+
},
|
|
3995
|
+
defaultVariants: {
|
|
3996
|
+
size: "xs"
|
|
3997
|
+
}
|
|
3998
|
+
}
|
|
3999
|
+
);
|
|
4000
|
+
function InputGroupButton({
|
|
4001
|
+
className,
|
|
4002
|
+
type = "button",
|
|
4003
|
+
variant = "ghost",
|
|
4004
|
+
size = "xs",
|
|
4005
|
+
...props
|
|
4006
|
+
}) {
|
|
4007
|
+
return /* @__PURE__ */ jsx(
|
|
4008
|
+
Button,
|
|
4009
|
+
{
|
|
4010
|
+
type,
|
|
4011
|
+
"data-size": size,
|
|
4012
|
+
variant,
|
|
4013
|
+
className: cn(inputGroupButtonVariants({ size }), className),
|
|
4014
|
+
...props
|
|
4015
|
+
}
|
|
4016
|
+
);
|
|
4017
|
+
}
|
|
4018
|
+
function InputGroupText({ className, ...props }) {
|
|
4019
|
+
return /* @__PURE__ */ jsx(
|
|
4020
|
+
"span",
|
|
4021
|
+
{
|
|
4022
|
+
className: cn(
|
|
4023
|
+
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
4024
|
+
className
|
|
4025
|
+
),
|
|
4026
|
+
...props
|
|
4027
|
+
}
|
|
4028
|
+
);
|
|
4029
|
+
}
|
|
4030
|
+
function InputGroupInput({
|
|
4031
|
+
className,
|
|
4032
|
+
...props
|
|
4033
|
+
}) {
|
|
4034
|
+
return /* @__PURE__ */ jsx(
|
|
4035
|
+
Input,
|
|
4036
|
+
{
|
|
4037
|
+
"data-slot": "input-group-control",
|
|
4038
|
+
className: cn(
|
|
4039
|
+
"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
4040
|
+
className
|
|
4041
|
+
),
|
|
4042
|
+
...props
|
|
4043
|
+
}
|
|
4044
|
+
);
|
|
4045
|
+
}
|
|
4046
|
+
function InputGroupTextarea({
|
|
4047
|
+
className,
|
|
4048
|
+
...props
|
|
4049
|
+
}) {
|
|
4050
|
+
return /* @__PURE__ */ jsx(
|
|
4051
|
+
Textarea,
|
|
4052
|
+
{
|
|
4053
|
+
"data-slot": "input-group-control",
|
|
4054
|
+
className: cn(
|
|
4055
|
+
"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",
|
|
4056
|
+
className
|
|
4057
|
+
),
|
|
4058
|
+
...props
|
|
4059
|
+
}
|
|
4060
|
+
);
|
|
4061
|
+
}
|
|
5078
4062
|
function InputOTP({
|
|
5079
4063
|
className,
|
|
5080
4064
|
containerClassName,
|
|
@@ -5108,7 +4092,7 @@ function InputOTPSlot({
|
|
|
5108
4092
|
className,
|
|
5109
4093
|
...props
|
|
5110
4094
|
}) {
|
|
5111
|
-
const inputOTPContext =
|
|
4095
|
+
const inputOTPContext = React9.useContext(OTPInputContext);
|
|
5112
4096
|
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
5113
4097
|
return /* @__PURE__ */ jsxs(
|
|
5114
4098
|
"div",
|
|
@@ -5146,7 +4130,7 @@ function ItemSeparator({
|
|
|
5146
4130
|
...props
|
|
5147
4131
|
}) {
|
|
5148
4132
|
return /* @__PURE__ */ jsx(
|
|
5149
|
-
|
|
4133
|
+
Separator5,
|
|
5150
4134
|
{
|
|
5151
4135
|
"data-slot": "item-separator",
|
|
5152
4136
|
orientation: "horizontal",
|
|
@@ -5175,14 +4159,14 @@ var itemVariants = cva(
|
|
|
5175
4159
|
}
|
|
5176
4160
|
}
|
|
5177
4161
|
);
|
|
5178
|
-
function
|
|
4162
|
+
function Item9({
|
|
5179
4163
|
className,
|
|
5180
4164
|
variant = "default",
|
|
5181
4165
|
size = "default",
|
|
5182
4166
|
asChild = false,
|
|
5183
4167
|
...props
|
|
5184
4168
|
}) {
|
|
5185
|
-
const Comp = asChild ?
|
|
4169
|
+
const Comp = asChild ? Slot7.Root : "div";
|
|
5186
4170
|
return /* @__PURE__ */ jsx(
|
|
5187
4171
|
Comp,
|
|
5188
4172
|
{
|
|
@@ -5642,7 +4626,7 @@ var AnimatedTooltip = ({
|
|
|
5642
4626
|
onMouseLeave: () => setHoveredIndex(null),
|
|
5643
4627
|
children: [
|
|
5644
4628
|
/* @__PURE__ */ jsx(AnimatePresence, { children: hoveredIndex === item.id && /* @__PURE__ */ jsxs(
|
|
5645
|
-
|
|
4629
|
+
m.div,
|
|
5646
4630
|
{
|
|
5647
4631
|
initial: { opacity: 0, y: 20, scale: 0.6 },
|
|
5648
4632
|
animate: {
|
|
@@ -5671,7 +4655,7 @@ var AnimatedTooltip = ({
|
|
|
5671
4655
|
}
|
|
5672
4656
|
) }),
|
|
5673
4657
|
/* @__PURE__ */ jsx(
|
|
5674
|
-
|
|
4658
|
+
Image2,
|
|
5675
4659
|
{
|
|
5676
4660
|
onMouseMove: handleMouseMove,
|
|
5677
4661
|
height: 100,
|
|
@@ -5735,9 +4719,9 @@ var SIDEBAR_WIDTH = "16rem";
|
|
|
5735
4719
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
5736
4720
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
5737
4721
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
5738
|
-
var SidebarContext =
|
|
4722
|
+
var SidebarContext = React9.createContext(null);
|
|
5739
4723
|
function useSidebar() {
|
|
5740
|
-
const context =
|
|
4724
|
+
const context = React9.useContext(SidebarContext);
|
|
5741
4725
|
if (!context) {
|
|
5742
4726
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
5743
4727
|
}
|
|
@@ -5753,10 +4737,10 @@ function SidebarProvider({
|
|
|
5753
4737
|
...props
|
|
5754
4738
|
}) {
|
|
5755
4739
|
const isMobile = useIsMobile();
|
|
5756
|
-
const [openMobile, setOpenMobile] =
|
|
5757
|
-
const [_open, _setOpen] =
|
|
5758
|
-
const [hasHydrated, setHasHydrated] =
|
|
5759
|
-
|
|
4740
|
+
const [openMobile, setOpenMobile] = React9.useState(false);
|
|
4741
|
+
const [_open, _setOpen] = React9.useState(defaultOpenProp ?? true);
|
|
4742
|
+
const [hasHydrated, setHasHydrated] = React9.useState(false);
|
|
4743
|
+
React9.useEffect(() => {
|
|
5760
4744
|
if (openProp !== void 0 || defaultOpenProp !== void 0) {
|
|
5761
4745
|
setHasHydrated(true);
|
|
5762
4746
|
return;
|
|
@@ -5767,7 +4751,7 @@ function SidebarProvider({
|
|
|
5767
4751
|
}
|
|
5768
4752
|
setHasHydrated(true);
|
|
5769
4753
|
}, [openProp, defaultOpenProp]);
|
|
5770
|
-
|
|
4754
|
+
React9.useEffect(() => {
|
|
5771
4755
|
if (!hasHydrated) return;
|
|
5772
4756
|
if (openProp !== void 0 || defaultOpenProp !== void 0) return;
|
|
5773
4757
|
const hasCookie = document.cookie.includes(SIDEBAR_COOKIE_NAME);
|
|
@@ -5776,7 +4760,7 @@ function SidebarProvider({
|
|
|
5776
4760
|
}
|
|
5777
4761
|
}, [hasHydrated, isMobile, openProp, defaultOpenProp]);
|
|
5778
4762
|
const open = openProp ?? _open;
|
|
5779
|
-
const setOpen =
|
|
4763
|
+
const setOpen = React9.useCallback(
|
|
5780
4764
|
(value) => {
|
|
5781
4765
|
const openState = typeof value === "function" ? value(open) : value;
|
|
5782
4766
|
if (setOpenProp) {
|
|
@@ -5788,10 +4772,10 @@ function SidebarProvider({
|
|
|
5788
4772
|
},
|
|
5789
4773
|
[setOpenProp, open]
|
|
5790
4774
|
);
|
|
5791
|
-
const toggleSidebar =
|
|
4775
|
+
const toggleSidebar = React9.useCallback(() => {
|
|
5792
4776
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
5793
4777
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
5794
|
-
|
|
4778
|
+
React9.useEffect(() => {
|
|
5795
4779
|
const handleKeyDown = (event) => {
|
|
5796
4780
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
5797
4781
|
event.preventDefault();
|
|
@@ -5802,7 +4786,7 @@ function SidebarProvider({
|
|
|
5802
4786
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5803
4787
|
}, [toggleSidebar]);
|
|
5804
4788
|
const state = open || openMobile ? "expanded" : "collapsed";
|
|
5805
|
-
const contextValue =
|
|
4789
|
+
const contextValue = React9.useMemo(
|
|
5806
4790
|
() => ({
|
|
5807
4791
|
state,
|
|
5808
4792
|
open,
|
|
@@ -6031,7 +5015,7 @@ function SidebarSeparator({
|
|
|
6031
5015
|
...props
|
|
6032
5016
|
}) {
|
|
6033
5017
|
return /* @__PURE__ */ jsx(
|
|
6034
|
-
|
|
5018
|
+
Separator5,
|
|
6035
5019
|
{
|
|
6036
5020
|
"data-slot": "sidebar-separator",
|
|
6037
5021
|
"data-sidebar": "separator",
|
|
@@ -6070,7 +5054,7 @@ function SidebarGroupLabel({
|
|
|
6070
5054
|
asChild = false,
|
|
6071
5055
|
...props
|
|
6072
5056
|
}) {
|
|
6073
|
-
const Comp = asChild ?
|
|
5057
|
+
const Comp = asChild ? Slot7.Root : "div";
|
|
6074
5058
|
return /* @__PURE__ */ jsx(
|
|
6075
5059
|
Comp,
|
|
6076
5060
|
{
|
|
@@ -6090,7 +5074,7 @@ function SidebarGroupAction({
|
|
|
6090
5074
|
asChild = false,
|
|
6091
5075
|
...props
|
|
6092
5076
|
}) {
|
|
6093
|
-
const Comp = asChild ?
|
|
5077
|
+
const Comp = asChild ? Slot7.Root : "button";
|
|
6094
5078
|
return /* @__PURE__ */ jsx(
|
|
6095
5079
|
Comp,
|
|
6096
5080
|
{
|
|
@@ -6172,7 +5156,7 @@ function SidebarMenuButton({
|
|
|
6172
5156
|
className,
|
|
6173
5157
|
...props
|
|
6174
5158
|
}) {
|
|
6175
|
-
const Comp = asChild ?
|
|
5159
|
+
const Comp = asChild ? Slot7.Root : "button";
|
|
6176
5160
|
const { isMobile, state } = useSidebar();
|
|
6177
5161
|
const button = /* @__PURE__ */ jsx(
|
|
6178
5162
|
Comp,
|
|
@@ -6212,7 +5196,7 @@ function SidebarMenuAction({
|
|
|
6212
5196
|
showOnHover = false,
|
|
6213
5197
|
...props
|
|
6214
5198
|
}) {
|
|
6215
|
-
const Comp = asChild ?
|
|
5199
|
+
const Comp = asChild ? Slot7.Root : "button";
|
|
6216
5200
|
return /* @__PURE__ */ jsx(
|
|
6217
5201
|
Comp,
|
|
6218
5202
|
{
|
|
@@ -6260,7 +5244,7 @@ function SidebarMenuSkeleton({
|
|
|
6260
5244
|
showIcon = false,
|
|
6261
5245
|
...props
|
|
6262
5246
|
}) {
|
|
6263
|
-
const width =
|
|
5247
|
+
const width = React9.useMemo(() => {
|
|
6264
5248
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
6265
5249
|
}, []);
|
|
6266
5250
|
return /* @__PURE__ */ jsxs(
|
|
@@ -6328,7 +5312,7 @@ function SidebarMenuSubButton({
|
|
|
6328
5312
|
className,
|
|
6329
5313
|
...props
|
|
6330
5314
|
}) {
|
|
6331
|
-
const Comp = asChild ?
|
|
5315
|
+
const Comp = asChild ? Slot7.Root : "a";
|
|
6332
5316
|
return /* @__PURE__ */ jsx(
|
|
6333
5317
|
Comp,
|
|
6334
5318
|
{
|
|
@@ -6704,7 +5688,7 @@ function ScrollToTopButton({
|
|
|
6704
5688
|
const surfaceClass = surface === "glass" ? "bg-primary/85 text-primary-foreground backdrop-blur-md border border-[oklch(1_0_0_/_0.15)] shadow-[var(--surface-shadow)]" : "bg-primary text-primary-foreground shadow-lg";
|
|
6705
5689
|
const duration = animated ? 0.3 : 0;
|
|
6706
5690
|
return /* @__PURE__ */ jsx(AnimatePresence, { children: isVisible && /* @__PURE__ */ jsx(
|
|
6707
|
-
|
|
5691
|
+
m.button,
|
|
6708
5692
|
{
|
|
6709
5693
|
onClick: scrollToTop,
|
|
6710
5694
|
"aria-label": "Scroll to top",
|
|
@@ -6727,8 +5711,8 @@ function ThemeModeToggle({
|
|
|
6727
5711
|
className
|
|
6728
5712
|
}) {
|
|
6729
5713
|
const { theme, setTheme } = useTheme();
|
|
6730
|
-
const [mounted, setMounted] =
|
|
6731
|
-
|
|
5714
|
+
const [mounted, setMounted] = React9.useState(false);
|
|
5715
|
+
React9.useEffect(() => {
|
|
6732
5716
|
setMounted(true);
|
|
6733
5717
|
}, []);
|
|
6734
5718
|
if (!mounted) {
|
|
@@ -6752,38 +5736,76 @@ function ThemeModeToggle({
|
|
|
6752
5736
|
}
|
|
6753
5737
|
);
|
|
6754
5738
|
}
|
|
6755
|
-
|
|
6756
|
-
|
|
6757
|
-
|
|
6758
|
-
|
|
6759
|
-
|
|
6760
|
-
|
|
6761
|
-
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
|
|
6766
|
-
border-left-color: var(--primary) !important;
|
|
6767
|
-
}
|
|
6768
|
-
`;
|
|
5739
|
+
var BAR_BASE_STYLE = {
|
|
5740
|
+
position: "fixed",
|
|
5741
|
+
top: 0,
|
|
5742
|
+
left: 0,
|
|
5743
|
+
right: 0,
|
|
5744
|
+
height: 2,
|
|
5745
|
+
background: "var(--primary)",
|
|
5746
|
+
transformOrigin: "left",
|
|
5747
|
+
zIndex: 9999,
|
|
5748
|
+
pointerEvents: "none"
|
|
5749
|
+
};
|
|
6769
5750
|
function TopLoadingBarAnimated({
|
|
6770
5751
|
startDelayMs = 100,
|
|
6771
5752
|
finishDelayMs = 300
|
|
6772
5753
|
}) {
|
|
6773
5754
|
const pathname = usePathname();
|
|
6774
5755
|
const searchParams = useSearchParams();
|
|
5756
|
+
const [progress, setProgress] = useState(0);
|
|
5757
|
+
const [visible, setVisible] = useState(false);
|
|
5758
|
+
const trickleRef = useRef(null);
|
|
6775
5759
|
useEffect(() => {
|
|
6776
|
-
const
|
|
5760
|
+
const start = setTimeout(() => {
|
|
5761
|
+
setVisible(true);
|
|
5762
|
+
setProgress(0.08);
|
|
5763
|
+
trickleRef.current = setInterval(() => {
|
|
5764
|
+
setProgress((p) => {
|
|
5765
|
+
if (p >= 0.9) return p;
|
|
5766
|
+
const remaining = 0.9 - p;
|
|
5767
|
+
return p + remaining * 0.06;
|
|
5768
|
+
});
|
|
5769
|
+
}, 200);
|
|
5770
|
+
}, startDelayMs);
|
|
6777
5771
|
const finish = setTimeout(() => {
|
|
6778
|
-
clearTimeout(
|
|
6779
|
-
|
|
5772
|
+
clearTimeout(start);
|
|
5773
|
+
if (trickleRef.current) {
|
|
5774
|
+
clearInterval(trickleRef.current);
|
|
5775
|
+
trickleRef.current = null;
|
|
5776
|
+
}
|
|
5777
|
+
setProgress(1);
|
|
5778
|
+
const fade = setTimeout(() => {
|
|
5779
|
+
setVisible(false);
|
|
5780
|
+
setProgress(0);
|
|
5781
|
+
}, 200);
|
|
5782
|
+
return () => clearTimeout(fade);
|
|
6780
5783
|
}, finishDelayMs);
|
|
6781
5784
|
return () => {
|
|
6782
|
-
clearTimeout(
|
|
5785
|
+
clearTimeout(start);
|
|
6783
5786
|
clearTimeout(finish);
|
|
5787
|
+
if (trickleRef.current) {
|
|
5788
|
+
clearInterval(trickleRef.current);
|
|
5789
|
+
trickleRef.current = null;
|
|
5790
|
+
}
|
|
6784
5791
|
};
|
|
6785
5792
|
}, [pathname, searchParams, startDelayMs, finishDelayMs]);
|
|
6786
|
-
return
|
|
5793
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5794
|
+
/* @__PURE__ */ jsx(
|
|
5795
|
+
"div",
|
|
5796
|
+
{
|
|
5797
|
+
"aria-hidden": "true",
|
|
5798
|
+
style: {
|
|
5799
|
+
...BAR_BASE_STYLE,
|
|
5800
|
+
transform: `scaleX(${progress})`,
|
|
5801
|
+
opacity: visible ? 1 : 0,
|
|
5802
|
+
transition: "transform 200ms cubic-bezier(0.4, 0, 0.2, 1), opacity 250ms ease-out",
|
|
5803
|
+
boxShadow: "0 0 10px var(--primary), 0 0 5px var(--primary)"
|
|
5804
|
+
}
|
|
5805
|
+
}
|
|
5806
|
+
),
|
|
5807
|
+
/* @__PURE__ */ jsx("span", { "aria-live": "polite", className: "sr-only", children: visible ? "Loading\u2026" : "" })
|
|
5808
|
+
] });
|
|
6787
5809
|
}
|
|
6788
5810
|
function TopLoadingBarStatic({
|
|
6789
5811
|
startDelayMs = 100,
|
|
@@ -6809,15 +5831,8 @@ function TopLoadingBarStatic({
|
|
|
6809
5831
|
{
|
|
6810
5832
|
"aria-hidden": "true",
|
|
6811
5833
|
style: {
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
left: 0,
|
|
6815
|
-
right: 0,
|
|
6816
|
-
height: 2,
|
|
6817
|
-
background: "var(--primary)",
|
|
6818
|
-
opacity: pending ? 1 : 0,
|
|
6819
|
-
zIndex: 9999,
|
|
6820
|
-
pointerEvents: "none"
|
|
5834
|
+
...BAR_BASE_STYLE,
|
|
5835
|
+
opacity: pending ? 1 : 0
|
|
6821
5836
|
// No transition — this variant is intentionally motion-free.
|
|
6822
5837
|
}
|
|
6823
5838
|
}
|
|
@@ -6840,16 +5855,13 @@ function TopLoadingBar({
|
|
|
6840
5855
|
}
|
|
6841
5856
|
) });
|
|
6842
5857
|
}
|
|
6843
|
-
return /* @__PURE__ */
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6848
|
-
|
|
6849
|
-
|
|
6850
|
-
}
|
|
6851
|
-
) })
|
|
6852
|
-
] });
|
|
5858
|
+
return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
|
|
5859
|
+
TopLoadingBarAnimated,
|
|
5860
|
+
{
|
|
5861
|
+
startDelayMs,
|
|
5862
|
+
finishDelayMs
|
|
5863
|
+
}
|
|
5864
|
+
) });
|
|
6853
5865
|
}
|
|
6854
5866
|
var sizeClasses = {
|
|
6855
5867
|
sm: "h-7 w-7 text-xs",
|
|
@@ -6863,4 +5875,4 @@ function UserAvatar({ src, name, initials, size = "md", className }) {
|
|
|
6863
5875
|
] });
|
|
6864
5876
|
}
|
|
6865
5877
|
|
|
6866
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator,
|
|
5878
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedTooltip, AspectRatio, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Combobox, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSeparator, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataToolbar, DataToolbarActions, DataToolbarFilters, DataToolbarSearch, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider2 as DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item9 as Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label5 as Label, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PALETTES, PageHeader, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, Progress, RADII, RadioGroup4 as RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, STYLES, ScrollArea, ScrollBar, ScrollToTopButton, SearchField, SectionCard, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator5 as Separator, SettingsSection, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeModeToggle, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLoadingBar, TypewriterText, UserAvatar, badgeVariants, buttonGroupVariants, navigationMenuTriggerStyle, toggleVariants, useDirection2 as useDirection, useDisclosure, useFormField, useIsMobile, useMeasure, usePagination, useSidebar };
|