@hilum/ui 3.5.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +77 -18
- package/dist/index.js +672 -554
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/color-input.tsx +5 -2
- package/src/components/combobox.tsx +5 -2
- package/src/components/input-group.tsx +3 -1
- package/src/components/input-number.tsx +16 -9
- package/src/components/input.tsx +7 -1
- package/src/components/native-select.tsx +30 -22
- package/src/components/stat-card.tsx +7 -1
- package/src/components/textarea.tsx +7 -1
- package/src/index.ts +3 -0
- package/src/lib/interaction.ts +1 -2
- package/src/lib/shape-context.tsx +2 -2
package/dist/index.js
CHANGED
|
@@ -3,11 +3,7 @@ import { clsx } from 'clsx';
|
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import * as React16 from 'react';
|
|
5
5
|
import { createContext, forwardRef, useRef, useState, useCallback, useEffect, useContext, isValidElement, cloneElement, useMemo, useId, Children, useLayoutEffect } from 'react';
|
|
6
|
-
import { DropdownMenu, Avatar as Avatar$1, AlertDialog, AspectRatio, Checkbox, Collapsible, ContextMenu, Popover, Label as Label$1, HoverCard, Menubar, Dialog as Dialog$1, NavigationMenu, Progress, Separator, ScrollArea, Toggle, ToggleGroup, Slot as Slot$1 } from 'radix-ui';
|
|
7
6
|
import { Check, Circle, ChevronRight, Minus, Search, X, ChevronDown, CornerDownRight, SkipForward, Pencil, Inbox, MessageCircle, Home, Pause, Play, RotateCcw, Link, ImageIcon, User, Globe, Brain, Paintbrush, Heart, Rocket, Lightbulb, Palette, Shield, Bell, Mail, Lock, Users, Loader, ArrowUp, ArrowRight, ArrowLeft, Plus, Settings, Star, Clock, SquareLibrary, RectangleHorizontal, Moon, Sun, Monitor, Dot, Menu, Copy, Pipette, MoreHorizontal, ChevronLeft, ChevronsUpDown, ChevronUp, CalendarIcon, Upload, File, CircleHelp, Info, AlertTriangle, AlertCircle, CheckCircle, GripVertical, Bold, Italic, Underline, Strikethrough, Heading1, Heading2, Heading3, List as List$1, ListOrdered, AlignLeft, FileText, Image as Image$1, Filter, ArrowDown, PanelLeft, TrendingDown, TrendingUp, Download, XCircle, Loader2 } from 'lucide-react';
|
|
8
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
9
|
-
import { AnimatePresence, motion, useMotionValue, useTransform, animate, useReducedMotion, Reorder } from 'framer-motion';
|
|
10
|
-
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
11
7
|
import { IconCornerDownRight, IconPlayerSkipForward, IconPencil, IconInbox, IconMessageCircle, IconHome, IconPlayerPause, IconPlayerPlay, IconRotate2, IconCheck, IconLink, IconPhoto, IconUser, IconGlobe, IconBrain, IconBrush, IconHeart, IconRocket, IconBulb, IconPalette, IconShield, IconBell, IconMail, IconLock, IconUsers, IconLoader2, IconSearch, IconArrowUp, IconArrowRight, IconArrowLeft, IconPlus, IconSettings, IconStar, IconClock, IconLibrary, IconCircle, IconSquare, IconMoon, IconSun, IconDeviceDesktop, IconPoint, IconMenu2, IconCopy, IconX, IconColorPicker, IconChevronDown, IconChevronRight } from '@tabler/icons-react';
|
|
12
8
|
import { ArrowElbowDownRight, SkipForward as SkipForward$1, Pencil as Pencil$1, Tray, ChatCircle, House, Pause as Pause$1, Play as Play$1, ArrowCounterClockwise, Check as Check$1, Link as Link$1, Image, User as User$1, Globe as Globe$1, Brain as Brain$1, PaintBrush, Heart as Heart$1, Rocket as Rocket$1, Lightbulb as Lightbulb$1, Palette as Palette$1, Shield as Shield$1, Bell as Bell$1, Envelope, Lock as Lock$1, Users as Users$1, Spinner as Spinner$1, MagnifyingGlass, ArrowUp as ArrowUp$1, ArrowRight as ArrowRight$1, ArrowLeft as ArrowLeft$1, Plus as Plus$1, Gear, Star as Star$1, Clock as Clock$1, Books, Circle as Circle$1, Rectangle, Moon as Moon$1, Sun as Sun$1, Monitor as Monitor$1, DotOutline, List, Copy as Copy$1, X as X$1, Eyedropper, CaretDown, CaretRight } from '@phosphor-icons/react';
|
|
13
9
|
import { HugeiconsIcon } from '@hugeicons/react';
|
|
@@ -55,6 +51,10 @@ import HiPencil from '@hugeicons/core-free-icons/PencilEdit01Icon';
|
|
|
55
51
|
import HiSkipForward from '@hugeicons/core-free-icons/NextIcon';
|
|
56
52
|
import HiCornerDownRight from '@hugeicons/core-free-icons/ArrowMoveDownRightIcon';
|
|
57
53
|
import { CornerDownRight as CornerDownRight$1, SkipForward as SkipForward$2, Pencil01, Inbox01, MessageCircle01, Home01, RefreshCcw01, Check as Check$2, Link01, Image01, User01, Globe01, CpuChip01, Brush01, Heart as Heart$2, Rocket01, Lightbulb01, Palette as Palette$2, Shield01, Bell01, Mail01, Lock01, Users01, Loading01, SearchMd, ArrowUp as ArrowUp$2, ArrowRight as ArrowRight$2, ArrowLeft as ArrowLeft$2, Plus as Plus$2, Settings01, Star01, Clock as Clock$2, BookClosed, Circle as Circle$2, Square, Moon01, Sun as Sun$2, Monitor01, Menu01, Copy01, XClose, Dropper, ChevronDown as ChevronDown$1, ChevronRight as ChevronRight$1 } from '@untitledui/icons';
|
|
54
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
55
|
+
import { DropdownMenu, Avatar as Avatar$1, AlertDialog, AspectRatio, Checkbox, Collapsible, ContextMenu, Popover, Label as Label$1, HoverCard, Menubar, Dialog as Dialog$1, NavigationMenu, Progress, Separator, ScrollArea, Toggle, ToggleGroup, Slot as Slot$1 } from 'radix-ui';
|
|
56
|
+
import { AnimatePresence, motion, useMotionValue, useTransform, animate, useReducedMotion, Reorder } from 'framer-motion';
|
|
57
|
+
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
58
58
|
import { Slot } from '@radix-ui/react-slot';
|
|
59
59
|
import { cva } from 'class-variance-authority';
|
|
60
60
|
import { DayPicker } from 'react-day-picker';
|
|
@@ -79,469 +79,59 @@ import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
|
79
79
|
function cn(...inputs) {
|
|
80
80
|
return twMerge(clsx(inputs));
|
|
81
81
|
}
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
frameRef.current = requestAnimationFrame(() => {
|
|
104
|
-
frameRef.current = null;
|
|
105
|
-
let closestIndex = null;
|
|
106
|
-
let closestDistance = Number.POSITIVE_INFINITY;
|
|
107
|
-
itemRefs.current.forEach((node, index) => {
|
|
108
|
-
const rect = node.getBoundingClientRect();
|
|
109
|
-
const start = axis === "x" ? rect.left : rect.top;
|
|
110
|
-
const size = axis === "x" ? rect.width : rect.height;
|
|
111
|
-
const center = start + size / 2;
|
|
112
|
-
const distance = Math.abs(pointer - center);
|
|
113
|
-
if (distance < closestDistance) {
|
|
114
|
-
closestDistance = distance;
|
|
115
|
-
closestIndex = index;
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
setActiveIndex(closestIndex);
|
|
119
|
-
});
|
|
120
|
-
},
|
|
121
|
-
[axis]
|
|
122
|
-
);
|
|
123
|
-
const clearActiveIndex = React16.useCallback(() => {
|
|
124
|
-
if (frameRef.current !== null) {
|
|
125
|
-
cancelAnimationFrame(frameRef.current);
|
|
126
|
-
frameRef.current = null;
|
|
127
|
-
}
|
|
128
|
-
setActiveIndex(null);
|
|
129
|
-
}, []);
|
|
130
|
-
React16.useEffect(
|
|
131
|
-
() => () => {
|
|
132
|
-
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
133
|
-
},
|
|
134
|
-
[]
|
|
135
|
-
);
|
|
136
|
-
return {
|
|
137
|
-
activeIndex,
|
|
138
|
-
containerRef,
|
|
139
|
-
registerItem,
|
|
140
|
-
handlers: {
|
|
141
|
-
onPointerMove,
|
|
142
|
-
onPointerLeave: clearActiveIndex
|
|
143
|
-
}
|
|
82
|
+
var iconLibraryOrder = [
|
|
83
|
+
"lucide",
|
|
84
|
+
"tabler",
|
|
85
|
+
"phosphor",
|
|
86
|
+
"hugeicons",
|
|
87
|
+
"untitledui"
|
|
88
|
+
];
|
|
89
|
+
var iconLibraryLabels = {
|
|
90
|
+
lucide: "Lucide",
|
|
91
|
+
tabler: "Tabler",
|
|
92
|
+
phosphor: "Phosphor",
|
|
93
|
+
hugeicons: "HugeIcons",
|
|
94
|
+
untitledui: "Untitled UI"
|
|
95
|
+
};
|
|
96
|
+
function tabler(Icon) {
|
|
97
|
+
return function TablerAdapter({ size, strokeWidth, className }) {
|
|
98
|
+
const props = {};
|
|
99
|
+
if (size !== void 0) props.size = size;
|
|
100
|
+
if (strokeWidth !== void 0) props.stroke = strokeWidth;
|
|
101
|
+
if (className !== void 0) props.className = className;
|
|
102
|
+
return /* @__PURE__ */ jsx(Icon, { ...props });
|
|
144
103
|
};
|
|
145
104
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
].join(" ");
|
|
155
|
-
var desktopDialogContentClassName = "sm:bottom-auto sm:left-1/2 sm:top-1/2 sm:max-h-[calc(100dvh-2rem)] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-2xl";
|
|
156
|
-
var dialogSheetMotionClassName = [
|
|
157
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
158
|
-
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
159
|
-
"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
160
|
-
"sm:data-[state=closed]:zoom-out-95 sm:data-[state=open]:zoom-in-95"
|
|
161
|
-
].join(" ");
|
|
162
|
-
var mobilePopperSheetPositionClassName = [
|
|
163
|
-
"max-sm:!fixed max-sm:!inset-x-3 max-sm:!bottom-3 max-sm:!top-auto max-sm:!left-3 max-sm:!right-3",
|
|
164
|
-
"max-sm:!w-auto max-sm:!min-w-0 max-sm:!max-w-none max-sm:!transform-none"
|
|
165
|
-
].join(" ");
|
|
166
|
-
var mobilePopperSheetSurfaceClassName = "max-sm:max-h-[min(70dvh,28rem)] max-sm:rounded-2xl max-sm:border max-sm:border-border max-sm:shadow-elevated";
|
|
167
|
-
var mobilePopperSheetMotionClassName = [
|
|
168
|
-
"max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=open]:slide-in-from-bottom"
|
|
169
|
-
].join(" ");
|
|
170
|
-
var mobilePopperSheetStyle = `
|
|
171
|
-
@media (max-width: 639px) {
|
|
172
|
-
[data-radix-popper-content-wrapper]:has([data-hilum-mobile-sheet="true"]) {
|
|
173
|
-
position: fixed !important;
|
|
174
|
-
inset: 0 !important;
|
|
175
|
-
min-width: 0 !important;
|
|
176
|
-
transform: none !important;
|
|
177
|
-
pointer-events: none;
|
|
178
|
-
z-index: 50 !important;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
[data-radix-popper-content-wrapper]:has([data-hilum-mobile-sheet="true"][data-state="open"])::before {
|
|
182
|
-
content: "";
|
|
183
|
-
position: fixed;
|
|
184
|
-
inset: 0;
|
|
185
|
-
background: rgb(0 0 0 / 0.3);
|
|
186
|
-
backdrop-filter: blur(4px);
|
|
187
|
-
pointer-events: auto;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
[data-hilum-mobile-sheet="true"] {
|
|
191
|
-
position: fixed !important;
|
|
192
|
-
left: 0.75rem !important;
|
|
193
|
-
right: 0.75rem !important;
|
|
194
|
-
bottom: max(0.75rem, env(safe-area-inset-bottom)) !important;
|
|
195
|
-
top: auto !important;
|
|
196
|
-
width: calc(100dvw - 1.5rem) !important;
|
|
197
|
-
min-width: 0 !important;
|
|
198
|
-
max-width: none !important;
|
|
199
|
-
transform: none !important;
|
|
200
|
-
pointer-events: auto;
|
|
201
|
-
transform-origin: bottom center !important;
|
|
202
|
-
overscroll-behavior: contain;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
[data-hilum-mobile-sheet="true"]::before {
|
|
206
|
-
content: "";
|
|
207
|
-
position: absolute;
|
|
208
|
-
top: 0.5rem;
|
|
209
|
-
left: 50%;
|
|
210
|
-
width: 2.25rem;
|
|
211
|
-
height: 0.25rem;
|
|
212
|
-
border-radius: 999px;
|
|
213
|
-
background: hsl(var(--muted-foreground) / 0.35);
|
|
214
|
-
transform: translateX(-50%);
|
|
215
|
-
}
|
|
105
|
+
function phosphor(Icon) {
|
|
106
|
+
return function PhosphorAdapter({ size, strokeWidth, className }) {
|
|
107
|
+
const weight = strokeWidth != null && strokeWidth >= 1.75 ? "regular" : "light";
|
|
108
|
+
const props = { weight };
|
|
109
|
+
if (size !== void 0) props.size = size;
|
|
110
|
+
if (className !== void 0) props.className = className;
|
|
111
|
+
return /* @__PURE__ */ jsx(Icon, { ...props });
|
|
112
|
+
};
|
|
216
113
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
239
|
-
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
240
|
-
mobilePopperSheetMotionClassName,
|
|
241
|
-
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
242
|
-
"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
|
|
243
|
-
className
|
|
244
|
-
),
|
|
245
|
-
...props
|
|
246
|
-
}
|
|
247
|
-
) })
|
|
248
|
-
] }));
|
|
249
|
-
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
250
|
-
var DropdownMenuItem = React16.forwardRef(({ className, inset, destructive, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
251
|
-
DropdownMenu.Item,
|
|
252
|
-
{
|
|
253
|
-
ref,
|
|
254
|
-
className: cn(
|
|
255
|
-
menuItemClasses,
|
|
256
|
-
motionClasses,
|
|
257
|
-
pressClasses,
|
|
258
|
-
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
259
|
-
!destructive && menuItemActiveClasses,
|
|
260
|
-
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
261
|
-
inset && "pl-8",
|
|
262
|
-
className
|
|
263
|
-
),
|
|
264
|
-
...props
|
|
265
|
-
}
|
|
266
|
-
));
|
|
267
|
-
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
268
|
-
var DropdownMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
269
|
-
DropdownMenu.CheckboxItem,
|
|
270
|
-
{
|
|
271
|
-
ref,
|
|
272
|
-
className: cn(
|
|
273
|
-
menuItemClasses,
|
|
274
|
-
menuItemActiveClasses,
|
|
275
|
-
"py-2 pl-8 pr-2.5 text-muted-foreground",
|
|
276
|
-
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
277
|
-
className
|
|
278
|
-
),
|
|
279
|
-
...props,
|
|
280
|
-
children: [
|
|
281
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
282
|
-
children
|
|
283
|
-
]
|
|
284
|
-
}
|
|
285
|
-
));
|
|
286
|
-
DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
|
|
287
|
-
var DropdownMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
288
|
-
DropdownMenu.RadioItem,
|
|
289
|
-
{
|
|
290
|
-
ref,
|
|
291
|
-
className: cn(
|
|
292
|
-
menuItemClasses,
|
|
293
|
-
menuItemActiveClasses,
|
|
294
|
-
"py-2 pl-8 pr-2.5 text-muted-foreground",
|
|
295
|
-
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
296
|
-
className
|
|
297
|
-
),
|
|
298
|
-
...props,
|
|
299
|
-
children: [
|
|
300
|
-
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-foreground text-foreground" }) }) }),
|
|
301
|
-
children
|
|
302
|
-
]
|
|
303
|
-
}
|
|
304
|
-
));
|
|
305
|
-
DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
|
|
306
|
-
var DropdownMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
307
|
-
DropdownMenu.Label,
|
|
308
|
-
{
|
|
309
|
-
ref,
|
|
310
|
-
className: cn("px-2.5 py-1 label text-muted-foreground", inset && "pl-8", className),
|
|
311
|
-
...props
|
|
312
|
-
}
|
|
313
|
-
));
|
|
314
|
-
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
315
|
-
var DropdownMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
316
|
-
DropdownMenu.Separator,
|
|
317
|
-
{
|
|
318
|
-
ref,
|
|
319
|
-
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
320
|
-
...props
|
|
321
|
-
}
|
|
322
|
-
));
|
|
323
|
-
DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
|
|
324
|
-
var DropdownMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
325
|
-
DropdownMenu.SubTrigger,
|
|
326
|
-
{
|
|
327
|
-
ref,
|
|
328
|
-
className: cn(
|
|
329
|
-
menuItemClasses,
|
|
330
|
-
menuItemActiveClasses,
|
|
331
|
-
"text-muted-foreground data-[state=open]:bg-muted",
|
|
332
|
-
inset && "pl-8",
|
|
333
|
-
className
|
|
334
|
-
),
|
|
335
|
-
...props,
|
|
336
|
-
children: [
|
|
337
|
-
children,
|
|
338
|
-
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-muted-foreground" })
|
|
339
|
-
]
|
|
340
|
-
}
|
|
341
|
-
));
|
|
342
|
-
DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
|
|
343
|
-
var DropdownMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
344
|
-
/* @__PURE__ */ jsx("style", { children: mobilePopperSheetStyle }),
|
|
345
|
-
/* @__PURE__ */ jsx(
|
|
346
|
-
DropdownMenu.SubContent,
|
|
347
|
-
{
|
|
348
|
-
ref,
|
|
349
|
-
"data-hilum-mobile-sheet": "true",
|
|
350
|
-
className: cn(
|
|
351
|
-
"z-50 min-w-[8rem] rounded-xl border border-border bg-card p-1 shadow-elevated",
|
|
352
|
-
mobilePopperSheetPositionClassName,
|
|
353
|
-
mobilePopperSheetSurfaceClassName,
|
|
354
|
-
"max-sm:overflow-y-auto max-sm:px-2 max-sm:pb-2 max-sm:pt-5",
|
|
355
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
356
|
-
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
357
|
-
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
358
|
-
mobilePopperSheetMotionClassName,
|
|
359
|
-
"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
|
|
360
|
-
className
|
|
361
|
-
),
|
|
362
|
-
...props
|
|
363
|
-
}
|
|
364
|
-
)
|
|
365
|
-
] }));
|
|
366
|
-
DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
|
|
367
|
-
function DropdownMenuShortcut({ className, ...props }) {
|
|
368
|
-
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-muted-foreground", className), ...props });
|
|
369
|
-
}
|
|
370
|
-
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
371
|
-
var sizeMap = {
|
|
372
|
-
xs: "size-5 caption-xs",
|
|
373
|
-
sm: "size-7 caption",
|
|
374
|
-
md: "size-8 body",
|
|
375
|
-
lg: "size-10 body-lg",
|
|
376
|
-
xl: "size-12 subheading"
|
|
377
|
-
};
|
|
378
|
-
var Avatar = React16.forwardRef(
|
|
379
|
-
({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
380
|
-
Avatar$1.Root,
|
|
381
|
-
{
|
|
382
|
-
ref,
|
|
383
|
-
className: cn(
|
|
384
|
-
"relative flex shrink-0 overflow-hidden rounded-full",
|
|
385
|
-
sizeMap[size],
|
|
386
|
-
className
|
|
387
|
-
),
|
|
388
|
-
...props
|
|
389
|
-
}
|
|
390
|
-
)
|
|
391
|
-
);
|
|
392
|
-
Avatar.displayName = "Avatar";
|
|
393
|
-
var AvatarImage = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
394
|
-
Avatar$1.Image,
|
|
395
|
-
{
|
|
396
|
-
ref,
|
|
397
|
-
className: cn(
|
|
398
|
-
"aspect-square h-full w-full object-cover outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10",
|
|
399
|
-
className
|
|
400
|
-
),
|
|
401
|
-
...props
|
|
402
|
-
}
|
|
403
|
-
));
|
|
404
|
-
AvatarImage.displayName = "AvatarImage";
|
|
405
|
-
var AvatarFallback = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
406
|
-
Avatar$1.Fallback,
|
|
407
|
-
{
|
|
408
|
-
ref,
|
|
409
|
-
className: cn(
|
|
410
|
-
"flex h-full w-full items-center justify-center rounded-full bg-muted body font-semibold text-muted-foreground",
|
|
411
|
-
className
|
|
412
|
-
),
|
|
413
|
-
...props
|
|
414
|
-
}
|
|
415
|
-
));
|
|
416
|
-
AvatarFallback.displayName = "AvatarFallback";
|
|
417
|
-
var statusColorMap = {
|
|
418
|
-
online: "bg-brand-secondary",
|
|
419
|
-
offline: "bg-muted",
|
|
420
|
-
busy: "bg-destructive",
|
|
421
|
-
away: "bg-brand-secondary"
|
|
422
|
-
};
|
|
423
|
-
var statusSizeMap = {
|
|
424
|
-
xs: "size-1.5 ring-1",
|
|
425
|
-
sm: "size-2 ring-1",
|
|
426
|
-
md: "size-2.5 ring-[1.5px]",
|
|
427
|
-
lg: "size-3 ring-2",
|
|
428
|
-
xl: "size-3.5 ring-2"
|
|
429
|
-
};
|
|
430
|
-
var AvatarWithStatus = React16.forwardRef(({ status, size = "md", className, children, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "relative inline-flex shrink-0", children: [
|
|
431
|
-
/* @__PURE__ */ jsx(Avatar, { ref, size, className, ...props, children }),
|
|
432
|
-
status && /* @__PURE__ */ jsx(
|
|
433
|
-
"span",
|
|
434
|
-
{
|
|
435
|
-
className: cn(
|
|
436
|
-
"absolute bottom-0 right-0 rounded-full ring-background",
|
|
437
|
-
statusColorMap[status],
|
|
438
|
-
statusSizeMap[size]
|
|
439
|
-
)
|
|
440
|
-
}
|
|
441
|
-
)
|
|
442
|
-
] }));
|
|
443
|
-
AvatarWithStatus.displayName = "AvatarWithStatus";
|
|
444
|
-
var AccountMenuContent = React16.forwardRef(({ className, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
445
|
-
DropdownMenuContent,
|
|
446
|
-
{
|
|
447
|
-
ref,
|
|
448
|
-
sideOffset,
|
|
449
|
-
className: cn(
|
|
450
|
-
"w-72 overflow-hidden rounded-xl border border-border bg-card p-0 text-foreground shadow-elevated",
|
|
451
|
-
className
|
|
452
|
-
),
|
|
453
|
-
...props
|
|
454
|
-
}
|
|
455
|
-
));
|
|
456
|
-
AccountMenuContent.displayName = "AccountMenuContent";
|
|
457
|
-
var AccountMenuHeader = React16.forwardRef(
|
|
458
|
-
({ name, email, avatarSrc, avatarAlt, fallback, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
459
|
-
"div",
|
|
460
|
-
{
|
|
461
|
-
ref,
|
|
462
|
-
className: cn("flex flex-col items-center px-5 py-5 text-center", className),
|
|
463
|
-
...props,
|
|
464
|
-
children: [
|
|
465
|
-
/* @__PURE__ */ jsxs(Avatar, { size: "lg", className: "mb-3", children: [
|
|
466
|
-
avatarSrc && /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: avatarAlt ?? "" }),
|
|
467
|
-
/* @__PURE__ */ jsx(AvatarFallback, { className: "bg-brand-primary text-primary-foreground", children: fallback })
|
|
468
|
-
] }),
|
|
469
|
-
/* @__PURE__ */ jsx("p", { className: "body font-medium leading-tight text-foreground", children: name }),
|
|
470
|
-
email && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: email })
|
|
471
|
-
]
|
|
472
|
-
}
|
|
473
|
-
)
|
|
474
|
-
);
|
|
475
|
-
AccountMenuHeader.displayName = "AccountMenuHeader";
|
|
476
|
-
var AccountMenuSection = React16.forwardRef(
|
|
477
|
-
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-2", className), ...props })
|
|
478
|
-
);
|
|
479
|
-
AccountMenuSection.displayName = "AccountMenuSection";
|
|
480
|
-
var AccountMenuItem = React16.forwardRef(({ icon, trailing, description, destructive, children, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
481
|
-
DropdownMenuItem,
|
|
482
|
-
{
|
|
483
|
-
ref,
|
|
484
|
-
className: cn(
|
|
485
|
-
"min-h-10 rounded-md px-2.5 py-2",
|
|
486
|
-
"group",
|
|
487
|
-
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-foreground focus:bg-muted focus:text-foreground",
|
|
488
|
-
"data-[disabled]:opacity-40",
|
|
489
|
-
"[&_svg:not([class*='size-'])]:size-4",
|
|
490
|
-
className
|
|
491
|
-
),
|
|
492
|
-
...props,
|
|
493
|
-
children: [
|
|
494
|
-
icon && /* @__PURE__ */ jsx("span", { className: "flex size-5 shrink-0 items-center justify-center", children: icon }),
|
|
495
|
-
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
496
|
-
/* @__PURE__ */ jsx("span", { className: "body truncate font-medium leading-tight", children }),
|
|
497
|
-
description && /* @__PURE__ */ jsx("span", { className: "caption truncate font-normal text-muted-foreground group-focus:text-muted-foreground", children: description })
|
|
498
|
-
] }),
|
|
499
|
-
trailing && /* @__PURE__ */ jsx("span", { className: "caption ml-3 shrink-0 text-muted-foreground", children: trailing })
|
|
500
|
-
]
|
|
501
|
-
}
|
|
502
|
-
));
|
|
503
|
-
AccountMenuItem.displayName = "AccountMenuItem";
|
|
504
|
-
var AccountMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuSeparator, { ref, className: cn("m-0 bg-border", className), ...props }));
|
|
505
|
-
AccountMenuSeparator.displayName = "AccountMenuSeparator";
|
|
506
|
-
function tabler(Icon) {
|
|
507
|
-
return function TablerAdapter({ size, strokeWidth, className }) {
|
|
508
|
-
const props = {};
|
|
509
|
-
if (size !== void 0) props.size = size;
|
|
510
|
-
if (strokeWidth !== void 0) props.stroke = strokeWidth;
|
|
511
|
-
if (className !== void 0) props.className = className;
|
|
512
|
-
return /* @__PURE__ */ jsx(Icon, { ...props });
|
|
513
|
-
};
|
|
514
|
-
}
|
|
515
|
-
function phosphor(Icon) {
|
|
516
|
-
return function PhosphorAdapter({ size, strokeWidth, className }) {
|
|
517
|
-
const weight = strokeWidth != null && strokeWidth >= 1.75 ? "regular" : "light";
|
|
518
|
-
const props = { weight };
|
|
519
|
-
if (size !== void 0) props.size = size;
|
|
520
|
-
if (className !== void 0) props.className = className;
|
|
521
|
-
return /* @__PURE__ */ jsx(Icon, { ...props });
|
|
522
|
-
};
|
|
523
|
-
}
|
|
524
|
-
function hugeicons(iconDef) {
|
|
525
|
-
return function HugeIconsAdapter({ size, strokeWidth, className }) {
|
|
526
|
-
const props = {};
|
|
527
|
-
if (size !== void 0) props.size = size;
|
|
528
|
-
if (strokeWidth !== void 0) props.strokeWidth = strokeWidth;
|
|
529
|
-
if (className !== void 0) props.className = className;
|
|
530
|
-
return /* @__PURE__ */ jsx(
|
|
531
|
-
HugeiconsIcon,
|
|
532
|
-
{
|
|
533
|
-
icon: iconDef,
|
|
534
|
-
...props
|
|
535
|
-
}
|
|
536
|
-
);
|
|
537
|
-
};
|
|
538
|
-
}
|
|
539
|
-
function untitledui(Icon) {
|
|
540
|
-
return function UntitledUiAdapter({ size, strokeWidth, className }) {
|
|
541
|
-
const props = {};
|
|
542
|
-
if (size !== void 0) {
|
|
543
|
-
props.width = size;
|
|
544
|
-
props.height = size;
|
|
114
|
+
function hugeicons(iconDef) {
|
|
115
|
+
return function HugeIconsAdapter({ size, strokeWidth, className }) {
|
|
116
|
+
const props = {};
|
|
117
|
+
if (size !== void 0) props.size = size;
|
|
118
|
+
if (strokeWidth !== void 0) props.strokeWidth = strokeWidth;
|
|
119
|
+
if (className !== void 0) props.className = className;
|
|
120
|
+
return /* @__PURE__ */ jsx(
|
|
121
|
+
HugeiconsIcon,
|
|
122
|
+
{
|
|
123
|
+
icon: iconDef,
|
|
124
|
+
...props
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function untitledui(Icon) {
|
|
130
|
+
return function UntitledUiAdapter({ size, strokeWidth, className }) {
|
|
131
|
+
const props = {};
|
|
132
|
+
if (size !== void 0) {
|
|
133
|
+
props.width = size;
|
|
134
|
+
props.height = size;
|
|
545
135
|
}
|
|
546
136
|
if (strokeWidth !== void 0) props.strokeWidth = strokeWidth;
|
|
547
137
|
if (className !== void 0) props.className = className;
|
|
@@ -797,19 +387,560 @@ var untitleduiMap = {
|
|
|
797
387
|
"skip-forward": untitledui(SkipForward$2),
|
|
798
388
|
"corner-down-right": untitledui(CornerDownRight$1)
|
|
799
389
|
};
|
|
800
|
-
var iconMap = {
|
|
801
|
-
lucide: lucideMap,
|
|
802
|
-
tabler: tablerMap,
|
|
803
|
-
phosphor: phosphorMap,
|
|
804
|
-
hugeicons: hugeiconsMap,
|
|
805
|
-
untitledui: untitleduiMap
|
|
390
|
+
var iconMap = {
|
|
391
|
+
lucide: lucideMap,
|
|
392
|
+
tabler: tablerMap,
|
|
393
|
+
phosphor: phosphorMap,
|
|
394
|
+
hugeicons: hugeiconsMap,
|
|
395
|
+
untitledui: untitleduiMap
|
|
396
|
+
};
|
|
397
|
+
var IconContext = createContext(null);
|
|
398
|
+
function useIconLibrary() {
|
|
399
|
+
const ctx = useContext(IconContext);
|
|
400
|
+
if (!ctx) throw new Error("useIconLibrary must be used within an IconProvider");
|
|
401
|
+
return ctx;
|
|
402
|
+
}
|
|
403
|
+
function useIcon(name) {
|
|
404
|
+
const ctx = useContext(IconContext);
|
|
405
|
+
if (!ctx) return iconMap.lucide[name];
|
|
406
|
+
return iconMap[ctx.iconLibrary][name];
|
|
407
|
+
}
|
|
408
|
+
function useIcons() {
|
|
409
|
+
const ctx = useContext(IconContext);
|
|
410
|
+
const lib = ctx?.iconLibrary ?? "lucide";
|
|
411
|
+
return useMemo(() => iconMap[lib], [lib]);
|
|
412
|
+
}
|
|
413
|
+
function IconProvider({
|
|
414
|
+
children,
|
|
415
|
+
defaultLibrary = "lucide"
|
|
416
|
+
}) {
|
|
417
|
+
const [iconLibrary, setIconLibraryState] = useState(defaultLibrary);
|
|
418
|
+
const setIconLibrary = useCallback((next) => {
|
|
419
|
+
setIconLibraryState(next);
|
|
420
|
+
}, []);
|
|
421
|
+
useEffect(() => {
|
|
422
|
+
const onKeyDown = (e) => {
|
|
423
|
+
if (e.key !== "i" && e.key !== "I") return;
|
|
424
|
+
if (e.metaKey || e.ctrlKey || e.altKey) return;
|
|
425
|
+
const tag = e.target?.tagName;
|
|
426
|
+
if (tag === "INPUT" || tag === "TEXTAREA" || e.target?.isContentEditable)
|
|
427
|
+
return;
|
|
428
|
+
e.preventDefault();
|
|
429
|
+
setIconLibraryState((prev) => {
|
|
430
|
+
const idx = iconLibraryOrder.indexOf(prev);
|
|
431
|
+
return iconLibraryOrder[(idx + 1) % iconLibraryOrder.length];
|
|
432
|
+
});
|
|
433
|
+
};
|
|
434
|
+
document.addEventListener("keydown", onKeyDown);
|
|
435
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
436
|
+
}, []);
|
|
437
|
+
return /* @__PURE__ */ jsx(IconContext.Provider, { value: { iconLibrary, setIconLibrary }, children });
|
|
438
|
+
}
|
|
439
|
+
var shapeOrder = ["rounded", "pill"];
|
|
440
|
+
var shapeMap = {
|
|
441
|
+
pill: {
|
|
442
|
+
item: "rounded-[20px]",
|
|
443
|
+
bg: "rounded-[20px]",
|
|
444
|
+
// +2px over `item` because the focus ring sits 2px outside the element
|
|
445
|
+
// (top/left -2, width/height +4); this keeps the corners concentric so a
|
|
446
|
+
// pill element gets a pill ring (matches the rounded-mode 8px→10px bump).
|
|
447
|
+
focusRing: "rounded-[22px]",
|
|
448
|
+
mergedBg: "rounded-2xl",
|
|
449
|
+
container: "rounded-3xl",
|
|
450
|
+
button: "rounded-[20px]",
|
|
451
|
+
input: "rounded-[20px]",
|
|
452
|
+
bgRadius: 20,
|
|
453
|
+
mergedRadius: 16
|
|
454
|
+
},
|
|
455
|
+
rounded: {
|
|
456
|
+
item: "rounded-lg",
|
|
457
|
+
bg: "rounded-lg",
|
|
458
|
+
focusRing: "rounded-[10px]",
|
|
459
|
+
mergedBg: "rounded-lg",
|
|
460
|
+
container: "rounded-xl",
|
|
461
|
+
button: "rounded-lg",
|
|
462
|
+
input: "rounded-lg",
|
|
463
|
+
bgRadius: 8,
|
|
464
|
+
mergedRadius: 8
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
var ShapeContext = createContext(null);
|
|
468
|
+
function useShape() {
|
|
469
|
+
const ctx = useContext(ShapeContext);
|
|
470
|
+
if (!ctx) return shapeMap.rounded;
|
|
471
|
+
return ctx.classes;
|
|
472
|
+
}
|
|
473
|
+
function useShapeContext() {
|
|
474
|
+
const ctx = useContext(ShapeContext);
|
|
475
|
+
if (!ctx) throw new Error("useShapeContext must be used within a ShapeProvider");
|
|
476
|
+
return ctx;
|
|
477
|
+
}
|
|
478
|
+
function transitionShape(callback) {
|
|
479
|
+
const root = document.documentElement;
|
|
480
|
+
root.classList.add("transitioning");
|
|
481
|
+
void root.offsetHeight;
|
|
482
|
+
callback();
|
|
483
|
+
setTimeout(() => root.classList.remove("transitioning"), 200);
|
|
484
|
+
}
|
|
485
|
+
function ShapeProvider({
|
|
486
|
+
children,
|
|
487
|
+
defaultShape = "rounded"
|
|
488
|
+
}) {
|
|
489
|
+
const [shape3, setShapeState] = useState(defaultShape);
|
|
490
|
+
const setShape = useCallback((next) => {
|
|
491
|
+
transitionShape(() => setShapeState(next));
|
|
492
|
+
}, []);
|
|
493
|
+
useEffect(() => {
|
|
494
|
+
const onKeyDown = (e) => {
|
|
495
|
+
if (e.key !== "r" && e.key !== "R") return;
|
|
496
|
+
if (e.metaKey || e.ctrlKey || e.altKey) return;
|
|
497
|
+
const tag = e.target?.tagName;
|
|
498
|
+
if (tag === "INPUT" || tag === "TEXTAREA" || e.target?.isContentEditable)
|
|
499
|
+
return;
|
|
500
|
+
e.preventDefault();
|
|
501
|
+
transitionShape(() => {
|
|
502
|
+
setShapeState((prev) => {
|
|
503
|
+
const idx = shapeOrder.indexOf(prev);
|
|
504
|
+
return shapeOrder[(idx + 1) % shapeOrder.length];
|
|
505
|
+
});
|
|
506
|
+
});
|
|
507
|
+
};
|
|
508
|
+
document.addEventListener("keydown", onKeyDown);
|
|
509
|
+
return () => document.removeEventListener("keydown", onKeyDown);
|
|
510
|
+
}, []);
|
|
511
|
+
return /* @__PURE__ */ jsx(ShapeContext.Provider, { value: { shape: shape3, setShape, classes: shapeMap[shape3] }, children });
|
|
512
|
+
}
|
|
513
|
+
var SurfaceContext = createContext(1);
|
|
514
|
+
function useSurface() {
|
|
515
|
+
return useContext(SurfaceContext);
|
|
516
|
+
}
|
|
517
|
+
function SurfaceProvider({ value, children }) {
|
|
518
|
+
return /* @__PURE__ */ jsx(SurfaceContext.Provider, { value: Math.max(1, Math.min(8, value)), children });
|
|
519
|
+
}
|
|
520
|
+
var motionClasses = "transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-150 ease-out motion-reduce:transition-none";
|
|
521
|
+
var springMotionClasses = "transition-[background-color,border-color,box-shadow,color,opacity,transform] duration-200 ease-[cubic-bezier(0.2,0.9,0.2,1.15)] motion-reduce:transition-none";
|
|
522
|
+
var pressClasses = "active:scale-[0.97] motion-reduce:active:scale-100";
|
|
523
|
+
var focusRingClasses = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1";
|
|
524
|
+
var iconStrokeClasses = "[&_svg]:transition-[stroke-width,transform,color] [&_svg]:duration-150 [&_svg]:ease-out group-hover:[&_svg]:stroke-[2]";
|
|
525
|
+
var controlSurfaceClasses = "border border-border bg-background hover:border-ground-200";
|
|
526
|
+
var menuItemClasses = "relative flex min-h-10 cursor-default select-none items-center gap-2 rounded-md px-2.5 py-2 body outline-none transition-[background-color,color,box-shadow] duration-150 ease-out";
|
|
527
|
+
var menuItemActiveClasses = "focus:bg-muted focus:text-foreground data-[highlighted]:bg-muted";
|
|
528
|
+
function useProximityIndex(axis = "y") {
|
|
529
|
+
const containerRef = React16.useRef(null);
|
|
530
|
+
const itemRefs = React16.useRef(/* @__PURE__ */ new Map());
|
|
531
|
+
const frameRef = React16.useRef(null);
|
|
532
|
+
const [activeIndex, setActiveIndex] = React16.useState(null);
|
|
533
|
+
const registerItem = React16.useCallback((index, node) => {
|
|
534
|
+
if (node) itemRefs.current.set(index, node);
|
|
535
|
+
else itemRefs.current.delete(index);
|
|
536
|
+
}, []);
|
|
537
|
+
const onPointerMove = React16.useCallback(
|
|
538
|
+
(event) => {
|
|
539
|
+
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
540
|
+
const pointer = axis === "x" ? event.clientX : event.clientY;
|
|
541
|
+
frameRef.current = requestAnimationFrame(() => {
|
|
542
|
+
frameRef.current = null;
|
|
543
|
+
let closestIndex = null;
|
|
544
|
+
let closestDistance = Number.POSITIVE_INFINITY;
|
|
545
|
+
itemRefs.current.forEach((node, index) => {
|
|
546
|
+
const rect = node.getBoundingClientRect();
|
|
547
|
+
const start = axis === "x" ? rect.left : rect.top;
|
|
548
|
+
const size = axis === "x" ? rect.width : rect.height;
|
|
549
|
+
const center = start + size / 2;
|
|
550
|
+
const distance = Math.abs(pointer - center);
|
|
551
|
+
if (distance < closestDistance) {
|
|
552
|
+
closestDistance = distance;
|
|
553
|
+
closestIndex = index;
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
setActiveIndex(closestIndex);
|
|
557
|
+
});
|
|
558
|
+
},
|
|
559
|
+
[axis]
|
|
560
|
+
);
|
|
561
|
+
const clearActiveIndex = React16.useCallback(() => {
|
|
562
|
+
if (frameRef.current !== null) {
|
|
563
|
+
cancelAnimationFrame(frameRef.current);
|
|
564
|
+
frameRef.current = null;
|
|
565
|
+
}
|
|
566
|
+
setActiveIndex(null);
|
|
567
|
+
}, []);
|
|
568
|
+
React16.useEffect(
|
|
569
|
+
() => () => {
|
|
570
|
+
if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);
|
|
571
|
+
},
|
|
572
|
+
[]
|
|
573
|
+
);
|
|
574
|
+
return {
|
|
575
|
+
activeIndex,
|
|
576
|
+
containerRef,
|
|
577
|
+
registerItem,
|
|
578
|
+
handlers: {
|
|
579
|
+
onPointerMove,
|
|
580
|
+
onPointerLeave: clearActiveIndex
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// src/lib/mobile-popper-sheet.ts
|
|
586
|
+
var mobileDialogSheetContentClassName = [
|
|
587
|
+
"fixed inset-x-0 bottom-0 z-50 max-h-[calc(100dvh-1rem)] w-full overflow-y-auto",
|
|
588
|
+
"rounded-t-2xl border border-border bg-card p-6 shadow-elevated",
|
|
589
|
+
"max-sm:pb-[calc(1.5rem+env(safe-area-inset-bottom))] max-sm:pt-8",
|
|
590
|
+
"max-sm:before:absolute max-sm:before:left-1/2 max-sm:before:top-3 max-sm:before:h-1 max-sm:before:w-9",
|
|
591
|
+
"max-sm:before:-translate-x-1/2 max-sm:before:rounded-full max-sm:before:bg-muted-foreground/35"
|
|
592
|
+
].join(" ");
|
|
593
|
+
var desktopDialogContentClassName = "sm:bottom-auto sm:left-1/2 sm:top-1/2 sm:max-h-[calc(100dvh-2rem)] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-2xl";
|
|
594
|
+
var dialogSheetMotionClassName = [
|
|
595
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
596
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
597
|
+
"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
598
|
+
"sm:data-[state=closed]:zoom-out-95 sm:data-[state=open]:zoom-in-95"
|
|
599
|
+
].join(" ");
|
|
600
|
+
var mobilePopperSheetPositionClassName = [
|
|
601
|
+
"max-sm:!fixed max-sm:!inset-x-3 max-sm:!bottom-3 max-sm:!top-auto max-sm:!left-3 max-sm:!right-3",
|
|
602
|
+
"max-sm:!w-auto max-sm:!min-w-0 max-sm:!max-w-none max-sm:!transform-none"
|
|
603
|
+
].join(" ");
|
|
604
|
+
var mobilePopperSheetSurfaceClassName = "max-sm:max-h-[min(70dvh,28rem)] max-sm:rounded-2xl max-sm:border max-sm:border-border max-sm:shadow-elevated";
|
|
605
|
+
var mobilePopperSheetMotionClassName = [
|
|
606
|
+
"max-sm:data-[state=closed]:slide-out-to-bottom max-sm:data-[state=open]:slide-in-from-bottom"
|
|
607
|
+
].join(" ");
|
|
608
|
+
var mobilePopperSheetStyle = `
|
|
609
|
+
@media (max-width: 639px) {
|
|
610
|
+
[data-radix-popper-content-wrapper]:has([data-hilum-mobile-sheet="true"]) {
|
|
611
|
+
position: fixed !important;
|
|
612
|
+
inset: 0 !important;
|
|
613
|
+
min-width: 0 !important;
|
|
614
|
+
transform: none !important;
|
|
615
|
+
pointer-events: none;
|
|
616
|
+
z-index: 50 !important;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
[data-radix-popper-content-wrapper]:has([data-hilum-mobile-sheet="true"][data-state="open"])::before {
|
|
620
|
+
content: "";
|
|
621
|
+
position: fixed;
|
|
622
|
+
inset: 0;
|
|
623
|
+
background: rgb(0 0 0 / 0.3);
|
|
624
|
+
backdrop-filter: blur(4px);
|
|
625
|
+
pointer-events: auto;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
[data-hilum-mobile-sheet="true"] {
|
|
629
|
+
position: fixed !important;
|
|
630
|
+
left: 0.75rem !important;
|
|
631
|
+
right: 0.75rem !important;
|
|
632
|
+
bottom: max(0.75rem, env(safe-area-inset-bottom)) !important;
|
|
633
|
+
top: auto !important;
|
|
634
|
+
width: calc(100dvw - 1.5rem) !important;
|
|
635
|
+
min-width: 0 !important;
|
|
636
|
+
max-width: none !important;
|
|
637
|
+
transform: none !important;
|
|
638
|
+
pointer-events: auto;
|
|
639
|
+
transform-origin: bottom center !important;
|
|
640
|
+
overscroll-behavior: contain;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
[data-hilum-mobile-sheet="true"]::before {
|
|
644
|
+
content: "";
|
|
645
|
+
position: absolute;
|
|
646
|
+
top: 0.5rem;
|
|
647
|
+
left: 50%;
|
|
648
|
+
width: 2.25rem;
|
|
649
|
+
height: 0.25rem;
|
|
650
|
+
border-radius: 999px;
|
|
651
|
+
background: hsl(var(--muted-foreground) / 0.35);
|
|
652
|
+
transform: translateX(-50%);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
`;
|
|
656
|
+
var DropdownMenuRoot = DropdownMenu.Root;
|
|
657
|
+
var DropdownMenuTrigger = DropdownMenu.Trigger;
|
|
658
|
+
var DropdownMenuGroup = DropdownMenu.Group;
|
|
659
|
+
var DropdownMenuPortal = DropdownMenu.Portal;
|
|
660
|
+
var DropdownMenuSub = DropdownMenu.Sub;
|
|
661
|
+
var DropdownMenuRadioGroup = DropdownMenu.RadioGroup;
|
|
662
|
+
var DropdownMenuContent = React16.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
663
|
+
/* @__PURE__ */ jsx("style", { children: mobilePopperSheetStyle }),
|
|
664
|
+
/* @__PURE__ */ jsx(DropdownMenu.Portal, { children: /* @__PURE__ */ jsx(
|
|
665
|
+
DropdownMenu.Content,
|
|
666
|
+
{
|
|
667
|
+
ref,
|
|
668
|
+
"data-hilum-mobile-sheet": "true",
|
|
669
|
+
sideOffset,
|
|
670
|
+
className: cn(
|
|
671
|
+
"z-50 min-w-[8rem] rounded-xl border border-border bg-card p-1 shadow-elevated",
|
|
672
|
+
mobilePopperSheetPositionClassName,
|
|
673
|
+
mobilePopperSheetSurfaceClassName,
|
|
674
|
+
"max-sm:overflow-y-auto max-sm:px-2 max-sm:pb-2 max-sm:pt-5",
|
|
675
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
676
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
677
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
678
|
+
mobilePopperSheetMotionClassName,
|
|
679
|
+
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
680
|
+
"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
|
|
681
|
+
className
|
|
682
|
+
),
|
|
683
|
+
...props
|
|
684
|
+
}
|
|
685
|
+
) })
|
|
686
|
+
] }));
|
|
687
|
+
DropdownMenuContent.displayName = "DropdownMenuContent";
|
|
688
|
+
var DropdownMenuItem = React16.forwardRef(({ className, inset, destructive, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
689
|
+
DropdownMenu.Item,
|
|
690
|
+
{
|
|
691
|
+
ref,
|
|
692
|
+
className: cn(
|
|
693
|
+
menuItemClasses,
|
|
694
|
+
motionClasses,
|
|
695
|
+
pressClasses,
|
|
696
|
+
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-muted-foreground focus:bg-muted focus:text-foreground",
|
|
697
|
+
!destructive && menuItemActiveClasses,
|
|
698
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
699
|
+
inset && "pl-8",
|
|
700
|
+
className
|
|
701
|
+
),
|
|
702
|
+
...props
|
|
703
|
+
}
|
|
704
|
+
));
|
|
705
|
+
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
706
|
+
var DropdownMenuCheckboxItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
707
|
+
DropdownMenu.CheckboxItem,
|
|
708
|
+
{
|
|
709
|
+
ref,
|
|
710
|
+
className: cn(
|
|
711
|
+
menuItemClasses,
|
|
712
|
+
menuItemActiveClasses,
|
|
713
|
+
"py-2 pl-8 pr-2.5 text-muted-foreground",
|
|
714
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
715
|
+
className
|
|
716
|
+
),
|
|
717
|
+
...props,
|
|
718
|
+
children: [
|
|
719
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { size: 13, className: "text-foreground" }) }) }),
|
|
720
|
+
children
|
|
721
|
+
]
|
|
722
|
+
}
|
|
723
|
+
));
|
|
724
|
+
DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
|
|
725
|
+
var DropdownMenuRadioItem = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
726
|
+
DropdownMenu.RadioItem,
|
|
727
|
+
{
|
|
728
|
+
ref,
|
|
729
|
+
className: cn(
|
|
730
|
+
menuItemClasses,
|
|
731
|
+
menuItemActiveClasses,
|
|
732
|
+
"py-2 pl-8 pr-2.5 text-muted-foreground",
|
|
733
|
+
"data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
734
|
+
className
|
|
735
|
+
),
|
|
736
|
+
...props,
|
|
737
|
+
children: [
|
|
738
|
+
/* @__PURE__ */ jsx("span", { className: "absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { size: 8, className: "fill-foreground text-foreground" }) }) }),
|
|
739
|
+
children
|
|
740
|
+
]
|
|
741
|
+
}
|
|
742
|
+
));
|
|
743
|
+
DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
|
|
744
|
+
var DropdownMenuLabel = React16.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
745
|
+
DropdownMenu.Label,
|
|
746
|
+
{
|
|
747
|
+
ref,
|
|
748
|
+
className: cn("px-2.5 py-1 label text-muted-foreground", inset && "pl-8", className),
|
|
749
|
+
...props
|
|
750
|
+
}
|
|
751
|
+
));
|
|
752
|
+
DropdownMenuLabel.displayName = "DropdownMenuLabel";
|
|
753
|
+
var DropdownMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
754
|
+
DropdownMenu.Separator,
|
|
755
|
+
{
|
|
756
|
+
ref,
|
|
757
|
+
className: cn("mx-1 my-1 h-px bg-muted", className),
|
|
758
|
+
...props
|
|
759
|
+
}
|
|
760
|
+
));
|
|
761
|
+
DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
|
|
762
|
+
var DropdownMenuSubTrigger = React16.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
763
|
+
DropdownMenu.SubTrigger,
|
|
764
|
+
{
|
|
765
|
+
ref,
|
|
766
|
+
className: cn(
|
|
767
|
+
menuItemClasses,
|
|
768
|
+
menuItemActiveClasses,
|
|
769
|
+
"text-muted-foreground data-[state=open]:bg-muted",
|
|
770
|
+
inset && "pl-8",
|
|
771
|
+
className
|
|
772
|
+
),
|
|
773
|
+
...props,
|
|
774
|
+
children: [
|
|
775
|
+
children,
|
|
776
|
+
/* @__PURE__ */ jsx(ChevronRight, { size: 14, className: "ml-auto text-muted-foreground" })
|
|
777
|
+
]
|
|
778
|
+
}
|
|
779
|
+
));
|
|
780
|
+
DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
|
|
781
|
+
var DropdownMenuSubContent = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
782
|
+
/* @__PURE__ */ jsx("style", { children: mobilePopperSheetStyle }),
|
|
783
|
+
/* @__PURE__ */ jsx(
|
|
784
|
+
DropdownMenu.SubContent,
|
|
785
|
+
{
|
|
786
|
+
ref,
|
|
787
|
+
"data-hilum-mobile-sheet": "true",
|
|
788
|
+
className: cn(
|
|
789
|
+
"z-50 min-w-[8rem] rounded-xl border border-border bg-card p-1 shadow-elevated",
|
|
790
|
+
mobilePopperSheetPositionClassName,
|
|
791
|
+
mobilePopperSheetSurfaceClassName,
|
|
792
|
+
"max-sm:overflow-y-auto max-sm:px-2 max-sm:pb-2 max-sm:pt-5",
|
|
793
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
794
|
+
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
795
|
+
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
796
|
+
mobilePopperSheetMotionClassName,
|
|
797
|
+
"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
|
|
798
|
+
className
|
|
799
|
+
),
|
|
800
|
+
...props
|
|
801
|
+
}
|
|
802
|
+
)
|
|
803
|
+
] }));
|
|
804
|
+
DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
|
|
805
|
+
function DropdownMenuShortcut({ className, ...props }) {
|
|
806
|
+
return /* @__PURE__ */ jsx("span", { className: cn("ml-auto caption text-muted-foreground", className), ...props });
|
|
807
|
+
}
|
|
808
|
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
809
|
+
var sizeMap = {
|
|
810
|
+
xs: "size-5 caption-xs",
|
|
811
|
+
sm: "size-7 caption",
|
|
812
|
+
md: "size-8 body",
|
|
813
|
+
lg: "size-10 body-lg",
|
|
814
|
+
xl: "size-12 subheading"
|
|
815
|
+
};
|
|
816
|
+
var Avatar = React16.forwardRef(
|
|
817
|
+
({ className, size = "md", ...props }, ref) => /* @__PURE__ */ jsx(
|
|
818
|
+
Avatar$1.Root,
|
|
819
|
+
{
|
|
820
|
+
ref,
|
|
821
|
+
className: cn(
|
|
822
|
+
"relative flex shrink-0 overflow-hidden rounded-full",
|
|
823
|
+
sizeMap[size],
|
|
824
|
+
className
|
|
825
|
+
),
|
|
826
|
+
...props
|
|
827
|
+
}
|
|
828
|
+
)
|
|
829
|
+
);
|
|
830
|
+
Avatar.displayName = "Avatar";
|
|
831
|
+
var AvatarImage = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
832
|
+
Avatar$1.Image,
|
|
833
|
+
{
|
|
834
|
+
ref,
|
|
835
|
+
className: cn(
|
|
836
|
+
"aspect-square h-full w-full object-cover outline outline-1 -outline-offset-1 outline-black/10 dark:outline-white/10",
|
|
837
|
+
className
|
|
838
|
+
),
|
|
839
|
+
...props
|
|
840
|
+
}
|
|
841
|
+
));
|
|
842
|
+
AvatarImage.displayName = "AvatarImage";
|
|
843
|
+
var AvatarFallback = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
844
|
+
Avatar$1.Fallback,
|
|
845
|
+
{
|
|
846
|
+
ref,
|
|
847
|
+
className: cn(
|
|
848
|
+
"flex h-full w-full items-center justify-center rounded-full bg-muted body font-semibold text-muted-foreground",
|
|
849
|
+
className
|
|
850
|
+
),
|
|
851
|
+
...props
|
|
852
|
+
}
|
|
853
|
+
));
|
|
854
|
+
AvatarFallback.displayName = "AvatarFallback";
|
|
855
|
+
var statusColorMap = {
|
|
856
|
+
online: "bg-brand-secondary",
|
|
857
|
+
offline: "bg-muted",
|
|
858
|
+
busy: "bg-destructive",
|
|
859
|
+
away: "bg-brand-secondary"
|
|
806
860
|
};
|
|
807
|
-
var
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
861
|
+
var statusSizeMap = {
|
|
862
|
+
xs: "size-1.5 ring-1",
|
|
863
|
+
sm: "size-2 ring-1",
|
|
864
|
+
md: "size-2.5 ring-[1.5px]",
|
|
865
|
+
lg: "size-3 ring-2",
|
|
866
|
+
xl: "size-3.5 ring-2"
|
|
867
|
+
};
|
|
868
|
+
var AvatarWithStatus = React16.forwardRef(({ status, size = "md", className, children, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "relative inline-flex shrink-0", children: [
|
|
869
|
+
/* @__PURE__ */ jsx(Avatar, { ref, size, className, ...props, children }),
|
|
870
|
+
status && /* @__PURE__ */ jsx(
|
|
871
|
+
"span",
|
|
872
|
+
{
|
|
873
|
+
className: cn(
|
|
874
|
+
"absolute bottom-0 right-0 rounded-full ring-background",
|
|
875
|
+
statusColorMap[status],
|
|
876
|
+
statusSizeMap[size]
|
|
877
|
+
)
|
|
878
|
+
}
|
|
879
|
+
)
|
|
880
|
+
] }));
|
|
881
|
+
AvatarWithStatus.displayName = "AvatarWithStatus";
|
|
882
|
+
var AccountMenuContent = React16.forwardRef(({ className, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
883
|
+
DropdownMenuContent,
|
|
884
|
+
{
|
|
885
|
+
ref,
|
|
886
|
+
sideOffset,
|
|
887
|
+
className: cn(
|
|
888
|
+
"w-72 overflow-hidden rounded-xl border border-border bg-card p-0 text-foreground shadow-elevated",
|
|
889
|
+
className
|
|
890
|
+
),
|
|
891
|
+
...props
|
|
892
|
+
}
|
|
893
|
+
));
|
|
894
|
+
AccountMenuContent.displayName = "AccountMenuContent";
|
|
895
|
+
var AccountMenuHeader = React16.forwardRef(
|
|
896
|
+
({ name, email, avatarSrc, avatarAlt, fallback, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
897
|
+
"div",
|
|
898
|
+
{
|
|
899
|
+
ref,
|
|
900
|
+
className: cn("flex flex-col items-center px-5 py-5 text-center", className),
|
|
901
|
+
...props,
|
|
902
|
+
children: [
|
|
903
|
+
/* @__PURE__ */ jsxs(Avatar, { size: "lg", className: "mb-3", children: [
|
|
904
|
+
avatarSrc && /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: avatarAlt ?? "" }),
|
|
905
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "bg-brand-primary text-primary-foreground", children: fallback })
|
|
906
|
+
] }),
|
|
907
|
+
/* @__PURE__ */ jsx("p", { className: "body font-medium leading-tight text-foreground", children: name }),
|
|
908
|
+
email && /* @__PURE__ */ jsx("p", { className: "caption text-muted-foreground", children: email })
|
|
909
|
+
]
|
|
910
|
+
}
|
|
911
|
+
)
|
|
912
|
+
);
|
|
913
|
+
AccountMenuHeader.displayName = "AccountMenuHeader";
|
|
914
|
+
var AccountMenuSection = React16.forwardRef(
|
|
915
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-2", className), ...props })
|
|
916
|
+
);
|
|
917
|
+
AccountMenuSection.displayName = "AccountMenuSection";
|
|
918
|
+
var AccountMenuItem = React16.forwardRef(({ icon, trailing, description, destructive, children, className, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
919
|
+
DropdownMenuItem,
|
|
920
|
+
{
|
|
921
|
+
ref,
|
|
922
|
+
className: cn(
|
|
923
|
+
"min-h-10 rounded-md px-2.5 py-2",
|
|
924
|
+
"group",
|
|
925
|
+
destructive ? "text-destructive focus:bg-destructive/10 focus:text-destructive" : "text-foreground focus:bg-muted focus:text-foreground",
|
|
926
|
+
"data-[disabled]:opacity-40",
|
|
927
|
+
"[&_svg:not([class*='size-'])]:size-4",
|
|
928
|
+
className
|
|
929
|
+
),
|
|
930
|
+
...props,
|
|
931
|
+
children: [
|
|
932
|
+
icon && /* @__PURE__ */ jsx("span", { className: "flex size-5 shrink-0 items-center justify-center", children: icon }),
|
|
933
|
+
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
934
|
+
/* @__PURE__ */ jsx("span", { className: "body truncate font-medium leading-tight", children }),
|
|
935
|
+
description && /* @__PURE__ */ jsx("span", { className: "caption truncate font-normal text-muted-foreground group-focus:text-muted-foreground", children: description })
|
|
936
|
+
] }),
|
|
937
|
+
trailing && /* @__PURE__ */ jsx("span", { className: "caption ml-3 shrink-0 text-muted-foreground", children: trailing })
|
|
938
|
+
]
|
|
939
|
+
}
|
|
940
|
+
));
|
|
941
|
+
AccountMenuItem.displayName = "AccountMenuItem";
|
|
942
|
+
var AccountMenuSeparator = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuSeparator, { ref, className: cn("m-0 bg-border", className), ...props }));
|
|
943
|
+
AccountMenuSeparator.displayName = "AccountMenuSeparator";
|
|
813
944
|
|
|
814
945
|
// src/lib/springs.ts
|
|
815
946
|
var spring = {
|
|
@@ -958,33 +1089,6 @@ function useProximityHover(containerRef, options = {}) {
|
|
|
958
1089
|
measureItems
|
|
959
1090
|
};
|
|
960
1091
|
}
|
|
961
|
-
var shapeMap = {
|
|
962
|
-
pill: {
|
|
963
|
-
item: "rounded-[20px]",
|
|
964
|
-
bg: "rounded-[20px]",
|
|
965
|
-
// +2px over `item` because the focus ring sits 2px outside the element
|
|
966
|
-
// (top/left -2, width/height +4); this keeps the corners concentric so a
|
|
967
|
-
// pill element gets a pill ring (matches the rounded-mode 8px→10px bump).
|
|
968
|
-
focusRing: "rounded-[22px]",
|
|
969
|
-
mergedBg: "rounded-2xl",
|
|
970
|
-
container: "rounded-3xl",
|
|
971
|
-
button: "rounded-[20px]",
|
|
972
|
-
input: "rounded-[20px]",
|
|
973
|
-
bgRadius: 20,
|
|
974
|
-
mergedRadius: 16
|
|
975
|
-
},
|
|
976
|
-
rounded: {
|
|
977
|
-
item: "rounded-lg",
|
|
978
|
-
bg: "rounded-lg",
|
|
979
|
-
focusRing: "rounded-[10px]",
|
|
980
|
-
container: "rounded-xl"}
|
|
981
|
-
};
|
|
982
|
-
var ShapeContext = createContext(null);
|
|
983
|
-
function useShape() {
|
|
984
|
-
const ctx = useContext(ShapeContext);
|
|
985
|
-
if (!ctx) return shapeMap.pill;
|
|
986
|
-
return ctx.classes;
|
|
987
|
-
}
|
|
988
1092
|
var AccordionGroupContext = createContext(null);
|
|
989
1093
|
function useAccordionGroup() {
|
|
990
1094
|
return useContext(AccordionGroupContext);
|
|
@@ -1691,7 +1795,7 @@ var Button = forwardRef(
|
|
|
1691
1795
|
className: "transition-[stroke-width] duration-80 group-hover:stroke-[2]"
|
|
1692
1796
|
}
|
|
1693
1797
|
),
|
|
1694
|
-
/* @__PURE__ */ jsx("span", { children }),
|
|
1798
|
+
LeadingIcon || TrailingIcon ? /* @__PURE__ */ jsx("span", { children }) : children,
|
|
1695
1799
|
TrailingIcon && /* @__PURE__ */ jsx(
|
|
1696
1800
|
TrailingIcon,
|
|
1697
1801
|
{
|
|
@@ -4616,13 +4720,6 @@ CheckboxItem.displayName = "CheckboxItem";
|
|
|
4616
4720
|
var CollapsibleRoot = Collapsible.Root;
|
|
4617
4721
|
var CollapsibleTrigger = Collapsible.Trigger;
|
|
4618
4722
|
var CollapsibleContent = Collapsible.Content;
|
|
4619
|
-
var SurfaceContext = createContext(1);
|
|
4620
|
-
function useSurface() {
|
|
4621
|
-
return useContext(SurfaceContext);
|
|
4622
|
-
}
|
|
4623
|
-
function SurfaceProvider({ value, children }) {
|
|
4624
|
-
return /* @__PURE__ */ jsx(SurfaceContext.Provider, { value: Math.max(1, Math.min(8, value)), children });
|
|
4625
|
-
}
|
|
4626
4723
|
|
|
4627
4724
|
// src/lib/surface-classes.ts
|
|
4628
4725
|
var SURFACE_BG = {
|
|
@@ -7846,6 +7943,7 @@ function ColorInput2({
|
|
|
7846
7943
|
disabled,
|
|
7847
7944
|
presets
|
|
7848
7945
|
}) {
|
|
7946
|
+
const shape3 = useShape();
|
|
7849
7947
|
const [hex, setHex] = React16.useState(value);
|
|
7850
7948
|
React16.useEffect(() => {
|
|
7851
7949
|
setHex(value);
|
|
@@ -7858,8 +7956,9 @@ function ColorInput2({
|
|
|
7858
7956
|
"div",
|
|
7859
7957
|
{
|
|
7860
7958
|
className: cn(
|
|
7861
|
-
"inline-flex h-8 items-stretch gap-0
|
|
7862
|
-
|
|
7959
|
+
"inline-flex h-8 items-stretch gap-0 overflow-hidden border border-border bg-background",
|
|
7960
|
+
shape3.input,
|
|
7961
|
+
"focus-within:border-brand-primary focus-within:ring-2 focus-within:ring-brand-primary/20",
|
|
7863
7962
|
motionClasses,
|
|
7864
7963
|
disabled && "opacity-50 pointer-events-none",
|
|
7865
7964
|
className
|
|
@@ -7918,6 +8017,7 @@ function Combobox({
|
|
|
7918
8017
|
emptyText = "No results found.",
|
|
7919
8018
|
className
|
|
7920
8019
|
}) {
|
|
8020
|
+
const shape3 = useShape();
|
|
7921
8021
|
const [open, setOpen] = React16.useState(false);
|
|
7922
8022
|
const [query, setQuery] = React16.useState("");
|
|
7923
8023
|
const [activeIndex, setActiveIndex] = React16.useState(-1);
|
|
@@ -7999,9 +8099,10 @@ function Combobox({
|
|
|
7999
8099
|
"aria-activedescendant": open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : void 0,
|
|
8000
8100
|
"aria-autocomplete": "list",
|
|
8001
8101
|
className: cn(
|
|
8002
|
-
"flex h-10 w-full
|
|
8102
|
+
"flex h-10 w-full border border-border bg-background pr-10 body text-foreground",
|
|
8103
|
+
shape3.input,
|
|
8003
8104
|
"placeholder:text-muted-foreground",
|
|
8004
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30
|
|
8105
|
+
"focus-visible:border-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30",
|
|
8005
8106
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
8006
8107
|
selectedOption?.avatar && !open ? "pl-8" : selectedOption?.statusColor && !open ? "pl-7" : "pl-3"
|
|
8007
8108
|
),
|
|
@@ -8797,13 +8898,15 @@ var TableCaption = forwardRef(
|
|
|
8797
8898
|
);
|
|
8798
8899
|
TableCaption.displayName = "TableCaption";
|
|
8799
8900
|
function Input({ className, type, ...props }) {
|
|
8901
|
+
const shape3 = useShape();
|
|
8800
8902
|
return /* @__PURE__ */ jsx(
|
|
8801
8903
|
"input",
|
|
8802
8904
|
{
|
|
8803
8905
|
type,
|
|
8804
8906
|
"data-slot": "input",
|
|
8805
8907
|
className: cn(
|
|
8806
|
-
"flex h-10 w-full
|
|
8908
|
+
"flex h-10 w-full px-3 py-1",
|
|
8909
|
+
shape3.input,
|
|
8807
8910
|
"body text-foreground placeholder:text-muted-foreground",
|
|
8808
8911
|
controlSurfaceClasses,
|
|
8809
8912
|
motionClasses,
|
|
@@ -10514,6 +10617,7 @@ var InputGroup = forwardRef(
|
|
|
10514
10617
|
}, ref) => {
|
|
10515
10618
|
const itemsRef = useRef(/* @__PURE__ */ new Map());
|
|
10516
10619
|
const [activeIndex, setActiveIndex] = useState(null);
|
|
10620
|
+
const shape3 = useShape();
|
|
10517
10621
|
const registerItem = useCallback((index, element) => {
|
|
10518
10622
|
if (element) {
|
|
10519
10623
|
itemsRef.current.set(index, element);
|
|
@@ -10546,7 +10650,8 @@ var InputGroup = forwardRef(
|
|
|
10546
10650
|
{
|
|
10547
10651
|
ref,
|
|
10548
10652
|
className: cn(
|
|
10549
|
-
"relative flex items-center gap-2
|
|
10653
|
+
"relative flex items-center gap-2 border bg-background px-3 py-2 text-[13px] transition-colors",
|
|
10654
|
+
shape3.input,
|
|
10550
10655
|
error ? "border-destructive/50" : "border-border",
|
|
10551
10656
|
disabled && "opacity-50",
|
|
10552
10657
|
pill && "rounded-full",
|
|
@@ -11333,6 +11438,7 @@ var InputNumber = React16.forwardRef(
|
|
|
11333
11438
|
onKeyDown,
|
|
11334
11439
|
...rest
|
|
11335
11440
|
}, ref) => {
|
|
11441
|
+
const shape3 = useShape();
|
|
11336
11442
|
const formatValue = React16.useCallback(
|
|
11337
11443
|
(next) => next === null ? mixedLabel : next.toFixed(precision),
|
|
11338
11444
|
[mixedLabel, precision]
|
|
@@ -11342,13 +11448,16 @@ var InputNumber = React16.forwardRef(
|
|
|
11342
11448
|
setText(formatValue(value));
|
|
11343
11449
|
}, [formatValue, value]);
|
|
11344
11450
|
const clamp = React16.useCallback((n) => Math.min(max, Math.max(min, n)), [min, max]);
|
|
11345
|
-
const parseAndClamp = React16.useCallback(
|
|
11346
|
-
|
|
11347
|
-
|
|
11348
|
-
|
|
11349
|
-
|
|
11350
|
-
|
|
11351
|
-
|
|
11451
|
+
const parseAndClamp = React16.useCallback(
|
|
11452
|
+
(raw) => {
|
|
11453
|
+
const n = parseFloat(raw);
|
|
11454
|
+
if (Number.isFinite(n)) {
|
|
11455
|
+
return clamp(n);
|
|
11456
|
+
}
|
|
11457
|
+
return null;
|
|
11458
|
+
},
|
|
11459
|
+
[clamp]
|
|
11460
|
+
);
|
|
11352
11461
|
const commit = (raw) => {
|
|
11353
11462
|
const next = parseAndClamp(raw);
|
|
11354
11463
|
if (next === null) {
|
|
@@ -11380,8 +11489,9 @@ var InputNumber = React16.forwardRef(
|
|
|
11380
11489
|
"div",
|
|
11381
11490
|
{
|
|
11382
11491
|
className: cn(
|
|
11383
|
-
"inline-flex h-8 items-stretch
|
|
11384
|
-
|
|
11492
|
+
"inline-flex h-8 items-stretch overflow-hidden border border-border bg-background",
|
|
11493
|
+
shape3.input,
|
|
11494
|
+
"focus-within:border-brand-primary focus-within:ring-2 focus-within:ring-brand-primary/20",
|
|
11385
11495
|
disabled && "opacity-50 pointer-events-none",
|
|
11386
11496
|
className
|
|
11387
11497
|
),
|
|
@@ -12045,31 +12155,35 @@ function MobileDrawer({
|
|
|
12045
12155
|
] });
|
|
12046
12156
|
}
|
|
12047
12157
|
MobileDrawer.displayName = "MobileDrawer";
|
|
12048
|
-
var NativeSelect = React16.forwardRef(({ className, children, ...props }, ref) =>
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12158
|
+
var NativeSelect = React16.forwardRef(({ className, children, ...props }, ref) => {
|
|
12159
|
+
const shape3 = useShape();
|
|
12160
|
+
return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
12161
|
+
/* @__PURE__ */ jsx(
|
|
12162
|
+
"select",
|
|
12163
|
+
{
|
|
12164
|
+
ref,
|
|
12165
|
+
className: cn(
|
|
12166
|
+
"peer h-10 w-full appearance-none border border-border bg-background pl-3 pr-8",
|
|
12167
|
+
shape3.input,
|
|
12168
|
+
"body text-foreground",
|
|
12169
|
+
"focus:border-border focus:outline-none focus:ring-2 focus:ring-ring/30",
|
|
12170
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
12171
|
+
"aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-destructive/20",
|
|
12172
|
+
className
|
|
12173
|
+
),
|
|
12174
|
+
...props,
|
|
12175
|
+
children
|
|
12176
|
+
}
|
|
12177
|
+
),
|
|
12178
|
+
/* @__PURE__ */ jsx(
|
|
12179
|
+
ChevronDown,
|
|
12180
|
+
{
|
|
12181
|
+
size: 14,
|
|
12182
|
+
className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground peer-disabled:opacity-50"
|
|
12183
|
+
}
|
|
12184
|
+
)
|
|
12185
|
+
] });
|
|
12186
|
+
});
|
|
12073
12187
|
NativeSelect.displayName = "NativeSelect";
|
|
12074
12188
|
var NativeSelectOption = React16.forwardRef((props, ref) => /* @__PURE__ */ jsx("option", { ref, ...props }));
|
|
12075
12189
|
NativeSelectOption.displayName = "NativeSelectOption";
|
|
@@ -14181,6 +14295,7 @@ function StatCard({
|
|
|
14181
14295
|
label,
|
|
14182
14296
|
title,
|
|
14183
14297
|
value,
|
|
14298
|
+
variant = "default",
|
|
14184
14299
|
trend,
|
|
14185
14300
|
icon,
|
|
14186
14301
|
children,
|
|
@@ -14201,11 +14316,12 @@ function StatCard({
|
|
|
14201
14316
|
down: TrendingDown,
|
|
14202
14317
|
neutral: Minus
|
|
14203
14318
|
};
|
|
14319
|
+
const surfaceClass = variant === "responsive" ? "min-w-0 border-border bg-transparent p-4 sm:rounded-xl sm:border sm:bg-card sm:p-5 sm:shadow-natural" : "min-w-0 rounded-xl border border-border bg-card p-4 shadow-natural sm:p-5";
|
|
14204
14320
|
return /* @__PURE__ */ jsxs(
|
|
14205
14321
|
"div",
|
|
14206
14322
|
{
|
|
14207
14323
|
className: cn(
|
|
14208
|
-
|
|
14324
|
+
surfaceClass,
|
|
14209
14325
|
containerClassName,
|
|
14210
14326
|
className
|
|
14211
14327
|
),
|
|
@@ -15343,12 +15459,14 @@ var TabsSubtlePanel = forwardRef(
|
|
|
15343
15459
|
);
|
|
15344
15460
|
TabsSubtlePanel.displayName = "TabsSubtlePanel";
|
|
15345
15461
|
function Textarea({ className, ...props }) {
|
|
15462
|
+
const shape3 = useShape();
|
|
15346
15463
|
return /* @__PURE__ */ jsx(
|
|
15347
15464
|
"textarea",
|
|
15348
15465
|
{
|
|
15349
15466
|
"data-slot": "textarea",
|
|
15350
15467
|
className: cn(
|
|
15351
|
-
"flex min-h-[80px] w-full
|
|
15468
|
+
"flex min-h-[80px] w-full px-3 py-2",
|
|
15469
|
+
shape3.input,
|
|
15352
15470
|
"body text-foreground placeholder:text-muted-foreground",
|
|
15353
15471
|
"resize-none",
|
|
15354
15472
|
controlSurfaceClasses,
|
|
@@ -15933,6 +16051,6 @@ function UsageBar({
|
|
|
15933
16051
|
] });
|
|
15934
16052
|
}
|
|
15935
16053
|
|
|
15936
|
-
export { Accordion, AccordionContent, AccordionGroup, AccordionItem, AccordionTrigger, AccountMenuContent, AccountMenuHeader, AccountMenuItem, AccountMenuSection, AccountMenuSeparator, ActionPanel, ActivityFeed, Alert, AlertDescription, AlertDialogRoot as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AskUserQuestions, AspectRatioRoot as AspectRatio, Avatar, AvatarFallback, AvatarImage, AvatarStack, AvatarWithStatus, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, CHART_COLORS, Calendar, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardMedia, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, CheckboxRoot as Checkbox, CheckboxGroup, CheckboxItem, CollapsibleRoot as Collapsible, CollapsibleContent, CollapsibleTrigger, ColorInput2 as ColorInput, ColorPicker, ColorPickerPopover, ColorPickerPortalContainer, ColorSwatch, ColorTile, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandSeparator, CommandShortcut, ContextMenuRoot as ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTransferControls, DatePicker, DescriptionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DrawerRoot as Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Dropdown, DropdownLabel, DropdownMenuRoot as DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSeparator, EmptyState, Field, FileDropzone, FileThumbnail, GridList, GridListAccentCard, GridListCard, HelpTooltip, HoverCardRoot as HoverCard, HoverCardContent, HoverCardTrigger, Input, InputCopy, InputField, InputGroup, InputMessage, InputNumber, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, MediaAssetCard, MediaObject, MenuItem, MenubarRoot as Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MobileDrawer, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavItem, NavMenu, NavigationMenuRoot as NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Notification, PageHeading, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PopoverRoot as Popover, PopoverClose, PopoverContent, PopoverTrigger, ProgressRoot as Progress, PropertyRow, RadioCards, RadioGroup, RadioGroupItem, RadioItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollAreaRoot as ScrollArea, SearchableTable, SectionHeading, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, SheetRoot as 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, SliderComfortable, SliderControl, Spinner, StackedList, StackedListItem, StatCard, StatCardGrid, StatCardSlot, StatusBadge, Steps, Switch, TabItem, TabPanel, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsSubtle, TabsSubtleItem, TabsSubtlePanel, TabsTrigger, Textarea, ThinkingIndicator, ThinkingStep, ThinkingStepDetails, ThinkingStepImage, ThinkingStepSource, ThinkingStepSources, ThinkingSteps, ThinkingStepsContent, ThinkingStepsHeader, TitledCard, Toaster, ToggleRoot as Toggle, ToggleGroupRoot as ToggleGroup, ToggleGroupItem, Tooltip3 as Tooltip, TooltipContent, TooltipPortalContainer, TooltipProvider, TooltipRoot, TooltipTrigger, UrlRedirectPrompt, UsageBar, badgeColors, badgeVariants, buildParsed, buttonVariants, cardVariants, cn, formatDate, formatFileSize, hasUrlHandleChanged, loadPdfjs, navigationMenuTriggerStyle, normalizeUrlHandle, parseColor, renderPdfFirstPage, spinnerVariants, statusBadgeVariantFor, statusLabel, toggleVariants, triggerVariants, urlResourcePath, useDropdown, useOptionalSidebar, useSidebar };
|
|
16054
|
+
export { Accordion, AccordionContent, AccordionGroup, AccordionItem, AccordionTrigger, AccountMenuContent, AccountMenuHeader, AccountMenuItem, AccountMenuSection, AccountMenuSeparator, ActionPanel, ActivityFeed, Alert, AlertDescription, AlertDialogRoot as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AskUserQuestions, AspectRatioRoot as AspectRatio, Avatar, AvatarFallback, AvatarImage, AvatarStack, AvatarWithStatus, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupItem, CHART_COLORS, Calendar, Callout, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardMedia, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatMessage, CheckboxRoot as Checkbox, CheckboxGroup, CheckboxItem, CollapsibleRoot as Collapsible, CollapsibleContent, CollapsibleTrigger, ColorInput2 as ColorInput, ColorPicker, ColorPickerPopover, ColorPickerPortalContainer, ColorSwatch, ColorTile, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandSeparator, CommandShortcut, ContextMenuRoot as ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataTable, DataTransferControls, DatePicker, DescriptionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DrawerRoot as Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Dropdown, DropdownLabel, DropdownMenuRoot as DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DropdownSeparator, EmptyState, Field, FileDropzone, FileThumbnail, GridList, GridListAccentCard, GridListCard, HelpTooltip, HoverCardRoot as HoverCard, HoverCardContent, HoverCardTrigger, IconProvider, Input, InputCopy, InputField, InputGroup, InputMessage, InputNumber, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Kbd, Label, MediaAssetCard, MediaObject, MenuItem, MenubarRoot as Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MobileDrawer, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavItem, NavMenu, NavigationMenuRoot as NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Notification, PageHeading, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PopoverRoot as Popover, PopoverClose, PopoverContent, PopoverTrigger, ProgressRoot as Progress, PropertyRow, RadioCards, RadioGroup, RadioGroupItem, RadioItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, SIDEBAR_COOKIE_MAX_AGE, SIDEBAR_COOKIE_NAME, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollAreaRoot as ScrollArea, SearchableTable, SectionHeading, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, ShapeProvider, SheetRoot as 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, SliderComfortable, SliderControl, Spinner, StackedList, StackedListItem, StatCard, StatCardGrid, StatCardSlot, StatusBadge, Steps, SurfaceProvider, Switch, TabItem, TabPanel, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsSubtle, TabsSubtleItem, TabsSubtlePanel, TabsTrigger, Textarea, ThinkingIndicator, ThinkingStep, ThinkingStepDetails, ThinkingStepImage, ThinkingStepSource, ThinkingStepSources, ThinkingSteps, ThinkingStepsContent, ThinkingStepsHeader, TitledCard, Toaster, ToggleRoot as Toggle, ToggleGroupRoot as ToggleGroup, ToggleGroupItem, Tooltip3 as Tooltip, TooltipContent, TooltipPortalContainer, TooltipProvider, TooltipRoot, TooltipTrigger, UrlRedirectPrompt, UsageBar, badgeColors, badgeVariants, buildParsed, buttonVariants, cardVariants, cn, formatDate, formatFileSize, hasUrlHandleChanged, iconLibraryLabels, iconLibraryOrder, loadPdfjs, navigationMenuTriggerStyle, normalizeUrlHandle, parseColor, renderPdfFirstPage, shapeMap, spinnerVariants, statusBadgeVariantFor, statusLabel, toggleVariants, triggerVariants, urlResourcePath, useDropdown, useIcon, useIconLibrary, useIcons, useOptionalSidebar, useShape, useShapeContext, useSidebar, useSurface };
|
|
15937
16055
|
//# sourceMappingURL=index.js.map
|
|
15938
16056
|
//# sourceMappingURL=index.js.map
|