@caqophony/ui 0.2.0 → 0.3.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.mts +273 -18
- package/dist/index.js +1430 -869
- package/package.json +1 -1
- package/styles.css +5 -0
package/dist/index.js
CHANGED
|
@@ -7,9 +7,157 @@ import {
|
|
|
7
7
|
// src/button.tsx
|
|
8
8
|
import { Slot } from "@radix-ui/react-slot";
|
|
9
9
|
import { cva } from "class-variance-authority";
|
|
10
|
-
import { Loader2 } from "lucide-react";
|
|
11
10
|
import * as React from "react";
|
|
12
|
-
|
|
11
|
+
|
|
12
|
+
// src/icon.tsx
|
|
13
|
+
import {
|
|
14
|
+
ArrowLeft,
|
|
15
|
+
ArrowRight,
|
|
16
|
+
Bell,
|
|
17
|
+
Calendar,
|
|
18
|
+
Check,
|
|
19
|
+
ChevronDown,
|
|
20
|
+
ChevronLeft,
|
|
21
|
+
ChevronRight,
|
|
22
|
+
ChevronUp,
|
|
23
|
+
CircleAlert,
|
|
24
|
+
CircleCheck,
|
|
25
|
+
ClipboardList,
|
|
26
|
+
Clock,
|
|
27
|
+
Database,
|
|
28
|
+
Download,
|
|
29
|
+
Ellipsis,
|
|
30
|
+
ExternalLink,
|
|
31
|
+
Eye,
|
|
32
|
+
EyeOff,
|
|
33
|
+
FileText,
|
|
34
|
+
Filter,
|
|
35
|
+
Folder,
|
|
36
|
+
Heart,
|
|
37
|
+
House,
|
|
38
|
+
Inbox,
|
|
39
|
+
Info,
|
|
40
|
+
LayoutGrid,
|
|
41
|
+
Link,
|
|
42
|
+
List,
|
|
43
|
+
LoaderCircle,
|
|
44
|
+
Lock,
|
|
45
|
+
LogOut,
|
|
46
|
+
Mail,
|
|
47
|
+
MapPin,
|
|
48
|
+
Menu,
|
|
49
|
+
Package,
|
|
50
|
+
Pencil,
|
|
51
|
+
Phone,
|
|
52
|
+
Plus,
|
|
53
|
+
RefreshCw,
|
|
54
|
+
Rocket,
|
|
55
|
+
Search,
|
|
56
|
+
Settings,
|
|
57
|
+
Star,
|
|
58
|
+
Tag,
|
|
59
|
+
Trash2,
|
|
60
|
+
TriangleAlert,
|
|
61
|
+
Upload,
|
|
62
|
+
User,
|
|
63
|
+
Users,
|
|
64
|
+
X
|
|
65
|
+
} from "lucide-react";
|
|
66
|
+
import { jsx } from "react/jsx-runtime";
|
|
67
|
+
var ICONS = {
|
|
68
|
+
"arrow-left": ArrowLeft,
|
|
69
|
+
"arrow-right": ArrowRight,
|
|
70
|
+
bell: Bell,
|
|
71
|
+
calendar: Calendar,
|
|
72
|
+
check: Check,
|
|
73
|
+
"chevron-down": ChevronDown,
|
|
74
|
+
"chevron-left": ChevronLeft,
|
|
75
|
+
"chevron-right": ChevronRight,
|
|
76
|
+
"chevron-up": ChevronUp,
|
|
77
|
+
"circle-alert": CircleAlert,
|
|
78
|
+
"circle-check": CircleCheck,
|
|
79
|
+
"clipboard-list": ClipboardList,
|
|
80
|
+
clock: Clock,
|
|
81
|
+
database: Database,
|
|
82
|
+
download: Download,
|
|
83
|
+
ellipsis: Ellipsis,
|
|
84
|
+
"external-link": ExternalLink,
|
|
85
|
+
eye: Eye,
|
|
86
|
+
"eye-off": EyeOff,
|
|
87
|
+
"file-text": FileText,
|
|
88
|
+
filter: Filter,
|
|
89
|
+
folder: Folder,
|
|
90
|
+
heart: Heart,
|
|
91
|
+
house: House,
|
|
92
|
+
inbox: Inbox,
|
|
93
|
+
info: Info,
|
|
94
|
+
"layout-grid": LayoutGrid,
|
|
95
|
+
link: Link,
|
|
96
|
+
list: List,
|
|
97
|
+
loader: LoaderCircle,
|
|
98
|
+
lock: Lock,
|
|
99
|
+
"log-out": LogOut,
|
|
100
|
+
mail: Mail,
|
|
101
|
+
"map-pin": MapPin,
|
|
102
|
+
menu: Menu,
|
|
103
|
+
package: Package,
|
|
104
|
+
pencil: Pencil,
|
|
105
|
+
phone: Phone,
|
|
106
|
+
plus: Plus,
|
|
107
|
+
"refresh-cw": RefreshCw,
|
|
108
|
+
rocket: Rocket,
|
|
109
|
+
search: Search,
|
|
110
|
+
settings: Settings,
|
|
111
|
+
star: Star,
|
|
112
|
+
tag: Tag,
|
|
113
|
+
trash: Trash2,
|
|
114
|
+
"triangle-alert": TriangleAlert,
|
|
115
|
+
upload: Upload,
|
|
116
|
+
user: User,
|
|
117
|
+
users: Users,
|
|
118
|
+
x: X
|
|
119
|
+
};
|
|
120
|
+
var ICON_SIZES = {
|
|
121
|
+
xs: "size-3",
|
|
122
|
+
sm: "size-4",
|
|
123
|
+
md: "size-5",
|
|
124
|
+
lg: "size-6",
|
|
125
|
+
xl: "size-8"
|
|
126
|
+
};
|
|
127
|
+
function Icon({ name, size, className }) {
|
|
128
|
+
const Glyph = ICONS[name];
|
|
129
|
+
return /* @__PURE__ */ jsx(Glyph, { className: cn(ICON_SIZES[size], className), "aria-hidden": "true" });
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/spinner.tsx
|
|
133
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
134
|
+
function Spinner(props) {
|
|
135
|
+
const { size = "md", className } = props;
|
|
136
|
+
const glyph = /* @__PURE__ */ jsx2(Icon, { name: "loader", size, className: "animate-spin" });
|
|
137
|
+
if (props.decorative)
|
|
138
|
+
return /* @__PURE__ */ jsx2(
|
|
139
|
+
"span",
|
|
140
|
+
{
|
|
141
|
+
"aria-hidden": "true",
|
|
142
|
+
className: cn("inline-flex shrink-0 text-current", className),
|
|
143
|
+
children: glyph
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
return /* @__PURE__ */ jsxs(
|
|
147
|
+
"span",
|
|
148
|
+
{
|
|
149
|
+
role: "status",
|
|
150
|
+
className: cn("inline-flex shrink-0 text-current", className),
|
|
151
|
+
children: [
|
|
152
|
+
glyph,
|
|
153
|
+
/* @__PURE__ */ jsx2("span", { className: "sr-only", children: props.label })
|
|
154
|
+
]
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// src/button.tsx
|
|
160
|
+
import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
13
161
|
var buttonVariants = cva(
|
|
14
162
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
15
163
|
{
|
|
@@ -49,7 +197,7 @@ var Button = React.forwardRef(
|
|
|
49
197
|
}, ref) => {
|
|
50
198
|
const Comp = asChild && !loading ? Slot : "button";
|
|
51
199
|
const isDisabled = disabled || loading;
|
|
52
|
-
return /* @__PURE__ */
|
|
200
|
+
return /* @__PURE__ */ jsx3(
|
|
53
201
|
Comp,
|
|
54
202
|
{
|
|
55
203
|
className: cn(buttonVariants({ variant, size, className })),
|
|
@@ -57,9 +205,9 @@ var Button = React.forwardRef(
|
|
|
57
205
|
disabled: isDisabled,
|
|
58
206
|
"aria-busy": loading,
|
|
59
207
|
...props,
|
|
60
|
-
children: loading ? /* @__PURE__ */
|
|
61
|
-
/* @__PURE__ */
|
|
62
|
-
/* @__PURE__ */
|
|
208
|
+
children: loading ? /* @__PURE__ */ jsxs2(Fragment, { children: [
|
|
209
|
+
/* @__PURE__ */ jsx3(Spinner, { decorative: true, size: "sm" }),
|
|
210
|
+
/* @__PURE__ */ jsx3("span", { children: loadingText || children })
|
|
63
211
|
] }) : children
|
|
64
212
|
}
|
|
65
213
|
);
|
|
@@ -69,18 +217,52 @@ Button.displayName = "Button";
|
|
|
69
217
|
|
|
70
218
|
// src/input.tsx
|
|
71
219
|
import * as React2 from "react";
|
|
72
|
-
|
|
220
|
+
|
|
221
|
+
// src/field.ts
|
|
222
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
223
|
+
var fieldVariants = cva2(
|
|
224
|
+
"w-full min-w-0 rounded-md border bg-background text-foreground ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
225
|
+
{
|
|
226
|
+
variants: {
|
|
227
|
+
size: {
|
|
228
|
+
sm: "px-2.5 py-1.5 text-sm",
|
|
229
|
+
md: "px-3 py-2 text-base md:text-sm",
|
|
230
|
+
lg: "px-4 py-2.5 text-base"
|
|
231
|
+
},
|
|
232
|
+
error: {
|
|
233
|
+
true: "border-intent-error focus-visible:ring-intent-error dark:border-intent-error",
|
|
234
|
+
false: "border-input focus-visible:ring-ring"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
defaultVariants: { size: "md", error: false }
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
var FIELD_HEIGHT = {
|
|
241
|
+
sm: "h-9",
|
|
242
|
+
md: "h-11",
|
|
243
|
+
lg: "h-12"
|
|
244
|
+
};
|
|
245
|
+
function fieldAria(error, errorMessageId) {
|
|
246
|
+
return {
|
|
247
|
+
"aria-invalid": error || void 0,
|
|
248
|
+
"aria-describedby": error && errorMessageId ? errorMessageId : void 0
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// src/input.tsx
|
|
253
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
73
254
|
var Input = React2.forwardRef(
|
|
74
|
-
({ className, type, error, errorMessageId, ...props }, ref) => {
|
|
75
|
-
return /* @__PURE__ */
|
|
255
|
+
({ className, type, error, errorMessageId, size = "md", ...props }, ref) => {
|
|
256
|
+
return /* @__PURE__ */ jsx4(
|
|
76
257
|
"input",
|
|
77
258
|
{
|
|
78
259
|
type,
|
|
79
|
-
|
|
80
|
-
"aria-describedby": error && errorMessageId ? errorMessageId : void 0,
|
|
260
|
+
...fieldAria(error, errorMessageId),
|
|
81
261
|
className: cn(
|
|
82
|
-
"flex
|
|
83
|
-
|
|
262
|
+
"flex",
|
|
263
|
+
FIELD_HEIGHT[size],
|
|
264
|
+
fieldVariants({ size, error: Boolean(error) }),
|
|
265
|
+
"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
|
|
84
266
|
className
|
|
85
267
|
),
|
|
86
268
|
ref,
|
|
@@ -93,8 +275,8 @@ Input.displayName = "Input";
|
|
|
93
275
|
|
|
94
276
|
// src/card.tsx
|
|
95
277
|
import * as React3 from "react";
|
|
96
|
-
import { jsx as
|
|
97
|
-
var Card = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
278
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
279
|
+
var Card = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
98
280
|
"div",
|
|
99
281
|
{
|
|
100
282
|
ref,
|
|
@@ -108,7 +290,7 @@ var Card = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ j
|
|
|
108
290
|
}
|
|
109
291
|
));
|
|
110
292
|
Card.displayName = "Card";
|
|
111
|
-
var CardHeader = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
293
|
+
var CardHeader = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
112
294
|
"div",
|
|
113
295
|
{
|
|
114
296
|
ref,
|
|
@@ -117,7 +299,7 @@ var CardHeader = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
117
299
|
}
|
|
118
300
|
));
|
|
119
301
|
CardHeader.displayName = "CardHeader";
|
|
120
|
-
var CardTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
302
|
+
var CardTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
121
303
|
"h3",
|
|
122
304
|
{
|
|
123
305
|
ref,
|
|
@@ -129,7 +311,7 @@ var CardTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
129
311
|
}
|
|
130
312
|
));
|
|
131
313
|
CardTitle.displayName = "CardTitle";
|
|
132
|
-
var CardDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
314
|
+
var CardDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
133
315
|
"p",
|
|
134
316
|
{
|
|
135
317
|
ref,
|
|
@@ -138,9 +320,9 @@ var CardDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
138
320
|
}
|
|
139
321
|
));
|
|
140
322
|
CardDescription.displayName = "CardDescription";
|
|
141
|
-
var CardContent = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
323
|
+
var CardContent = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5("div", { ref, className: cn("p-6 pt-0", className), ...props }));
|
|
142
324
|
CardContent.displayName = "CardContent";
|
|
143
|
-
var CardFooter = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
325
|
+
var CardFooter = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx5(
|
|
144
326
|
"div",
|
|
145
327
|
{
|
|
146
328
|
ref,
|
|
@@ -153,11 +335,11 @@ CardFooter.displayName = "CardFooter";
|
|
|
153
335
|
// src/switch.tsx
|
|
154
336
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
155
337
|
import * as React4 from "react";
|
|
156
|
-
import { jsx as
|
|
338
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
157
339
|
var Switch = React4.forwardRef(({ className, label, description, id, ...props }, ref) => {
|
|
158
340
|
const generatedId = React4.useId();
|
|
159
341
|
const switchId = id || generatedId;
|
|
160
|
-
const switchElement = /* @__PURE__ */
|
|
342
|
+
const switchElement = /* @__PURE__ */ jsx6(
|
|
161
343
|
SwitchPrimitives.Root,
|
|
162
344
|
{
|
|
163
345
|
className: cn(
|
|
@@ -171,7 +353,7 @@ var Switch = React4.forwardRef(({ className, label, description, id, ...props },
|
|
|
171
353
|
id: switchId,
|
|
172
354
|
ref,
|
|
173
355
|
...props,
|
|
174
|
-
children: /* @__PURE__ */
|
|
356
|
+
children: /* @__PURE__ */ jsx6(
|
|
175
357
|
SwitchPrimitives.Thumb,
|
|
176
358
|
{
|
|
177
359
|
className: cn(
|
|
@@ -186,10 +368,10 @@ var Switch = React4.forwardRef(({ className, label, description, id, ...props },
|
|
|
186
368
|
if (!label) {
|
|
187
369
|
return switchElement;
|
|
188
370
|
}
|
|
189
|
-
return /* @__PURE__ */
|
|
371
|
+
return /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3", children: [
|
|
190
372
|
switchElement,
|
|
191
|
-
/* @__PURE__ */
|
|
192
|
-
/* @__PURE__ */
|
|
373
|
+
/* @__PURE__ */ jsxs3("div", { className: "flex flex-col", children: [
|
|
374
|
+
/* @__PURE__ */ jsx6(
|
|
193
375
|
"label",
|
|
194
376
|
{
|
|
195
377
|
htmlFor: switchId,
|
|
@@ -197,7 +379,7 @@ var Switch = React4.forwardRef(({ className, label, description, id, ...props },
|
|
|
197
379
|
children: label
|
|
198
380
|
}
|
|
199
381
|
),
|
|
200
|
-
description && /* @__PURE__ */
|
|
382
|
+
description && /* @__PURE__ */ jsx6("span", { className: "text-xs text-muted-foreground dark:text-muted-foreground", children: description })
|
|
201
383
|
] })
|
|
202
384
|
] });
|
|
203
385
|
});
|
|
@@ -206,11 +388,11 @@ Switch.displayName = "Switch";
|
|
|
206
388
|
// src/tooltip.tsx
|
|
207
389
|
import * as React5 from "react";
|
|
208
390
|
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
209
|
-
import { jsx as
|
|
391
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
210
392
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
211
393
|
var Tooltip = TooltipPrimitive.Root;
|
|
212
394
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
213
|
-
var TooltipContent = React5.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */
|
|
395
|
+
var TooltipContent = React5.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx7(
|
|
214
396
|
TooltipPrimitive.Content,
|
|
215
397
|
{
|
|
216
398
|
ref,
|
|
@@ -224,8 +406,43 @@ var TooltipContent = React5.forwardRef(({ className, sideOffset = 4, ...props },
|
|
|
224
406
|
));
|
|
225
407
|
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
|
|
226
408
|
|
|
409
|
+
// src/label.tsx
|
|
410
|
+
import * as React6 from "react";
|
|
411
|
+
import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
412
|
+
var Label = React6.forwardRef(
|
|
413
|
+
({
|
|
414
|
+
className,
|
|
415
|
+
required = false,
|
|
416
|
+
optional = false,
|
|
417
|
+
disabled = false,
|
|
418
|
+
error = false,
|
|
419
|
+
size = "md",
|
|
420
|
+
children,
|
|
421
|
+
...props
|
|
422
|
+
}, ref) => /* @__PURE__ */ jsxs4(
|
|
423
|
+
"label",
|
|
424
|
+
{
|
|
425
|
+
ref,
|
|
426
|
+
"data-disabled": disabled || void 0,
|
|
427
|
+
className: cn(
|
|
428
|
+
"block font-medium",
|
|
429
|
+
size === "sm" ? "text-xs" : "text-sm",
|
|
430
|
+
error ? "text-intent-error-foreground" : disabled ? "cursor-not-allowed text-muted-foreground" : "text-foreground",
|
|
431
|
+
className
|
|
432
|
+
),
|
|
433
|
+
...props,
|
|
434
|
+
children: [
|
|
435
|
+
children,
|
|
436
|
+
required && /* @__PURE__ */ jsx8("span", { className: "text-intent-error-foreground ml-1", "aria-hidden": "true", children: "*" }),
|
|
437
|
+
optional && /* @__PURE__ */ jsx8("span", { className: "ml-1 font-normal text-muted-foreground", children: "(optional)" })
|
|
438
|
+
]
|
|
439
|
+
}
|
|
440
|
+
)
|
|
441
|
+
);
|
|
442
|
+
Label.displayName = "Label";
|
|
443
|
+
|
|
227
444
|
// src/form-field.tsx
|
|
228
|
-
import { jsx as
|
|
445
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
229
446
|
function FormField({
|
|
230
447
|
label,
|
|
231
448
|
name,
|
|
@@ -237,7 +454,7 @@ function FormField({
|
|
|
237
454
|
className
|
|
238
455
|
}) {
|
|
239
456
|
const hasError = Boolean(error);
|
|
240
|
-
return /* @__PURE__ */
|
|
457
|
+
return /* @__PURE__ */ jsxs5(
|
|
241
458
|
"div",
|
|
242
459
|
{
|
|
243
460
|
"aria-disabled": disabled || void 0,
|
|
@@ -247,29 +464,9 @@ function FormField({
|
|
|
247
464
|
className
|
|
248
465
|
),
|
|
249
466
|
children: [
|
|
250
|
-
/* @__PURE__ */
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
htmlFor: name,
|
|
254
|
-
className: cn(
|
|
255
|
-
"block text-sm font-medium",
|
|
256
|
-
hasError ? "text-intent-error-foreground dark:text-intent-error-foreground" : "text-foreground dark:text-foreground"
|
|
257
|
-
),
|
|
258
|
-
children: [
|
|
259
|
-
label,
|
|
260
|
-
required && /* @__PURE__ */ jsx6(
|
|
261
|
-
"span",
|
|
262
|
-
{
|
|
263
|
-
className: "text-intent-error-foreground ml-1",
|
|
264
|
-
"aria-hidden": "true",
|
|
265
|
-
children: "*"
|
|
266
|
-
}
|
|
267
|
-
)
|
|
268
|
-
]
|
|
269
|
-
}
|
|
270
|
-
),
|
|
271
|
-
description && !hasError && /* @__PURE__ */ jsx6("p", { className: "text-xs text-muted-foreground dark:text-muted-foreground", children: description }),
|
|
272
|
-
/* @__PURE__ */ jsx6(
|
|
467
|
+
/* @__PURE__ */ jsx9(Label, { htmlFor: name, required, error: hasError, children: label }),
|
|
468
|
+
description && !hasError && /* @__PURE__ */ jsx9("p", { className: "text-xs text-muted-foreground dark:text-muted-foreground", children: description }),
|
|
469
|
+
/* @__PURE__ */ jsx9(
|
|
273
470
|
"div",
|
|
274
471
|
{
|
|
275
472
|
className: cn(
|
|
@@ -281,15 +478,15 @@ function FormField({
|
|
|
281
478
|
children
|
|
282
479
|
}
|
|
283
480
|
),
|
|
284
|
-
hasError && /* @__PURE__ */
|
|
481
|
+
hasError && /* @__PURE__ */ jsxs5(
|
|
285
482
|
"p",
|
|
286
483
|
{
|
|
287
484
|
className: "text-intent-error-foreground dark:text-intent-error-foreground flex items-center gap-1 text-sm",
|
|
288
485
|
role: "alert",
|
|
289
486
|
"aria-live": "polite",
|
|
290
487
|
children: [
|
|
291
|
-
/* @__PURE__ */
|
|
292
|
-
/* @__PURE__ */
|
|
488
|
+
/* @__PURE__ */ jsx9(ErrorIcon, { className: "size-4 shrink-0" }),
|
|
489
|
+
/* @__PURE__ */ jsx9("span", { children: error })
|
|
293
490
|
]
|
|
294
491
|
}
|
|
295
492
|
)
|
|
@@ -298,7 +495,7 @@ function FormField({
|
|
|
298
495
|
);
|
|
299
496
|
}
|
|
300
497
|
function ErrorIcon({ className }) {
|
|
301
|
-
return /* @__PURE__ */
|
|
498
|
+
return /* @__PURE__ */ jsx9(
|
|
302
499
|
"svg",
|
|
303
500
|
{
|
|
304
501
|
className,
|
|
@@ -306,7 +503,7 @@ function ErrorIcon({ className }) {
|
|
|
306
503
|
viewBox: "0 0 24 24",
|
|
307
504
|
stroke: "currentColor",
|
|
308
505
|
strokeWidth: 2,
|
|
309
|
-
children: /* @__PURE__ */
|
|
506
|
+
children: /* @__PURE__ */ jsx9(
|
|
310
507
|
"path",
|
|
311
508
|
{
|
|
312
509
|
strokeLinecap: "round",
|
|
@@ -318,7 +515,7 @@ function ErrorIcon({ className }) {
|
|
|
318
515
|
);
|
|
319
516
|
}
|
|
320
517
|
function FormFieldGroup({ children, className }) {
|
|
321
|
-
return /* @__PURE__ */
|
|
518
|
+
return /* @__PURE__ */ jsx9("div", { className: cn("grid gap-4", "grid-cols-1 sm:grid-cols-2", className), children });
|
|
322
519
|
}
|
|
323
520
|
function FormSection({
|
|
324
521
|
title,
|
|
@@ -326,17 +523,17 @@ function FormSection({
|
|
|
326
523
|
children,
|
|
327
524
|
className
|
|
328
525
|
}) {
|
|
329
|
-
return /* @__PURE__ */
|
|
330
|
-
(title || description) && /* @__PURE__ */
|
|
331
|
-
title && /* @__PURE__ */
|
|
332
|
-
description && /* @__PURE__ */
|
|
526
|
+
return /* @__PURE__ */ jsxs5("fieldset", { className: cn("space-y-4", className), children: [
|
|
527
|
+
(title || description) && /* @__PURE__ */ jsxs5("div", { className: "space-y-1", children: [
|
|
528
|
+
title && /* @__PURE__ */ jsx9("legend", { className: "text-base font-medium text-foreground dark:text-foreground", children: title }),
|
|
529
|
+
description && /* @__PURE__ */ jsx9("p", { className: "text-sm text-muted-foreground dark:text-muted-foreground", children: description })
|
|
333
530
|
] }),
|
|
334
|
-
/* @__PURE__ */
|
|
531
|
+
/* @__PURE__ */ jsx9("div", { className: "space-y-4", children })
|
|
335
532
|
] });
|
|
336
533
|
}
|
|
337
534
|
function FormError({ error, className }) {
|
|
338
535
|
if (!error) return null;
|
|
339
|
-
return /* @__PURE__ */
|
|
536
|
+
return /* @__PURE__ */ jsx9(
|
|
340
537
|
"div",
|
|
341
538
|
{
|
|
342
539
|
className: cn(
|
|
@@ -345,16 +542,16 @@ function FormError({ error, className }) {
|
|
|
345
542
|
className
|
|
346
543
|
),
|
|
347
544
|
role: "alert",
|
|
348
|
-
children: /* @__PURE__ */
|
|
349
|
-
/* @__PURE__ */
|
|
350
|
-
/* @__PURE__ */
|
|
545
|
+
children: /* @__PURE__ */ jsxs5("div", { className: "flex gap-3", children: [
|
|
546
|
+
/* @__PURE__ */ jsx9(ErrorIcon, { className: "text-intent-error dark:text-intent-error size-5 shrink-0" }),
|
|
547
|
+
/* @__PURE__ */ jsx9("p", { className: "text-intent-error-foreground dark:text-intent-error-foreground text-sm", children: error })
|
|
351
548
|
] })
|
|
352
549
|
}
|
|
353
550
|
);
|
|
354
551
|
}
|
|
355
552
|
function FormSuccess({ message, className }) {
|
|
356
553
|
if (!message) return null;
|
|
357
|
-
return /* @__PURE__ */
|
|
554
|
+
return /* @__PURE__ */ jsx9(
|
|
358
555
|
"div",
|
|
359
556
|
{
|
|
360
557
|
className: cn(
|
|
@@ -363,15 +560,15 @@ function FormSuccess({ message, className }) {
|
|
|
363
560
|
className
|
|
364
561
|
),
|
|
365
562
|
role: "status",
|
|
366
|
-
children: /* @__PURE__ */
|
|
367
|
-
/* @__PURE__ */
|
|
368
|
-
/* @__PURE__ */
|
|
563
|
+
children: /* @__PURE__ */ jsxs5("div", { className: "flex gap-3", children: [
|
|
564
|
+
/* @__PURE__ */ jsx9(SuccessIcon, { className: "text-intent-success dark:text-intent-success size-5 shrink-0" }),
|
|
565
|
+
/* @__PURE__ */ jsx9("p", { className: "text-intent-success-foreground dark:text-intent-success-foreground text-sm", children: message })
|
|
369
566
|
] })
|
|
370
567
|
}
|
|
371
568
|
);
|
|
372
569
|
}
|
|
373
570
|
function SuccessIcon({ className }) {
|
|
374
|
-
return /* @__PURE__ */
|
|
571
|
+
return /* @__PURE__ */ jsx9(
|
|
375
572
|
"svg",
|
|
376
573
|
{
|
|
377
574
|
className,
|
|
@@ -379,7 +576,7 @@ function SuccessIcon({ className }) {
|
|
|
379
576
|
viewBox: "0 0 24 24",
|
|
380
577
|
stroke: "currentColor",
|
|
381
578
|
strokeWidth: 2,
|
|
382
|
-
children: /* @__PURE__ */
|
|
579
|
+
children: /* @__PURE__ */ jsx9(
|
|
383
580
|
"path",
|
|
384
581
|
{
|
|
385
582
|
strokeLinecap: "round",
|
|
@@ -392,7 +589,7 @@ function SuccessIcon({ className }) {
|
|
|
392
589
|
}
|
|
393
590
|
|
|
394
591
|
// src/global-error-content.tsx
|
|
395
|
-
import { jsx as
|
|
592
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
396
593
|
function GlobalErrorContent({
|
|
397
594
|
error,
|
|
398
595
|
reset,
|
|
@@ -408,7 +605,7 @@ function GlobalErrorContent({
|
|
|
408
605
|
window.location.href = "/";
|
|
409
606
|
}
|
|
410
607
|
};
|
|
411
|
-
return /* @__PURE__ */
|
|
608
|
+
return /* @__PURE__ */ jsx10(
|
|
412
609
|
"div",
|
|
413
610
|
{
|
|
414
611
|
style: {
|
|
@@ -422,7 +619,7 @@ function GlobalErrorContent({
|
|
|
422
619
|
// gossamer-ignore
|
|
423
620
|
fontFamily: "system-ui, sans-serif"
|
|
424
621
|
},
|
|
425
|
-
children: /* @__PURE__ */
|
|
622
|
+
children: /* @__PURE__ */ jsxs6(
|
|
426
623
|
"div",
|
|
427
624
|
{
|
|
428
625
|
style: {
|
|
@@ -431,7 +628,7 @@ function GlobalErrorContent({
|
|
|
431
628
|
textAlign: "center"
|
|
432
629
|
},
|
|
433
630
|
children: [
|
|
434
|
-
/* @__PURE__ */
|
|
631
|
+
/* @__PURE__ */ jsx10(
|
|
435
632
|
"div",
|
|
436
633
|
{
|
|
437
634
|
style: {
|
|
@@ -445,7 +642,7 @@ function GlobalErrorContent({
|
|
|
445
642
|
alignItems: "center",
|
|
446
643
|
justifyContent: "center"
|
|
447
644
|
},
|
|
448
|
-
children: /* @__PURE__ */
|
|
645
|
+
children: /* @__PURE__ */ jsxs6(
|
|
449
646
|
"svg",
|
|
450
647
|
{
|
|
451
648
|
width: "32",
|
|
@@ -457,15 +654,15 @@ function GlobalErrorContent({
|
|
|
457
654
|
strokeLinecap: "round",
|
|
458
655
|
strokeLinejoin: "round",
|
|
459
656
|
children: [
|
|
460
|
-
/* @__PURE__ */
|
|
461
|
-
/* @__PURE__ */
|
|
462
|
-
/* @__PURE__ */
|
|
657
|
+
/* @__PURE__ */ jsx10("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
|
|
658
|
+
/* @__PURE__ */ jsx10("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
|
|
659
|
+
/* @__PURE__ */ jsx10("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
|
|
463
660
|
]
|
|
464
661
|
}
|
|
465
662
|
)
|
|
466
663
|
}
|
|
467
664
|
),
|
|
468
|
-
/* @__PURE__ */
|
|
665
|
+
/* @__PURE__ */ jsx10(
|
|
469
666
|
"h1",
|
|
470
667
|
{
|
|
471
668
|
style: {
|
|
@@ -478,7 +675,7 @@ function GlobalErrorContent({
|
|
|
478
675
|
children: "Critical Application Error"
|
|
479
676
|
}
|
|
480
677
|
),
|
|
481
|
-
/* @__PURE__ */
|
|
678
|
+
/* @__PURE__ */ jsxs6(
|
|
482
679
|
"p",
|
|
483
680
|
{
|
|
484
681
|
style: {
|
|
@@ -494,7 +691,7 @@ function GlobalErrorContent({
|
|
|
494
691
|
]
|
|
495
692
|
}
|
|
496
693
|
),
|
|
497
|
-
error.digest && /* @__PURE__ */
|
|
694
|
+
error.digest && /* @__PURE__ */ jsxs6(
|
|
498
695
|
"div",
|
|
499
696
|
{
|
|
500
697
|
style: {
|
|
@@ -505,7 +702,7 @@ function GlobalErrorContent({
|
|
|
505
702
|
marginBottom: "1.5rem"
|
|
506
703
|
},
|
|
507
704
|
children: [
|
|
508
|
-
/* @__PURE__ */
|
|
705
|
+
/* @__PURE__ */ jsx10(
|
|
509
706
|
"p",
|
|
510
707
|
{
|
|
511
708
|
style: {
|
|
@@ -517,7 +714,7 @@ function GlobalErrorContent({
|
|
|
517
714
|
children: "Error Reference"
|
|
518
715
|
}
|
|
519
716
|
),
|
|
520
|
-
/* @__PURE__ */
|
|
717
|
+
/* @__PURE__ */ jsx10(
|
|
521
718
|
"code",
|
|
522
719
|
{
|
|
523
720
|
style: {
|
|
@@ -532,7 +729,7 @@ function GlobalErrorContent({
|
|
|
532
729
|
]
|
|
533
730
|
}
|
|
534
731
|
),
|
|
535
|
-
customActions ?? /* @__PURE__ */
|
|
732
|
+
customActions ?? /* @__PURE__ */ jsxs6(
|
|
536
733
|
"div",
|
|
537
734
|
{
|
|
538
735
|
style: {
|
|
@@ -541,7 +738,7 @@ function GlobalErrorContent({
|
|
|
541
738
|
gap: "0.75rem"
|
|
542
739
|
},
|
|
543
740
|
children: [
|
|
544
|
-
/* @__PURE__ */
|
|
741
|
+
/* @__PURE__ */ jsxs6(
|
|
545
742
|
"button",
|
|
546
743
|
{
|
|
547
744
|
onClick: handleRetry,
|
|
@@ -562,7 +759,7 @@ function GlobalErrorContent({
|
|
|
562
759
|
gap: "0.5rem"
|
|
563
760
|
},
|
|
564
761
|
children: [
|
|
565
|
-
/* @__PURE__ */
|
|
762
|
+
/* @__PURE__ */ jsx10(
|
|
566
763
|
"svg",
|
|
567
764
|
{
|
|
568
765
|
width: "16",
|
|
@@ -571,14 +768,14 @@ function GlobalErrorContent({
|
|
|
571
768
|
fill: "none",
|
|
572
769
|
stroke: "currentColor",
|
|
573
770
|
strokeWidth: "2",
|
|
574
|
-
children: /* @__PURE__ */
|
|
771
|
+
children: /* @__PURE__ */ jsx10("path", { d: "M23 4v6h-6M1 20v-6h6M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15" })
|
|
575
772
|
}
|
|
576
773
|
),
|
|
577
774
|
"Try Again"
|
|
578
775
|
]
|
|
579
776
|
}
|
|
580
777
|
),
|
|
581
|
-
/* @__PURE__ */
|
|
778
|
+
/* @__PURE__ */ jsxs6(
|
|
582
779
|
"button",
|
|
583
780
|
{
|
|
584
781
|
onClick: handleGoHome,
|
|
@@ -600,7 +797,7 @@ function GlobalErrorContent({
|
|
|
600
797
|
gap: "0.5rem"
|
|
601
798
|
},
|
|
602
799
|
children: [
|
|
603
|
-
/* @__PURE__ */
|
|
800
|
+
/* @__PURE__ */ jsxs6(
|
|
604
801
|
"svg",
|
|
605
802
|
{
|
|
606
803
|
width: "16",
|
|
@@ -610,8 +807,8 @@ function GlobalErrorContent({
|
|
|
610
807
|
stroke: "currentColor",
|
|
611
808
|
strokeWidth: "2",
|
|
612
809
|
children: [
|
|
613
|
-
/* @__PURE__ */
|
|
614
|
-
/* @__PURE__ */
|
|
810
|
+
/* @__PURE__ */ jsx10("path", { d: "M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
|
|
811
|
+
/* @__PURE__ */ jsx10("polyline", { points: "9,22 9,12 15,12 15,22" })
|
|
615
812
|
]
|
|
616
813
|
}
|
|
617
814
|
),
|
|
@@ -622,7 +819,7 @@ function GlobalErrorContent({
|
|
|
622
819
|
]
|
|
623
820
|
}
|
|
624
821
|
),
|
|
625
|
-
/* @__PURE__ */
|
|
822
|
+
/* @__PURE__ */ jsxs6(
|
|
626
823
|
"p",
|
|
627
824
|
{
|
|
628
825
|
style: {
|
|
@@ -634,7 +831,7 @@ function GlobalErrorContent({
|
|
|
634
831
|
children: [
|
|
635
832
|
"If this problem persists, please",
|
|
636
833
|
" ",
|
|
637
|
-
supportEmail ? /* @__PURE__ */
|
|
834
|
+
supportEmail ? /* @__PURE__ */ jsx10(
|
|
638
835
|
"a",
|
|
639
836
|
{
|
|
640
837
|
href: `mailto:${supportEmail}`,
|
|
@@ -664,139 +861,17 @@ import {
|
|
|
664
861
|
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight2 } from "lucide-react";
|
|
665
862
|
|
|
666
863
|
// src/nav-drawer.tsx
|
|
667
|
-
import * as
|
|
668
|
-
|
|
669
|
-
// src/icon.tsx
|
|
670
|
-
import {
|
|
671
|
-
ArrowLeft,
|
|
672
|
-
ArrowRight,
|
|
673
|
-
Bell,
|
|
674
|
-
Calendar,
|
|
675
|
-
Check,
|
|
676
|
-
ChevronDown,
|
|
677
|
-
ChevronLeft,
|
|
678
|
-
ChevronRight,
|
|
679
|
-
ChevronUp,
|
|
680
|
-
CircleAlert,
|
|
681
|
-
CircleCheck,
|
|
682
|
-
ClipboardList,
|
|
683
|
-
Clock,
|
|
684
|
-
Database,
|
|
685
|
-
Download,
|
|
686
|
-
Ellipsis,
|
|
687
|
-
ExternalLink,
|
|
688
|
-
Eye,
|
|
689
|
-
EyeOff,
|
|
690
|
-
FileText,
|
|
691
|
-
Filter,
|
|
692
|
-
Folder,
|
|
693
|
-
Heart,
|
|
694
|
-
House,
|
|
695
|
-
Inbox,
|
|
696
|
-
Info,
|
|
697
|
-
LayoutGrid,
|
|
698
|
-
Link,
|
|
699
|
-
List,
|
|
700
|
-
LoaderCircle,
|
|
701
|
-
Lock,
|
|
702
|
-
LogOut,
|
|
703
|
-
Mail,
|
|
704
|
-
MapPin,
|
|
705
|
-
Menu,
|
|
706
|
-
Package,
|
|
707
|
-
Pencil,
|
|
708
|
-
Phone,
|
|
709
|
-
Plus,
|
|
710
|
-
RefreshCw,
|
|
711
|
-
Rocket,
|
|
712
|
-
Search,
|
|
713
|
-
Settings,
|
|
714
|
-
Star,
|
|
715
|
-
Tag,
|
|
716
|
-
Trash2,
|
|
717
|
-
TriangleAlert,
|
|
718
|
-
Upload,
|
|
719
|
-
User,
|
|
720
|
-
Users,
|
|
721
|
-
X
|
|
722
|
-
} from "lucide-react";
|
|
723
|
-
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
724
|
-
var ICONS = {
|
|
725
|
-
"arrow-left": ArrowLeft,
|
|
726
|
-
"arrow-right": ArrowRight,
|
|
727
|
-
bell: Bell,
|
|
728
|
-
calendar: Calendar,
|
|
729
|
-
check: Check,
|
|
730
|
-
"chevron-down": ChevronDown,
|
|
731
|
-
"chevron-left": ChevronLeft,
|
|
732
|
-
"chevron-right": ChevronRight,
|
|
733
|
-
"chevron-up": ChevronUp,
|
|
734
|
-
"circle-alert": CircleAlert,
|
|
735
|
-
"circle-check": CircleCheck,
|
|
736
|
-
"clipboard-list": ClipboardList,
|
|
737
|
-
clock: Clock,
|
|
738
|
-
database: Database,
|
|
739
|
-
download: Download,
|
|
740
|
-
ellipsis: Ellipsis,
|
|
741
|
-
"external-link": ExternalLink,
|
|
742
|
-
eye: Eye,
|
|
743
|
-
"eye-off": EyeOff,
|
|
744
|
-
"file-text": FileText,
|
|
745
|
-
filter: Filter,
|
|
746
|
-
folder: Folder,
|
|
747
|
-
heart: Heart,
|
|
748
|
-
house: House,
|
|
749
|
-
inbox: Inbox,
|
|
750
|
-
info: Info,
|
|
751
|
-
"layout-grid": LayoutGrid,
|
|
752
|
-
link: Link,
|
|
753
|
-
list: List,
|
|
754
|
-
loader: LoaderCircle,
|
|
755
|
-
lock: Lock,
|
|
756
|
-
"log-out": LogOut,
|
|
757
|
-
mail: Mail,
|
|
758
|
-
"map-pin": MapPin,
|
|
759
|
-
menu: Menu,
|
|
760
|
-
package: Package,
|
|
761
|
-
pencil: Pencil,
|
|
762
|
-
phone: Phone,
|
|
763
|
-
plus: Plus,
|
|
764
|
-
"refresh-cw": RefreshCw,
|
|
765
|
-
rocket: Rocket,
|
|
766
|
-
search: Search,
|
|
767
|
-
settings: Settings,
|
|
768
|
-
star: Star,
|
|
769
|
-
tag: Tag,
|
|
770
|
-
trash: Trash2,
|
|
771
|
-
"triangle-alert": TriangleAlert,
|
|
772
|
-
upload: Upload,
|
|
773
|
-
user: User,
|
|
774
|
-
users: Users,
|
|
775
|
-
x: X
|
|
776
|
-
};
|
|
777
|
-
var ICON_SIZES = {
|
|
778
|
-
xs: "size-3",
|
|
779
|
-
sm: "size-4",
|
|
780
|
-
md: "size-5",
|
|
781
|
-
lg: "size-6",
|
|
782
|
-
xl: "size-8"
|
|
783
|
-
};
|
|
784
|
-
function Icon({ name, size, className }) {
|
|
785
|
-
const Glyph = ICONS[name];
|
|
786
|
-
return /* @__PURE__ */ jsx8(Glyph, { className: cn(ICON_SIZES[size], className), "aria-hidden": "true" });
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
// src/nav-drawer.tsx
|
|
790
|
-
import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
864
|
+
import * as React7 from "react";
|
|
865
|
+
import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
791
866
|
function NavDrawer({
|
|
792
867
|
label,
|
|
793
868
|
side,
|
|
794
869
|
defaultOpen,
|
|
795
870
|
children
|
|
796
871
|
}) {
|
|
797
|
-
const [open, setOpen] =
|
|
798
|
-
const id =
|
|
799
|
-
|
|
872
|
+
const [open, setOpen] = React7.useState(defaultOpen);
|
|
873
|
+
const id = React7.useId();
|
|
874
|
+
React7.useEffect(() => {
|
|
800
875
|
if (!open) return;
|
|
801
876
|
const onKey = (e) => {
|
|
802
877
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -805,8 +880,8 @@ function NavDrawer({
|
|
|
805
880
|
return () => document.removeEventListener("keydown", onKey);
|
|
806
881
|
}, [open]);
|
|
807
882
|
const left = side === "left";
|
|
808
|
-
return /* @__PURE__ */
|
|
809
|
-
/* @__PURE__ */
|
|
883
|
+
return /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
884
|
+
/* @__PURE__ */ jsx11(
|
|
810
885
|
Button,
|
|
811
886
|
{
|
|
812
887
|
variant: "ghost",
|
|
@@ -815,11 +890,11 @@ function NavDrawer({
|
|
|
815
890
|
"aria-expanded": open,
|
|
816
891
|
"aria-controls": open ? id : void 0,
|
|
817
892
|
onClick: () => setOpen(!open),
|
|
818
|
-
children: /* @__PURE__ */
|
|
893
|
+
children: /* @__PURE__ */ jsx11(Icon, { name: "menu", size: "sm" })
|
|
819
894
|
}
|
|
820
895
|
),
|
|
821
|
-
open && /* @__PURE__ */
|
|
822
|
-
/* @__PURE__ */
|
|
896
|
+
open && /* @__PURE__ */ jsxs7("div", { className: "z-overlay fixed inset-0", children: [
|
|
897
|
+
/* @__PURE__ */ jsx11(
|
|
823
898
|
"div",
|
|
824
899
|
{
|
|
825
900
|
"aria-hidden": "true",
|
|
@@ -827,7 +902,7 @@ function NavDrawer({
|
|
|
827
902
|
onClick: () => setOpen(false)
|
|
828
903
|
}
|
|
829
904
|
),
|
|
830
|
-
/* @__PURE__ */
|
|
905
|
+
/* @__PURE__ */ jsxs7(
|
|
831
906
|
"aside",
|
|
832
907
|
{
|
|
833
908
|
id,
|
|
@@ -838,21 +913,21 @@ function NavDrawer({
|
|
|
838
913
|
"border-border"
|
|
839
914
|
),
|
|
840
915
|
children: [
|
|
841
|
-
/* @__PURE__ */
|
|
916
|
+
/* @__PURE__ */ jsx11(
|
|
842
917
|
"div",
|
|
843
918
|
{
|
|
844
919
|
className: cn(
|
|
845
920
|
"flex px-2 py-2",
|
|
846
921
|
left ? "justify-end" : "justify-start"
|
|
847
922
|
),
|
|
848
|
-
children: /* @__PURE__ */
|
|
923
|
+
children: /* @__PURE__ */ jsx11(
|
|
849
924
|
Button,
|
|
850
925
|
{
|
|
851
926
|
variant: "ghost",
|
|
852
927
|
size: "icon",
|
|
853
928
|
"aria-label": "Close",
|
|
854
929
|
onClick: () => setOpen(false),
|
|
855
|
-
children: /* @__PURE__ */
|
|
930
|
+
children: /* @__PURE__ */ jsx11(Icon, { name: "x", size: "sm" })
|
|
856
931
|
}
|
|
857
932
|
)
|
|
858
933
|
}
|
|
@@ -866,7 +941,7 @@ function NavDrawer({
|
|
|
866
941
|
}
|
|
867
942
|
|
|
868
943
|
// src/collapsible-sidebar.tsx
|
|
869
|
-
import { jsx as
|
|
944
|
+
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
870
945
|
var SidebarContext = createContext(null);
|
|
871
946
|
function useSidebar() {
|
|
872
947
|
const context = useContext(SidebarContext);
|
|
@@ -881,7 +956,7 @@ var DefaultLink = ({
|
|
|
881
956
|
href,
|
|
882
957
|
className,
|
|
883
958
|
children
|
|
884
|
-
}) => /* @__PURE__ */
|
|
959
|
+
}) => /* @__PURE__ */ jsx12("a", { href: String(href), className, children });
|
|
885
960
|
function CollapsibleSidebar({
|
|
886
961
|
storageKey = "sidebar-collapsed",
|
|
887
962
|
defaultCollapsed = false,
|
|
@@ -915,7 +990,7 @@ function CollapsibleSidebar({
|
|
|
915
990
|
const renderItem = (item, collapsed) => {
|
|
916
991
|
const Icon2 = item.icon;
|
|
917
992
|
const active = isActive?.(item.href) ?? false;
|
|
918
|
-
const linkContent = /* @__PURE__ */
|
|
993
|
+
const linkContent = /* @__PURE__ */ jsxs8(
|
|
919
994
|
LinkComponent,
|
|
920
995
|
{
|
|
921
996
|
href: item.href,
|
|
@@ -925,10 +1000,10 @@ function CollapsibleSidebar({
|
|
|
925
1000
|
active ? "bg-primary-solid text-primary-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
926
1001
|
),
|
|
927
1002
|
children: [
|
|
928
|
-
/* @__PURE__ */
|
|
929
|
-
!collapsed && /* @__PURE__ */
|
|
930
|
-
/* @__PURE__ */
|
|
931
|
-
item.description && /* @__PURE__ */
|
|
1003
|
+
/* @__PURE__ */ jsx12(Icon2, { className: cn("size-5 shrink-0", collapsed && "size-5") }),
|
|
1004
|
+
!collapsed && /* @__PURE__ */ jsxs8("div", { className: "min-w-0 flex-1 overflow-hidden", children: [
|
|
1005
|
+
/* @__PURE__ */ jsx12("div", { className: "truncate text-sm font-medium", children: item.name }),
|
|
1006
|
+
item.description && /* @__PURE__ */ jsx12(
|
|
932
1007
|
"div",
|
|
933
1008
|
{
|
|
934
1009
|
className: cn(
|
|
@@ -945,32 +1020,32 @@ function CollapsibleSidebar({
|
|
|
945
1020
|
}
|
|
946
1021
|
);
|
|
947
1022
|
if (collapsed) {
|
|
948
|
-
return /* @__PURE__ */
|
|
949
|
-
/* @__PURE__ */
|
|
950
|
-
/* @__PURE__ */
|
|
951
|
-
/* @__PURE__ */
|
|
952
|
-
item.description && /* @__PURE__ */
|
|
1023
|
+
return /* @__PURE__ */ jsxs8(Tooltip, { children: [
|
|
1024
|
+
/* @__PURE__ */ jsx12(TooltipTrigger, { asChild: true, children: linkContent }),
|
|
1025
|
+
/* @__PURE__ */ jsxs8(TooltipContent, { side: "right", className: "flex flex-col", children: [
|
|
1026
|
+
/* @__PURE__ */ jsx12("span", { className: "font-medium", children: item.name }),
|
|
1027
|
+
item.description && /* @__PURE__ */ jsx12("span", { className: "text-xs text-muted-foreground", children: item.description })
|
|
953
1028
|
] })
|
|
954
1029
|
] }, item.href);
|
|
955
1030
|
}
|
|
956
|
-
return /* @__PURE__ */
|
|
1031
|
+
return /* @__PURE__ */ jsx12("div", { children: linkContent }, item.href);
|
|
957
1032
|
};
|
|
958
|
-
return /* @__PURE__ */
|
|
959
|
-
/* @__PURE__ */
|
|
1033
|
+
return /* @__PURE__ */ jsx12(SidebarContext.Provider, { value: { isCollapsed, toggle }, children: /* @__PURE__ */ jsxs8(TooltipProvider, { delayDuration: 100, children: [
|
|
1034
|
+
/* @__PURE__ */ jsx12(
|
|
960
1035
|
"div",
|
|
961
1036
|
{
|
|
962
1037
|
className: cn(
|
|
963
1038
|
"flex min-h-screen w-14 flex-shrink-0 flex-col items-center border-r border-border bg-card py-2 lg:hidden",
|
|
964
1039
|
className
|
|
965
1040
|
),
|
|
966
|
-
children: /* @__PURE__ */
|
|
967
|
-
header && /* @__PURE__ */
|
|
968
|
-
/* @__PURE__ */
|
|
969
|
-
footer && /* @__PURE__ */
|
|
1041
|
+
children: /* @__PURE__ */ jsxs8(NavDrawer, { label: navLabel, side: "left", defaultOpen: defaultNavOpen, children: [
|
|
1042
|
+
header && /* @__PURE__ */ jsx12("div", { className: "border-b border-border px-4 pb-4", children: header }),
|
|
1043
|
+
/* @__PURE__ */ jsx12("div", { className: "flex-1 space-y-1 p-2", children: items.map((item) => renderItem(item, false)) }),
|
|
1044
|
+
footer && /* @__PURE__ */ jsx12("div", { className: "mt-auto border-t border-border p-2", children: footer })
|
|
970
1045
|
] })
|
|
971
1046
|
}
|
|
972
1047
|
),
|
|
973
|
-
/* @__PURE__ */
|
|
1048
|
+
/* @__PURE__ */ jsxs8(
|
|
974
1049
|
"nav",
|
|
975
1050
|
{
|
|
976
1051
|
className: cn(
|
|
@@ -979,7 +1054,7 @@ function CollapsibleSidebar({
|
|
|
979
1054
|
),
|
|
980
1055
|
style: { width: isCollapsed ? collapsedWidth : expandedWidth },
|
|
981
1056
|
children: [
|
|
982
|
-
/* @__PURE__ */
|
|
1057
|
+
/* @__PURE__ */ jsx12(
|
|
983
1058
|
"button",
|
|
984
1059
|
{
|
|
985
1060
|
onClick: toggle,
|
|
@@ -987,10 +1062,10 @@ function CollapsibleSidebar({
|
|
|
987
1062
|
"absolute -right-3 top-6 z-10 flex size-6 items-center justify-center rounded-full border border-border bg-card shadow-sm transition-colors hover:bg-muted"
|
|
988
1063
|
),
|
|
989
1064
|
"aria-label": isCollapsed ? "Expand sidebar" : "Collapse sidebar",
|
|
990
|
-
children: isCollapsed ? /* @__PURE__ */
|
|
1065
|
+
children: isCollapsed ? /* @__PURE__ */ jsx12(ChevronRight2, { className: "size-4" }) : /* @__PURE__ */ jsx12(ChevronLeft2, { className: "size-4" })
|
|
991
1066
|
}
|
|
992
1067
|
),
|
|
993
|
-
(header || collapsedHeader) && /* @__PURE__ */
|
|
1068
|
+
(header || collapsedHeader) && /* @__PURE__ */ jsx12(
|
|
994
1069
|
"div",
|
|
995
1070
|
{
|
|
996
1071
|
className: cn(
|
|
@@ -1000,8 +1075,8 @@ function CollapsibleSidebar({
|
|
|
1000
1075
|
children: isCollapsed ? collapsedHeader || null : header
|
|
1001
1076
|
}
|
|
1002
1077
|
),
|
|
1003
|
-
/* @__PURE__ */
|
|
1004
|
-
(footer || collapsedFooter) && /* @__PURE__ */
|
|
1078
|
+
/* @__PURE__ */ jsx12("div", { className: "flex-1 space-y-1 overflow-y-auto p-2", children: items.map((item) => renderItem(item, isCollapsed)) }),
|
|
1079
|
+
(footer || collapsedFooter) && /* @__PURE__ */ jsx12("div", { className: "mt-auto border-t border-border p-2", children: isCollapsed ? collapsedFooter || null : footer })
|
|
1005
1080
|
]
|
|
1006
1081
|
}
|
|
1007
1082
|
)
|
|
@@ -1011,7 +1086,7 @@ function CollapsibleSidebar({
|
|
|
1011
1086
|
// src/accordion.tsx
|
|
1012
1087
|
import { createContext as createContext2, useContext as useContext2, useState as useState3, useCallback as useCallback2, useId as useId3 } from "react";
|
|
1013
1088
|
import { ChevronDown as ChevronDown2 } from "lucide-react";
|
|
1014
|
-
import { jsx as
|
|
1089
|
+
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1015
1090
|
var AccordionContext = createContext2(null);
|
|
1016
1091
|
var AccordionItemContext = createContext2(
|
|
1017
1092
|
null
|
|
@@ -1053,7 +1128,7 @@ function AccordionSingle({
|
|
|
1053
1128
|
},
|
|
1054
1129
|
[value, collapsible, isControlled, onValueChange]
|
|
1055
1130
|
);
|
|
1056
|
-
return /* @__PURE__ */
|
|
1131
|
+
return /* @__PURE__ */ jsx13(
|
|
1057
1132
|
AccordionContext.Provider,
|
|
1058
1133
|
{
|
|
1059
1134
|
value: {
|
|
@@ -1061,7 +1136,7 @@ function AccordionSingle({
|
|
|
1061
1136
|
value,
|
|
1062
1137
|
onValueChange: handleValueChange
|
|
1063
1138
|
},
|
|
1064
|
-
children: /* @__PURE__ */
|
|
1139
|
+
children: /* @__PURE__ */ jsx13("div", { className: cn("space-y-2", className), "data-accordion-root": "", children })
|
|
1065
1140
|
}
|
|
1066
1141
|
);
|
|
1067
1142
|
}
|
|
@@ -1085,7 +1160,7 @@ function AccordionMultiple({
|
|
|
1085
1160
|
},
|
|
1086
1161
|
[value, isControlled, onValueChange]
|
|
1087
1162
|
);
|
|
1088
|
-
return /* @__PURE__ */
|
|
1163
|
+
return /* @__PURE__ */ jsx13(
|
|
1089
1164
|
AccordionContext.Provider,
|
|
1090
1165
|
{
|
|
1091
1166
|
value: {
|
|
@@ -1093,15 +1168,15 @@ function AccordionMultiple({
|
|
|
1093
1168
|
value,
|
|
1094
1169
|
onValueChange: handleValueChange
|
|
1095
1170
|
},
|
|
1096
|
-
children: /* @__PURE__ */
|
|
1171
|
+
children: /* @__PURE__ */ jsx13("div", { className: cn("space-y-2", className), "data-accordion-root": "", children })
|
|
1097
1172
|
}
|
|
1098
1173
|
);
|
|
1099
1174
|
}
|
|
1100
1175
|
function Accordion(props) {
|
|
1101
1176
|
if (props.type === "multiple") {
|
|
1102
|
-
return /* @__PURE__ */
|
|
1177
|
+
return /* @__PURE__ */ jsx13(AccordionMultiple, { ...props });
|
|
1103
1178
|
}
|
|
1104
|
-
return /* @__PURE__ */
|
|
1179
|
+
return /* @__PURE__ */ jsx13(AccordionSingle, { ...props });
|
|
1105
1180
|
}
|
|
1106
1181
|
function AccordionItem({
|
|
1107
1182
|
value,
|
|
@@ -1115,11 +1190,11 @@ function AccordionItem({
|
|
|
1115
1190
|
const triggerId = `accordion-trigger-${uniqueId}`;
|
|
1116
1191
|
const contentId = `accordion-content-${uniqueId}`;
|
|
1117
1192
|
const isOpen = type === "single" ? accordionValue === value : accordionValue.includes(value);
|
|
1118
|
-
return /* @__PURE__ */
|
|
1193
|
+
return /* @__PURE__ */ jsx13(
|
|
1119
1194
|
AccordionItemContext.Provider,
|
|
1120
1195
|
{
|
|
1121
1196
|
value: { value, isOpen, triggerId, contentId, disabled },
|
|
1122
|
-
children: /* @__PURE__ */
|
|
1197
|
+
children: /* @__PURE__ */ jsx13(
|
|
1123
1198
|
"div",
|
|
1124
1199
|
{
|
|
1125
1200
|
className: cn(
|
|
@@ -1145,7 +1220,7 @@ function AccordionTrigger({
|
|
|
1145
1220
|
}) {
|
|
1146
1221
|
const { onValueChange } = useAccordion();
|
|
1147
1222
|
const { value, isOpen, triggerId, contentId, disabled } = useAccordionItem();
|
|
1148
|
-
return /* @__PURE__ */
|
|
1223
|
+
return /* @__PURE__ */ jsxs9(
|
|
1149
1224
|
"button",
|
|
1150
1225
|
{
|
|
1151
1226
|
id: triggerId,
|
|
@@ -1164,13 +1239,13 @@ function AccordionTrigger({
|
|
|
1164
1239
|
"data-state": isOpen ? "open" : "closed",
|
|
1165
1240
|
"data-testid": testId,
|
|
1166
1241
|
children: [
|
|
1167
|
-
/* @__PURE__ */
|
|
1168
|
-
icon && /* @__PURE__ */
|
|
1169
|
-
/* @__PURE__ */
|
|
1242
|
+
/* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-3", children: [
|
|
1243
|
+
icon && /* @__PURE__ */ jsx13("span", { className: "shrink-0", children: icon }),
|
|
1244
|
+
/* @__PURE__ */ jsx13("span", { children })
|
|
1170
1245
|
] }),
|
|
1171
|
-
/* @__PURE__ */
|
|
1246
|
+
/* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-2", children: [
|
|
1172
1247
|
rightContent,
|
|
1173
|
-
/* @__PURE__ */
|
|
1248
|
+
/* @__PURE__ */ jsx13(
|
|
1174
1249
|
ChevronDown2,
|
|
1175
1250
|
{
|
|
1176
1251
|
className: cn(
|
|
@@ -1191,7 +1266,7 @@ function AccordionContent({
|
|
|
1191
1266
|
testId
|
|
1192
1267
|
}) {
|
|
1193
1268
|
const { isOpen, contentId, triggerId } = useAccordionItem();
|
|
1194
|
-
return /* @__PURE__ */
|
|
1269
|
+
return /* @__PURE__ */ jsx13(
|
|
1195
1270
|
"div",
|
|
1196
1271
|
{
|
|
1197
1272
|
id: contentId,
|
|
@@ -1205,7 +1280,7 @@ function AccordionContent({
|
|
|
1205
1280
|
"grid transition-all duration-300 [transition-timing-function:cubic-bezier(0.32,0.72,0,1)]",
|
|
1206
1281
|
isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
1207
1282
|
),
|
|
1208
|
-
children: /* @__PURE__ */
|
|
1283
|
+
children: /* @__PURE__ */ jsx13("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx13("div", { className: cn("px-4 pb-4", className), children }) })
|
|
1209
1284
|
}
|
|
1210
1285
|
);
|
|
1211
1286
|
}
|
|
@@ -1236,7 +1311,7 @@ function SimpleAccordion({
|
|
|
1236
1311
|
}
|
|
1237
1312
|
onOpenChange?.(newValue);
|
|
1238
1313
|
}, [isOpen, isControlled, onOpenChange]);
|
|
1239
|
-
return /* @__PURE__ */
|
|
1314
|
+
return /* @__PURE__ */ jsxs9(
|
|
1240
1315
|
"div",
|
|
1241
1316
|
{
|
|
1242
1317
|
className: cn(
|
|
@@ -1245,7 +1320,7 @@ function SimpleAccordion({
|
|
|
1245
1320
|
),
|
|
1246
1321
|
"data-state": isOpen ? "open" : "closed",
|
|
1247
1322
|
children: [
|
|
1248
|
-
/* @__PURE__ */
|
|
1323
|
+
/* @__PURE__ */ jsxs9(
|
|
1249
1324
|
"button",
|
|
1250
1325
|
{
|
|
1251
1326
|
id: triggerId,
|
|
@@ -1263,13 +1338,13 @@ function SimpleAccordion({
|
|
|
1263
1338
|
"data-state": isOpen ? "open" : "closed",
|
|
1264
1339
|
"data-testid": triggerTestId,
|
|
1265
1340
|
children: [
|
|
1266
|
-
/* @__PURE__ */
|
|
1267
|
-
icon && /* @__PURE__ */
|
|
1268
|
-
/* @__PURE__ */
|
|
1341
|
+
/* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-3", children: [
|
|
1342
|
+
icon && /* @__PURE__ */ jsx13("span", { className: "shrink-0", children: icon }),
|
|
1343
|
+
/* @__PURE__ */ jsx13("span", { children: title })
|
|
1269
1344
|
] }),
|
|
1270
|
-
/* @__PURE__ */
|
|
1345
|
+
/* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-2", children: [
|
|
1271
1346
|
rightContent,
|
|
1272
|
-
/* @__PURE__ */
|
|
1347
|
+
/* @__PURE__ */ jsx13(
|
|
1273
1348
|
ChevronDown2,
|
|
1274
1349
|
{
|
|
1275
1350
|
className: cn(
|
|
@@ -1283,7 +1358,7 @@ function SimpleAccordion({
|
|
|
1283
1358
|
]
|
|
1284
1359
|
}
|
|
1285
1360
|
),
|
|
1286
|
-
/* @__PURE__ */
|
|
1361
|
+
/* @__PURE__ */ jsx13(
|
|
1287
1362
|
"div",
|
|
1288
1363
|
{
|
|
1289
1364
|
id: contentId,
|
|
@@ -1296,7 +1371,7 @@ function SimpleAccordion({
|
|
|
1296
1371
|
"grid transition-all duration-300 [transition-timing-function:cubic-bezier(0.32,0.72,0,1)]",
|
|
1297
1372
|
isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"
|
|
1298
1373
|
),
|
|
1299
|
-
children: /* @__PURE__ */
|
|
1374
|
+
children: /* @__PURE__ */ jsx13("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx13("div", { className: cn("px-4 pb-4", contentClassName), children }) })
|
|
1300
1375
|
}
|
|
1301
1376
|
)
|
|
1302
1377
|
]
|
|
@@ -1305,9 +1380,9 @@ function SimpleAccordion({
|
|
|
1305
1380
|
}
|
|
1306
1381
|
|
|
1307
1382
|
// src/confirm-dialog.tsx
|
|
1308
|
-
import * as
|
|
1309
|
-
import { Loader2
|
|
1310
|
-
import { Fragment as Fragment3, jsx as
|
|
1383
|
+
import * as React8 from "react";
|
|
1384
|
+
import { Loader2 } from "lucide-react";
|
|
1385
|
+
import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1311
1386
|
function ConfirmDialog({
|
|
1312
1387
|
title,
|
|
1313
1388
|
message,
|
|
@@ -1322,7 +1397,7 @@ function ConfirmDialog({
|
|
|
1322
1397
|
confirmVariant = "default",
|
|
1323
1398
|
className
|
|
1324
1399
|
}) {
|
|
1325
|
-
|
|
1400
|
+
React8.useEffect(() => {
|
|
1326
1401
|
function handleKeyDown(e) {
|
|
1327
1402
|
if (e.key === "Escape" && !isLoading) {
|
|
1328
1403
|
onCancel();
|
|
@@ -1331,7 +1406,7 @@ function ConfirmDialog({
|
|
|
1331
1406
|
document.addEventListener("keydown", handleKeyDown);
|
|
1332
1407
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
1333
1408
|
}, [onCancel, isLoading]);
|
|
1334
|
-
return /* @__PURE__ */
|
|
1409
|
+
return /* @__PURE__ */ jsx14(
|
|
1335
1410
|
"div",
|
|
1336
1411
|
{
|
|
1337
1412
|
className: "fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm dark:bg-background/80",
|
|
@@ -1340,7 +1415,7 @@ function ConfirmDialog({
|
|
|
1340
1415
|
"aria-labelledby": "confirm-dialog-title",
|
|
1341
1416
|
"aria-describedby": "confirm-dialog-description",
|
|
1342
1417
|
"data-testid": dialogTestId,
|
|
1343
|
-
children: /* @__PURE__ */
|
|
1418
|
+
children: /* @__PURE__ */ jsxs10(
|
|
1344
1419
|
"div",
|
|
1345
1420
|
{
|
|
1346
1421
|
className: cn(
|
|
@@ -1349,7 +1424,7 @@ function ConfirmDialog({
|
|
|
1349
1424
|
className
|
|
1350
1425
|
),
|
|
1351
1426
|
children: [
|
|
1352
|
-
/* @__PURE__ */
|
|
1427
|
+
/* @__PURE__ */ jsx14(
|
|
1353
1428
|
"h3",
|
|
1354
1429
|
{
|
|
1355
1430
|
id: "confirm-dialog-title",
|
|
@@ -1357,7 +1432,7 @@ function ConfirmDialog({
|
|
|
1357
1432
|
children: title
|
|
1358
1433
|
}
|
|
1359
1434
|
),
|
|
1360
|
-
/* @__PURE__ */
|
|
1435
|
+
/* @__PURE__ */ jsx14(
|
|
1361
1436
|
"p",
|
|
1362
1437
|
{
|
|
1363
1438
|
id: "confirm-dialog-description",
|
|
@@ -1365,8 +1440,8 @@ function ConfirmDialog({
|
|
|
1365
1440
|
children: message
|
|
1366
1441
|
}
|
|
1367
1442
|
),
|
|
1368
|
-
/* @__PURE__ */
|
|
1369
|
-
/* @__PURE__ */
|
|
1443
|
+
/* @__PURE__ */ jsxs10("div", { className: "mt-6 flex justify-end gap-3", children: [
|
|
1444
|
+
/* @__PURE__ */ jsx14(
|
|
1370
1445
|
Button,
|
|
1371
1446
|
{
|
|
1372
1447
|
variant: "ghost",
|
|
@@ -1376,15 +1451,15 @@ function ConfirmDialog({
|
|
|
1376
1451
|
children: cancelLabel
|
|
1377
1452
|
}
|
|
1378
1453
|
),
|
|
1379
|
-
/* @__PURE__ */
|
|
1454
|
+
/* @__PURE__ */ jsx14(
|
|
1380
1455
|
Button,
|
|
1381
1456
|
{
|
|
1382
1457
|
variant: confirmVariant,
|
|
1383
1458
|
onClick: onConfirm,
|
|
1384
1459
|
disabled: isLoading,
|
|
1385
1460
|
"data-testid": confirmTestId,
|
|
1386
|
-
children: isLoading ? /* @__PURE__ */
|
|
1387
|
-
/* @__PURE__ */
|
|
1461
|
+
children: isLoading ? /* @__PURE__ */ jsxs10(Fragment3, { children: [
|
|
1462
|
+
/* @__PURE__ */ jsx14(Loader2, { className: "mr-2 size-4 animate-spin" }),
|
|
1388
1463
|
confirmLabel,
|
|
1389
1464
|
"..."
|
|
1390
1465
|
] }) : confirmLabel
|
|
@@ -1399,10 +1474,10 @@ function ConfirmDialog({
|
|
|
1399
1474
|
}
|
|
1400
1475
|
|
|
1401
1476
|
// src/dicebear-avatar.tsx
|
|
1402
|
-
import * as
|
|
1403
|
-
import { cva as
|
|
1404
|
-
import { jsx as
|
|
1405
|
-
var avatarVariants =
|
|
1477
|
+
import * as React9 from "react";
|
|
1478
|
+
import { cva as cva3 } from "class-variance-authority";
|
|
1479
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
1480
|
+
var avatarVariants = cva3(
|
|
1406
1481
|
"relative inline-flex shrink-0 overflow-hidden rounded-full bg-muted dark:bg-muted",
|
|
1407
1482
|
{
|
|
1408
1483
|
variants: {
|
|
@@ -1425,7 +1500,7 @@ function buildDiceBearUrl(seed, style = "adventurer-neutral") {
|
|
|
1425
1500
|
const encodedSeed = encodeURIComponent(seed);
|
|
1426
1501
|
return `${DICEBEAR_BASE_URL}/${style}/svg?seed=${encodedSeed}`;
|
|
1427
1502
|
}
|
|
1428
|
-
var DiceBearAvatar =
|
|
1503
|
+
var DiceBearAvatar = React9.forwardRef(
|
|
1429
1504
|
({
|
|
1430
1505
|
seed,
|
|
1431
1506
|
avatarStyle = "adventurer-neutral",
|
|
@@ -1435,18 +1510,18 @@ var DiceBearAvatar = React8.forwardRef(
|
|
|
1435
1510
|
className,
|
|
1436
1511
|
...props
|
|
1437
1512
|
}, ref) => {
|
|
1438
|
-
const [hasError, setHasError] =
|
|
1513
|
+
const [hasError, setHasError] = React9.useState(false);
|
|
1439
1514
|
const url = buildDiceBearUrl(seed, avatarStyle);
|
|
1440
|
-
|
|
1515
|
+
React9.useEffect(() => {
|
|
1441
1516
|
setHasError(false);
|
|
1442
1517
|
}, [seed, avatarStyle]);
|
|
1443
|
-
return /* @__PURE__ */
|
|
1518
|
+
return /* @__PURE__ */ jsx15(
|
|
1444
1519
|
"div",
|
|
1445
1520
|
{
|
|
1446
1521
|
ref,
|
|
1447
1522
|
className: cn(avatarVariants({ size }), className),
|
|
1448
1523
|
...props,
|
|
1449
|
-
children: hasError ? fallback ? /* @__PURE__ */
|
|
1524
|
+
children: hasError ? fallback ? /* @__PURE__ */ jsx15("div", { className: "flex h-full w-full items-center justify-center text-xs font-medium text-muted-foreground dark:text-muted-foreground", children: fallback }) : /* @__PURE__ */ jsx15("div", { className: "text-primary-text dark:text-primary-text flex h-full w-full items-center justify-center bg-primary/10 text-xs font-medium dark:bg-primary/10", children: seed.charAt(0).toUpperCase() }) : /* @__PURE__ */ jsx15(
|
|
1450
1525
|
"img",
|
|
1451
1526
|
{
|
|
1452
1527
|
src: url,
|
|
@@ -1463,7 +1538,7 @@ DiceBearAvatar.displayName = "DiceBearAvatar";
|
|
|
1463
1538
|
|
|
1464
1539
|
// src/intent-icon.tsx
|
|
1465
1540
|
import { Check as Check2, AlertTriangle, X as X2, Info as Info2 } from "lucide-react";
|
|
1466
|
-
import { jsx as
|
|
1541
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
1467
1542
|
var intentConfig = {
|
|
1468
1543
|
success: {
|
|
1469
1544
|
outerBg: "bg-[rgba(33,196,93,0.10)] dark:bg-[rgba(33,196,93,0.10)]",
|
|
@@ -1508,18 +1583,18 @@ function IntentIcon({
|
|
|
1508
1583
|
}) {
|
|
1509
1584
|
const { outerBg, innerBg, iconColor, Icon: Icon2 } = intentConfig[intent];
|
|
1510
1585
|
const { outer, inner, iconSize } = sizeConfig[size];
|
|
1511
|
-
return /* @__PURE__ */
|
|
1586
|
+
return /* @__PURE__ */ jsx16(
|
|
1512
1587
|
"div",
|
|
1513
1588
|
{
|
|
1514
1589
|
"data-testid": "intent-icon",
|
|
1515
1590
|
className: `${outer} ${outerBg} flex items-center justify-center`,
|
|
1516
|
-
children: /* @__PURE__ */
|
|
1591
|
+
children: /* @__PURE__ */ jsx16("div", { className: `${inner} ${innerBg} flex items-center justify-center`, children: /* @__PURE__ */ jsx16(Icon2, { className: iconColor, size: iconSize }) })
|
|
1517
1592
|
}
|
|
1518
1593
|
);
|
|
1519
1594
|
}
|
|
1520
1595
|
|
|
1521
1596
|
// src/section-heading.tsx
|
|
1522
|
-
import { jsx as
|
|
1597
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1523
1598
|
var sizeConfig2 = {
|
|
1524
1599
|
display: {
|
|
1525
1600
|
className: "text-4xl font-bold leading-10",
|
|
@@ -1545,7 +1620,7 @@ function SectionHeading({
|
|
|
1545
1620
|
size = "h1"
|
|
1546
1621
|
}) {
|
|
1547
1622
|
const { className: sizeClass, tag: Tag2 } = sizeConfig2[size];
|
|
1548
|
-
return /* @__PURE__ */
|
|
1623
|
+
return /* @__PURE__ */ jsxs11(
|
|
1549
1624
|
"div",
|
|
1550
1625
|
{
|
|
1551
1626
|
"data-testid": "section-heading",
|
|
@@ -1555,15 +1630,15 @@ function SectionHeading({
|
|
|
1555
1630
|
align === "left" && "items-start text-left"
|
|
1556
1631
|
),
|
|
1557
1632
|
children: [
|
|
1558
|
-
/* @__PURE__ */
|
|
1559
|
-
description && /* @__PURE__ */
|
|
1633
|
+
/* @__PURE__ */ jsx17(Tag2, { className: cn("text-foreground dark:text-foreground", sizeClass), children: title }),
|
|
1634
|
+
description && /* @__PURE__ */ jsx17("p", { className: "text-sm font-normal leading-[21px] text-muted-foreground dark:text-muted-foreground", children: description })
|
|
1560
1635
|
]
|
|
1561
1636
|
}
|
|
1562
1637
|
);
|
|
1563
1638
|
}
|
|
1564
1639
|
|
|
1565
1640
|
// src/filter-chip.tsx
|
|
1566
|
-
import { jsx as
|
|
1641
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1567
1642
|
function FilterChip({
|
|
1568
1643
|
label,
|
|
1569
1644
|
active = false,
|
|
@@ -1571,7 +1646,7 @@ function FilterChip({
|
|
|
1571
1646
|
size = "md",
|
|
1572
1647
|
onClick
|
|
1573
1648
|
}) {
|
|
1574
|
-
return /* @__PURE__ */
|
|
1649
|
+
return /* @__PURE__ */ jsxs12(
|
|
1575
1650
|
"button",
|
|
1576
1651
|
{
|
|
1577
1652
|
type: "button",
|
|
@@ -1594,7 +1669,7 @@ function FilterChip({
|
|
|
1594
1669
|
),
|
|
1595
1670
|
children: [
|
|
1596
1671
|
label,
|
|
1597
|
-
count != null && /* @__PURE__ */
|
|
1672
|
+
count != null && /* @__PURE__ */ jsx18(
|
|
1598
1673
|
"span",
|
|
1599
1674
|
{
|
|
1600
1675
|
className: cn(
|
|
@@ -1612,35 +1687,35 @@ function FilterChip({
|
|
|
1612
1687
|
}
|
|
1613
1688
|
|
|
1614
1689
|
// src/distribution-chip.tsx
|
|
1615
|
-
import { jsx as
|
|
1690
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1616
1691
|
function DistributionChip({
|
|
1617
1692
|
count,
|
|
1618
1693
|
label,
|
|
1619
1694
|
dotClass,
|
|
1620
1695
|
testId
|
|
1621
1696
|
}) {
|
|
1622
|
-
return /* @__PURE__ */
|
|
1697
|
+
return /* @__PURE__ */ jsxs13(
|
|
1623
1698
|
"span",
|
|
1624
1699
|
{
|
|
1625
1700
|
"data-testid": testId,
|
|
1626
1701
|
className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-card px-3 py-1 text-sm font-medium text-foreground",
|
|
1627
1702
|
children: [
|
|
1628
|
-
/* @__PURE__ */
|
|
1629
|
-
/* @__PURE__ */
|
|
1630
|
-
/* @__PURE__ */
|
|
1703
|
+
/* @__PURE__ */ jsx19("span", { className: `size-2 rounded-full ${dotClass}` }),
|
|
1704
|
+
/* @__PURE__ */ jsx19("span", { className: "tabular-nums", children: count }),
|
|
1705
|
+
/* @__PURE__ */ jsx19("span", { className: "text-muted-foreground", children: label })
|
|
1631
1706
|
]
|
|
1632
1707
|
}
|
|
1633
1708
|
);
|
|
1634
1709
|
}
|
|
1635
1710
|
|
|
1636
1711
|
// src/skeleton-bar.tsx
|
|
1637
|
-
import { jsx as
|
|
1712
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1638
1713
|
function SkeletonBar({
|
|
1639
1714
|
width = "full",
|
|
1640
1715
|
height = 14,
|
|
1641
1716
|
className = ""
|
|
1642
1717
|
}) {
|
|
1643
|
-
return /* @__PURE__ */
|
|
1718
|
+
return /* @__PURE__ */ jsx20(
|
|
1644
1719
|
"div",
|
|
1645
1720
|
{
|
|
1646
1721
|
"data-testid": "skeleton-bar",
|
|
@@ -1658,9 +1733,9 @@ function SkeletonBar({
|
|
|
1658
1733
|
}
|
|
1659
1734
|
|
|
1660
1735
|
// src/skeleton-card.tsx
|
|
1661
|
-
import { jsx as
|
|
1736
|
+
import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1662
1737
|
function SkeletonCard({ className = "" }) {
|
|
1663
|
-
return /* @__PURE__ */
|
|
1738
|
+
return /* @__PURE__ */ jsxs14(
|
|
1664
1739
|
"div",
|
|
1665
1740
|
{
|
|
1666
1741
|
"data-testid": "skeleton-card",
|
|
@@ -1669,18 +1744,18 @@ function SkeletonCard({ className = "" }) {
|
|
|
1669
1744
|
className
|
|
1670
1745
|
),
|
|
1671
1746
|
children: [
|
|
1672
|
-
/* @__PURE__ */
|
|
1673
|
-
/* @__PURE__ */
|
|
1674
|
-
/* @__PURE__ */
|
|
1747
|
+
/* @__PURE__ */ jsx21(SkeletonBar, { width: 80, height: 10 }),
|
|
1748
|
+
/* @__PURE__ */ jsx21(SkeletonBar, { width: 60, height: 24 }),
|
|
1749
|
+
/* @__PURE__ */ jsx21(SkeletonBar, { width: 100, height: 10 })
|
|
1675
1750
|
]
|
|
1676
1751
|
}
|
|
1677
1752
|
);
|
|
1678
1753
|
}
|
|
1679
1754
|
|
|
1680
1755
|
// src/skeleton-row.tsx
|
|
1681
|
-
import { jsx as
|
|
1756
|
+
import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1682
1757
|
function SkeletonRow({ className = "" }) {
|
|
1683
|
-
return /* @__PURE__ */
|
|
1758
|
+
return /* @__PURE__ */ jsxs15(
|
|
1684
1759
|
"div",
|
|
1685
1760
|
{
|
|
1686
1761
|
"data-testid": "skeleton-row",
|
|
@@ -1689,10 +1764,10 @@ function SkeletonRow({ className = "" }) {
|
|
|
1689
1764
|
className
|
|
1690
1765
|
),
|
|
1691
1766
|
children: [
|
|
1692
|
-
/* @__PURE__ */
|
|
1693
|
-
/* @__PURE__ */
|
|
1694
|
-
/* @__PURE__ */
|
|
1695
|
-
/* @__PURE__ */
|
|
1767
|
+
/* @__PURE__ */ jsx22("div", { className: "h-9 w-9 flex-shrink-0 animate-pulse rounded-full bg-muted dark:bg-muted" }),
|
|
1768
|
+
/* @__PURE__ */ jsxs15("div", { className: "flex flex-1 flex-col gap-1.5", children: [
|
|
1769
|
+
/* @__PURE__ */ jsx22(SkeletonBar, { width: 200, height: 12 }),
|
|
1770
|
+
/* @__PURE__ */ jsx22(SkeletonBar, { width: 140, height: 10 })
|
|
1696
1771
|
] })
|
|
1697
1772
|
]
|
|
1698
1773
|
}
|
|
@@ -1700,10 +1775,10 @@ function SkeletonRow({ className = "" }) {
|
|
|
1700
1775
|
}
|
|
1701
1776
|
|
|
1702
1777
|
// src/stacked-list.tsx
|
|
1703
|
-
import * as
|
|
1704
|
-
import { jsx as
|
|
1705
|
-
var StackedList =
|
|
1706
|
-
({ className, divided = true, density = "default", ...props }, ref) => /* @__PURE__ */
|
|
1778
|
+
import * as React10 from "react";
|
|
1779
|
+
import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1780
|
+
var StackedList = React10.forwardRef(
|
|
1781
|
+
({ className, divided = true, density = "default", ...props }, ref) => /* @__PURE__ */ jsx23(
|
|
1707
1782
|
"ul",
|
|
1708
1783
|
{
|
|
1709
1784
|
ref,
|
|
@@ -1715,7 +1790,7 @@ var StackedList = React9.forwardRef(
|
|
|
1715
1790
|
)
|
|
1716
1791
|
);
|
|
1717
1792
|
StackedList.displayName = "StackedList";
|
|
1718
|
-
var StackedListItem =
|
|
1793
|
+
var StackedListItem = React10.forwardRef(
|
|
1719
1794
|
({
|
|
1720
1795
|
className,
|
|
1721
1796
|
avatar,
|
|
@@ -1725,7 +1800,7 @@ var StackedListItem = React9.forwardRef(
|
|
|
1725
1800
|
action,
|
|
1726
1801
|
density = "default",
|
|
1727
1802
|
...props
|
|
1728
|
-
}, ref) => /* @__PURE__ */
|
|
1803
|
+
}, ref) => /* @__PURE__ */ jsxs16(
|
|
1729
1804
|
"li",
|
|
1730
1805
|
{
|
|
1731
1806
|
ref,
|
|
@@ -1736,9 +1811,9 @@ var StackedListItem = React9.forwardRef(
|
|
|
1736
1811
|
),
|
|
1737
1812
|
...props,
|
|
1738
1813
|
children: [
|
|
1739
|
-
avatar && /* @__PURE__ */
|
|
1740
|
-
/* @__PURE__ */
|
|
1741
|
-
/* @__PURE__ */
|
|
1814
|
+
avatar && /* @__PURE__ */ jsx23("div", { className: "flex-shrink-0", children: avatar }),
|
|
1815
|
+
/* @__PURE__ */ jsxs16("div", { className: "min-w-0 flex-1", children: [
|
|
1816
|
+
/* @__PURE__ */ jsx23(
|
|
1742
1817
|
"p",
|
|
1743
1818
|
{
|
|
1744
1819
|
className: cn(
|
|
@@ -1748,7 +1823,7 @@ var StackedListItem = React9.forwardRef(
|
|
|
1748
1823
|
children: title
|
|
1749
1824
|
}
|
|
1750
1825
|
),
|
|
1751
|
-
description && /* @__PURE__ */
|
|
1826
|
+
description && /* @__PURE__ */ jsx23(
|
|
1752
1827
|
"p",
|
|
1753
1828
|
{
|
|
1754
1829
|
className: cn(
|
|
@@ -1759,8 +1834,8 @@ var StackedListItem = React9.forwardRef(
|
|
|
1759
1834
|
}
|
|
1760
1835
|
)
|
|
1761
1836
|
] }),
|
|
1762
|
-
meta && /* @__PURE__ */
|
|
1763
|
-
action && /* @__PURE__ */
|
|
1837
|
+
meta && /* @__PURE__ */ jsx23("span", { className: "flex-shrink-0 text-sm text-muted-foreground", children: meta }),
|
|
1838
|
+
action && /* @__PURE__ */ jsx23("div", { className: "flex-shrink-0", children: action })
|
|
1764
1839
|
]
|
|
1765
1840
|
}
|
|
1766
1841
|
)
|
|
@@ -1768,8 +1843,8 @@ var StackedListItem = React9.forwardRef(
|
|
|
1768
1843
|
StackedListItem.displayName = "StackedListItem";
|
|
1769
1844
|
|
|
1770
1845
|
// src/grid-list.tsx
|
|
1771
|
-
import * as
|
|
1772
|
-
import { jsx as
|
|
1846
|
+
import * as React11 from "react";
|
|
1847
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1773
1848
|
var COLUMN_CLASSES = {
|
|
1774
1849
|
2: "grid-cols-1 sm:grid-cols-2",
|
|
1775
1850
|
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
@@ -1780,8 +1855,8 @@ var GAP_CLASSES = {
|
|
|
1780
1855
|
md: "gap-4",
|
|
1781
1856
|
lg: "gap-6"
|
|
1782
1857
|
};
|
|
1783
|
-
var GridList =
|
|
1784
|
-
({ className, columns = 3, gap = "md", ...props }, ref) => /* @__PURE__ */
|
|
1858
|
+
var GridList = React11.forwardRef(
|
|
1859
|
+
({ className, columns = 3, gap = "md", ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
1785
1860
|
"div",
|
|
1786
1861
|
{
|
|
1787
1862
|
ref,
|
|
@@ -1796,8 +1871,8 @@ var GridList = React10.forwardRef(
|
|
|
1796
1871
|
)
|
|
1797
1872
|
);
|
|
1798
1873
|
GridList.displayName = "GridList";
|
|
1799
|
-
var GridListItem =
|
|
1800
|
-
({ className, hoverable = false, ...props }, ref) => /* @__PURE__ */
|
|
1874
|
+
var GridListItem = React11.forwardRef(
|
|
1875
|
+
({ className, hoverable = false, ...props }, ref) => /* @__PURE__ */ jsx24(
|
|
1801
1876
|
"div",
|
|
1802
1877
|
{
|
|
1803
1878
|
ref,
|
|
@@ -1813,8 +1888,8 @@ var GridListItem = React10.forwardRef(
|
|
|
1813
1888
|
GridListItem.displayName = "GridListItem";
|
|
1814
1889
|
|
|
1815
1890
|
// src/pagination.tsx
|
|
1816
|
-
import * as
|
|
1817
|
-
import { jsx as
|
|
1891
|
+
import * as React12 from "react";
|
|
1892
|
+
import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1818
1893
|
function getPageRange(current, total, siblings) {
|
|
1819
1894
|
const range = [];
|
|
1820
1895
|
const left = Math.max(2, current - siblings);
|
|
@@ -1826,7 +1901,7 @@ function getPageRange(current, total, siblings) {
|
|
|
1826
1901
|
if (total > 1) range.push(total);
|
|
1827
1902
|
return range;
|
|
1828
1903
|
}
|
|
1829
|
-
var PaginationButton =
|
|
1904
|
+
var PaginationButton = React12.forwardRef(({ className, active, disabled, ...props }, ref) => /* @__PURE__ */ jsx25(
|
|
1830
1905
|
"button",
|
|
1831
1906
|
{
|
|
1832
1907
|
ref,
|
|
@@ -1836,14 +1911,14 @@ var PaginationButton = React11.forwardRef(({ className, active, disabled, ...pro
|
|
|
1836
1911
|
"inline-flex h-9 min-w-9 items-center justify-center rounded-md px-3 text-sm font-medium transition-colors",
|
|
1837
1912
|
active ? "bg-primary-solid text-primary-foreground" : "bg-background text-foreground hover:bg-muted",
|
|
1838
1913
|
disabled && "opacity-disabled pointer-events-none",
|
|
1839
|
-
"border border-
|
|
1914
|
+
"border border-border",
|
|
1840
1915
|
className
|
|
1841
1916
|
),
|
|
1842
1917
|
...props
|
|
1843
1918
|
}
|
|
1844
1919
|
));
|
|
1845
1920
|
PaginationButton.displayName = "PaginationButton";
|
|
1846
|
-
var Pagination =
|
|
1921
|
+
var Pagination = React12.forwardRef(
|
|
1847
1922
|
({
|
|
1848
1923
|
className,
|
|
1849
1924
|
currentPage,
|
|
@@ -1859,7 +1934,7 @@ var Pagination = React11.forwardRef(
|
|
|
1859
1934
|
}
|
|
1860
1935
|
};
|
|
1861
1936
|
if (variant === "simple") {
|
|
1862
|
-
return /* @__PURE__ */
|
|
1937
|
+
return /* @__PURE__ */ jsxs17(
|
|
1863
1938
|
"nav",
|
|
1864
1939
|
{
|
|
1865
1940
|
ref,
|
|
@@ -1867,7 +1942,7 @@ var Pagination = React11.forwardRef(
|
|
|
1867
1942
|
className: cn("flex items-center justify-between", className),
|
|
1868
1943
|
...props,
|
|
1869
1944
|
children: [
|
|
1870
|
-
/* @__PURE__ */
|
|
1945
|
+
/* @__PURE__ */ jsx25(
|
|
1871
1946
|
PaginationButton,
|
|
1872
1947
|
{
|
|
1873
1948
|
onClick: () => handleChange(currentPage - 1),
|
|
@@ -1875,13 +1950,13 @@ var Pagination = React11.forwardRef(
|
|
|
1875
1950
|
children: "Previous"
|
|
1876
1951
|
}
|
|
1877
1952
|
),
|
|
1878
|
-
/* @__PURE__ */
|
|
1953
|
+
/* @__PURE__ */ jsxs17("span", { className: "text-sm text-muted-foreground", children: [
|
|
1879
1954
|
"Page ",
|
|
1880
1955
|
currentPage,
|
|
1881
1956
|
" of ",
|
|
1882
1957
|
totalPages
|
|
1883
1958
|
] }),
|
|
1884
|
-
/* @__PURE__ */
|
|
1959
|
+
/* @__PURE__ */ jsx25(
|
|
1885
1960
|
PaginationButton,
|
|
1886
1961
|
{
|
|
1887
1962
|
onClick: () => handleChange(currentPage + 1),
|
|
@@ -1894,7 +1969,7 @@ var Pagination = React11.forwardRef(
|
|
|
1894
1969
|
);
|
|
1895
1970
|
}
|
|
1896
1971
|
const pages = getPageRange(currentPage, totalPages, siblingCount);
|
|
1897
|
-
return /* @__PURE__ */
|
|
1972
|
+
return /* @__PURE__ */ jsxs17(
|
|
1898
1973
|
"nav",
|
|
1899
1974
|
{
|
|
1900
1975
|
ref,
|
|
@@ -1906,7 +1981,7 @@ var Pagination = React11.forwardRef(
|
|
|
1906
1981
|
),
|
|
1907
1982
|
...props,
|
|
1908
1983
|
children: [
|
|
1909
|
-
/* @__PURE__ */
|
|
1984
|
+
/* @__PURE__ */ jsx25(
|
|
1910
1985
|
PaginationButton,
|
|
1911
1986
|
{
|
|
1912
1987
|
onClick: () => handleChange(currentPage - 1),
|
|
@@ -1915,14 +1990,14 @@ var Pagination = React11.forwardRef(
|
|
|
1915
1990
|
}
|
|
1916
1991
|
),
|
|
1917
1992
|
pages.map(
|
|
1918
|
-
(page, i) => page === "ellipsis" ? /* @__PURE__ */
|
|
1993
|
+
(page, i) => page === "ellipsis" ? /* @__PURE__ */ jsx25(
|
|
1919
1994
|
"span",
|
|
1920
1995
|
{
|
|
1921
1996
|
className: "inline-flex h-9 min-w-9 items-center justify-center text-sm text-muted-foreground",
|
|
1922
1997
|
children: "..."
|
|
1923
1998
|
},
|
|
1924
1999
|
`ellipsis-${i}`
|
|
1925
|
-
) : /* @__PURE__ */
|
|
2000
|
+
) : /* @__PURE__ */ jsx25(
|
|
1926
2001
|
PaginationButton,
|
|
1927
2002
|
{
|
|
1928
2003
|
active: page === currentPage,
|
|
@@ -1932,7 +2007,7 @@ var Pagination = React11.forwardRef(
|
|
|
1932
2007
|
page
|
|
1933
2008
|
)
|
|
1934
2009
|
),
|
|
1935
|
-
/* @__PURE__ */
|
|
2010
|
+
/* @__PURE__ */ jsx25(
|
|
1936
2011
|
PaginationButton,
|
|
1937
2012
|
{
|
|
1938
2013
|
onClick: () => handleChange(currentPage + 1),
|
|
@@ -1948,16 +2023,106 @@ var Pagination = React11.forwardRef(
|
|
|
1948
2023
|
Pagination.displayName = "Pagination";
|
|
1949
2024
|
|
|
1950
2025
|
// src/stepper.tsx
|
|
1951
|
-
import * as
|
|
2026
|
+
import * as React14 from "react";
|
|
2027
|
+
|
|
2028
|
+
// src/scroll-hint-mark.tsx
|
|
2029
|
+
import * as React13 from "react";
|
|
1952
2030
|
|
|
1953
2031
|
// src/scroll-hint.ts
|
|
1954
|
-
var SCROLL_HINT_X = "
|
|
2032
|
+
var SCROLL_HINT_X = "";
|
|
2033
|
+
var SCROLL_HINT_X_MARK = "pointer-events-none sticky right-0 z-10 ml-2 flex w-6 shrink-0 items-center justify-end self-stretch data-[scroll-hint-state=end]:invisible data-[scroll-hint-state=none]:hidden";
|
|
2034
|
+
var SCROLL_HINT_X_PILL = "flex h-full max-h-6 w-6 items-center justify-center rounded-full border border-border bg-card text-muted-foreground shadow-sm";
|
|
1955
2035
|
var SCROLL_HINT_Y = "[container-type:scroll-state]";
|
|
1956
2036
|
var SCROLL_HINT_Y_MARK = "pointer-events-none sticky bottom-1 -mt-7 flex h-6 justify-center supports-[container-type:scroll-state]:[@container_not_scroll-state(scrollable:bottom)]:hidden";
|
|
1957
2037
|
|
|
2038
|
+
// src/scroll-hint-watch.ts
|
|
2039
|
+
function scrollHintXState(box, slotWidth) {
|
|
2040
|
+
if (box.scrollWidth - slotWidth <= box.clientWidth + 1) return "none";
|
|
2041
|
+
return Math.abs(box.scrollLeft) + box.clientWidth >= box.scrollWidth - 1 ? "end" : "more";
|
|
2042
|
+
}
|
|
2043
|
+
function scrollHintXSlotWidth(mark, scroller) {
|
|
2044
|
+
const own = getComputedStyle(mark);
|
|
2045
|
+
if (own.display === "none") return 0;
|
|
2046
|
+
const px = (v, what) => {
|
|
2047
|
+
if (v === "normal") return 0;
|
|
2048
|
+
const n = Number.parseFloat(v);
|
|
2049
|
+
if (!Number.isFinite(n)) {
|
|
2050
|
+
throw new Error(
|
|
2051
|
+
`scrollHintXSlotWidth: ${what} is "${v}", not a length in px`
|
|
2052
|
+
);
|
|
2053
|
+
}
|
|
2054
|
+
return n;
|
|
2055
|
+
};
|
|
2056
|
+
const gap = mark.previousElementSibling === null ? 0 : px(getComputedStyle(scroller).columnGap, "the scroller's column-gap");
|
|
2057
|
+
return mark.getBoundingClientRect().width + px(own.marginLeft, "the mark's margin-left") + px(own.marginRight, "the mark's margin-right") + gap;
|
|
2058
|
+
}
|
|
2059
|
+
function watchScrollHintX(mark, write) {
|
|
2060
|
+
const scroller = mark.parentElement;
|
|
2061
|
+
if (scroller === null) {
|
|
2062
|
+
throw new Error(
|
|
2063
|
+
"watchScrollHintX: the mark has no parent element; it must be the last child of the box that scrolls on x"
|
|
2064
|
+
);
|
|
2065
|
+
}
|
|
2066
|
+
let last;
|
|
2067
|
+
const update = () => {
|
|
2068
|
+
const state = scrollHintXState(
|
|
2069
|
+
scroller,
|
|
2070
|
+
scrollHintXSlotWidth(mark, scroller)
|
|
2071
|
+
);
|
|
2072
|
+
if (state === last) return;
|
|
2073
|
+
last = state;
|
|
2074
|
+
write(state);
|
|
2075
|
+
};
|
|
2076
|
+
const resize = new ResizeObserver(update);
|
|
2077
|
+
const observeChildren = () => {
|
|
2078
|
+
for (const child of Array.from(scroller.children)) resize.observe(child);
|
|
2079
|
+
};
|
|
2080
|
+
resize.observe(scroller);
|
|
2081
|
+
observeChildren();
|
|
2082
|
+
const added = new MutationObserver(() => {
|
|
2083
|
+
observeChildren();
|
|
2084
|
+
update();
|
|
2085
|
+
});
|
|
2086
|
+
added.observe(scroller, { childList: true });
|
|
2087
|
+
scroller.addEventListener("scroll", update, { passive: true });
|
|
2088
|
+
update();
|
|
2089
|
+
return () => {
|
|
2090
|
+
scroller.removeEventListener("scroll", update);
|
|
2091
|
+
resize.disconnect();
|
|
2092
|
+
added.disconnect();
|
|
2093
|
+
};
|
|
2094
|
+
}
|
|
2095
|
+
|
|
2096
|
+
// src/scroll-hint-mark.tsx
|
|
2097
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
2098
|
+
function ScrollHintXMark() {
|
|
2099
|
+
const ref = React13.useRef(null);
|
|
2100
|
+
React13.useEffect(() => {
|
|
2101
|
+
const mark = ref.current;
|
|
2102
|
+
if (mark === null) {
|
|
2103
|
+
throw new Error(
|
|
2104
|
+
"ScrollHintXMark: the effect ran with no mounted mark (ref.current is null)"
|
|
2105
|
+
);
|
|
2106
|
+
}
|
|
2107
|
+
return watchScrollHintX(mark, (state) => {
|
|
2108
|
+
mark.dataset.scrollHintState = state;
|
|
2109
|
+
});
|
|
2110
|
+
}, []);
|
|
2111
|
+
return /* @__PURE__ */ jsx26(
|
|
2112
|
+
"div",
|
|
2113
|
+
{
|
|
2114
|
+
ref,
|
|
2115
|
+
"aria-hidden": "true",
|
|
2116
|
+
"data-scroll-hint": "x",
|
|
2117
|
+
className: SCROLL_HINT_X_MARK,
|
|
2118
|
+
children: /* @__PURE__ */ jsx26("span", { className: SCROLL_HINT_X_PILL, children: /* @__PURE__ */ jsx26(Icon, { name: "chevron-right", size: "sm" }) })
|
|
2119
|
+
}
|
|
2120
|
+
);
|
|
2121
|
+
}
|
|
2122
|
+
|
|
1958
2123
|
// src/stepper.tsx
|
|
1959
|
-
import { jsx as
|
|
1960
|
-
var StepContext =
|
|
2124
|
+
import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2125
|
+
var StepContext = React14.createContext({
|
|
1961
2126
|
index: 0,
|
|
1962
2127
|
activeStep: 0,
|
|
1963
2128
|
isLast: false,
|
|
@@ -1974,7 +2139,7 @@ var LABEL_SIZE = {
|
|
|
1974
2139
|
md: "text-sm",
|
|
1975
2140
|
lg: "text-base"
|
|
1976
2141
|
};
|
|
1977
|
-
var StepperStep =
|
|
2142
|
+
var StepperStep = React14.forwardRef(
|
|
1978
2143
|
({
|
|
1979
2144
|
className,
|
|
1980
2145
|
label,
|
|
@@ -1986,10 +2151,10 @@ var StepperStep = React12.forwardRef(
|
|
|
1986
2151
|
href,
|
|
1987
2152
|
...props
|
|
1988
2153
|
}, ref) => {
|
|
1989
|
-
const { index, activeStep, isLast, variant, size } =
|
|
2154
|
+
const { index, activeStep, isLast, variant, size } = React14.useContext(StepContext);
|
|
1990
2155
|
const status = error ? "error" : disabled ? "disabled" : index < activeStep || completed ? "complete" : index === activeStep ? "current" : "upcoming";
|
|
1991
2156
|
const isCurrent = index === activeStep && !error && !disabled;
|
|
1992
|
-
const indicator = /* @__PURE__ */
|
|
2157
|
+
const indicator = /* @__PURE__ */ jsx27(
|
|
1993
2158
|
"div",
|
|
1994
2159
|
{
|
|
1995
2160
|
className: cn(
|
|
@@ -2007,7 +2172,7 @@ var StepperStep = React12.forwardRef(
|
|
|
2007
2172
|
}
|
|
2008
2173
|
);
|
|
2009
2174
|
if (variant === "vertical") {
|
|
2010
|
-
return /* @__PURE__ */
|
|
2175
|
+
return /* @__PURE__ */ jsxs18(
|
|
2011
2176
|
"div",
|
|
2012
2177
|
{
|
|
2013
2178
|
ref,
|
|
@@ -2017,9 +2182,9 @@ var StepperStep = React12.forwardRef(
|
|
|
2017
2182
|
className: cn("flex gap-3", disabled && "opacity-50", className),
|
|
2018
2183
|
...props,
|
|
2019
2184
|
children: [
|
|
2020
|
-
/* @__PURE__ */
|
|
2185
|
+
/* @__PURE__ */ jsxs18("div", { className: "flex flex-col items-center", children: [
|
|
2021
2186
|
indicator,
|
|
2022
|
-
!isLast && /* @__PURE__ */
|
|
2187
|
+
!isLast && /* @__PURE__ */ jsx27(
|
|
2023
2188
|
"div",
|
|
2024
2189
|
{
|
|
2025
2190
|
className: cn(
|
|
@@ -2031,8 +2196,8 @@ var StepperStep = React12.forwardRef(
|
|
|
2031
2196
|
}
|
|
2032
2197
|
)
|
|
2033
2198
|
] }),
|
|
2034
|
-
/* @__PURE__ */
|
|
2035
|
-
/* @__PURE__ */
|
|
2199
|
+
/* @__PURE__ */ jsxs18("div", { className: "pb-6", children: [
|
|
2200
|
+
/* @__PURE__ */ jsx27(
|
|
2036
2201
|
"p",
|
|
2037
2202
|
{
|
|
2038
2203
|
className: cn(
|
|
@@ -2043,15 +2208,15 @@ var StepperStep = React12.forwardRef(
|
|
|
2043
2208
|
children: label
|
|
2044
2209
|
}
|
|
2045
2210
|
),
|
|
2046
|
-
description && /* @__PURE__ */
|
|
2211
|
+
description && /* @__PURE__ */ jsx27("p", { className: "mt-0.5 text-xs text-muted-foreground", children: description })
|
|
2047
2212
|
] })
|
|
2048
2213
|
]
|
|
2049
2214
|
}
|
|
2050
2215
|
);
|
|
2051
2216
|
}
|
|
2052
|
-
const stepContent = /* @__PURE__ */
|
|
2217
|
+
const stepContent = /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
|
|
2053
2218
|
indicator,
|
|
2054
|
-
/* @__PURE__ */
|
|
2219
|
+
/* @__PURE__ */ jsx27(
|
|
2055
2220
|
"span",
|
|
2056
2221
|
{
|
|
2057
2222
|
className: cn(
|
|
@@ -2063,7 +2228,7 @@ var StepperStep = React12.forwardRef(
|
|
|
2063
2228
|
}
|
|
2064
2229
|
)
|
|
2065
2230
|
] });
|
|
2066
|
-
return /* @__PURE__ */
|
|
2231
|
+
return /* @__PURE__ */ jsxs18(
|
|
2067
2232
|
"div",
|
|
2068
2233
|
{
|
|
2069
2234
|
ref,
|
|
@@ -2073,7 +2238,7 @@ var StepperStep = React12.forwardRef(
|
|
|
2073
2238
|
className: cn("flex items-center", className),
|
|
2074
2239
|
...props,
|
|
2075
2240
|
children: [
|
|
2076
|
-
href && !disabled ? /* @__PURE__ */
|
|
2241
|
+
href && !disabled ? /* @__PURE__ */ jsx27(
|
|
2077
2242
|
"a",
|
|
2078
2243
|
{
|
|
2079
2244
|
href,
|
|
@@ -2082,7 +2247,7 @@ var StepperStep = React12.forwardRef(
|
|
|
2082
2247
|
children: stepContent
|
|
2083
2248
|
}
|
|
2084
2249
|
) : stepContent,
|
|
2085
|
-
!isLast && /* @__PURE__ */
|
|
2250
|
+
!isLast && /* @__PURE__ */ jsx27(
|
|
2086
2251
|
"div",
|
|
2087
2252
|
{
|
|
2088
2253
|
className: cn(
|
|
@@ -2097,7 +2262,7 @@ var StepperStep = React12.forwardRef(
|
|
|
2097
2262
|
}
|
|
2098
2263
|
);
|
|
2099
2264
|
StepperStep.displayName = "StepperStep";
|
|
2100
|
-
var Stepper =
|
|
2265
|
+
var Stepper = React14.forwardRef(
|
|
2101
2266
|
({
|
|
2102
2267
|
className,
|
|
2103
2268
|
variant = "horizontal",
|
|
@@ -2106,32 +2271,35 @@ var Stepper = React12.forwardRef(
|
|
|
2106
2271
|
children,
|
|
2107
2272
|
...props
|
|
2108
2273
|
}, ref) => {
|
|
2109
|
-
const steps =
|
|
2110
|
-
return /* @__PURE__ */
|
|
2274
|
+
const steps = React14.Children.toArray(children);
|
|
2275
|
+
return /* @__PURE__ */ jsxs18(
|
|
2111
2276
|
"div",
|
|
2112
2277
|
{
|
|
2113
2278
|
ref,
|
|
2114
2279
|
role: "list",
|
|
2115
2280
|
className: cn(
|
|
2116
2281
|
// horizontal: scrolls on a narrow screen, never runs off the page
|
|
2117
|
-
variant === "horizontal" ?
|
|
2282
|
+
variant === "horizontal" ? "flex items-center overflow-x-auto" : "flex flex-col",
|
|
2118
2283
|
className
|
|
2119
2284
|
),
|
|
2120
2285
|
...props,
|
|
2121
|
-
children:
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2286
|
+
children: [
|
|
2287
|
+
steps.map((child, i) => /* @__PURE__ */ jsx27(
|
|
2288
|
+
StepContext.Provider,
|
|
2289
|
+
{
|
|
2290
|
+
value: {
|
|
2291
|
+
index: i,
|
|
2292
|
+
activeStep,
|
|
2293
|
+
isLast: i === steps.length - 1,
|
|
2294
|
+
variant,
|
|
2295
|
+
size
|
|
2296
|
+
},
|
|
2297
|
+
children: child
|
|
2130
2298
|
},
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2299
|
+
i
|
|
2300
|
+
)),
|
|
2301
|
+
variant === "horizontal" && /* @__PURE__ */ jsx27(ScrollHintXMark, {})
|
|
2302
|
+
]
|
|
2135
2303
|
}
|
|
2136
2304
|
);
|
|
2137
2305
|
}
|
|
@@ -2139,14 +2307,14 @@ var Stepper = React12.forwardRef(
|
|
|
2139
2307
|
Stepper.displayName = "Stepper";
|
|
2140
2308
|
|
|
2141
2309
|
// src/command-palette.tsx
|
|
2142
|
-
import * as
|
|
2143
|
-
import { Fragment as Fragment4, jsx as
|
|
2310
|
+
import * as React15 from "react";
|
|
2311
|
+
import { Fragment as Fragment4, jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2144
2312
|
var SIZE_CLASSES = {
|
|
2145
2313
|
sm: "max-w-sm",
|
|
2146
2314
|
md: "max-w-lg",
|
|
2147
2315
|
lg: "max-w-2xl"
|
|
2148
2316
|
};
|
|
2149
|
-
var CommandPalette =
|
|
2317
|
+
var CommandPalette = React15.forwardRef(
|
|
2150
2318
|
({
|
|
2151
2319
|
className,
|
|
2152
2320
|
open,
|
|
@@ -2157,9 +2325,9 @@ var CommandPalette = React13.forwardRef(
|
|
|
2157
2325
|
size = "md",
|
|
2158
2326
|
...props
|
|
2159
2327
|
}, ref) => {
|
|
2160
|
-
const [query, setQuery] =
|
|
2161
|
-
const [activeIndex, setActiveIndex] =
|
|
2162
|
-
|
|
2328
|
+
const [query, setQuery] = React15.useState("");
|
|
2329
|
+
const [activeIndex, setActiveIndex] = React15.useState(0);
|
|
2330
|
+
React15.useEffect(() => {
|
|
2163
2331
|
if (!open) return;
|
|
2164
2332
|
const handler = (e) => {
|
|
2165
2333
|
if (e.key === "Escape") onClose?.();
|
|
@@ -2179,7 +2347,7 @@ var CommandPalette = React13.forwardRef(
|
|
|
2179
2347
|
document.addEventListener("keydown", handler);
|
|
2180
2348
|
return () => document.removeEventListener("keydown", handler);
|
|
2181
2349
|
}, [open, onClose, results, activeIndex]);
|
|
2182
|
-
|
|
2350
|
+
React15.useEffect(() => {
|
|
2183
2351
|
setActiveIndex(0);
|
|
2184
2352
|
}, [query]);
|
|
2185
2353
|
if (!open) return null;
|
|
@@ -2192,15 +2360,15 @@ var CommandPalette = React13.forwardRef(
|
|
|
2192
2360
|
},
|
|
2193
2361
|
{}
|
|
2194
2362
|
);
|
|
2195
|
-
return /* @__PURE__ */
|
|
2196
|
-
/* @__PURE__ */
|
|
2363
|
+
return /* @__PURE__ */ jsxs19(Fragment4, { children: [
|
|
2364
|
+
/* @__PURE__ */ jsx28(
|
|
2197
2365
|
"div",
|
|
2198
2366
|
{
|
|
2199
2367
|
className: "z-modal fixed inset-0 bg-foreground/60",
|
|
2200
2368
|
onClick: onClose
|
|
2201
2369
|
}
|
|
2202
2370
|
),
|
|
2203
|
-
/* @__PURE__ */
|
|
2371
|
+
/* @__PURE__ */ jsx28("div", { className: "z-modal fixed inset-0 flex items-start justify-center pt-[15vh]", children: /* @__PURE__ */ jsxs19(
|
|
2204
2372
|
"div",
|
|
2205
2373
|
{
|
|
2206
2374
|
ref,
|
|
@@ -2211,9 +2379,9 @@ var CommandPalette = React13.forwardRef(
|
|
|
2211
2379
|
),
|
|
2212
2380
|
...props,
|
|
2213
2381
|
children: [
|
|
2214
|
-
/* @__PURE__ */
|
|
2215
|
-
/* @__PURE__ */
|
|
2216
|
-
/* @__PURE__ */
|
|
2382
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center border-b border-border px-4", children: [
|
|
2383
|
+
/* @__PURE__ */ jsx28("span", { className: "mr-2 text-muted-foreground", children: "\u2318" }),
|
|
2384
|
+
/* @__PURE__ */ jsx28(
|
|
2217
2385
|
"input",
|
|
2218
2386
|
{
|
|
2219
2387
|
type: "text",
|
|
@@ -2227,13 +2395,13 @@ var CommandPalette = React13.forwardRef(
|
|
|
2227
2395
|
autoFocus: true
|
|
2228
2396
|
}
|
|
2229
2397
|
),
|
|
2230
|
-
/* @__PURE__ */
|
|
2398
|
+
/* @__PURE__ */ jsx28("kbd", { className: "rounded border border-border px-1.5 py-0.5 text-xs text-muted-foreground", children: "Esc" })
|
|
2231
2399
|
] }),
|
|
2232
|
-
/* @__PURE__ */
|
|
2233
|
-
/* @__PURE__ */
|
|
2400
|
+
/* @__PURE__ */ jsx28("div", { className: "max-h-80 overflow-y-auto p-2", children: Object.entries(grouped).length === 0 ? /* @__PURE__ */ jsx28("p", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found" }) : Object.entries(grouped).map(([group, items]) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
2401
|
+
/* @__PURE__ */ jsx28("p", { className: "px-2 py-1.5 text-xs font-medium text-muted-foreground", children: group }),
|
|
2234
2402
|
items.map((item) => {
|
|
2235
2403
|
const idx = results.indexOf(item);
|
|
2236
|
-
return /* @__PURE__ */
|
|
2404
|
+
return /* @__PURE__ */ jsxs19(
|
|
2237
2405
|
"button",
|
|
2238
2406
|
{
|
|
2239
2407
|
type: "button",
|
|
@@ -2247,9 +2415,9 @@ var CommandPalette = React13.forwardRef(
|
|
|
2247
2415
|
},
|
|
2248
2416
|
onMouseEnter: () => setActiveIndex(idx),
|
|
2249
2417
|
children: [
|
|
2250
|
-
item.icon && /* @__PURE__ */
|
|
2251
|
-
/* @__PURE__ */
|
|
2252
|
-
item.shortcut && /* @__PURE__ */
|
|
2418
|
+
item.icon && /* @__PURE__ */ jsx28("span", { className: "flex-shrink-0 text-muted-foreground", children: item.icon }),
|
|
2419
|
+
/* @__PURE__ */ jsx28("span", { className: "flex-1", children: item.label }),
|
|
2420
|
+
item.shortcut && /* @__PURE__ */ jsx28("kbd", { className: "rounded border border-border px-1.5 py-0.5 text-xs text-muted-foreground", children: item.shortcut })
|
|
2253
2421
|
]
|
|
2254
2422
|
},
|
|
2255
2423
|
item.id
|
|
@@ -2265,9 +2433,9 @@ var CommandPalette = React13.forwardRef(
|
|
|
2265
2433
|
CommandPalette.displayName = "CommandPalette";
|
|
2266
2434
|
|
|
2267
2435
|
// src/app-shell.tsx
|
|
2268
|
-
import * as
|
|
2269
|
-
import { jsx as
|
|
2270
|
-
var AppShell =
|
|
2436
|
+
import * as React16 from "react";
|
|
2437
|
+
import { jsx as jsx29, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2438
|
+
var AppShell = React16.forwardRef(
|
|
2271
2439
|
({
|
|
2272
2440
|
className,
|
|
2273
2441
|
variant = "stacked",
|
|
@@ -2282,7 +2450,7 @@ var AppShell = React14.forwardRef(
|
|
|
2282
2450
|
...props
|
|
2283
2451
|
}, ref) => {
|
|
2284
2452
|
if (variant === "stacked") {
|
|
2285
|
-
return /* @__PURE__ */
|
|
2453
|
+
return /* @__PURE__ */ jsxs20(
|
|
2286
2454
|
"div",
|
|
2287
2455
|
{
|
|
2288
2456
|
ref,
|
|
@@ -2290,13 +2458,13 @@ var AppShell = React14.forwardRef(
|
|
|
2290
2458
|
...props,
|
|
2291
2459
|
children: [
|
|
2292
2460
|
header,
|
|
2293
|
-
/* @__PURE__ */
|
|
2461
|
+
/* @__PURE__ */ jsx29("main", { className: "flex-1", children })
|
|
2294
2462
|
]
|
|
2295
2463
|
}
|
|
2296
2464
|
);
|
|
2297
2465
|
}
|
|
2298
2466
|
if (variant === "multi-column") {
|
|
2299
|
-
return /* @__PURE__ */
|
|
2467
|
+
return /* @__PURE__ */ jsxs20(
|
|
2300
2468
|
"div",
|
|
2301
2469
|
{
|
|
2302
2470
|
ref,
|
|
@@ -2306,7 +2474,7 @@ var AppShell = React14.forwardRef(
|
|
|
2306
2474
|
),
|
|
2307
2475
|
...props,
|
|
2308
2476
|
children: [
|
|
2309
|
-
sidebar && /* @__PURE__ */
|
|
2477
|
+
sidebar && /* @__PURE__ */ jsx29(
|
|
2310
2478
|
"aside",
|
|
2311
2479
|
{
|
|
2312
2480
|
className: cn(
|
|
@@ -2316,11 +2484,11 @@ var AppShell = React14.forwardRef(
|
|
|
2316
2484
|
children: sidebar
|
|
2317
2485
|
}
|
|
2318
2486
|
),
|
|
2319
|
-
/* @__PURE__ */
|
|
2487
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
2320
2488
|
header,
|
|
2321
|
-
/* @__PURE__ */
|
|
2322
|
-
/* @__PURE__ */
|
|
2323
|
-
detailPanel && /* @__PURE__ */
|
|
2489
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex flex-1 flex-col lg:flex-row", children: [
|
|
2490
|
+
/* @__PURE__ */ jsx29("main", { className: "min-w-0 flex-1 overflow-y-auto", children }),
|
|
2491
|
+
detailPanel && /* @__PURE__ */ jsx29("aside", { className: "flex-shrink-0 border-t border-border bg-card lg:w-80 lg:border-l lg:border-t-0", children: detailPanel })
|
|
2324
2492
|
] })
|
|
2325
2493
|
] })
|
|
2326
2494
|
]
|
|
@@ -2328,7 +2496,7 @@ var AppShell = React14.forwardRef(
|
|
|
2328
2496
|
);
|
|
2329
2497
|
}
|
|
2330
2498
|
const left = sidebarPosition === "left";
|
|
2331
|
-
const column = sidebar && /* @__PURE__ */
|
|
2499
|
+
const column = sidebar && /* @__PURE__ */ jsx29(
|
|
2332
2500
|
"aside",
|
|
2333
2501
|
{
|
|
2334
2502
|
className: cn(
|
|
@@ -2339,7 +2507,7 @@ var AppShell = React14.forwardRef(
|
|
|
2339
2507
|
children: sidebar
|
|
2340
2508
|
}
|
|
2341
2509
|
);
|
|
2342
|
-
return /* @__PURE__ */
|
|
2510
|
+
return /* @__PURE__ */ jsxs20(
|
|
2343
2511
|
"div",
|
|
2344
2512
|
{
|
|
2345
2513
|
ref,
|
|
@@ -2347,15 +2515,15 @@ var AppShell = React14.forwardRef(
|
|
|
2347
2515
|
...props,
|
|
2348
2516
|
children: [
|
|
2349
2517
|
left && column,
|
|
2350
|
-
/* @__PURE__ */
|
|
2351
|
-
sidebar && /* @__PURE__ */
|
|
2518
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
2519
|
+
sidebar && /* @__PURE__ */ jsx29(
|
|
2352
2520
|
"div",
|
|
2353
2521
|
{
|
|
2354
2522
|
className: cn(
|
|
2355
2523
|
"flex items-center border-b border-border bg-card px-2 py-2 md:hidden",
|
|
2356
2524
|
!left && "justify-end"
|
|
2357
2525
|
),
|
|
2358
|
-
children: /* @__PURE__ */
|
|
2526
|
+
children: /* @__PURE__ */ jsx29(
|
|
2359
2527
|
NavDrawer,
|
|
2360
2528
|
{
|
|
2361
2529
|
label: navLabel,
|
|
@@ -2367,7 +2535,7 @@ var AppShell = React14.forwardRef(
|
|
|
2367
2535
|
}
|
|
2368
2536
|
),
|
|
2369
2537
|
header,
|
|
2370
|
-
/* @__PURE__ */
|
|
2538
|
+
/* @__PURE__ */ jsx29("main", { className: "min-w-0 flex-1 overflow-y-auto", children })
|
|
2371
2539
|
] }),
|
|
2372
2540
|
!left && column
|
|
2373
2541
|
]
|
|
@@ -2378,8 +2546,8 @@ var AppShell = React14.forwardRef(
|
|
|
2378
2546
|
AppShell.displayName = "AppShell";
|
|
2379
2547
|
|
|
2380
2548
|
// src/popover.tsx
|
|
2381
|
-
import * as
|
|
2382
|
-
import { Fragment as Fragment5, jsx as
|
|
2549
|
+
import * as React17 from "react";
|
|
2550
|
+
import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2383
2551
|
var SIDE_CLASSES = {
|
|
2384
2552
|
top: "bottom-full mb-2",
|
|
2385
2553
|
bottom: "top-full mt-2",
|
|
@@ -2391,7 +2559,7 @@ var ALIGN_CLASSES = {
|
|
|
2391
2559
|
center: "left-1/2 -translate-x-1/2",
|
|
2392
2560
|
end: "right-0"
|
|
2393
2561
|
};
|
|
2394
|
-
var Popover =
|
|
2562
|
+
var Popover = React17.forwardRef(
|
|
2395
2563
|
({
|
|
2396
2564
|
className,
|
|
2397
2565
|
open,
|
|
@@ -2402,10 +2570,10 @@ var Popover = React15.forwardRef(
|
|
|
2402
2570
|
children,
|
|
2403
2571
|
...props
|
|
2404
2572
|
}, ref) => {
|
|
2405
|
-
const [internalOpen, setInternalOpen] =
|
|
2573
|
+
const [internalOpen, setInternalOpen] = React17.useState(false);
|
|
2406
2574
|
const isOpen = open ?? internalOpen;
|
|
2407
2575
|
const setOpen = onOpenChange ?? setInternalOpen;
|
|
2408
|
-
|
|
2576
|
+
React17.useEffect(() => {
|
|
2409
2577
|
if (!isOpen) return;
|
|
2410
2578
|
const handler = (e) => {
|
|
2411
2579
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -2413,23 +2581,23 @@ var Popover = React15.forwardRef(
|
|
|
2413
2581
|
document.addEventListener("keydown", handler);
|
|
2414
2582
|
return () => document.removeEventListener("keydown", handler);
|
|
2415
2583
|
}, [isOpen, setOpen]);
|
|
2416
|
-
return /* @__PURE__ */
|
|
2584
|
+
return /* @__PURE__ */ jsxs21(
|
|
2417
2585
|
"div",
|
|
2418
2586
|
{
|
|
2419
2587
|
ref,
|
|
2420
2588
|
className: cn("relative inline-block", className),
|
|
2421
2589
|
...props,
|
|
2422
2590
|
children: [
|
|
2423
|
-
/* @__PURE__ */
|
|
2424
|
-
isOpen && /* @__PURE__ */
|
|
2425
|
-
/* @__PURE__ */
|
|
2591
|
+
/* @__PURE__ */ jsx30("div", { onClick: () => setOpen(!isOpen), children: trigger }),
|
|
2592
|
+
isOpen && /* @__PURE__ */ jsxs21(Fragment5, { children: [
|
|
2593
|
+
/* @__PURE__ */ jsx30(
|
|
2426
2594
|
"div",
|
|
2427
2595
|
{
|
|
2428
2596
|
className: "z-popover fixed inset-0",
|
|
2429
2597
|
onClick: () => setOpen(false)
|
|
2430
2598
|
}
|
|
2431
2599
|
),
|
|
2432
|
-
/* @__PURE__ */
|
|
2600
|
+
/* @__PURE__ */ jsx30(
|
|
2433
2601
|
"div",
|
|
2434
2602
|
{
|
|
2435
2603
|
className: cn(
|
|
@@ -2447,7 +2615,7 @@ var Popover = React15.forwardRef(
|
|
|
2447
2615
|
}
|
|
2448
2616
|
);
|
|
2449
2617
|
Popover.displayName = "Popover";
|
|
2450
|
-
var HoverCard =
|
|
2618
|
+
var HoverCard = React17.forwardRef(
|
|
2451
2619
|
({
|
|
2452
2620
|
className,
|
|
2453
2621
|
trigger,
|
|
@@ -2457,8 +2625,8 @@ var HoverCard = React15.forwardRef(
|
|
|
2457
2625
|
children,
|
|
2458
2626
|
...props
|
|
2459
2627
|
}, ref) => {
|
|
2460
|
-
const [open, setOpen] =
|
|
2461
|
-
const timeoutRef =
|
|
2628
|
+
const [open, setOpen] = React17.useState(false);
|
|
2629
|
+
const timeoutRef = React17.useRef();
|
|
2462
2630
|
const handleEnter = () => {
|
|
2463
2631
|
clearTimeout(timeoutRef.current);
|
|
2464
2632
|
timeoutRef.current = setTimeout(() => setOpen(true), delay);
|
|
@@ -2467,10 +2635,10 @@ var HoverCard = React15.forwardRef(
|
|
|
2467
2635
|
clearTimeout(timeoutRef.current);
|
|
2468
2636
|
timeoutRef.current = setTimeout(() => setOpen(false), 150);
|
|
2469
2637
|
};
|
|
2470
|
-
|
|
2638
|
+
React17.useEffect(() => {
|
|
2471
2639
|
return () => clearTimeout(timeoutRef.current);
|
|
2472
2640
|
}, []);
|
|
2473
|
-
return /* @__PURE__ */
|
|
2641
|
+
return /* @__PURE__ */ jsxs21(
|
|
2474
2642
|
"div",
|
|
2475
2643
|
{
|
|
2476
2644
|
ref,
|
|
@@ -2480,7 +2648,7 @@ var HoverCard = React15.forwardRef(
|
|
|
2480
2648
|
...props,
|
|
2481
2649
|
children: [
|
|
2482
2650
|
trigger,
|
|
2483
|
-
open && /* @__PURE__ */
|
|
2651
|
+
open && /* @__PURE__ */ jsx30(
|
|
2484
2652
|
"div",
|
|
2485
2653
|
{
|
|
2486
2654
|
className: cn(
|
|
@@ -2501,8 +2669,8 @@ var HoverCard = React15.forwardRef(
|
|
|
2501
2669
|
HoverCard.displayName = "HoverCard";
|
|
2502
2670
|
|
|
2503
2671
|
// src/calendar.tsx
|
|
2504
|
-
import * as
|
|
2505
|
-
import { Fragment as Fragment6, jsx as
|
|
2672
|
+
import * as React18 from "react";
|
|
2673
|
+
import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2506
2674
|
function getDaysInMonth(year, month) {
|
|
2507
2675
|
return new Date(year, month + 1, 0).getDate();
|
|
2508
2676
|
}
|
|
@@ -2540,7 +2708,7 @@ var SIZE_CONFIG = {
|
|
|
2540
2708
|
dot: "h-1.5 w-1.5"
|
|
2541
2709
|
}
|
|
2542
2710
|
};
|
|
2543
|
-
var Calendar2 =
|
|
2711
|
+
var Calendar2 = React18.forwardRef(
|
|
2544
2712
|
({
|
|
2545
2713
|
className,
|
|
2546
2714
|
value,
|
|
@@ -2556,16 +2724,16 @@ var Calendar2 = React16.forwardRef(
|
|
|
2556
2724
|
size = "md",
|
|
2557
2725
|
...props
|
|
2558
2726
|
}, ref) => {
|
|
2559
|
-
const today =
|
|
2727
|
+
const today = React18.useMemo(() => {
|
|
2560
2728
|
if (todayProp) return todayProp;
|
|
2561
2729
|
const now = Date.now();
|
|
2562
2730
|
const d = new Date(now);
|
|
2563
2731
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
2564
2732
|
}, [todayProp]);
|
|
2565
2733
|
const initialDate = value ?? rangeStart ?? today;
|
|
2566
|
-
const [viewYear, setViewYear] =
|
|
2567
|
-
const [viewMonth, setViewMonth] =
|
|
2568
|
-
const [focusedDay, setFocusedDay] =
|
|
2734
|
+
const [viewYear, setViewYear] = React18.useState(initialDate.getFullYear());
|
|
2735
|
+
const [viewMonth, setViewMonth] = React18.useState(initialDate.getMonth());
|
|
2736
|
+
const [focusedDay, setFocusedDay] = React18.useState(null);
|
|
2569
2737
|
const daysInMonth = getDaysInMonth(viewYear, viewMonth);
|
|
2570
2738
|
const startDay = getStartDayOfWeek(viewYear, viewMonth);
|
|
2571
2739
|
const config = SIZE_CONFIG[size];
|
|
@@ -2699,7 +2867,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2699
2867
|
const cells = [];
|
|
2700
2868
|
for (let i = 0; i < startDay; i++) cells.push(null);
|
|
2701
2869
|
for (let d = 1; d <= daysInMonth; d++) cells.push(d);
|
|
2702
|
-
return /* @__PURE__ */
|
|
2870
|
+
return /* @__PURE__ */ jsxs22(
|
|
2703
2871
|
"div",
|
|
2704
2872
|
{
|
|
2705
2873
|
ref,
|
|
@@ -2714,8 +2882,8 @@ var Calendar2 = React16.forwardRef(
|
|
|
2714
2882
|
),
|
|
2715
2883
|
...props,
|
|
2716
2884
|
children: [
|
|
2717
|
-
/* @__PURE__ */
|
|
2718
|
-
/* @__PURE__ */
|
|
2885
|
+
/* @__PURE__ */ jsxs22("div", { className: "mb-2 flex items-center justify-between", children: [
|
|
2886
|
+
/* @__PURE__ */ jsx31(
|
|
2719
2887
|
"button",
|
|
2720
2888
|
{
|
|
2721
2889
|
type: "button",
|
|
@@ -2726,7 +2894,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2726
2894
|
children: "\u2039"
|
|
2727
2895
|
}
|
|
2728
2896
|
),
|
|
2729
|
-
/* @__PURE__ */
|
|
2897
|
+
/* @__PURE__ */ jsx31(
|
|
2730
2898
|
"span",
|
|
2731
2899
|
{
|
|
2732
2900
|
className: "text-sm font-medium text-foreground",
|
|
@@ -2734,7 +2902,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2734
2902
|
children: formatMonth(viewYear, viewMonth)
|
|
2735
2903
|
}
|
|
2736
2904
|
),
|
|
2737
|
-
/* @__PURE__ */
|
|
2905
|
+
/* @__PURE__ */ jsx31(
|
|
2738
2906
|
"button",
|
|
2739
2907
|
{
|
|
2740
2908
|
type: "button",
|
|
@@ -2746,7 +2914,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2746
2914
|
}
|
|
2747
2915
|
)
|
|
2748
2916
|
] }),
|
|
2749
|
-
/* @__PURE__ */
|
|
2917
|
+
/* @__PURE__ */ jsx31("div", { role: "row", className: cn("grid grid-cols-7", config.gap), children: WEEKDAYS.map((day) => /* @__PURE__ */ jsx31(
|
|
2750
2918
|
"div",
|
|
2751
2919
|
{
|
|
2752
2920
|
role: "columnheader",
|
|
@@ -2758,9 +2926,9 @@ var Calendar2 = React16.forwardRef(
|
|
|
2758
2926
|
},
|
|
2759
2927
|
day
|
|
2760
2928
|
)) }),
|
|
2761
|
-
/* @__PURE__ */
|
|
2929
|
+
/* @__PURE__ */ jsx31("div", { className: cn("grid grid-cols-7", config.gap), children: cells.map((day, i) => {
|
|
2762
2930
|
if (day === null) {
|
|
2763
|
-
return /* @__PURE__ */
|
|
2931
|
+
return /* @__PURE__ */ jsx31("div", { className: config.cell }, `empty-${i}`);
|
|
2764
2932
|
}
|
|
2765
2933
|
const date = new Date(viewYear, viewMonth, day);
|
|
2766
2934
|
const disabled = isDisabled(day);
|
|
@@ -2783,7 +2951,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2783
2951
|
}
|
|
2784
2952
|
const isToday = isSameDay(date, today);
|
|
2785
2953
|
const eventDot = hasEvent(day);
|
|
2786
|
-
return /* @__PURE__ */
|
|
2954
|
+
return /* @__PURE__ */ jsxs22(
|
|
2787
2955
|
"button",
|
|
2788
2956
|
{
|
|
2789
2957
|
type: "button",
|
|
@@ -2802,7 +2970,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2802
2970
|
),
|
|
2803
2971
|
children: [
|
|
2804
2972
|
day,
|
|
2805
|
-
eventDot && /* @__PURE__ */
|
|
2973
|
+
eventDot && /* @__PURE__ */ jsx31(
|
|
2806
2974
|
"span",
|
|
2807
2975
|
{
|
|
2808
2976
|
className: cn(
|
|
@@ -2822,7 +2990,7 @@ var Calendar2 = React16.forwardRef(
|
|
|
2822
2990
|
}
|
|
2823
2991
|
);
|
|
2824
2992
|
Calendar2.displayName = "Calendar";
|
|
2825
|
-
var DatePicker =
|
|
2993
|
+
var DatePicker = React18.forwardRef(
|
|
2826
2994
|
({
|
|
2827
2995
|
className,
|
|
2828
2996
|
variant = "single",
|
|
@@ -2841,7 +3009,7 @@ var DatePicker = React16.forwardRef(
|
|
|
2841
3009
|
disabled,
|
|
2842
3010
|
...props
|
|
2843
3011
|
}, ref) => {
|
|
2844
|
-
const [internalOpen, setInternalOpen] =
|
|
3012
|
+
const [internalOpen, setInternalOpen] = React18.useState(false);
|
|
2845
3013
|
const isOpen = controlledOpen ?? internalOpen;
|
|
2846
3014
|
const setOpen = onOpenChange ?? setInternalOpen;
|
|
2847
3015
|
const defaultPlaceholder = variant === "range" ? "Pick a date range" : "Pick a date";
|
|
@@ -2865,7 +3033,7 @@ var DatePicker = React16.forwardRef(
|
|
|
2865
3033
|
} else if (variant === "range" && rangeStart) {
|
|
2866
3034
|
displayText = rangeEnd ? `${formatDateForInput(rangeStart)} \u2013 ${formatDateForInput(rangeEnd)}` : formatDateForInput(rangeStart);
|
|
2867
3035
|
}
|
|
2868
|
-
return /* @__PURE__ */
|
|
3036
|
+
return /* @__PURE__ */ jsxs22(
|
|
2869
3037
|
"div",
|
|
2870
3038
|
{
|
|
2871
3039
|
ref,
|
|
@@ -2873,7 +3041,7 @@ var DatePicker = React16.forwardRef(
|
|
|
2873
3041
|
onKeyDown: handleKeyDown,
|
|
2874
3042
|
...props,
|
|
2875
3043
|
children: [
|
|
2876
|
-
/* @__PURE__ */
|
|
3044
|
+
/* @__PURE__ */ jsxs22(
|
|
2877
3045
|
"button",
|
|
2878
3046
|
{
|
|
2879
3047
|
type: "button",
|
|
@@ -2886,21 +3054,21 @@ var DatePicker = React16.forwardRef(
|
|
|
2886
3054
|
displayText ? "text-foreground" : "text-muted-foreground"
|
|
2887
3055
|
),
|
|
2888
3056
|
children: [
|
|
2889
|
-
/* @__PURE__ */
|
|
2890
|
-
/* @__PURE__ */
|
|
2891
|
-
/* @__PURE__ */
|
|
3057
|
+
/* @__PURE__ */ jsx31("span", { className: "text-muted-foreground", "aria-hidden": "true", children: "\u{1F4C5}" }),
|
|
3058
|
+
/* @__PURE__ */ jsx31("span", { className: "flex-1 text-left", children: displayText ?? placeholder ?? defaultPlaceholder }),
|
|
3059
|
+
/* @__PURE__ */ jsx31("span", { className: "text-muted-foreground", "aria-hidden": "true", children: "\u25BE" })
|
|
2892
3060
|
]
|
|
2893
3061
|
}
|
|
2894
3062
|
),
|
|
2895
|
-
isOpen && /* @__PURE__ */
|
|
2896
|
-
/* @__PURE__ */
|
|
3063
|
+
isOpen && /* @__PURE__ */ jsxs22(Fragment6, { children: [
|
|
3064
|
+
/* @__PURE__ */ jsx31(
|
|
2897
3065
|
"div",
|
|
2898
3066
|
{
|
|
2899
3067
|
className: "z-popover fixed inset-0",
|
|
2900
3068
|
onClick: () => setOpen(false)
|
|
2901
3069
|
}
|
|
2902
3070
|
),
|
|
2903
|
-
/* @__PURE__ */
|
|
3071
|
+
/* @__PURE__ */ jsx31("div", { className: "z-popover absolute left-0 top-full mt-1", children: /* @__PURE__ */ jsx31(
|
|
2904
3072
|
Calendar2,
|
|
2905
3073
|
{
|
|
2906
3074
|
selectionMode: variant,
|
|
@@ -2924,9 +3092,9 @@ var DatePicker = React16.forwardRef(
|
|
|
2924
3092
|
DatePicker.displayName = "DatePicker";
|
|
2925
3093
|
|
|
2926
3094
|
// src/navbar.tsx
|
|
2927
|
-
import * as
|
|
2928
|
-
import { jsx as
|
|
2929
|
-
var Navbar =
|
|
3095
|
+
import * as React19 from "react";
|
|
3096
|
+
import { jsx as jsx32, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3097
|
+
var Navbar = React19.forwardRef(
|
|
2930
3098
|
({
|
|
2931
3099
|
className,
|
|
2932
3100
|
variant = "simple",
|
|
@@ -2937,7 +3105,7 @@ var Navbar = React17.forwardRef(
|
|
|
2937
3105
|
secondaryNav,
|
|
2938
3106
|
children,
|
|
2939
3107
|
...props
|
|
2940
|
-
}, ref) => /* @__PURE__ */
|
|
3108
|
+
}, ref) => /* @__PURE__ */ jsxs23(
|
|
2941
3109
|
"header",
|
|
2942
3110
|
{
|
|
2943
3111
|
ref,
|
|
@@ -2948,34 +3116,35 @@ var Navbar = React17.forwardRef(
|
|
|
2948
3116
|
),
|
|
2949
3117
|
...props,
|
|
2950
3118
|
children: [
|
|
2951
|
-
/* @__PURE__ */
|
|
2952
|
-
logo && /* @__PURE__ */
|
|
2953
|
-
/* @__PURE__ */
|
|
3119
|
+
/* @__PURE__ */ jsxs23("div", { className: "mx-auto flex h-14 max-w-content-xl items-center gap-4 px-4 sm:px-6", children: [
|
|
3120
|
+
logo && /* @__PURE__ */ jsx32("div", { className: "flex-shrink-0", children: logo }),
|
|
3121
|
+
/* @__PURE__ */ jsxs23(
|
|
2954
3122
|
"nav",
|
|
2955
3123
|
{
|
|
2956
3124
|
className: cn(
|
|
2957
3125
|
// W0 (#5823): the links scroll on a narrow screen, never push
|
|
2958
3126
|
// the bar off the page
|
|
2959
3127
|
"flex min-w-0 items-center gap-4 overflow-x-auto",
|
|
2960
|
-
variant === "centered" && "flex-1 [&>:first-child]:ml-auto [&>:last-child]:mr-auto"
|
|
2961
|
-
SCROLL_HINT_X
|
|
2962
|
-
// W1: a clipped link fades
|
|
3128
|
+
variant === "centered" && "flex-1 [&>:first-child]:ml-auto [&>:nth-last-child(2)]:mr-auto"
|
|
2963
3129
|
),
|
|
2964
|
-
children
|
|
3130
|
+
children: [
|
|
3131
|
+
children,
|
|
3132
|
+
/* @__PURE__ */ jsx32(ScrollHintXMark, {})
|
|
3133
|
+
]
|
|
2965
3134
|
}
|
|
2966
3135
|
),
|
|
2967
|
-
variant === "withSearch" && search && /* @__PURE__ */
|
|
2968
|
-
variant !== "centered" && variant !== "withSearch" && /* @__PURE__ */
|
|
2969
|
-
actions && /* @__PURE__ */
|
|
3136
|
+
variant === "withSearch" && search && /* @__PURE__ */ jsx32("div", { className: "min-w-0 flex-1 px-4", children: search }),
|
|
3137
|
+
variant !== "centered" && variant !== "withSearch" && /* @__PURE__ */ jsx32("div", { className: "flex-1" }),
|
|
3138
|
+
actions && /* @__PURE__ */ jsx32("div", { className: "flex shrink-0 items-center gap-2", children: actions })
|
|
2970
3139
|
] }),
|
|
2971
|
-
variant === "twoLevel" && secondaryNav && /* @__PURE__ */
|
|
3140
|
+
variant === "twoLevel" && secondaryNav && /* @__PURE__ */ jsx32("div", { className: "border-t border-border", children: /* @__PURE__ */ jsx32("div", { className: "mx-auto flex max-w-content-xl items-center gap-4 px-4 py-2 sm:px-6", children: secondaryNav }) })
|
|
2972
3141
|
]
|
|
2973
3142
|
}
|
|
2974
3143
|
)
|
|
2975
3144
|
);
|
|
2976
3145
|
Navbar.displayName = "Navbar";
|
|
2977
|
-
var NavbarLink =
|
|
2978
|
-
({ className, active, ...props }, ref) => /* @__PURE__ */
|
|
3146
|
+
var NavbarLink = React19.forwardRef(
|
|
3147
|
+
({ className, active, ...props }, ref) => /* @__PURE__ */ jsx32(
|
|
2979
3148
|
"a",
|
|
2980
3149
|
{
|
|
2981
3150
|
ref,
|
|
@@ -2991,25 +3160,25 @@ var NavbarLink = React17.forwardRef(
|
|
|
2991
3160
|
NavbarLink.displayName = "NavbarLink";
|
|
2992
3161
|
|
|
2993
3162
|
// src/card-variants.tsx
|
|
2994
|
-
import * as
|
|
3163
|
+
import * as React20 from "react";
|
|
2995
3164
|
|
|
2996
3165
|
// src/empty-value.tsx
|
|
2997
|
-
import { jsx as
|
|
3166
|
+
import { jsx as jsx33, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2998
3167
|
var EMPTY_VALUE_GLYPH = "\u2014";
|
|
2999
3168
|
function isEmptyValue(value) {
|
|
3000
3169
|
return value === null || value === void 0 || value === false || typeof value === "string" && value.trim() === "";
|
|
3001
3170
|
}
|
|
3002
3171
|
function EmptyValue({ className }) {
|
|
3003
|
-
return /* @__PURE__ */
|
|
3004
|
-
/* @__PURE__ */
|
|
3005
|
-
/* @__PURE__ */
|
|
3172
|
+
return /* @__PURE__ */ jsxs24("span", { "data-empty-value": true, className: cn("text-muted-foreground", className), children: [
|
|
3173
|
+
/* @__PURE__ */ jsx33("span", { "aria-hidden": "true", children: EMPTY_VALUE_GLYPH }),
|
|
3174
|
+
/* @__PURE__ */ jsx33("span", { className: "sr-only", children: "Not set" })
|
|
3006
3175
|
] });
|
|
3007
3176
|
}
|
|
3008
3177
|
|
|
3009
3178
|
// src/card-variants.tsx
|
|
3010
|
-
import { jsx as
|
|
3011
|
-
var HorizontalCard =
|
|
3012
|
-
({ className, media, hoverable, children, ...props }, ref) => /* @__PURE__ */
|
|
3179
|
+
import { jsx as jsx34, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3180
|
+
var HorizontalCard = React20.forwardRef(
|
|
3181
|
+
({ className, media, hoverable, children, ...props }, ref) => /* @__PURE__ */ jsxs25(
|
|
3013
3182
|
"div",
|
|
3014
3183
|
{
|
|
3015
3184
|
ref,
|
|
@@ -3020,15 +3189,15 @@ var HorizontalCard = React18.forwardRef(
|
|
|
3020
3189
|
),
|
|
3021
3190
|
...props,
|
|
3022
3191
|
children: [
|
|
3023
|
-
media && /* @__PURE__ */
|
|
3024
|
-
/* @__PURE__ */
|
|
3192
|
+
media && /* @__PURE__ */ jsx34("div", { className: "flex-shrink-0", children: media }),
|
|
3193
|
+
/* @__PURE__ */ jsx34("div", { className: "flex-1 p-4", children })
|
|
3025
3194
|
]
|
|
3026
3195
|
}
|
|
3027
3196
|
)
|
|
3028
3197
|
);
|
|
3029
3198
|
HorizontalCard.displayName = "HorizontalCard";
|
|
3030
|
-
var ImageCard =
|
|
3031
|
-
({ className, imageSrc, imageAlt, hoverable, children, ...props }, ref) => /* @__PURE__ */
|
|
3199
|
+
var ImageCard = React20.forwardRef(
|
|
3200
|
+
({ className, imageSrc, imageAlt, hoverable, children, ...props }, ref) => /* @__PURE__ */ jsxs25(
|
|
3032
3201
|
"div",
|
|
3033
3202
|
{
|
|
3034
3203
|
ref,
|
|
@@ -3039,7 +3208,7 @@ var ImageCard = React18.forwardRef(
|
|
|
3039
3208
|
),
|
|
3040
3209
|
...props,
|
|
3041
3210
|
children: [
|
|
3042
|
-
imageSrc && /* @__PURE__ */
|
|
3211
|
+
imageSrc && /* @__PURE__ */ jsx34("div", { className: "aspect-video w-full bg-muted", children: /* @__PURE__ */ jsx34(
|
|
3043
3212
|
"img",
|
|
3044
3213
|
{
|
|
3045
3214
|
src: imageSrc,
|
|
@@ -3047,13 +3216,13 @@ var ImageCard = React18.forwardRef(
|
|
|
3047
3216
|
className: "h-full w-full object-cover"
|
|
3048
3217
|
}
|
|
3049
3218
|
) }),
|
|
3050
|
-
/* @__PURE__ */
|
|
3219
|
+
/* @__PURE__ */ jsx34("div", { className: "p-4", children })
|
|
3051
3220
|
]
|
|
3052
3221
|
}
|
|
3053
3222
|
)
|
|
3054
3223
|
);
|
|
3055
3224
|
ImageCard.displayName = "ImageCard";
|
|
3056
|
-
var StatCardExtended =
|
|
3225
|
+
var StatCardExtended = React20.forwardRef(({ className, label, value, trend, icon, ...props }, ref) => /* @__PURE__ */ jsxs25(
|
|
3057
3226
|
"div",
|
|
3058
3227
|
{
|
|
3059
3228
|
ref,
|
|
@@ -3063,12 +3232,12 @@ var StatCardExtended = React18.forwardRef(({ className, label, value, trend, ico
|
|
|
3063
3232
|
),
|
|
3064
3233
|
...props,
|
|
3065
3234
|
children: [
|
|
3066
|
-
/* @__PURE__ */
|
|
3067
|
-
/* @__PURE__ */
|
|
3068
|
-
icon && /* @__PURE__ */
|
|
3235
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex items-center justify-between", children: [
|
|
3236
|
+
/* @__PURE__ */ jsx34("span", { className: "text-sm text-muted-foreground", children: label }),
|
|
3237
|
+
icon && /* @__PURE__ */ jsx34("div", { className: "text-muted-foreground", children: icon })
|
|
3069
3238
|
] }),
|
|
3070
|
-
/* @__PURE__ */
|
|
3071
|
-
trend && /* @__PURE__ */
|
|
3239
|
+
/* @__PURE__ */ jsx34("p", { className: "mt-2 text-3xl font-bold text-foreground", children: isEmptyValue(value) ? /* @__PURE__ */ jsx34(EmptyValue, {}) : value }),
|
|
3240
|
+
trend && /* @__PURE__ */ jsxs25(
|
|
3072
3241
|
"p",
|
|
3073
3242
|
{
|
|
3074
3243
|
className: cn(
|
|
@@ -3088,8 +3257,8 @@ var StatCardExtended = React18.forwardRef(({ className, label, value, trend, ico
|
|
|
3088
3257
|
}
|
|
3089
3258
|
));
|
|
3090
3259
|
StatCardExtended.displayName = "StatCardExtended";
|
|
3091
|
-
var ActionCard =
|
|
3092
|
-
({ className, title, description, actions, children, ...props }, ref) => /* @__PURE__ */
|
|
3260
|
+
var ActionCard = React20.forwardRef(
|
|
3261
|
+
({ className, title, description, actions, children, ...props }, ref) => /* @__PURE__ */ jsxs25(
|
|
3093
3262
|
"div",
|
|
3094
3263
|
{
|
|
3095
3264
|
ref,
|
|
@@ -3099,12 +3268,12 @@ var ActionCard = React18.forwardRef(
|
|
|
3099
3268
|
),
|
|
3100
3269
|
...props,
|
|
3101
3270
|
children: [
|
|
3102
|
-
/* @__PURE__ */
|
|
3103
|
-
/* @__PURE__ */
|
|
3104
|
-
description && /* @__PURE__ */
|
|
3271
|
+
/* @__PURE__ */ jsxs25("div", { className: "p-6", children: [
|
|
3272
|
+
/* @__PURE__ */ jsx34("h3", { className: "font-semibold text-foreground", children: title }),
|
|
3273
|
+
description && /* @__PURE__ */ jsx34("p", { className: "mt-1 text-sm text-muted-foreground", children: description }),
|
|
3105
3274
|
children
|
|
3106
3275
|
] }),
|
|
3107
|
-
actions && /* @__PURE__ */
|
|
3276
|
+
actions && /* @__PURE__ */ jsx34("div", { className: "flex items-center gap-2 border-t border-border px-6 py-4", children: actions })
|
|
3108
3277
|
]
|
|
3109
3278
|
}
|
|
3110
3279
|
)
|
|
@@ -3112,9 +3281,9 @@ var ActionCard = React18.forwardRef(
|
|
|
3112
3281
|
ActionCard.displayName = "ActionCard";
|
|
3113
3282
|
|
|
3114
3283
|
// src/modal-dialog.tsx
|
|
3115
|
-
import * as
|
|
3284
|
+
import * as React21 from "react";
|
|
3116
3285
|
import { createPortal } from "react-dom";
|
|
3117
|
-
import { Fragment as Fragment7, jsx as
|
|
3286
|
+
import { Fragment as Fragment7, jsx as jsx35, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3118
3287
|
var SIZE_CLASSES2 = {
|
|
3119
3288
|
sm: "max-w-sm",
|
|
3120
3289
|
md: "max-w-md",
|
|
@@ -3122,9 +3291,9 @@ var SIZE_CLASSES2 = {
|
|
|
3122
3291
|
xl: "max-w-xl",
|
|
3123
3292
|
fullscreen: "max-w-full mx-4 my-4 h-[calc(100vh-2rem)]"
|
|
3124
3293
|
};
|
|
3125
|
-
var ModalDialog =
|
|
3294
|
+
var ModalDialog = React21.forwardRef(
|
|
3126
3295
|
({ className, open, onClose, size = "md", children, ...props }, ref) => {
|
|
3127
|
-
|
|
3296
|
+
React21.useEffect(() => {
|
|
3128
3297
|
if (!open) return;
|
|
3129
3298
|
const handler = (e) => {
|
|
3130
3299
|
if (e.key === "Escape") onClose?.();
|
|
@@ -3134,8 +3303,8 @@ var ModalDialog = React19.forwardRef(
|
|
|
3134
3303
|
}, [open, onClose]);
|
|
3135
3304
|
if (!open) return null;
|
|
3136
3305
|
return createPortal(
|
|
3137
|
-
/* @__PURE__ */
|
|
3138
|
-
/* @__PURE__ */
|
|
3306
|
+
/* @__PURE__ */ jsxs26(Fragment7, { children: [
|
|
3307
|
+
/* @__PURE__ */ jsx35(
|
|
3139
3308
|
"div",
|
|
3140
3309
|
{
|
|
3141
3310
|
className: "z-overlay fixed inset-0 bg-foreground/60 transition-opacity",
|
|
@@ -3143,7 +3312,7 @@ var ModalDialog = React19.forwardRef(
|
|
|
3143
3312
|
"aria-hidden": "true"
|
|
3144
3313
|
}
|
|
3145
3314
|
),
|
|
3146
|
-
/* @__PURE__ */
|
|
3315
|
+
/* @__PURE__ */ jsx35("div", { className: "z-modal fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx35(
|
|
3147
3316
|
"div",
|
|
3148
3317
|
{
|
|
3149
3318
|
ref,
|
|
@@ -3165,7 +3334,7 @@ var ModalDialog = React19.forwardRef(
|
|
|
3165
3334
|
}
|
|
3166
3335
|
);
|
|
3167
3336
|
ModalDialog.displayName = "ModalDialog";
|
|
3168
|
-
var ModalHeader =
|
|
3337
|
+
var ModalHeader = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
|
|
3169
3338
|
"div",
|
|
3170
3339
|
{
|
|
3171
3340
|
ref,
|
|
@@ -3174,9 +3343,9 @@ var ModalHeader = React19.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3174
3343
|
}
|
|
3175
3344
|
));
|
|
3176
3345
|
ModalHeader.displayName = "ModalHeader";
|
|
3177
|
-
var ModalBody =
|
|
3346
|
+
var ModalBody = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35("div", { ref, className: cn("px-6 py-4", className), ...props }));
|
|
3178
3347
|
ModalBody.displayName = "ModalBody";
|
|
3179
|
-
var ModalFooter =
|
|
3348
|
+
var ModalFooter = React21.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx35(
|
|
3180
3349
|
"div",
|
|
3181
3350
|
{
|
|
3182
3351
|
ref,
|
|
@@ -3190,9 +3359,9 @@ var ModalFooter = React19.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
3190
3359
|
ModalFooter.displayName = "ModalFooter";
|
|
3191
3360
|
|
|
3192
3361
|
// src/drawer.tsx
|
|
3193
|
-
import * as
|
|
3362
|
+
import * as React22 from "react";
|
|
3194
3363
|
import { createPortal as createPortal2 } from "react-dom";
|
|
3195
|
-
import { Fragment as Fragment8, jsx as
|
|
3364
|
+
import { Fragment as Fragment8, jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3196
3365
|
var SIZE_CLASSES3 = {
|
|
3197
3366
|
left: { sm: "w-64", md: "w-80", lg: "w-96" },
|
|
3198
3367
|
right: { sm: "w-64", md: "w-80", lg: "w-96" },
|
|
@@ -3203,7 +3372,7 @@ var POSITION_CLASSES = {
|
|
|
3203
3372
|
right: "inset-y-0 right-0",
|
|
3204
3373
|
bottom: "inset-x-0 bottom-0"
|
|
3205
3374
|
};
|
|
3206
|
-
var Drawer =
|
|
3375
|
+
var Drawer = React22.forwardRef(
|
|
3207
3376
|
({
|
|
3208
3377
|
className,
|
|
3209
3378
|
open,
|
|
@@ -3213,7 +3382,7 @@ var Drawer = React20.forwardRef(
|
|
|
3213
3382
|
children,
|
|
3214
3383
|
...props
|
|
3215
3384
|
}, ref) => {
|
|
3216
|
-
|
|
3385
|
+
React22.useEffect(() => {
|
|
3217
3386
|
if (!open) return;
|
|
3218
3387
|
const handler = (e) => {
|
|
3219
3388
|
if (e.key === "Escape") onClose?.();
|
|
@@ -3223,8 +3392,8 @@ var Drawer = React20.forwardRef(
|
|
|
3223
3392
|
}, [open, onClose]);
|
|
3224
3393
|
if (!open) return null;
|
|
3225
3394
|
return createPortal2(
|
|
3226
|
-
/* @__PURE__ */
|
|
3227
|
-
/* @__PURE__ */
|
|
3395
|
+
/* @__PURE__ */ jsxs27(Fragment8, { children: [
|
|
3396
|
+
/* @__PURE__ */ jsx36(
|
|
3228
3397
|
"div",
|
|
3229
3398
|
{
|
|
3230
3399
|
className: "z-overlay fixed inset-0 bg-foreground/60 transition-opacity",
|
|
@@ -3232,7 +3401,7 @@ var Drawer = React20.forwardRef(
|
|
|
3232
3401
|
"aria-hidden": "true"
|
|
3233
3402
|
}
|
|
3234
3403
|
),
|
|
3235
|
-
/* @__PURE__ */
|
|
3404
|
+
/* @__PURE__ */ jsx36(
|
|
3236
3405
|
"div",
|
|
3237
3406
|
{
|
|
3238
3407
|
ref,
|
|
@@ -3257,7 +3426,7 @@ var Drawer = React20.forwardRef(
|
|
|
3257
3426
|
}
|
|
3258
3427
|
);
|
|
3259
3428
|
Drawer.displayName = "Drawer";
|
|
3260
|
-
var DrawerHeader =
|
|
3429
|
+
var DrawerHeader = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
|
|
3261
3430
|
"div",
|
|
3262
3431
|
{
|
|
3263
3432
|
ref,
|
|
@@ -3266,7 +3435,7 @@ var DrawerHeader = React20.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
3266
3435
|
}
|
|
3267
3436
|
));
|
|
3268
3437
|
DrawerHeader.displayName = "DrawerHeader";
|
|
3269
|
-
var DrawerBody =
|
|
3438
|
+
var DrawerBody = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
|
|
3270
3439
|
"div",
|
|
3271
3440
|
{
|
|
3272
3441
|
ref,
|
|
@@ -3275,7 +3444,7 @@ var DrawerBody = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
3275
3444
|
}
|
|
3276
3445
|
));
|
|
3277
3446
|
DrawerBody.displayName = "DrawerBody";
|
|
3278
|
-
var DrawerFooter =
|
|
3447
|
+
var DrawerFooter = React22.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx36(
|
|
3279
3448
|
"div",
|
|
3280
3449
|
{
|
|
3281
3450
|
ref,
|
|
@@ -3289,10 +3458,10 @@ var DrawerFooter = React20.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
3289
3458
|
DrawerFooter.displayName = "DrawerFooter";
|
|
3290
3459
|
|
|
3291
3460
|
// src/form-layout.tsx
|
|
3292
|
-
import * as
|
|
3293
|
-
import { jsx as
|
|
3294
|
-
var FormLayout =
|
|
3295
|
-
({ className, layout = "stacked", ...props }, ref) => /* @__PURE__ */
|
|
3461
|
+
import * as React23 from "react";
|
|
3462
|
+
import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
3463
|
+
var FormLayout = React23.forwardRef(
|
|
3464
|
+
({ className, layout = "stacked", ...props }, ref) => /* @__PURE__ */ jsx37(
|
|
3296
3465
|
"form",
|
|
3297
3466
|
{
|
|
3298
3467
|
ref,
|
|
@@ -3307,27 +3476,27 @@ var FormLayout = React21.forwardRef(
|
|
|
3307
3476
|
)
|
|
3308
3477
|
);
|
|
3309
3478
|
FormLayout.displayName = "FormLayout";
|
|
3310
|
-
var FormLayoutSection =
|
|
3479
|
+
var FormLayoutSection = React23.forwardRef(({ className, title, description, children, ...props }, ref) => /* @__PURE__ */ jsxs28(
|
|
3311
3480
|
"div",
|
|
3312
3481
|
{
|
|
3313
3482
|
ref,
|
|
3314
3483
|
className: cn("border-b border-border pb-6", className),
|
|
3315
3484
|
...props,
|
|
3316
3485
|
children: [
|
|
3317
|
-
(title || description) && /* @__PURE__ */
|
|
3318
|
-
title && /* @__PURE__ */
|
|
3319
|
-
description && /* @__PURE__ */
|
|
3486
|
+
(title || description) && /* @__PURE__ */ jsxs28("div", { className: "mb-4", children: [
|
|
3487
|
+
title && /* @__PURE__ */ jsx37("h3", { className: "text-base font-semibold text-foreground", children: title }),
|
|
3488
|
+
description && /* @__PURE__ */ jsx37("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
|
|
3320
3489
|
] }),
|
|
3321
|
-
/* @__PURE__ */
|
|
3490
|
+
/* @__PURE__ */ jsx37("div", { className: "space-y-4", children })
|
|
3322
3491
|
]
|
|
3323
3492
|
}
|
|
3324
3493
|
));
|
|
3325
3494
|
FormLayoutSection.displayName = "FormLayoutSection";
|
|
3326
3495
|
|
|
3327
3496
|
// src/input-group.tsx
|
|
3328
|
-
import * as
|
|
3329
|
-
import { jsx as
|
|
3330
|
-
var InputGroup =
|
|
3497
|
+
import * as React24 from "react";
|
|
3498
|
+
import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
3499
|
+
var InputGroup = React24.forwardRef(
|
|
3331
3500
|
({
|
|
3332
3501
|
className,
|
|
3333
3502
|
addon = "prefix",
|
|
@@ -3335,15 +3504,15 @@ var InputGroup = React22.forwardRef(
|
|
|
3335
3504
|
suffixContent,
|
|
3336
3505
|
children,
|
|
3337
3506
|
...props
|
|
3338
|
-
}, ref) => /* @__PURE__ */
|
|
3507
|
+
}, ref) => /* @__PURE__ */ jsxs29(
|
|
3339
3508
|
"div",
|
|
3340
3509
|
{
|
|
3341
3510
|
ref,
|
|
3342
3511
|
className: cn("flex rounded-md shadow-sm", className),
|
|
3343
3512
|
...props,
|
|
3344
3513
|
children: [
|
|
3345
|
-
(addon === "prefix" || addon === "both") && addonContent && /* @__PURE__ */
|
|
3346
|
-
/* @__PURE__ */
|
|
3514
|
+
(addon === "prefix" || addon === "both") && addonContent && /* @__PURE__ */ jsx38("span", { className: "inline-flex items-center rounded-l-md border border-r-0 border-input bg-muted px-3 text-sm text-muted-foreground", children: addonContent }),
|
|
3515
|
+
/* @__PURE__ */ jsx38(
|
|
3347
3516
|
"div",
|
|
3348
3517
|
{
|
|
3349
3518
|
className: cn(
|
|
@@ -3353,7 +3522,7 @@ var InputGroup = React22.forwardRef(
|
|
|
3353
3522
|
children
|
|
3354
3523
|
}
|
|
3355
3524
|
),
|
|
3356
|
-
(addon === "suffix" || addon === "both") && (suffixContent || addonContent) && /* @__PURE__ */
|
|
3525
|
+
(addon === "suffix" || addon === "both") && (suffixContent || addonContent) && /* @__PURE__ */ jsx38("span", { className: "inline-flex items-center rounded-r-md border border-l-0 border-input bg-muted px-3 text-sm text-muted-foreground", children: suffixContent || addonContent })
|
|
3357
3526
|
]
|
|
3358
3527
|
}
|
|
3359
3528
|
)
|
|
@@ -3361,9 +3530,9 @@ var InputGroup = React22.forwardRef(
|
|
|
3361
3530
|
InputGroup.displayName = "InputGroup";
|
|
3362
3531
|
|
|
3363
3532
|
// src/radio-group.tsx
|
|
3364
|
-
import * as
|
|
3365
|
-
import { jsx as
|
|
3366
|
-
var RadioGroup =
|
|
3533
|
+
import * as React25 from "react";
|
|
3534
|
+
import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
3535
|
+
var RadioGroup = React25.forwardRef(
|
|
3367
3536
|
({
|
|
3368
3537
|
className,
|
|
3369
3538
|
options,
|
|
@@ -3373,9 +3542,9 @@ var RadioGroup = React23.forwardRef(
|
|
|
3373
3542
|
name,
|
|
3374
3543
|
label,
|
|
3375
3544
|
...props
|
|
3376
|
-
}, ref) => /* @__PURE__ */
|
|
3377
|
-
label && /* @__PURE__ */
|
|
3378
|
-
/* @__PURE__ */
|
|
3545
|
+
}, ref) => /* @__PURE__ */ jsxs30("fieldset", { ref, className: cn("space-y-2", className), ...props, children: [
|
|
3546
|
+
label && /* @__PURE__ */ jsx39("legend", { className: "mb-2 text-sm font-medium text-foreground", children: label }),
|
|
3547
|
+
/* @__PURE__ */ jsx39(
|
|
3379
3548
|
"div",
|
|
3380
3549
|
{
|
|
3381
3550
|
className: cn(
|
|
@@ -3386,7 +3555,7 @@ var RadioGroup = React23.forwardRef(
|
|
|
3386
3555
|
children: options.map((option) => {
|
|
3387
3556
|
const isSelected = value === option.value;
|
|
3388
3557
|
if (variant === "card") {
|
|
3389
|
-
return /* @__PURE__ */
|
|
3558
|
+
return /* @__PURE__ */ jsxs30(
|
|
3390
3559
|
"label",
|
|
3391
3560
|
{
|
|
3392
3561
|
className: cn(
|
|
@@ -3394,7 +3563,7 @@ var RadioGroup = React23.forwardRef(
|
|
|
3394
3563
|
isSelected ? "border-primary bg-primary/5" : "border-border bg-card hover:bg-muted/50"
|
|
3395
3564
|
),
|
|
3396
3565
|
children: [
|
|
3397
|
-
/* @__PURE__ */
|
|
3566
|
+
/* @__PURE__ */ jsx39(
|
|
3398
3567
|
"input",
|
|
3399
3568
|
{
|
|
3400
3569
|
type: "radio",
|
|
@@ -3405,16 +3574,16 @@ var RadioGroup = React23.forwardRef(
|
|
|
3405
3574
|
className: "mt-0.5 h-4 w-4 accent-primary"
|
|
3406
3575
|
}
|
|
3407
3576
|
),
|
|
3408
|
-
/* @__PURE__ */
|
|
3409
|
-
/* @__PURE__ */
|
|
3410
|
-
option.description && /* @__PURE__ */
|
|
3577
|
+
/* @__PURE__ */ jsxs30("div", { children: [
|
|
3578
|
+
/* @__PURE__ */ jsx39("span", { className: "text-sm font-medium text-foreground", children: option.label }),
|
|
3579
|
+
option.description && /* @__PURE__ */ jsx39("p", { className: "mt-0.5 text-xs text-muted-foreground", children: option.description })
|
|
3411
3580
|
] })
|
|
3412
3581
|
]
|
|
3413
3582
|
},
|
|
3414
3583
|
option.value
|
|
3415
3584
|
);
|
|
3416
3585
|
}
|
|
3417
|
-
return /* @__PURE__ */
|
|
3586
|
+
return /* @__PURE__ */ jsxs30(
|
|
3418
3587
|
"label",
|
|
3419
3588
|
{
|
|
3420
3589
|
className: cn(
|
|
@@ -3423,7 +3592,7 @@ var RadioGroup = React23.forwardRef(
|
|
|
3423
3592
|
variant === "stacked" && isSelected && "border-primary bg-primary/5"
|
|
3424
3593
|
),
|
|
3425
3594
|
children: [
|
|
3426
|
-
/* @__PURE__ */
|
|
3595
|
+
/* @__PURE__ */ jsx39(
|
|
3427
3596
|
"input",
|
|
3428
3597
|
{
|
|
3429
3598
|
type: "radio",
|
|
@@ -3434,8 +3603,8 @@ var RadioGroup = React23.forwardRef(
|
|
|
3434
3603
|
className: "h-4 w-4 accent-primary"
|
|
3435
3604
|
}
|
|
3436
3605
|
),
|
|
3437
|
-
/* @__PURE__ */
|
|
3438
|
-
option.description && variant === "stacked" && /* @__PURE__ */
|
|
3606
|
+
/* @__PURE__ */ jsx39("span", { className: "text-sm text-foreground", children: option.label }),
|
|
3607
|
+
option.description && variant === "stacked" && /* @__PURE__ */ jsx39("span", { className: "ml-auto text-xs text-muted-foreground", children: option.description })
|
|
3439
3608
|
]
|
|
3440
3609
|
},
|
|
3441
3610
|
option.value
|
|
@@ -3448,9 +3617,9 @@ var RadioGroup = React23.forwardRef(
|
|
|
3448
3617
|
RadioGroup.displayName = "RadioGroup";
|
|
3449
3618
|
|
|
3450
3619
|
// src/combobox.tsx
|
|
3451
|
-
import * as
|
|
3452
|
-
import { jsx as
|
|
3453
|
-
var Combobox =
|
|
3620
|
+
import * as React26 from "react";
|
|
3621
|
+
import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
3622
|
+
var Combobox = React26.forwardRef(
|
|
3454
3623
|
({
|
|
3455
3624
|
className,
|
|
3456
3625
|
options,
|
|
@@ -3461,8 +3630,8 @@ var Combobox = React24.forwardRef(
|
|
|
3461
3630
|
filterable = true,
|
|
3462
3631
|
...props
|
|
3463
3632
|
}, ref) => {
|
|
3464
|
-
const [open, setOpen] =
|
|
3465
|
-
const [search, setSearch] =
|
|
3633
|
+
const [open, setOpen] = React26.useState(false);
|
|
3634
|
+
const [search, setSearch] = React26.useState("");
|
|
3466
3635
|
const selected = multi ? Array.isArray(value) ? value : [] : typeof value === "string" ? value : "";
|
|
3467
3636
|
const filtered = filterable ? options.filter(
|
|
3468
3637
|
(o) => o.label.toLowerCase().includes(search.toLowerCase())
|
|
@@ -3481,20 +3650,20 @@ var Combobox = React24.forwardRef(
|
|
|
3481
3650
|
}
|
|
3482
3651
|
};
|
|
3483
3652
|
const displayValue = multi ? null : options.find((o) => o.value === selected)?.label;
|
|
3484
|
-
return /* @__PURE__ */
|
|
3485
|
-
/* @__PURE__ */
|
|
3653
|
+
return /* @__PURE__ */ jsxs31("div", { ref, className: cn("relative", className), ...props, children: [
|
|
3654
|
+
/* @__PURE__ */ jsxs31(
|
|
3486
3655
|
"div",
|
|
3487
3656
|
{
|
|
3488
3657
|
className: "flex min-h-9 cursor-pointer items-center gap-1 rounded-md border border-input bg-background px-3 py-1.5",
|
|
3489
3658
|
onClick: () => setOpen(!open),
|
|
3490
3659
|
children: [
|
|
3491
|
-
multi && Array.isArray(selected) && selected.length > 0 ? /* @__PURE__ */
|
|
3660
|
+
multi && Array.isArray(selected) && selected.length > 0 ? /* @__PURE__ */ jsx40("div", { className: "flex flex-wrap gap-1", children: selected.map((v) => /* @__PURE__ */ jsxs31(
|
|
3492
3661
|
"span",
|
|
3493
3662
|
{
|
|
3494
3663
|
className: "text-primary-text inline-flex items-center gap-1 rounded bg-primary/10 px-2 py-0.5 text-xs font-medium",
|
|
3495
3664
|
children: [
|
|
3496
3665
|
options.find((o) => o.value === v)?.label,
|
|
3497
|
-
/* @__PURE__ */
|
|
3666
|
+
/* @__PURE__ */ jsx40(
|
|
3498
3667
|
"button",
|
|
3499
3668
|
{
|
|
3500
3669
|
type: "button",
|
|
@@ -3509,7 +3678,7 @@ var Combobox = React24.forwardRef(
|
|
|
3509
3678
|
]
|
|
3510
3679
|
},
|
|
3511
3680
|
v
|
|
3512
|
-
)) }) : /* @__PURE__ */
|
|
3681
|
+
)) }) : /* @__PURE__ */ jsx40(
|
|
3513
3682
|
"span",
|
|
3514
3683
|
{
|
|
3515
3684
|
className: cn(
|
|
@@ -3519,12 +3688,12 @@ var Combobox = React24.forwardRef(
|
|
|
3519
3688
|
children: displayValue || placeholder
|
|
3520
3689
|
}
|
|
3521
3690
|
),
|
|
3522
|
-
/* @__PURE__ */
|
|
3691
|
+
/* @__PURE__ */ jsx40("span", { className: "ml-auto text-muted-foreground", children: "\u25BE" })
|
|
3523
3692
|
]
|
|
3524
3693
|
}
|
|
3525
3694
|
),
|
|
3526
|
-
open && /* @__PURE__ */
|
|
3527
|
-
filterable && /* @__PURE__ */
|
|
3695
|
+
open && /* @__PURE__ */ jsxs31("div", { className: "z-dropdown absolute mt-1 w-full rounded-md border border-border bg-card shadow-lg", children: [
|
|
3696
|
+
filterable && /* @__PURE__ */ jsx40("div", { className: "border-b border-border p-2", children: /* @__PURE__ */ jsx40(
|
|
3528
3697
|
"input",
|
|
3529
3698
|
{
|
|
3530
3699
|
type: "text",
|
|
@@ -3535,9 +3704,9 @@ var Combobox = React24.forwardRef(
|
|
|
3535
3704
|
autoFocus: true
|
|
3536
3705
|
}
|
|
3537
3706
|
) }),
|
|
3538
|
-
/* @__PURE__ */
|
|
3707
|
+
/* @__PURE__ */ jsx40("div", { className: "max-h-60 overflow-y-auto p-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx40("div", { className: "px-3 py-2 text-sm text-muted-foreground", children: "No results" }) : filtered.map((option) => {
|
|
3539
3708
|
const isSelected = multi ? Array.isArray(selected) && selected.includes(option.value) : selected === option.value;
|
|
3540
|
-
return /* @__PURE__ */
|
|
3709
|
+
return /* @__PURE__ */ jsxs31(
|
|
3541
3710
|
"button",
|
|
3542
3711
|
{
|
|
3543
3712
|
type: "button",
|
|
@@ -3547,9 +3716,9 @@ var Combobox = React24.forwardRef(
|
|
|
3547
3716
|
),
|
|
3548
3717
|
onClick: () => handleSelect(option.value),
|
|
3549
3718
|
children: [
|
|
3550
|
-
multi && /* @__PURE__ */
|
|
3719
|
+
multi && /* @__PURE__ */ jsx40("span", { className: "mr-2", children: isSelected ? "\u2611" : "\u2610" }),
|
|
3551
3720
|
option.label,
|
|
3552
|
-
!multi && isSelected && /* @__PURE__ */
|
|
3721
|
+
!multi && isSelected && /* @__PURE__ */ jsx40("span", { className: "text-primary-text ml-auto", children: "\u2713" })
|
|
3553
3722
|
]
|
|
3554
3723
|
},
|
|
3555
3724
|
option.value
|
|
@@ -3562,8 +3731,8 @@ var Combobox = React24.forwardRef(
|
|
|
3562
3731
|
Combobox.displayName = "Combobox";
|
|
3563
3732
|
|
|
3564
3733
|
// src/notification-banner.tsx
|
|
3565
|
-
import * as
|
|
3566
|
-
import { jsx as
|
|
3734
|
+
import * as React27 from "react";
|
|
3735
|
+
import { jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
3567
3736
|
var INTENT_STYLES = {
|
|
3568
3737
|
success: {
|
|
3569
3738
|
subtle: "bg-intent-success/10 text-intent-success-foreground border-intent-success/20",
|
|
@@ -3592,7 +3761,7 @@ var ICON_MAP = {
|
|
|
3592
3761
|
error: "circle-alert",
|
|
3593
3762
|
info: "info"
|
|
3594
3763
|
};
|
|
3595
|
-
var NotificationBanner =
|
|
3764
|
+
var NotificationBanner = React27.forwardRef(
|
|
3596
3765
|
({
|
|
3597
3766
|
className,
|
|
3598
3767
|
intent = "info",
|
|
@@ -3604,13 +3773,13 @@ var NotificationBanner = React25.forwardRef(
|
|
|
3604
3773
|
children,
|
|
3605
3774
|
...props
|
|
3606
3775
|
}, ref) => {
|
|
3607
|
-
const [dismissed, setDismissed] =
|
|
3776
|
+
const [dismissed, setDismissed] = React27.useState(false);
|
|
3608
3777
|
if (dismissed) return null;
|
|
3609
3778
|
const handleDismiss = () => {
|
|
3610
3779
|
setDismissed(true);
|
|
3611
3780
|
onDismiss?.();
|
|
3612
3781
|
};
|
|
3613
|
-
return /* @__PURE__ */
|
|
3782
|
+
return /* @__PURE__ */ jsxs32(
|
|
3614
3783
|
"div",
|
|
3615
3784
|
{
|
|
3616
3785
|
ref,
|
|
@@ -3622,13 +3791,13 @@ var NotificationBanner = React25.forwardRef(
|
|
|
3622
3791
|
),
|
|
3623
3792
|
...props,
|
|
3624
3793
|
children: [
|
|
3625
|
-
/* @__PURE__ */
|
|
3626
|
-
/* @__PURE__ */
|
|
3627
|
-
title && /* @__PURE__ */
|
|
3628
|
-
children && /* @__PURE__ */
|
|
3794
|
+
/* @__PURE__ */ jsx41("span", { className: "flex-shrink-0 pt-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx41(Icon, { name: ICON_MAP[intent], size: "md" }) }),
|
|
3795
|
+
/* @__PURE__ */ jsxs32("div", { className: "min-w-0 flex-1", children: [
|
|
3796
|
+
title && /* @__PURE__ */ jsx41("p", { className: "font-semibold", children: title }),
|
|
3797
|
+
children && /* @__PURE__ */ jsx41("div", { className: cn(title && "mt-1", "text-sm"), children })
|
|
3629
3798
|
] }),
|
|
3630
|
-
action && /* @__PURE__ */
|
|
3631
|
-
dismissible && /* @__PURE__ */
|
|
3799
|
+
action && /* @__PURE__ */ jsx41("div", { className: "flex-shrink-0", children: action }),
|
|
3800
|
+
dismissible && /* @__PURE__ */ jsx41(
|
|
3632
3801
|
"button",
|
|
3633
3802
|
{
|
|
3634
3803
|
type: "button",
|
|
@@ -3646,9 +3815,9 @@ var NotificationBanner = React25.forwardRef(
|
|
|
3646
3815
|
NotificationBanner.displayName = "NotificationBanner";
|
|
3647
3816
|
|
|
3648
3817
|
// src/notification-panel.tsx
|
|
3649
|
-
import * as
|
|
3650
|
-
import { jsx as
|
|
3651
|
-
var NotificationPanel =
|
|
3818
|
+
import * as React28 from "react";
|
|
3819
|
+
import { jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
3820
|
+
var NotificationPanel = React28.forwardRef(({ className, unreadCount = 0, onMarkAllRead, children, ...props }, ref) => /* @__PURE__ */ jsxs33(
|
|
3652
3821
|
"div",
|
|
3653
3822
|
{
|
|
3654
3823
|
ref,
|
|
@@ -3658,12 +3827,12 @@ var NotificationPanel = React26.forwardRef(({ className, unreadCount = 0, onMark
|
|
|
3658
3827
|
),
|
|
3659
3828
|
...props,
|
|
3660
3829
|
children: [
|
|
3661
|
-
/* @__PURE__ */
|
|
3662
|
-
/* @__PURE__ */
|
|
3830
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center justify-between border-b border-border px-4 py-3", children: [
|
|
3831
|
+
/* @__PURE__ */ jsxs33("h3", { className: "text-sm font-semibold text-foreground", children: [
|
|
3663
3832
|
"Notifications",
|
|
3664
|
-
unreadCount > 0 && /* @__PURE__ */
|
|
3833
|
+
unreadCount > 0 && /* @__PURE__ */ jsx42("span", { className: "bg-primary-solid ml-2 inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-xs text-primary-foreground", children: unreadCount })
|
|
3665
3834
|
] }),
|
|
3666
|
-
onMarkAllRead && unreadCount > 0 && /* @__PURE__ */
|
|
3835
|
+
onMarkAllRead && unreadCount > 0 && /* @__PURE__ */ jsx42(
|
|
3667
3836
|
"button",
|
|
3668
3837
|
{
|
|
3669
3838
|
type: "button",
|
|
@@ -3673,12 +3842,12 @@ var NotificationPanel = React26.forwardRef(({ className, unreadCount = 0, onMark
|
|
|
3673
3842
|
}
|
|
3674
3843
|
)
|
|
3675
3844
|
] }),
|
|
3676
|
-
/* @__PURE__ */
|
|
3845
|
+
/* @__PURE__ */ jsx42("div", { className: "max-h-80 divide-y divide-border overflow-y-auto", children })
|
|
3677
3846
|
]
|
|
3678
3847
|
}
|
|
3679
3848
|
));
|
|
3680
3849
|
NotificationPanel.displayName = "NotificationPanel";
|
|
3681
|
-
var NotificationPanelItem =
|
|
3850
|
+
var NotificationPanelItem = React28.forwardRef(({ className, title, description, time, unread, icon, ...props }, ref) => /* @__PURE__ */ jsxs33(
|
|
3682
3851
|
"div",
|
|
3683
3852
|
{
|
|
3684
3853
|
ref,
|
|
@@ -3689,9 +3858,9 @@ var NotificationPanelItem = React26.forwardRef(({ className, title, description,
|
|
|
3689
3858
|
),
|
|
3690
3859
|
...props,
|
|
3691
3860
|
children: [
|
|
3692
|
-
icon && /* @__PURE__ */
|
|
3693
|
-
/* @__PURE__ */
|
|
3694
|
-
/* @__PURE__ */
|
|
3861
|
+
icon && /* @__PURE__ */ jsx42("div", { className: "flex-shrink-0 pt-0.5", children: icon }),
|
|
3862
|
+
/* @__PURE__ */ jsxs33("div", { className: "min-w-0 flex-1", children: [
|
|
3863
|
+
/* @__PURE__ */ jsx42(
|
|
3695
3864
|
"p",
|
|
3696
3865
|
{
|
|
3697
3866
|
className: cn(
|
|
@@ -3701,22 +3870,22 @@ var NotificationPanelItem = React26.forwardRef(({ className, title, description,
|
|
|
3701
3870
|
children: title
|
|
3702
3871
|
}
|
|
3703
3872
|
),
|
|
3704
|
-
description && /* @__PURE__ */
|
|
3705
|
-
time && /* @__PURE__ */
|
|
3873
|
+
description && /* @__PURE__ */ jsx42("p", { className: "mt-0.5 text-xs text-muted-foreground", children: description }),
|
|
3874
|
+
time && /* @__PURE__ */ jsx42("p", { className: "mt-1 text-xs text-muted-foreground", children: time })
|
|
3706
3875
|
] }),
|
|
3707
|
-
unread && /* @__PURE__ */
|
|
3876
|
+
unread && /* @__PURE__ */ jsx42("div", { className: "flex-shrink-0 pt-1.5", children: /* @__PURE__ */ jsx42("div", { className: "h-2 w-2 rounded-full bg-primary" }) })
|
|
3708
3877
|
]
|
|
3709
3878
|
}
|
|
3710
3879
|
));
|
|
3711
3880
|
NotificationPanelItem.displayName = "NotificationPanelItem";
|
|
3712
3881
|
|
|
3713
3882
|
// src/skeleton-patterns.tsx
|
|
3714
|
-
import { jsx as
|
|
3883
|
+
import { jsx as jsx43, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
3715
3884
|
function SkeletonBar2({
|
|
3716
3885
|
className,
|
|
3717
3886
|
...props
|
|
3718
3887
|
}) {
|
|
3719
|
-
return /* @__PURE__ */
|
|
3888
|
+
return /* @__PURE__ */ jsx43(
|
|
3720
3889
|
"div",
|
|
3721
3890
|
{
|
|
3722
3891
|
className: cn("animate-pulse rounded-md bg-muted", className),
|
|
@@ -3730,7 +3899,7 @@ function SkeletonTable({
|
|
|
3730
3899
|
columns = 4,
|
|
3731
3900
|
...props
|
|
3732
3901
|
}) {
|
|
3733
|
-
return /* @__PURE__ */
|
|
3902
|
+
return /* @__PURE__ */ jsxs34(
|
|
3734
3903
|
"div",
|
|
3735
3904
|
{
|
|
3736
3905
|
className: cn(
|
|
@@ -3739,15 +3908,15 @@ function SkeletonTable({
|
|
|
3739
3908
|
),
|
|
3740
3909
|
...props,
|
|
3741
3910
|
children: [
|
|
3742
|
-
/* @__PURE__ */
|
|
3743
|
-
Array.from({ length: rows }).map((_, row) => /* @__PURE__ */
|
|
3911
|
+
/* @__PURE__ */ jsx43("div", { className: "flex gap-4 border-b border-border bg-muted/50 px-4 py-3", children: Array.from({ length: columns }).map((_, i) => /* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 flex-1" }, `h-${i}`)) }),
|
|
3912
|
+
Array.from({ length: rows }).map((_, row) => /* @__PURE__ */ jsx43(
|
|
3744
3913
|
"div",
|
|
3745
3914
|
{
|
|
3746
3915
|
className: cn(
|
|
3747
3916
|
"flex gap-4 px-4 py-3",
|
|
3748
3917
|
row < rows - 1 && "border-b border-border"
|
|
3749
3918
|
),
|
|
3750
|
-
children: Array.from({ length: columns }).map((_2, col) => /* @__PURE__ */
|
|
3919
|
+
children: Array.from({ length: columns }).map((_2, col) => /* @__PURE__ */ jsx43(
|
|
3751
3920
|
SkeletonBar2,
|
|
3752
3921
|
{
|
|
3753
3922
|
className: cn("h-4 flex-1", col === 0 && "max-w-[140px]")
|
|
@@ -3769,17 +3938,17 @@ function SkeletonCardGrid({
|
|
|
3769
3938
|
...props
|
|
3770
3939
|
}) {
|
|
3771
3940
|
const colClass = columns === 2 ? "grid-cols-1 sm:grid-cols-2" : "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3";
|
|
3772
|
-
return /* @__PURE__ */
|
|
3941
|
+
return /* @__PURE__ */ jsx43("div", { className: cn("grid gap-4", colClass, className), ...props, children: Array.from({ length: cards }).map((_, i) => /* @__PURE__ */ jsxs34(
|
|
3773
3942
|
"div",
|
|
3774
3943
|
{
|
|
3775
3944
|
className: "space-y-3 rounded-lg border border-border p-4",
|
|
3776
3945
|
children: [
|
|
3777
|
-
/* @__PURE__ */
|
|
3778
|
-
/* @__PURE__ */
|
|
3779
|
-
/* @__PURE__ */
|
|
3780
|
-
/* @__PURE__ */
|
|
3781
|
-
/* @__PURE__ */
|
|
3782
|
-
/* @__PURE__ */
|
|
3946
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-3/4" }),
|
|
3947
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-3 w-full" }),
|
|
3948
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-3 w-5/6" }),
|
|
3949
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex gap-2 pt-2", children: [
|
|
3950
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-6 w-6 rounded-full" }),
|
|
3951
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-20" })
|
|
3783
3952
|
] })
|
|
3784
3953
|
]
|
|
3785
3954
|
},
|
|
@@ -3788,34 +3957,34 @@ function SkeletonCardGrid({
|
|
|
3788
3957
|
}
|
|
3789
3958
|
SkeletonCardGrid.displayName = "SkeletonCardGrid";
|
|
3790
3959
|
function SkeletonDetail({ className, ...props }) {
|
|
3791
|
-
return /* @__PURE__ */
|
|
3792
|
-
/* @__PURE__ */
|
|
3793
|
-
/* @__PURE__ */
|
|
3794
|
-
/* @__PURE__ */
|
|
3960
|
+
return /* @__PURE__ */ jsxs34("div", { className: cn("space-y-6", className), ...props, children: [
|
|
3961
|
+
/* @__PURE__ */ jsxs34("div", { className: "space-y-2", children: [
|
|
3962
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-8 w-1/3" }),
|
|
3963
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-2/3" })
|
|
3795
3964
|
] }),
|
|
3796
|
-
/* @__PURE__ */
|
|
3797
|
-
/* @__PURE__ */
|
|
3798
|
-
/* @__PURE__ */
|
|
3965
|
+
/* @__PURE__ */ jsx43("div", { className: "space-y-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs34("div", { className: "flex justify-between", children: [
|
|
3966
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-24" }),
|
|
3967
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-40" })
|
|
3799
3968
|
] }, `dl-${i}`)) }),
|
|
3800
|
-
/* @__PURE__ */
|
|
3801
|
-
/* @__PURE__ */
|
|
3802
|
-
/* @__PURE__ */
|
|
3803
|
-
/* @__PURE__ */
|
|
3969
|
+
/* @__PURE__ */ jsxs34("div", { className: "space-y-2", children: [
|
|
3970
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-full" }),
|
|
3971
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-full" }),
|
|
3972
|
+
/* @__PURE__ */ jsx43(SkeletonBar2, { className: "h-4 w-3/4" })
|
|
3804
3973
|
] })
|
|
3805
3974
|
] });
|
|
3806
3975
|
}
|
|
3807
3976
|
SkeletonDetail.displayName = "SkeletonDetail";
|
|
3808
3977
|
|
|
3809
3978
|
// src/toggle.tsx
|
|
3810
|
-
import * as
|
|
3811
|
-
import { jsx as
|
|
3979
|
+
import * as React29 from "react";
|
|
3980
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
3812
3981
|
var SIZE_CLASSES4 = {
|
|
3813
3982
|
sm: "h-8 px-2 text-xs",
|
|
3814
3983
|
md: "h-9 px-3 text-sm",
|
|
3815
3984
|
lg: "h-10 px-4 text-base"
|
|
3816
3985
|
};
|
|
3817
|
-
var Toggle =
|
|
3818
|
-
({ className, pressed, variant = "default", size = "md", ...props }, ref) => /* @__PURE__ */
|
|
3986
|
+
var Toggle = React29.forwardRef(
|
|
3987
|
+
({ className, pressed, variant = "default", size = "md", ...props }, ref) => /* @__PURE__ */ jsx44(
|
|
3819
3988
|
"button",
|
|
3820
3989
|
{
|
|
3821
3990
|
ref,
|
|
@@ -3825,7 +3994,7 @@ var Toggle = React27.forwardRef(
|
|
|
3825
3994
|
className: cn(
|
|
3826
3995
|
"inline-flex items-center justify-center rounded-md font-medium transition-colors",
|
|
3827
3996
|
SIZE_CLASSES4[size],
|
|
3828
|
-
variant === "outline" && "border border-
|
|
3997
|
+
variant === "outline" && "border border-border",
|
|
3829
3998
|
pressed ? "bg-muted text-foreground" : "bg-transparent text-muted-foreground hover:bg-muted/50 hover:text-foreground",
|
|
3830
3999
|
className
|
|
3831
4000
|
),
|
|
@@ -3834,7 +4003,7 @@ var Toggle = React27.forwardRef(
|
|
|
3834
4003
|
)
|
|
3835
4004
|
);
|
|
3836
4005
|
Toggle.displayName = "Toggle";
|
|
3837
|
-
var ToggleGroup =
|
|
4006
|
+
var ToggleGroup = React29.forwardRef(
|
|
3838
4007
|
({
|
|
3839
4008
|
className,
|
|
3840
4009
|
type = "single",
|
|
@@ -3861,18 +4030,18 @@ var ToggleGroup = React27.forwardRef(
|
|
|
3861
4030
|
);
|
|
3862
4031
|
}
|
|
3863
4032
|
};
|
|
3864
|
-
return /* @__PURE__ */
|
|
4033
|
+
return /* @__PURE__ */ jsx44(
|
|
3865
4034
|
"div",
|
|
3866
4035
|
{
|
|
3867
4036
|
ref,
|
|
3868
4037
|
role: "group",
|
|
3869
4038
|
className: cn("inline-flex items-center gap-1", className),
|
|
3870
4039
|
...props,
|
|
3871
|
-
children:
|
|
3872
|
-
if (!
|
|
4040
|
+
children: React29.Children.map(children, (child) => {
|
|
4041
|
+
if (!React29.isValidElement(child)) return child;
|
|
3873
4042
|
const childProps = child.props;
|
|
3874
4043
|
const itemValue = childProps.value ?? "";
|
|
3875
|
-
return
|
|
4044
|
+
return React29.cloneElement(child, {
|
|
3876
4045
|
pressed: isPressed(itemValue),
|
|
3877
4046
|
variant,
|
|
3878
4047
|
size,
|
|
@@ -3889,8 +4058,8 @@ var ToggleGroup = React27.forwardRef(
|
|
|
3889
4058
|
ToggleGroup.displayName = "ToggleGroup";
|
|
3890
4059
|
|
|
3891
4060
|
// src/avatar-group.tsx
|
|
3892
|
-
import * as
|
|
3893
|
-
import { jsx as
|
|
4061
|
+
import * as React30 from "react";
|
|
4062
|
+
import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
3894
4063
|
var SIZE_MAP = {
|
|
3895
4064
|
xs: { avatar: "h-6 w-6", ring: "ring-1", text: "text-[10px]" },
|
|
3896
4065
|
sm: { avatar: "h-8 w-8", ring: "ring-2", text: "text-xs" },
|
|
@@ -3903,14 +4072,14 @@ var OVERLAP_MAP = {
|
|
|
3903
4072
|
md: "-ml-3",
|
|
3904
4073
|
lg: "-ml-3"
|
|
3905
4074
|
};
|
|
3906
|
-
var AvatarGroup =
|
|
4075
|
+
var AvatarGroup = React30.forwardRef(
|
|
3907
4076
|
({ className, max = 5, size = "md", children, ...props }, ref) => {
|
|
3908
|
-
const items =
|
|
4077
|
+
const items = React30.Children.toArray(children);
|
|
3909
4078
|
const visible = items.slice(0, max);
|
|
3910
4079
|
const overflow = items.length - max;
|
|
3911
4080
|
const sizeConfig3 = SIZE_MAP[size];
|
|
3912
|
-
return /* @__PURE__ */
|
|
3913
|
-
visible.map((child, i) => /* @__PURE__ */
|
|
4081
|
+
return /* @__PURE__ */ jsxs35("div", { ref, className: cn("flex items-center", className), ...props, children: [
|
|
4082
|
+
visible.map((child, i) => /* @__PURE__ */ jsx45(
|
|
3914
4083
|
"div",
|
|
3915
4084
|
{
|
|
3916
4085
|
className: cn(
|
|
@@ -3922,7 +4091,7 @@ var AvatarGroup = React28.forwardRef(
|
|
|
3922
4091
|
},
|
|
3923
4092
|
i
|
|
3924
4093
|
)),
|
|
3925
|
-
overflow > 0 && /* @__PURE__ */
|
|
4094
|
+
overflow > 0 && /* @__PURE__ */ jsx45(
|
|
3926
4095
|
"div",
|
|
3927
4096
|
{
|
|
3928
4097
|
className: cn(
|
|
@@ -3931,7 +4100,7 @@ var AvatarGroup = React28.forwardRef(
|
|
|
3931
4100
|
sizeConfig3.ring,
|
|
3932
4101
|
OVERLAP_MAP[size]
|
|
3933
4102
|
),
|
|
3934
|
-
children: /* @__PURE__ */
|
|
4103
|
+
children: /* @__PURE__ */ jsxs35(
|
|
3935
4104
|
"span",
|
|
3936
4105
|
{
|
|
3937
4106
|
className: cn(
|
|
@@ -3950,10 +4119,10 @@ var AvatarGroup = React28.forwardRef(
|
|
|
3950
4119
|
}
|
|
3951
4120
|
);
|
|
3952
4121
|
AvatarGroup.displayName = "AvatarGroup";
|
|
3953
|
-
var AvatarGroupItem =
|
|
4122
|
+
var AvatarGroupItem = React30.forwardRef(({ className, fallback, size = "md", alt, src, ...props }, ref) => {
|
|
3954
4123
|
const sizeConfig3 = SIZE_MAP[size];
|
|
3955
4124
|
if (!src && fallback) {
|
|
3956
|
-
return /* @__PURE__ */
|
|
4125
|
+
return /* @__PURE__ */ jsx45(
|
|
3957
4126
|
"div",
|
|
3958
4127
|
{
|
|
3959
4128
|
className: cn(
|
|
@@ -3967,7 +4136,7 @@ var AvatarGroupItem = React28.forwardRef(({ className, fallback, size = "md", al
|
|
|
3967
4136
|
}
|
|
3968
4137
|
);
|
|
3969
4138
|
}
|
|
3970
|
-
return /* @__PURE__ */
|
|
4139
|
+
return /* @__PURE__ */ jsx45(
|
|
3971
4140
|
"img",
|
|
3972
4141
|
{
|
|
3973
4142
|
ref,
|
|
@@ -3981,10 +4150,10 @@ var AvatarGroupItem = React28.forwardRef(({ className, fallback, size = "md", al
|
|
|
3981
4150
|
AvatarGroupItem.displayName = "AvatarGroupItem";
|
|
3982
4151
|
|
|
3983
4152
|
// src/tab-bar.tsx
|
|
3984
|
-
import * as
|
|
3985
|
-
import { jsx as
|
|
3986
|
-
var TabBar =
|
|
3987
|
-
({ className, variant = "underline", children, ...props }, ref) => /* @__PURE__ */
|
|
4153
|
+
import * as React31 from "react";
|
|
4154
|
+
import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
4155
|
+
var TabBar = React31.forwardRef(
|
|
4156
|
+
({ className, variant = "underline", children, ...props }, ref) => /* @__PURE__ */ jsxs36(
|
|
3988
4157
|
"div",
|
|
3989
4158
|
{
|
|
3990
4159
|
ref,
|
|
@@ -3993,31 +4162,32 @@ var TabBar = React29.forwardRef(
|
|
|
3993
4162
|
// W0 (#5823): scrolls horizontally on a narrow screen (never wraps,
|
|
3994
4163
|
// never runs off the page). A scroll box clips its own border, so the
|
|
3995
4164
|
// baseline is an inset shadow the items' own borders paint over.
|
|
3996
|
-
// W1: the scroll hint
|
|
3997
|
-
//
|
|
4165
|
+
// W1.5 Batch 0: the scroll hint, a chevron mark held on the end
|
|
4166
|
+
// edge over a clipped tab (`ScrollHintXMark`, the last child below).
|
|
3998
4167
|
"flex overflow-x-auto",
|
|
3999
4168
|
variant === "underline" && "gap-4 shadow-[inset_0_-1px_0_hsl(var(--border))]",
|
|
4000
4169
|
variant === "pills" && "gap-1 rounded-lg bg-muted p-1",
|
|
4001
4170
|
variant === "enclosed" && "shadow-[inset_0_-1px_0_hsl(var(--border))]",
|
|
4002
|
-
SCROLL_HINT_X,
|
|
4003
|
-
// after the variant: its end padding wins over `p-1`
|
|
4004
4171
|
className
|
|
4005
4172
|
),
|
|
4006
4173
|
"data-variant": variant,
|
|
4007
4174
|
...props,
|
|
4008
|
-
children:
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4175
|
+
children: [
|
|
4176
|
+
React31.Children.map(children, (child) => {
|
|
4177
|
+
if (!React31.isValidElement(child)) return child;
|
|
4178
|
+
return React31.cloneElement(
|
|
4179
|
+
child,
|
|
4180
|
+
{ _variant: variant }
|
|
4181
|
+
);
|
|
4182
|
+
}),
|
|
4183
|
+
/* @__PURE__ */ jsx46(ScrollHintXMark, {})
|
|
4184
|
+
]
|
|
4015
4185
|
}
|
|
4016
4186
|
)
|
|
4017
4187
|
);
|
|
4018
4188
|
TabBar.displayName = "TabBar";
|
|
4019
|
-
var TabBarItem =
|
|
4020
|
-
({ className, active, disabled, _variant: variant = "underline", ...props }, ref) => /* @__PURE__ */
|
|
4189
|
+
var TabBarItem = React31.forwardRef(
|
|
4190
|
+
({ className, active, disabled, _variant: variant = "underline", ...props }, ref) => /* @__PURE__ */ jsx46(
|
|
4021
4191
|
"button",
|
|
4022
4192
|
{
|
|
4023
4193
|
ref,
|
|
@@ -4053,7 +4223,7 @@ var TabBarItem = React29.forwardRef(
|
|
|
4053
4223
|
TabBarItem.displayName = "TabBarItem";
|
|
4054
4224
|
|
|
4055
4225
|
// src/sticky-action-bar.tsx
|
|
4056
|
-
import { jsx as
|
|
4226
|
+
import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
4057
4227
|
function StickyActionBar({
|
|
4058
4228
|
context,
|
|
4059
4229
|
actions,
|
|
@@ -4061,7 +4231,7 @@ function StickyActionBar({
|
|
|
4061
4231
|
className,
|
|
4062
4232
|
testId = "sticky-action-bar"
|
|
4063
4233
|
}) {
|
|
4064
|
-
return /* @__PURE__ */
|
|
4234
|
+
return /* @__PURE__ */ jsx47(
|
|
4065
4235
|
"div",
|
|
4066
4236
|
{
|
|
4067
4237
|
"data-testid": testId,
|
|
@@ -4072,39 +4242,39 @@ function StickyActionBar({
|
|
|
4072
4242
|
topClassName,
|
|
4073
4243
|
className
|
|
4074
4244
|
),
|
|
4075
|
-
children: /* @__PURE__ */
|
|
4076
|
-
context != null ? /* @__PURE__ */
|
|
4077
|
-
/* @__PURE__ */
|
|
4245
|
+
children: /* @__PURE__ */ jsxs37("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
|
|
4246
|
+
context != null ? /* @__PURE__ */ jsx47("div", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1.5", children: context }) : /* @__PURE__ */ jsx47("span", {}),
|
|
4247
|
+
/* @__PURE__ */ jsx47("div", { className: "flex shrink-0 items-center gap-2", children: actions })
|
|
4078
4248
|
] })
|
|
4079
4249
|
}
|
|
4080
4250
|
);
|
|
4081
4251
|
}
|
|
4082
4252
|
|
|
4083
4253
|
// src/button-group.tsx
|
|
4084
|
-
import * as
|
|
4085
|
-
import { jsx as
|
|
4254
|
+
import * as React32 from "react";
|
|
4255
|
+
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
4086
4256
|
var SIZE_CLASSES5 = {
|
|
4087
4257
|
sm: "h-8 px-3 text-xs",
|
|
4088
4258
|
md: "h-9 px-4 text-sm",
|
|
4089
4259
|
lg: "h-10 px-5 text-base"
|
|
4090
4260
|
};
|
|
4091
|
-
var ButtonGroup =
|
|
4092
|
-
({ className, variant = "default", size = "md", children, ...props }, ref) => /* @__PURE__ */
|
|
4261
|
+
var ButtonGroup = React32.forwardRef(
|
|
4262
|
+
({ className, variant = "default", size = "md", children, ...props }, ref) => /* @__PURE__ */ jsx48(
|
|
4093
4263
|
"div",
|
|
4094
4264
|
{
|
|
4095
4265
|
ref,
|
|
4096
4266
|
role: "group",
|
|
4097
4267
|
className: cn(
|
|
4098
4268
|
"inline-flex",
|
|
4099
|
-
variant === "segmented" && "rounded-md border border-
|
|
4269
|
+
variant === "segmented" && "rounded-md border border-border bg-muted p-0.5",
|
|
4100
4270
|
className
|
|
4101
4271
|
),
|
|
4102
4272
|
"data-variant": variant,
|
|
4103
4273
|
"data-size": size,
|
|
4104
4274
|
...props,
|
|
4105
|
-
children:
|
|
4106
|
-
if (!
|
|
4107
|
-
return
|
|
4275
|
+
children: React32.Children.map(children, (child) => {
|
|
4276
|
+
if (!React32.isValidElement(child)) return child;
|
|
4277
|
+
return React32.cloneElement(
|
|
4108
4278
|
child,
|
|
4109
4279
|
{ _variant: variant, _size: size }
|
|
4110
4280
|
);
|
|
@@ -4113,14 +4283,14 @@ var ButtonGroup = React30.forwardRef(
|
|
|
4113
4283
|
)
|
|
4114
4284
|
);
|
|
4115
4285
|
ButtonGroup.displayName = "ButtonGroup";
|
|
4116
|
-
var ButtonGroupItem =
|
|
4286
|
+
var ButtonGroupItem = React32.forwardRef(
|
|
4117
4287
|
({
|
|
4118
4288
|
className,
|
|
4119
4289
|
active,
|
|
4120
4290
|
_variant: variant = "default",
|
|
4121
4291
|
_size: size = "md",
|
|
4122
4292
|
...props
|
|
4123
|
-
}, ref) => /* @__PURE__ */
|
|
4293
|
+
}, ref) => /* @__PURE__ */ jsx48(
|
|
4124
4294
|
"button",
|
|
4125
4295
|
{
|
|
4126
4296
|
ref,
|
|
@@ -4132,13 +4302,13 @@ var ButtonGroupItem = React30.forwardRef(
|
|
|
4132
4302
|
SIZE_CLASSES5[size],
|
|
4133
4303
|
// Default: connected bordered buttons
|
|
4134
4304
|
variant === "default" && [
|
|
4135
|
-
"border border-
|
|
4305
|
+
"border border-border bg-background text-foreground hover:bg-muted",
|
|
4136
4306
|
"-ml-px first:ml-0 first:rounded-l-md last:rounded-r-md",
|
|
4137
4307
|
active && "bg-muted font-semibold"
|
|
4138
4308
|
],
|
|
4139
4309
|
// Outlined: like default but no fill
|
|
4140
4310
|
variant === "outlined" && [
|
|
4141
|
-
"border border-
|
|
4311
|
+
"border border-border bg-transparent text-foreground hover:bg-muted",
|
|
4142
4312
|
"-ml-px first:ml-0 first:rounded-l-md last:rounded-r-md",
|
|
4143
4313
|
active && "bg-muted font-semibold"
|
|
4144
4314
|
],
|
|
@@ -4161,32 +4331,39 @@ var ButtonGroupItem = React30.forwardRef(
|
|
|
4161
4331
|
ButtonGroupItem.displayName = "ButtonGroupItem";
|
|
4162
4332
|
|
|
4163
4333
|
// src/data-table.tsx
|
|
4164
|
-
import * as
|
|
4165
|
-
import { jsx as
|
|
4166
|
-
var DataTable =
|
|
4334
|
+
import * as React33 from "react";
|
|
4335
|
+
import { jsx as jsx49, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
4336
|
+
var DataTable = React33.forwardRef(
|
|
4167
4337
|
({
|
|
4168
4338
|
className,
|
|
4169
4339
|
density = "default",
|
|
4170
4340
|
striped = false,
|
|
4171
4341
|
bordered = false,
|
|
4172
4342
|
...props
|
|
4173
|
-
}, ref) =>
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
"
|
|
4179
|
-
|
|
4180
|
-
|
|
4343
|
+
}, ref) => (
|
|
4344
|
+
// W1.5 Batch 0 (#5823): a flex row, so the x mark (`ScrollHintXMark`,
|
|
4345
|
+
// last child) sits beside the table, not under it
|
|
4346
|
+
/* @__PURE__ */ jsxs38("div", { className: "flex w-full overflow-x-auto", children: [
|
|
4347
|
+
/* @__PURE__ */ jsx49(
|
|
4348
|
+
"table",
|
|
4349
|
+
{
|
|
4350
|
+
ref,
|
|
4351
|
+
className: cn(
|
|
4352
|
+
"w-full caption-bottom text-sm",
|
|
4353
|
+
bordered && "border border-border",
|
|
4354
|
+
className
|
|
4355
|
+
),
|
|
4356
|
+
"data-density": density,
|
|
4357
|
+
"data-striped": striped,
|
|
4358
|
+
...props
|
|
4359
|
+
}
|
|
4181
4360
|
),
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
}
|
|
4186
|
-
) })
|
|
4361
|
+
/* @__PURE__ */ jsx49(ScrollHintXMark, {})
|
|
4362
|
+
] })
|
|
4363
|
+
)
|
|
4187
4364
|
);
|
|
4188
4365
|
DataTable.displayName = "DataTable";
|
|
4189
|
-
var TableHeader =
|
|
4366
|
+
var TableHeader = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
|
|
4190
4367
|
"thead",
|
|
4191
4368
|
{
|
|
4192
4369
|
ref,
|
|
@@ -4195,7 +4372,7 @@ var TableHeader = React31.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
4195
4372
|
}
|
|
4196
4373
|
));
|
|
4197
4374
|
TableHeader.displayName = "TableHeader";
|
|
4198
|
-
var TableBody =
|
|
4375
|
+
var TableBody = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
|
|
4199
4376
|
"tbody",
|
|
4200
4377
|
{
|
|
4201
4378
|
ref,
|
|
@@ -4204,8 +4381,8 @@ var TableBody = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
4204
4381
|
}
|
|
4205
4382
|
));
|
|
4206
4383
|
TableBody.displayName = "TableBody";
|
|
4207
|
-
var TableRow =
|
|
4208
|
-
({ className, selected, ...props }, ref) => /* @__PURE__ */
|
|
4384
|
+
var TableRow = React33.forwardRef(
|
|
4385
|
+
({ className, selected, ...props }, ref) => /* @__PURE__ */ jsx49(
|
|
4209
4386
|
"tr",
|
|
4210
4387
|
{
|
|
4211
4388
|
ref,
|
|
@@ -4228,11 +4405,11 @@ var DENSITY_CELL = {
|
|
|
4228
4405
|
default: "px-4 py-2",
|
|
4229
4406
|
relaxed: "px-4 py-3"
|
|
4230
4407
|
};
|
|
4231
|
-
var TableCell =
|
|
4408
|
+
var TableCell = React33.forwardRef(
|
|
4232
4409
|
({ className, header, sortDirection, onSort, children, ...props }, ref) => {
|
|
4233
4410
|
const Tag2 = header ? "th" : "td";
|
|
4234
4411
|
const sortIndicator = sortDirection === "asc" ? " \u2191" : sortDirection === "desc" ? " \u2193" : "";
|
|
4235
|
-
return /* @__PURE__ */
|
|
4412
|
+
return /* @__PURE__ */ jsxs38(
|
|
4236
4413
|
Tag2,
|
|
4237
4414
|
{
|
|
4238
4415
|
ref,
|
|
@@ -4247,14 +4424,14 @@ var TableCell = React31.forwardRef(
|
|
|
4247
4424
|
...props,
|
|
4248
4425
|
children: [
|
|
4249
4426
|
children,
|
|
4250
|
-
header && sortIndicator && /* @__PURE__ */
|
|
4427
|
+
header && sortIndicator && /* @__PURE__ */ jsx49("span", { className: "text-primary-text ml-1", children: sortIndicator })
|
|
4251
4428
|
]
|
|
4252
4429
|
}
|
|
4253
4430
|
);
|
|
4254
4431
|
}
|
|
4255
4432
|
);
|
|
4256
4433
|
TableCell.displayName = "TableCell";
|
|
4257
|
-
var TableCaption =
|
|
4434
|
+
var TableCaption = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx49(
|
|
4258
4435
|
"caption",
|
|
4259
4436
|
{
|
|
4260
4437
|
ref,
|
|
@@ -4265,15 +4442,15 @@ var TableCaption = React31.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
4265
4442
|
TableCaption.displayName = "TableCaption";
|
|
4266
4443
|
|
|
4267
4444
|
// src/stat-group.tsx
|
|
4268
|
-
import * as
|
|
4269
|
-
import { jsx as
|
|
4445
|
+
import * as React34 from "react";
|
|
4446
|
+
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
4270
4447
|
var COL_CLASSES = {
|
|
4271
4448
|
2: "grid-cols-1 sm:grid-cols-2",
|
|
4272
4449
|
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
4273
4450
|
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"
|
|
4274
4451
|
};
|
|
4275
|
-
var StatGroup =
|
|
4276
|
-
({ className, columns = 3, variant = "card", children, ...props }, ref) => /* @__PURE__ */
|
|
4452
|
+
var StatGroup = React34.forwardRef(
|
|
4453
|
+
({ className, columns = 3, variant = "card", children, ...props }, ref) => /* @__PURE__ */ jsx50(
|
|
4277
4454
|
"div",
|
|
4278
4455
|
{
|
|
4279
4456
|
ref,
|
|
@@ -4291,10 +4468,10 @@ var StatGroup = React32.forwardRef(
|
|
|
4291
4468
|
StatGroup.displayName = "StatGroup";
|
|
4292
4469
|
|
|
4293
4470
|
// src/description-list.tsx
|
|
4294
|
-
import * as
|
|
4295
|
-
import { jsx as
|
|
4296
|
-
var DescriptionLayoutContext =
|
|
4297
|
-
var DescriptionList =
|
|
4471
|
+
import * as React35 from "react";
|
|
4472
|
+
import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
4473
|
+
var DescriptionLayoutContext = React35.createContext("stacked");
|
|
4474
|
+
var DescriptionList = React35.forwardRef(({ className, layout = "stacked", ...props }, ref) => /* @__PURE__ */ jsx51(DescriptionLayoutContext.Provider, { value: layout, children: /* @__PURE__ */ jsx51(
|
|
4298
4475
|
"dl",
|
|
4299
4476
|
{
|
|
4300
4477
|
ref,
|
|
@@ -4308,10 +4485,10 @@ var DescriptionList = React33.forwardRef(({ className, layout = "stacked", ...pr
|
|
|
4308
4485
|
}
|
|
4309
4486
|
) }));
|
|
4310
4487
|
DescriptionList.displayName = "DescriptionList";
|
|
4311
|
-
var DescriptionItem =
|
|
4488
|
+
var DescriptionItem = React35.forwardRef(
|
|
4312
4489
|
({ className, label, value, ...props }, ref) => {
|
|
4313
|
-
const layout =
|
|
4314
|
-
return /* @__PURE__ */
|
|
4490
|
+
const layout = React35.useContext(DescriptionLayoutContext);
|
|
4491
|
+
return /* @__PURE__ */ jsxs39(
|
|
4315
4492
|
"div",
|
|
4316
4493
|
{
|
|
4317
4494
|
ref,
|
|
@@ -4323,7 +4500,7 @@ var DescriptionItem = React33.forwardRef(
|
|
|
4323
4500
|
),
|
|
4324
4501
|
...props,
|
|
4325
4502
|
children: [
|
|
4326
|
-
/* @__PURE__ */
|
|
4503
|
+
/* @__PURE__ */ jsx51(
|
|
4327
4504
|
"dt",
|
|
4328
4505
|
{
|
|
4329
4506
|
className: cn(
|
|
@@ -4333,7 +4510,7 @@ var DescriptionItem = React33.forwardRef(
|
|
|
4333
4510
|
children: label
|
|
4334
4511
|
}
|
|
4335
4512
|
),
|
|
4336
|
-
/* @__PURE__ */
|
|
4513
|
+
/* @__PURE__ */ jsx51(
|
|
4337
4514
|
"dd",
|
|
4338
4515
|
{
|
|
4339
4516
|
className: cn(
|
|
@@ -4341,7 +4518,7 @@ var DescriptionItem = React33.forwardRef(
|
|
|
4341
4518
|
layout !== "side-by-side" && "mt-1",
|
|
4342
4519
|
layout === "side-by-side" && "text-right"
|
|
4343
4520
|
),
|
|
4344
|
-
children: isEmptyValue(value) ? /* @__PURE__ */
|
|
4521
|
+
children: isEmptyValue(value) ? /* @__PURE__ */ jsx51(EmptyValue, {}) : value
|
|
4345
4522
|
}
|
|
4346
4523
|
)
|
|
4347
4524
|
]
|
|
@@ -4352,10 +4529,10 @@ var DescriptionItem = React33.forwardRef(
|
|
|
4352
4529
|
DescriptionItem.displayName = "DescriptionItem";
|
|
4353
4530
|
|
|
4354
4531
|
// src/activity-feed.tsx
|
|
4355
|
-
import * as
|
|
4356
|
-
import { jsx as
|
|
4357
|
-
var ActivityFeed =
|
|
4358
|
-
({ className, variant = "simple", ...props }, ref) => /* @__PURE__ */
|
|
4532
|
+
import * as React36 from "react";
|
|
4533
|
+
import { jsx as jsx52, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
4534
|
+
var ActivityFeed = React36.forwardRef(
|
|
4535
|
+
({ className, variant = "simple", ...props }, ref) => /* @__PURE__ */ jsx52(
|
|
4359
4536
|
"div",
|
|
4360
4537
|
{
|
|
4361
4538
|
ref,
|
|
@@ -4366,19 +4543,19 @@ var ActivityFeed = React34.forwardRef(
|
|
|
4366
4543
|
)
|
|
4367
4544
|
);
|
|
4368
4545
|
ActivityFeed.displayName = "ActivityFeed";
|
|
4369
|
-
var ActivityFeedItem =
|
|
4370
|
-
({ className, avatar, eventDescription, timestamp, isLast, ...props }, ref) => /* @__PURE__ */
|
|
4546
|
+
var ActivityFeedItem = React36.forwardRef(
|
|
4547
|
+
({ className, avatar, eventDescription, timestamp, isLast, ...props }, ref) => /* @__PURE__ */ jsxs40(
|
|
4371
4548
|
"div",
|
|
4372
4549
|
{
|
|
4373
4550
|
ref,
|
|
4374
4551
|
className: cn("relative flex gap-3 pb-6", className),
|
|
4375
4552
|
...props,
|
|
4376
4553
|
children: [
|
|
4377
|
-
!isLast && /* @__PURE__ */
|
|
4378
|
-
/* @__PURE__ */
|
|
4379
|
-
/* @__PURE__ */
|
|
4380
|
-
/* @__PURE__ */
|
|
4381
|
-
timestamp && /* @__PURE__ */
|
|
4554
|
+
!isLast && /* @__PURE__ */ jsx52("div", { className: "absolute left-5 top-10 -ml-px h-full w-0.5 bg-muted" }),
|
|
4555
|
+
/* @__PURE__ */ jsx52("div", { className: "relative flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full bg-muted", children: avatar }),
|
|
4556
|
+
/* @__PURE__ */ jsxs40("div", { className: "min-w-0 flex-1 pt-1", children: [
|
|
4557
|
+
/* @__PURE__ */ jsx52("div", { className: "text-sm text-foreground", children: eventDescription }),
|
|
4558
|
+
timestamp && /* @__PURE__ */ jsx52("p", { className: "mt-0.5 text-xs text-muted-foreground", children: timestamp })
|
|
4382
4559
|
] })
|
|
4383
4560
|
]
|
|
4384
4561
|
}
|
|
@@ -4387,8 +4564,8 @@ var ActivityFeedItem = React34.forwardRef(
|
|
|
4387
4564
|
ActivityFeedItem.displayName = "ActivityFeedItem";
|
|
4388
4565
|
|
|
4389
4566
|
// src/alert.tsx
|
|
4390
|
-
import * as
|
|
4391
|
-
import { jsx as
|
|
4567
|
+
import * as React37 from "react";
|
|
4568
|
+
import { jsx as jsx53, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
4392
4569
|
var INTENT_SUBTLE_STYLES = {
|
|
4393
4570
|
success: "bg-intent-success/10 text-intent-success-foreground border-intent-success/20",
|
|
4394
4571
|
warning: "bg-intent-warning/10 text-intent-warning-foreground border-intent-warning/20",
|
|
@@ -4413,7 +4590,7 @@ var ICON_MAP2 = {
|
|
|
4413
4590
|
error: "circle-alert",
|
|
4414
4591
|
info: "info"
|
|
4415
4592
|
};
|
|
4416
|
-
var Alert =
|
|
4593
|
+
var Alert = React37.forwardRef(
|
|
4417
4594
|
({
|
|
4418
4595
|
className,
|
|
4419
4596
|
intent = "info",
|
|
@@ -4425,7 +4602,7 @@ var Alert = React35.forwardRef(
|
|
|
4425
4602
|
...props
|
|
4426
4603
|
}, ref) => {
|
|
4427
4604
|
const styles = variant === "solid" ? SOLID_STYLES[intent] : variant === "outline" ? OUTLINE_STYLES[intent] : INTENT_SUBTLE_STYLES[intent];
|
|
4428
|
-
return /* @__PURE__ */
|
|
4605
|
+
return /* @__PURE__ */ jsxs41(
|
|
4429
4606
|
"div",
|
|
4430
4607
|
{
|
|
4431
4608
|
ref,
|
|
@@ -4433,12 +4610,12 @@ var Alert = React35.forwardRef(
|
|
|
4433
4610
|
className: cn("flex gap-3 rounded-lg border p-4", styles, className),
|
|
4434
4611
|
...props,
|
|
4435
4612
|
children: [
|
|
4436
|
-
/* @__PURE__ */
|
|
4437
|
-
/* @__PURE__ */
|
|
4438
|
-
title && /* @__PURE__ */
|
|
4439
|
-
children && /* @__PURE__ */
|
|
4613
|
+
/* @__PURE__ */ jsx53("span", { className: "flex-shrink-0 pt-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx53(Icon, { name: ICON_MAP2[intent], size: "md" }) }),
|
|
4614
|
+
/* @__PURE__ */ jsxs41("div", { className: "min-w-0 flex-1", children: [
|
|
4615
|
+
title && /* @__PURE__ */ jsx53("p", { className: "font-semibold", children: title }),
|
|
4616
|
+
children && /* @__PURE__ */ jsx53("div", { className: cn(title && "mt-1", "text-sm"), children })
|
|
4440
4617
|
] }),
|
|
4441
|
-
dismissible && /* @__PURE__ */
|
|
4618
|
+
dismissible && /* @__PURE__ */ jsx53(
|
|
4442
4619
|
"button",
|
|
4443
4620
|
{
|
|
4444
4621
|
type: "button",
|
|
@@ -4456,7 +4633,7 @@ var Alert = React35.forwardRef(
|
|
|
4456
4633
|
Alert.displayName = "Alert";
|
|
4457
4634
|
|
|
4458
4635
|
// src/empty-state.tsx
|
|
4459
|
-
import { jsx as
|
|
4636
|
+
import { jsx as jsx54, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
4460
4637
|
function EmptyState({
|
|
4461
4638
|
icon: Icon2,
|
|
4462
4639
|
title,
|
|
@@ -4467,7 +4644,7 @@ function EmptyState({
|
|
|
4467
4644
|
className
|
|
4468
4645
|
}) {
|
|
4469
4646
|
const compact = size === "compact";
|
|
4470
|
-
return /* @__PURE__ */
|
|
4647
|
+
return /* @__PURE__ */ jsxs42(
|
|
4471
4648
|
"div",
|
|
4472
4649
|
{
|
|
4473
4650
|
"data-testid": testId,
|
|
@@ -4477,7 +4654,7 @@ function EmptyState({
|
|
|
4477
4654
|
className
|
|
4478
4655
|
),
|
|
4479
4656
|
children: [
|
|
4480
|
-
Icon2 && /* @__PURE__ */
|
|
4657
|
+
Icon2 && /* @__PURE__ */ jsx54(
|
|
4481
4658
|
"div",
|
|
4482
4659
|
{
|
|
4483
4660
|
"aria-hidden": "true",
|
|
@@ -4485,10 +4662,10 @@ function EmptyState({
|
|
|
4485
4662
|
"flex items-center justify-center rounded-full bg-primary/10 text-primary",
|
|
4486
4663
|
compact ? "mb-3 size-12" : "mb-5 size-16"
|
|
4487
4664
|
),
|
|
4488
|
-
children: /* @__PURE__ */
|
|
4665
|
+
children: /* @__PURE__ */ jsx54(Icon2, { className: compact ? "size-6" : "size-8" })
|
|
4489
4666
|
}
|
|
4490
4667
|
),
|
|
4491
|
-
/* @__PURE__ */
|
|
4668
|
+
/* @__PURE__ */ jsx54(
|
|
4492
4669
|
"h2",
|
|
4493
4670
|
{
|
|
4494
4671
|
className: cn(
|
|
@@ -4498,7 +4675,7 @@ function EmptyState({
|
|
|
4498
4675
|
children: title
|
|
4499
4676
|
}
|
|
4500
4677
|
),
|
|
4501
|
-
description && /* @__PURE__ */
|
|
4678
|
+
description && /* @__PURE__ */ jsx54(
|
|
4502
4679
|
"p",
|
|
4503
4680
|
{
|
|
4504
4681
|
className: cn(
|
|
@@ -4508,21 +4685,21 @@ function EmptyState({
|
|
|
4508
4685
|
children: description
|
|
4509
4686
|
}
|
|
4510
4687
|
),
|
|
4511
|
-
action && /* @__PURE__ */
|
|
4688
|
+
action && /* @__PURE__ */ jsx54("div", { className: compact ? "mt-4" : "mt-6", children: action })
|
|
4512
4689
|
]
|
|
4513
4690
|
}
|
|
4514
4691
|
);
|
|
4515
4692
|
}
|
|
4516
4693
|
|
|
4517
4694
|
// src/action-panel.tsx
|
|
4518
|
-
import * as
|
|
4519
|
-
import { Fragment as Fragment9, jsx as
|
|
4695
|
+
import * as React38 from "react";
|
|
4696
|
+
import { Fragment as Fragment9, jsx as jsx55, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
4520
4697
|
var BORDER_INTENT = {
|
|
4521
4698
|
default: "border-l-primary",
|
|
4522
4699
|
warning: "border-l-intent-warning",
|
|
4523
4700
|
destructive: "border-l-intent-error"
|
|
4524
4701
|
};
|
|
4525
|
-
var ActionPanel =
|
|
4702
|
+
var ActionPanel = React38.forwardRef(
|
|
4526
4703
|
({
|
|
4527
4704
|
className,
|
|
4528
4705
|
title,
|
|
@@ -4531,7 +4708,7 @@ var ActionPanel = React36.forwardRef(
|
|
|
4531
4708
|
variant = "simple",
|
|
4532
4709
|
intent = "default",
|
|
4533
4710
|
...props
|
|
4534
|
-
}, ref) => /* @__PURE__ */
|
|
4711
|
+
}, ref) => /* @__PURE__ */ jsx55(
|
|
4535
4712
|
"div",
|
|
4536
4713
|
{
|
|
4537
4714
|
ref,
|
|
@@ -4542,16 +4719,16 @@ var ActionPanel = React36.forwardRef(
|
|
|
4542
4719
|
className
|
|
4543
4720
|
),
|
|
4544
4721
|
...props,
|
|
4545
|
-
children: variant === "split" ? /* @__PURE__ */
|
|
4546
|
-
/* @__PURE__ */
|
|
4547
|
-
/* @__PURE__ */
|
|
4548
|
-
description && /* @__PURE__ */
|
|
4722
|
+
children: variant === "split" ? /* @__PURE__ */ jsxs43(Fragment9, { children: [
|
|
4723
|
+
/* @__PURE__ */ jsxs43("div", { className: "min-w-0", children: [
|
|
4724
|
+
/* @__PURE__ */ jsx55("h3", { className: "font-semibold text-foreground", children: title }),
|
|
4725
|
+
description && /* @__PURE__ */ jsx55("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
|
|
4549
4726
|
] }),
|
|
4550
|
-
action && /* @__PURE__ */
|
|
4551
|
-
] }) : /* @__PURE__ */
|
|
4552
|
-
/* @__PURE__ */
|
|
4553
|
-
description && /* @__PURE__ */
|
|
4554
|
-
action && /* @__PURE__ */
|
|
4727
|
+
action && /* @__PURE__ */ jsx55("div", { className: "flex-shrink-0", children: action })
|
|
4728
|
+
] }) : /* @__PURE__ */ jsxs43(Fragment9, { children: [
|
|
4729
|
+
/* @__PURE__ */ jsx55("h3", { className: "font-semibold text-foreground", children: title }),
|
|
4730
|
+
description && /* @__PURE__ */ jsx55("p", { className: "mt-1 text-sm text-muted-foreground", children: description }),
|
|
4731
|
+
action && /* @__PURE__ */ jsx55("div", { className: "mt-4", children: action })
|
|
4555
4732
|
] })
|
|
4556
4733
|
}
|
|
4557
4734
|
)
|
|
@@ -4559,14 +4736,14 @@ var ActionPanel = React36.forwardRef(
|
|
|
4559
4736
|
ActionPanel.displayName = "ActionPanel";
|
|
4560
4737
|
|
|
4561
4738
|
// src/divider.tsx
|
|
4562
|
-
import * as
|
|
4563
|
-
import { jsx as
|
|
4739
|
+
import * as React39 from "react";
|
|
4740
|
+
import { jsx as jsx56, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
4564
4741
|
var VARIANT_CLASSES = {
|
|
4565
4742
|
solid: "border-solid",
|
|
4566
4743
|
dashed: "border-dashed",
|
|
4567
4744
|
dotted: "border-dotted"
|
|
4568
4745
|
};
|
|
4569
|
-
var Divider =
|
|
4746
|
+
var Divider = React39.forwardRef(
|
|
4570
4747
|
({
|
|
4571
4748
|
className,
|
|
4572
4749
|
label,
|
|
@@ -4576,7 +4753,7 @@ var Divider = React37.forwardRef(
|
|
|
4576
4753
|
...props
|
|
4577
4754
|
}, ref) => {
|
|
4578
4755
|
if (orientation === "vertical") {
|
|
4579
|
-
return /* @__PURE__ */
|
|
4756
|
+
return /* @__PURE__ */ jsx56(
|
|
4580
4757
|
"div",
|
|
4581
4758
|
{
|
|
4582
4759
|
ref,
|
|
@@ -4593,7 +4770,7 @@ var Divider = React37.forwardRef(
|
|
|
4593
4770
|
);
|
|
4594
4771
|
}
|
|
4595
4772
|
if (!label) {
|
|
4596
|
-
return /* @__PURE__ */
|
|
4773
|
+
return /* @__PURE__ */ jsx56(
|
|
4597
4774
|
"div",
|
|
4598
4775
|
{
|
|
4599
4776
|
ref,
|
|
@@ -4607,7 +4784,7 @@ var Divider = React37.forwardRef(
|
|
|
4607
4784
|
}
|
|
4608
4785
|
);
|
|
4609
4786
|
}
|
|
4610
|
-
return /* @__PURE__ */
|
|
4787
|
+
return /* @__PURE__ */ jsxs44(
|
|
4611
4788
|
"div",
|
|
4612
4789
|
{
|
|
4613
4790
|
ref,
|
|
@@ -4615,7 +4792,7 @@ var Divider = React37.forwardRef(
|
|
|
4615
4792
|
role: "separator",
|
|
4616
4793
|
...props,
|
|
4617
4794
|
children: [
|
|
4618
|
-
labelPosition !== "left" && /* @__PURE__ */
|
|
4795
|
+
labelPosition !== "left" && /* @__PURE__ */ jsx56(
|
|
4619
4796
|
"div",
|
|
4620
4797
|
{
|
|
4621
4798
|
className: cn(
|
|
@@ -4624,7 +4801,7 @@ var Divider = React37.forwardRef(
|
|
|
4624
4801
|
)
|
|
4625
4802
|
}
|
|
4626
4803
|
),
|
|
4627
|
-
/* @__PURE__ */
|
|
4804
|
+
/* @__PURE__ */ jsx56(
|
|
4628
4805
|
"span",
|
|
4629
4806
|
{
|
|
4630
4807
|
className: cn(
|
|
@@ -4634,7 +4811,7 @@ var Divider = React37.forwardRef(
|
|
|
4634
4811
|
children: label
|
|
4635
4812
|
}
|
|
4636
4813
|
),
|
|
4637
|
-
labelPosition !== "right" && /* @__PURE__ */
|
|
4814
|
+
labelPosition !== "right" && /* @__PURE__ */ jsx56(
|
|
4638
4815
|
"div",
|
|
4639
4816
|
{
|
|
4640
4817
|
className: cn(
|
|
@@ -4651,8 +4828,8 @@ var Divider = React37.forwardRef(
|
|
|
4651
4828
|
Divider.displayName = "Divider";
|
|
4652
4829
|
|
|
4653
4830
|
// src/container.tsx
|
|
4654
|
-
import * as
|
|
4655
|
-
import { jsx as
|
|
4831
|
+
import * as React40 from "react";
|
|
4832
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
4656
4833
|
var SIZE_CLASSES6 = {
|
|
4657
4834
|
sm: "max-w-content-sm",
|
|
4658
4835
|
md: "max-w-content-md",
|
|
@@ -4660,8 +4837,8 @@ var SIZE_CLASSES6 = {
|
|
|
4660
4837
|
xl: "max-w-content-xl",
|
|
4661
4838
|
full: "max-w-full"
|
|
4662
4839
|
};
|
|
4663
|
-
var Container =
|
|
4664
|
-
({ className, size = "xl", padded = true, ...props }, ref) => /* @__PURE__ */
|
|
4840
|
+
var Container = React40.forwardRef(
|
|
4841
|
+
({ className, size = "xl", padded = true, ...props }, ref) => /* @__PURE__ */ jsx57(
|
|
4665
4842
|
"div",
|
|
4666
4843
|
{
|
|
4667
4844
|
ref,
|
|
@@ -4678,16 +4855,16 @@ var Container = React38.forwardRef(
|
|
|
4678
4855
|
Container.displayName = "Container";
|
|
4679
4856
|
|
|
4680
4857
|
// src/page-content.tsx
|
|
4681
|
-
import * as
|
|
4682
|
-
import { jsx as
|
|
4858
|
+
import * as React41 from "react";
|
|
4859
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
4683
4860
|
var GAP_CLASSES2 = {
|
|
4684
4861
|
sm: "space-y-4",
|
|
4685
4862
|
md: "space-y-6",
|
|
4686
4863
|
lg: "space-y-8",
|
|
4687
4864
|
none: ""
|
|
4688
4865
|
};
|
|
4689
|
-
var PageContent =
|
|
4690
|
-
({ className, gap = "md", padded = true, children, ...props }, ref) => /* @__PURE__ */
|
|
4866
|
+
var PageContent = React41.forwardRef(
|
|
4867
|
+
({ className, gap = "md", padded = true, children, ...props }, ref) => /* @__PURE__ */ jsx58(
|
|
4691
4868
|
"div",
|
|
4692
4869
|
{
|
|
4693
4870
|
ref,
|
|
@@ -4700,14 +4877,14 @@ var PageContent = React39.forwardRef(
|
|
|
4700
4877
|
PageContent.displayName = "PageContent";
|
|
4701
4878
|
|
|
4702
4879
|
// src/media-object.tsx
|
|
4703
|
-
import * as
|
|
4704
|
-
import { jsx as
|
|
4880
|
+
import * as React42 from "react";
|
|
4881
|
+
import { jsx as jsx59, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
4705
4882
|
var MEDIA_SIZE = {
|
|
4706
4883
|
sm: "h-8 w-8",
|
|
4707
4884
|
md: "h-10 w-10",
|
|
4708
4885
|
lg: "h-12 w-12"
|
|
4709
4886
|
};
|
|
4710
|
-
var MediaObject =
|
|
4887
|
+
var MediaObject = React42.forwardRef(
|
|
4711
4888
|
({
|
|
4712
4889
|
className,
|
|
4713
4890
|
media,
|
|
@@ -4720,7 +4897,7 @@ var MediaObject = React40.forwardRef(
|
|
|
4720
4897
|
...props
|
|
4721
4898
|
}, ref) => {
|
|
4722
4899
|
if (stacked) {
|
|
4723
|
-
return /* @__PURE__ */
|
|
4900
|
+
return /* @__PURE__ */ jsxs45(
|
|
4724
4901
|
"div",
|
|
4725
4902
|
{
|
|
4726
4903
|
ref,
|
|
@@ -4730,17 +4907,17 @@ var MediaObject = React40.forwardRef(
|
|
|
4730
4907
|
),
|
|
4731
4908
|
...props,
|
|
4732
4909
|
children: [
|
|
4733
|
-
/* @__PURE__ */
|
|
4734
|
-
/* @__PURE__ */
|
|
4735
|
-
title && /* @__PURE__ */
|
|
4736
|
-
description && /* @__PURE__ */
|
|
4910
|
+
/* @__PURE__ */ jsx59("div", { className: cn("flex-shrink-0", MEDIA_SIZE[mediaSize]), children: media }),
|
|
4911
|
+
/* @__PURE__ */ jsxs45("div", { className: "min-w-0", children: [
|
|
4912
|
+
title && /* @__PURE__ */ jsx59("p", { className: "font-medium text-foreground", children: title }),
|
|
4913
|
+
description && /* @__PURE__ */ jsx59("p", { className: "text-sm text-muted-foreground", children: description })
|
|
4737
4914
|
] }),
|
|
4738
|
-
action && /* @__PURE__ */
|
|
4915
|
+
action && /* @__PURE__ */ jsx59("div", { children: action })
|
|
4739
4916
|
]
|
|
4740
4917
|
}
|
|
4741
4918
|
);
|
|
4742
4919
|
}
|
|
4743
|
-
return /* @__PURE__ */
|
|
4920
|
+
return /* @__PURE__ */ jsxs45(
|
|
4744
4921
|
"div",
|
|
4745
4922
|
{
|
|
4746
4923
|
ref,
|
|
@@ -4751,12 +4928,12 @@ var MediaObject = React40.forwardRef(
|
|
|
4751
4928
|
),
|
|
4752
4929
|
...props,
|
|
4753
4930
|
children: [
|
|
4754
|
-
/* @__PURE__ */
|
|
4755
|
-
/* @__PURE__ */
|
|
4756
|
-
title && /* @__PURE__ */
|
|
4757
|
-
description && /* @__PURE__ */
|
|
4931
|
+
/* @__PURE__ */ jsx59("div", { className: cn("flex-shrink-0", MEDIA_SIZE[mediaSize]), children: media }),
|
|
4932
|
+
/* @__PURE__ */ jsxs45("div", { className: "min-w-0 flex-1", children: [
|
|
4933
|
+
title && /* @__PURE__ */ jsx59("p", { className: "font-medium text-foreground", children: title }),
|
|
4934
|
+
description && /* @__PURE__ */ jsx59("p", { className: "text-sm text-muted-foreground", children: description })
|
|
4758
4935
|
] }),
|
|
4759
|
-
action && /* @__PURE__ */
|
|
4936
|
+
action && /* @__PURE__ */ jsx59("div", { className: "flex-shrink-0", children: action })
|
|
4760
4937
|
]
|
|
4761
4938
|
}
|
|
4762
4939
|
);
|
|
@@ -4765,16 +4942,16 @@ var MediaObject = React40.forwardRef(
|
|
|
4765
4942
|
MediaObject.displayName = "MediaObject";
|
|
4766
4943
|
|
|
4767
4944
|
// src/page-patterns.tsx
|
|
4768
|
-
import * as
|
|
4769
|
-
import { jsx as
|
|
4945
|
+
import * as React43 from "react";
|
|
4946
|
+
import { jsx as jsx60, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
4770
4947
|
var GUTTER_WIDTHS = {
|
|
4771
4948
|
/** A single column of reading or a short list. */
|
|
4772
4949
|
narrow: "max-w-content-md",
|
|
4773
4950
|
/** A detail or list page with a side panel. */
|
|
4774
4951
|
default: "max-w-content-xl"
|
|
4775
4952
|
};
|
|
4776
|
-
var PageGutter =
|
|
4777
|
-
({ className, width = "default", ...props }, ref) => /* @__PURE__ */
|
|
4953
|
+
var PageGutter = React43.forwardRef(
|
|
4954
|
+
({ className, width = "default", ...props }, ref) => /* @__PURE__ */ jsx60(
|
|
4778
4955
|
"div",
|
|
4779
4956
|
{
|
|
4780
4957
|
ref,
|
|
@@ -4788,8 +4965,8 @@ var PageGutter = React41.forwardRef(
|
|
|
4788
4965
|
)
|
|
4789
4966
|
);
|
|
4790
4967
|
PageGutter.displayName = "PageGutter";
|
|
4791
|
-
var PageHeading =
|
|
4792
|
-
({ className, title, description, meta, actions, ...props }, ref) => /* @__PURE__ */
|
|
4968
|
+
var PageHeading = React43.forwardRef(
|
|
4969
|
+
({ className, title, description, meta, actions, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
4793
4970
|
"header",
|
|
4794
4971
|
{
|
|
4795
4972
|
ref,
|
|
@@ -4799,18 +4976,18 @@ var PageHeading = React41.forwardRef(
|
|
|
4799
4976
|
),
|
|
4800
4977
|
...props,
|
|
4801
4978
|
children: [
|
|
4802
|
-
/* @__PURE__ */
|
|
4803
|
-
/* @__PURE__ */
|
|
4804
|
-
description && /* @__PURE__ */
|
|
4805
|
-
meta && /* @__PURE__ */
|
|
4979
|
+
/* @__PURE__ */ jsxs46("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
4980
|
+
/* @__PURE__ */ jsx60("h1", { className: "break-words text-2xl font-semibold tracking-tight text-foreground sm:text-3xl", children: title }),
|
|
4981
|
+
description && /* @__PURE__ */ jsx60("p", { className: "break-words text-sm text-muted-foreground sm:text-base", children: description }),
|
|
4982
|
+
meta && /* @__PURE__ */ jsx60("div", { className: "mt-2 flex flex-wrap gap-2", children: meta })
|
|
4806
4983
|
] }),
|
|
4807
|
-
actions && /* @__PURE__ */
|
|
4984
|
+
actions && /* @__PURE__ */ jsx60("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: actions })
|
|
4808
4985
|
]
|
|
4809
4986
|
}
|
|
4810
4987
|
)
|
|
4811
4988
|
);
|
|
4812
4989
|
PageHeading.displayName = "PageHeading";
|
|
4813
|
-
var SectionCard =
|
|
4990
|
+
var SectionCard = React43.forwardRef(
|
|
4814
4991
|
({
|
|
4815
4992
|
className,
|
|
4816
4993
|
title,
|
|
@@ -4823,14 +5000,14 @@ var SectionCard = React41.forwardRef(
|
|
|
4823
5000
|
}, ref) => {
|
|
4824
5001
|
const pad = size === "compact" ? "p-4" : "p-4 sm:p-6";
|
|
4825
5002
|
const hasHead = Boolean(title || description || actions);
|
|
4826
|
-
return /* @__PURE__ */
|
|
5003
|
+
return /* @__PURE__ */ jsxs46(
|
|
4827
5004
|
Card,
|
|
4828
5005
|
{
|
|
4829
5006
|
ref,
|
|
4830
5007
|
className: cn("min-w-0 overflow-hidden", className),
|
|
4831
5008
|
...props,
|
|
4832
5009
|
children: [
|
|
4833
|
-
hasHead && /* @__PURE__ */
|
|
5010
|
+
hasHead && /* @__PURE__ */ jsxs46(
|
|
4834
5011
|
"div",
|
|
4835
5012
|
{
|
|
4836
5013
|
className: cn(
|
|
@@ -4840,8 +5017,8 @@ var SectionCard = React41.forwardRef(
|
|
|
4840
5017
|
flush && children ? "border-b border-border" : ""
|
|
4841
5018
|
),
|
|
4842
5019
|
children: [
|
|
4843
|
-
/* @__PURE__ */
|
|
4844
|
-
title && /* @__PURE__ */
|
|
5020
|
+
/* @__PURE__ */ jsxs46("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
5021
|
+
title && /* @__PURE__ */ jsx60(
|
|
4845
5022
|
"h2",
|
|
4846
5023
|
{
|
|
4847
5024
|
className: cn(
|
|
@@ -4851,36 +5028,36 @@ var SectionCard = React41.forwardRef(
|
|
|
4851
5028
|
children: title
|
|
4852
5029
|
}
|
|
4853
5030
|
),
|
|
4854
|
-
description && /* @__PURE__ */
|
|
5031
|
+
description && /* @__PURE__ */ jsx60("p", { className: "text-sm text-muted-foreground", children: description })
|
|
4855
5032
|
] }),
|
|
4856
|
-
actions && /* @__PURE__ */
|
|
5033
|
+
actions && /* @__PURE__ */ jsx60("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: actions })
|
|
4857
5034
|
]
|
|
4858
5035
|
}
|
|
4859
5036
|
),
|
|
4860
|
-
children !== void 0 && children !== null && /* @__PURE__ */
|
|
5037
|
+
children !== void 0 && children !== null && /* @__PURE__ */ jsx60("div", { className: cn("min-w-0", !flush && pad), children })
|
|
4861
5038
|
]
|
|
4862
5039
|
}
|
|
4863
5040
|
);
|
|
4864
5041
|
}
|
|
4865
5042
|
);
|
|
4866
5043
|
SectionCard.displayName = "SectionCard";
|
|
4867
|
-
var TabbedCard =
|
|
4868
|
-
({ className, tabs, tabsLabel, children, ...props }, ref) => /* @__PURE__ */
|
|
5044
|
+
var TabbedCard = React43.forwardRef(
|
|
5045
|
+
({ className, tabs, tabsLabel, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
4869
5046
|
Card,
|
|
4870
5047
|
{
|
|
4871
5048
|
ref,
|
|
4872
5049
|
className: cn("min-w-0 overflow-hidden", className),
|
|
4873
5050
|
...props,
|
|
4874
5051
|
children: [
|
|
4875
|
-
/* @__PURE__ */
|
|
4876
|
-
/* @__PURE__ */
|
|
5052
|
+
/* @__PURE__ */ jsx60("div", { className: "px-4 pt-3 sm:px-6", children: /* @__PURE__ */ jsx60(TabBar, { variant: "underline", "aria-label": tabsLabel, children: tabs }) }),
|
|
5053
|
+
/* @__PURE__ */ jsx60("div", { className: "min-w-0 p-4 sm:p-6", children })
|
|
4877
5054
|
]
|
|
4878
5055
|
}
|
|
4879
5056
|
)
|
|
4880
5057
|
);
|
|
4881
5058
|
TabbedCard.displayName = "TabbedCard";
|
|
4882
|
-
var SidePanelLayout =
|
|
4883
|
-
({ className, aside, asideLabel, children, ...props }, ref) => /* @__PURE__ */
|
|
5059
|
+
var SidePanelLayout = React43.forwardRef(
|
|
5060
|
+
({ className, aside, asideLabel, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
4884
5061
|
"div",
|
|
4885
5062
|
{
|
|
4886
5063
|
ref,
|
|
@@ -4890,8 +5067,8 @@ var SidePanelLayout = React41.forwardRef(
|
|
|
4890
5067
|
),
|
|
4891
5068
|
...props,
|
|
4892
5069
|
children: [
|
|
4893
|
-
/* @__PURE__ */
|
|
4894
|
-
/* @__PURE__ */
|
|
5070
|
+
/* @__PURE__ */ jsx60("div", { className: "flex min-w-0 flex-col gap-6 lg:col-span-2", children }),
|
|
5071
|
+
/* @__PURE__ */ jsx60(
|
|
4895
5072
|
"aside",
|
|
4896
5073
|
{
|
|
4897
5074
|
"aria-label": asideLabel,
|
|
@@ -4906,8 +5083,8 @@ var SidePanelLayout = React41.forwardRef(
|
|
|
4906
5083
|
SidePanelLayout.displayName = "SidePanelLayout";
|
|
4907
5084
|
|
|
4908
5085
|
// src/intent-badge.tsx
|
|
4909
|
-
import * as
|
|
4910
|
-
import { jsx as
|
|
5086
|
+
import * as React44 from "react";
|
|
5087
|
+
import { jsx as jsx61 } from "react/jsx-runtime";
|
|
4911
5088
|
var INTENT_CLASSES = {
|
|
4912
5089
|
neutral: "bg-muted text-muted-foreground border-border",
|
|
4913
5090
|
// the primary tint is lighter than the intents': `primary-text` on a 10%
|
|
@@ -4915,8 +5092,8 @@ var INTENT_CLASSES = {
|
|
|
4915
5092
|
primary: "bg-primary/5 text-primary-text border-primary/30",
|
|
4916
5093
|
...INTENT_SUBTLE_STYLES
|
|
4917
5094
|
};
|
|
4918
|
-
var IntentBadge =
|
|
4919
|
-
({ className, intent = "neutral", children, ...props }, ref) => /* @__PURE__ */
|
|
5095
|
+
var IntentBadge = React44.forwardRef(
|
|
5096
|
+
({ className, intent = "neutral", children, ...props }, ref) => /* @__PURE__ */ jsx61(
|
|
4920
5097
|
"span",
|
|
4921
5098
|
{
|
|
4922
5099
|
ref,
|
|
@@ -4927,24 +5104,24 @@ var IntentBadge = React42.forwardRef(
|
|
|
4927
5104
|
className
|
|
4928
5105
|
),
|
|
4929
5106
|
...props,
|
|
4930
|
-
children: /* @__PURE__ */
|
|
5107
|
+
children: /* @__PURE__ */ jsx61("span", { className: "truncate", children: isEmptyValue(children) ? /* @__PURE__ */ jsx61(EmptyValue, {}) : children })
|
|
4931
5108
|
}
|
|
4932
5109
|
)
|
|
4933
5110
|
);
|
|
4934
5111
|
IntentBadge.displayName = "IntentBadge";
|
|
4935
5112
|
|
|
4936
5113
|
// src/overflow-menu.tsx
|
|
4937
|
-
import * as
|
|
4938
|
-
import { Fragment as Fragment10, jsx as
|
|
5114
|
+
import * as React45 from "react";
|
|
5115
|
+
import { Fragment as Fragment10, jsx as jsx62, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
4939
5116
|
function OverflowMenu({
|
|
4940
5117
|
label,
|
|
4941
5118
|
items,
|
|
4942
5119
|
defaultOpen = false,
|
|
4943
5120
|
className
|
|
4944
5121
|
}) {
|
|
4945
|
-
const [open, setOpen] =
|
|
4946
|
-
const menuId =
|
|
4947
|
-
|
|
5122
|
+
const [open, setOpen] = React45.useState(defaultOpen);
|
|
5123
|
+
const menuId = React45.useId();
|
|
5124
|
+
React45.useEffect(() => {
|
|
4948
5125
|
if (!open) return;
|
|
4949
5126
|
const onKey = (e) => {
|
|
4950
5127
|
if (e.key === "Escape") setOpen(false);
|
|
@@ -4952,8 +5129,8 @@ function OverflowMenu({
|
|
|
4952
5129
|
document.addEventListener("keydown", onKey);
|
|
4953
5130
|
return () => document.removeEventListener("keydown", onKey);
|
|
4954
5131
|
}, [open]);
|
|
4955
|
-
return /* @__PURE__ */
|
|
4956
|
-
/* @__PURE__ */
|
|
5132
|
+
return /* @__PURE__ */ jsxs47("div", { className: cn("relative inline-block", className), children: [
|
|
5133
|
+
/* @__PURE__ */ jsx62(
|
|
4957
5134
|
Button,
|
|
4958
5135
|
{
|
|
4959
5136
|
variant: "outline",
|
|
@@ -4963,11 +5140,11 @@ function OverflowMenu({
|
|
|
4963
5140
|
"aria-expanded": open,
|
|
4964
5141
|
"aria-controls": open ? menuId : void 0,
|
|
4965
5142
|
onClick: () => setOpen(!open),
|
|
4966
|
-
children: /* @__PURE__ */
|
|
5143
|
+
children: /* @__PURE__ */ jsx62(Icon, { name: "ellipsis", size: "sm" })
|
|
4967
5144
|
}
|
|
4968
5145
|
),
|
|
4969
|
-
open && /* @__PURE__ */
|
|
4970
|
-
/* @__PURE__ */
|
|
5146
|
+
open && /* @__PURE__ */ jsxs47(Fragment10, { children: [
|
|
5147
|
+
/* @__PURE__ */ jsx62(
|
|
4971
5148
|
"div",
|
|
4972
5149
|
{
|
|
4973
5150
|
"aria-hidden": "true",
|
|
@@ -4975,14 +5152,14 @@ function OverflowMenu({
|
|
|
4975
5152
|
onClick: () => setOpen(false)
|
|
4976
5153
|
}
|
|
4977
5154
|
),
|
|
4978
|
-
/* @__PURE__ */
|
|
5155
|
+
/* @__PURE__ */ jsx62(
|
|
4979
5156
|
"div",
|
|
4980
5157
|
{
|
|
4981
5158
|
id: menuId,
|
|
4982
5159
|
role: "menu",
|
|
4983
5160
|
"aria-label": label,
|
|
4984
5161
|
className: "z-dropdown absolute right-0 top-full mt-2 flex w-56 max-w-[calc(100vw-2rem)] flex-col rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-lg",
|
|
4985
|
-
children: items.map((item) => /* @__PURE__ */
|
|
5162
|
+
children: items.map((item) => /* @__PURE__ */ jsxs47(
|
|
4986
5163
|
"button",
|
|
4987
5164
|
{
|
|
4988
5165
|
type: "button",
|
|
@@ -4997,8 +5174,8 @@ function OverflowMenu({
|
|
|
4997
5174
|
item.destructive ? "text-intent-error-foreground" : "text-popover-foreground"
|
|
4998
5175
|
),
|
|
4999
5176
|
children: [
|
|
5000
|
-
item.icon && /* @__PURE__ */
|
|
5001
|
-
/* @__PURE__ */
|
|
5177
|
+
item.icon && /* @__PURE__ */ jsx62(Icon, { name: item.icon, size: "sm" }),
|
|
5178
|
+
/* @__PURE__ */ jsx62("span", { className: "min-w-0 truncate", children: item.label })
|
|
5002
5179
|
]
|
|
5003
5180
|
},
|
|
5004
5181
|
item.label
|
|
@@ -5010,9 +5187,9 @@ function OverflowMenu({
|
|
|
5010
5187
|
}
|
|
5011
5188
|
|
|
5012
5189
|
// src/stage-list.tsx
|
|
5013
|
-
import * as
|
|
5014
|
-
import { jsx as
|
|
5015
|
-
var StageList =
|
|
5190
|
+
import * as React46 from "react";
|
|
5191
|
+
import { jsx as jsx63, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
5192
|
+
var StageList = React46.forwardRef(
|
|
5016
5193
|
({ stages, outcomes = [], current, ...props }, ref) => {
|
|
5017
5194
|
const at = stages.findIndex((s) => s.value === current);
|
|
5018
5195
|
const outcome = outcomes.find((s) => s.value === current);
|
|
@@ -5020,7 +5197,7 @@ var StageList = React44.forwardRef(
|
|
|
5020
5197
|
throw new Error(
|
|
5021
5198
|
`StageList: current "${current}" is not one of the stages (${stages.map((s) => s.value).join(", ")}) or outcomes (${outcomes.map((s) => s.value).join(", ") || "none"})`
|
|
5022
5199
|
);
|
|
5023
|
-
return /* @__PURE__ */
|
|
5200
|
+
return /* @__PURE__ */ jsxs48(
|
|
5024
5201
|
Stepper,
|
|
5025
5202
|
{
|
|
5026
5203
|
ref,
|
|
@@ -5029,7 +5206,7 @@ var StageList = React44.forwardRef(
|
|
|
5029
5206
|
activeStep: outcome ? stages.length : at,
|
|
5030
5207
|
...props,
|
|
5031
5208
|
children: [
|
|
5032
|
-
stages.map((s) => /* @__PURE__ */
|
|
5209
|
+
stages.map((s) => /* @__PURE__ */ jsx63(
|
|
5033
5210
|
StepperStep,
|
|
5034
5211
|
{
|
|
5035
5212
|
label: s.label,
|
|
@@ -5037,7 +5214,7 @@ var StageList = React44.forwardRef(
|
|
|
5037
5214
|
},
|
|
5038
5215
|
s.value
|
|
5039
5216
|
)),
|
|
5040
|
-
outcome && /* @__PURE__ */
|
|
5217
|
+
outcome && /* @__PURE__ */ jsx63(StepperStep, { label: outcome.label, error: true }, outcome.value)
|
|
5041
5218
|
]
|
|
5042
5219
|
}
|
|
5043
5220
|
);
|
|
@@ -5046,15 +5223,15 @@ var StageList = React44.forwardRef(
|
|
|
5046
5223
|
StageList.displayName = "StageList";
|
|
5047
5224
|
|
|
5048
5225
|
// src/clamped-list.tsx
|
|
5049
|
-
import * as
|
|
5050
|
-
import { jsx as
|
|
5226
|
+
import * as React47 from "react";
|
|
5227
|
+
import { jsx as jsx64, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
5051
5228
|
var MAX_HEIGHTS = {
|
|
5052
5229
|
sm: "max-h-48",
|
|
5053
5230
|
md: "max-h-72",
|
|
5054
5231
|
lg: "max-h-96"
|
|
5055
5232
|
};
|
|
5056
|
-
var ClampedList =
|
|
5057
|
-
({ className, label, maxHeight = "md", children, ...props }, ref) => /* @__PURE__ */
|
|
5233
|
+
var ClampedList = React47.forwardRef(
|
|
5234
|
+
({ className, label, maxHeight = "md", children, ...props }, ref) => /* @__PURE__ */ jsxs49(
|
|
5058
5235
|
"div",
|
|
5059
5236
|
{
|
|
5060
5237
|
ref,
|
|
@@ -5070,13 +5247,13 @@ var ClampedList = React45.forwardRef(
|
|
|
5070
5247
|
...props,
|
|
5071
5248
|
children: [
|
|
5072
5249
|
children,
|
|
5073
|
-
/* @__PURE__ */
|
|
5250
|
+
/* @__PURE__ */ jsx64(
|
|
5074
5251
|
"div",
|
|
5075
5252
|
{
|
|
5076
5253
|
"aria-hidden": "true",
|
|
5077
5254
|
"data-scroll-hint": "y",
|
|
5078
5255
|
className: SCROLL_HINT_Y_MARK,
|
|
5079
|
-
children: /* @__PURE__ */
|
|
5256
|
+
children: /* @__PURE__ */ jsx64("span", { className: "flex items-center rounded-full border border-border bg-card px-2 text-muted-foreground shadow-sm", children: /* @__PURE__ */ jsx64(Icon, { name: "chevron-down", size: "sm" }) })
|
|
5080
5257
|
}
|
|
5081
5258
|
)
|
|
5082
5259
|
]
|
|
@@ -5085,11 +5262,387 @@ var ClampedList = React45.forwardRef(
|
|
|
5085
5262
|
);
|
|
5086
5263
|
ClampedList.displayName = "ClampedList";
|
|
5087
5264
|
|
|
5265
|
+
// src/textarea.tsx
|
|
5266
|
+
import * as React48 from "react";
|
|
5267
|
+
import { jsx as jsx65, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
5268
|
+
var lengthOf = (v) => v === void 0 ? 0 : Array.isArray(v) ? v.join(",").length : String(v).length;
|
|
5269
|
+
var Textarea = React48.forwardRef(
|
|
5270
|
+
({
|
|
5271
|
+
className,
|
|
5272
|
+
error,
|
|
5273
|
+
errorMessageId,
|
|
5274
|
+
size = "md",
|
|
5275
|
+
resize = "vertical",
|
|
5276
|
+
rows = 3,
|
|
5277
|
+
showCount = false,
|
|
5278
|
+
maxLength,
|
|
5279
|
+
value,
|
|
5280
|
+
defaultValue,
|
|
5281
|
+
onChange,
|
|
5282
|
+
...props
|
|
5283
|
+
}, ref) => {
|
|
5284
|
+
const countId = React48.useId();
|
|
5285
|
+
const [typed, setTyped] = React48.useState(() => lengthOf(defaultValue));
|
|
5286
|
+
const count = value === void 0 ? typed : lengthOf(value);
|
|
5287
|
+
const aria = fieldAria(error, errorMessageId);
|
|
5288
|
+
const field = /* @__PURE__ */ jsx65(
|
|
5289
|
+
"textarea",
|
|
5290
|
+
{
|
|
5291
|
+
ref,
|
|
5292
|
+
rows,
|
|
5293
|
+
maxLength,
|
|
5294
|
+
value,
|
|
5295
|
+
defaultValue,
|
|
5296
|
+
onChange: (e) => {
|
|
5297
|
+
setTyped(e.target.value.length);
|
|
5298
|
+
onChange?.(e);
|
|
5299
|
+
},
|
|
5300
|
+
...aria,
|
|
5301
|
+
"aria-describedby": [aria["aria-describedby"], showCount ? countId : void 0].filter(Boolean).join(" ") || void 0,
|
|
5302
|
+
className: cn(
|
|
5303
|
+
"block",
|
|
5304
|
+
fieldVariants({ size, error: Boolean(error) }),
|
|
5305
|
+
resize === "none" ? "resize-none" : "resize-y",
|
|
5306
|
+
className
|
|
5307
|
+
),
|
|
5308
|
+
...props
|
|
5309
|
+
}
|
|
5310
|
+
);
|
|
5311
|
+
if (!showCount) return field;
|
|
5312
|
+
const atLimit = maxLength !== void 0 && count >= maxLength;
|
|
5313
|
+
return /* @__PURE__ */ jsxs50("div", { className: "w-full min-w-0 space-y-1", children: [
|
|
5314
|
+
field,
|
|
5315
|
+
/* @__PURE__ */ jsx65(
|
|
5316
|
+
"p",
|
|
5317
|
+
{
|
|
5318
|
+
id: countId,
|
|
5319
|
+
className: cn(
|
|
5320
|
+
"text-right text-xs tabular-nums",
|
|
5321
|
+
atLimit ? "text-intent-error-foreground" : "text-muted-foreground"
|
|
5322
|
+
),
|
|
5323
|
+
children: maxLength === void 0 ? count : `${count} / ${maxLength}`
|
|
5324
|
+
}
|
|
5325
|
+
)
|
|
5326
|
+
] });
|
|
5327
|
+
}
|
|
5328
|
+
);
|
|
5329
|
+
Textarea.displayName = "Textarea";
|
|
5330
|
+
|
|
5331
|
+
// src/select.tsx
|
|
5332
|
+
import * as React49 from "react";
|
|
5333
|
+
import { jsx as jsx66, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
5334
|
+
var CHEVRON_END = {
|
|
5335
|
+
sm: "right-2.5",
|
|
5336
|
+
md: "right-3",
|
|
5337
|
+
lg: "right-4"
|
|
5338
|
+
};
|
|
5339
|
+
var END_PADDING = {
|
|
5340
|
+
sm: "pr-8",
|
|
5341
|
+
md: "pr-9",
|
|
5342
|
+
lg: "pr-10"
|
|
5343
|
+
};
|
|
5344
|
+
var Select = React49.forwardRef(
|
|
5345
|
+
({
|
|
5346
|
+
className,
|
|
5347
|
+
options,
|
|
5348
|
+
placeholder,
|
|
5349
|
+
error,
|
|
5350
|
+
errorMessageId,
|
|
5351
|
+
size = "md",
|
|
5352
|
+
value,
|
|
5353
|
+
defaultValue,
|
|
5354
|
+
children,
|
|
5355
|
+
...props
|
|
5356
|
+
}, ref) => {
|
|
5357
|
+
if (options !== void 0 && children !== void 0)
|
|
5358
|
+
throw new Error(
|
|
5359
|
+
"Select: pass `options` or `<option>` children, not both"
|
|
5360
|
+
);
|
|
5361
|
+
const showsPlaceholder = placeholder !== void 0 && value === void 0 && defaultValue === void 0;
|
|
5362
|
+
return /* @__PURE__ */ jsxs51("div", { className: "relative w-full min-w-0", children: [
|
|
5363
|
+
/* @__PURE__ */ jsxs51(
|
|
5364
|
+
"select",
|
|
5365
|
+
{
|
|
5366
|
+
ref,
|
|
5367
|
+
value,
|
|
5368
|
+
defaultValue: showsPlaceholder ? "" : defaultValue,
|
|
5369
|
+
...fieldAria(error, errorMessageId),
|
|
5370
|
+
className: cn(
|
|
5371
|
+
"scheme-light dark:scheme-dark block cursor-pointer appearance-none truncate",
|
|
5372
|
+
FIELD_HEIGHT[size],
|
|
5373
|
+
fieldVariants({ size, error: Boolean(error) }),
|
|
5374
|
+
END_PADDING[size],
|
|
5375
|
+
'has-[option[value=""]:checked]:text-muted-foreground [&>option]:text-foreground',
|
|
5376
|
+
className
|
|
5377
|
+
),
|
|
5378
|
+
...props,
|
|
5379
|
+
children: [
|
|
5380
|
+
placeholder !== void 0 && /* @__PURE__ */ jsx66("option", { value: "", disabled: true, hidden: true, children: placeholder }),
|
|
5381
|
+
options?.map((o) => /* @__PURE__ */ jsx66("option", { value: o.value, disabled: o.disabled, children: o.label }, o.value)),
|
|
5382
|
+
children
|
|
5383
|
+
]
|
|
5384
|
+
}
|
|
5385
|
+
),
|
|
5386
|
+
/* @__PURE__ */ jsx66(
|
|
5387
|
+
Icon,
|
|
5388
|
+
{
|
|
5389
|
+
name: "chevron-down",
|
|
5390
|
+
size: "sm",
|
|
5391
|
+
className: cn(
|
|
5392
|
+
"pointer-events-none absolute top-1/2 -translate-y-1/2 text-muted-foreground",
|
|
5393
|
+
CHEVRON_END[size]
|
|
5394
|
+
)
|
|
5395
|
+
}
|
|
5396
|
+
)
|
|
5397
|
+
] });
|
|
5398
|
+
}
|
|
5399
|
+
);
|
|
5400
|
+
Select.displayName = "Select";
|
|
5401
|
+
|
|
5402
|
+
// src/checkbox.tsx
|
|
5403
|
+
import * as React50 from "react";
|
|
5404
|
+
import { jsx as jsx67, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
5405
|
+
var BOX = {
|
|
5406
|
+
sm: "size-4",
|
|
5407
|
+
md: "size-5"
|
|
5408
|
+
};
|
|
5409
|
+
var Checkbox = React50.forwardRef(
|
|
5410
|
+
({
|
|
5411
|
+
className,
|
|
5412
|
+
indeterminate = false,
|
|
5413
|
+
onCheckedChange,
|
|
5414
|
+
onChange,
|
|
5415
|
+
label,
|
|
5416
|
+
description,
|
|
5417
|
+
error,
|
|
5418
|
+
size = "md",
|
|
5419
|
+
disabled,
|
|
5420
|
+
id,
|
|
5421
|
+
...props
|
|
5422
|
+
}, ref) => {
|
|
5423
|
+
const autoId = React50.useId();
|
|
5424
|
+
const inputId = id ?? autoId;
|
|
5425
|
+
const descId = `${inputId}-description`;
|
|
5426
|
+
const errorId = `${inputId}-error`;
|
|
5427
|
+
const inner = React50.useRef(null);
|
|
5428
|
+
React50.useImperativeHandle(ref, () => {
|
|
5429
|
+
if (!inner.current) throw new Error("Checkbox: the input is not mounted");
|
|
5430
|
+
return inner.current;
|
|
5431
|
+
});
|
|
5432
|
+
React50.useEffect(() => {
|
|
5433
|
+
if (inner.current) inner.current.indeterminate = indeterminate;
|
|
5434
|
+
}, [indeterminate]);
|
|
5435
|
+
const hasError = Boolean(error);
|
|
5436
|
+
const message = typeof error === "string" ? error : void 0;
|
|
5437
|
+
const describedBy = [description ? descId : void 0, message ? errorId : void 0].filter(Boolean).join(" ") || void 0;
|
|
5438
|
+
return /* @__PURE__ */ jsxs52("div", { className: cn("flex items-start gap-2", className), children: [
|
|
5439
|
+
/* @__PURE__ */ jsxs52(
|
|
5440
|
+
"span",
|
|
5441
|
+
{
|
|
5442
|
+
className: cn(
|
|
5443
|
+
"relative inline-flex shrink-0 items-center justify-center",
|
|
5444
|
+
size === "sm" ? "mt-0.5" : "mt-px"
|
|
5445
|
+
),
|
|
5446
|
+
children: [
|
|
5447
|
+
/* @__PURE__ */ jsx67(
|
|
5448
|
+
"input",
|
|
5449
|
+
{
|
|
5450
|
+
ref: inner,
|
|
5451
|
+
id: inputId,
|
|
5452
|
+
type: "checkbox",
|
|
5453
|
+
disabled,
|
|
5454
|
+
"aria-checked": indeterminate ? "mixed" : void 0,
|
|
5455
|
+
"aria-invalid": hasError || void 0,
|
|
5456
|
+
"aria-describedby": describedBy,
|
|
5457
|
+
"data-state": indeterminate ? "indeterminate" : void 0,
|
|
5458
|
+
onChange: (e) => {
|
|
5459
|
+
onChange?.(e);
|
|
5460
|
+
onCheckedChange?.(e.target.checked);
|
|
5461
|
+
},
|
|
5462
|
+
className: cn(
|
|
5463
|
+
"peer m-0 shrink-0 cursor-pointer appearance-none rounded-sm border bg-background ring-offset-background",
|
|
5464
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
5465
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
5466
|
+
"checked:border-primary-solid checked:bg-primary-solid",
|
|
5467
|
+
BOX[size],
|
|
5468
|
+
hasError ? "border-intent-error" : "border-input",
|
|
5469
|
+
indeterminate && "border-primary-solid bg-primary-solid"
|
|
5470
|
+
),
|
|
5471
|
+
...props
|
|
5472
|
+
}
|
|
5473
|
+
),
|
|
5474
|
+
indeterminate ? /* @__PURE__ */ jsx67(
|
|
5475
|
+
"span",
|
|
5476
|
+
{
|
|
5477
|
+
"aria-hidden": "true",
|
|
5478
|
+
className: "pointer-events-none absolute h-0.5 w-1/2 rounded-full bg-primary-foreground"
|
|
5479
|
+
}
|
|
5480
|
+
) : /* @__PURE__ */ jsx67(
|
|
5481
|
+
Icon,
|
|
5482
|
+
{
|
|
5483
|
+
name: "check",
|
|
5484
|
+
size: size === "sm" ? "xs" : "sm",
|
|
5485
|
+
className: "pointer-events-none absolute hidden text-primary-foreground peer-checked:block"
|
|
5486
|
+
}
|
|
5487
|
+
)
|
|
5488
|
+
]
|
|
5489
|
+
}
|
|
5490
|
+
),
|
|
5491
|
+
(label || description || message) && /* @__PURE__ */ jsxs52("div", { className: "min-w-0 space-y-0.5", children: [
|
|
5492
|
+
label && /* @__PURE__ */ jsx67(
|
|
5493
|
+
Label,
|
|
5494
|
+
{
|
|
5495
|
+
htmlFor: inputId,
|
|
5496
|
+
disabled,
|
|
5497
|
+
className: cn(
|
|
5498
|
+
"font-normal",
|
|
5499
|
+
!disabled && "cursor-pointer",
|
|
5500
|
+
size === "sm" && "text-sm"
|
|
5501
|
+
),
|
|
5502
|
+
children: label
|
|
5503
|
+
}
|
|
5504
|
+
),
|
|
5505
|
+
description && /* @__PURE__ */ jsx67("p", { id: descId, className: "text-xs text-muted-foreground", children: description }),
|
|
5506
|
+
message && /* @__PURE__ */ jsx67("p", { id: errorId, className: "text-intent-error-foreground text-xs", children: message })
|
|
5507
|
+
] })
|
|
5508
|
+
] });
|
|
5509
|
+
}
|
|
5510
|
+
);
|
|
5511
|
+
Checkbox.displayName = "Checkbox";
|
|
5512
|
+
var CheckboxGroup = React50.forwardRef(
|
|
5513
|
+
({
|
|
5514
|
+
className,
|
|
5515
|
+
legend,
|
|
5516
|
+
options,
|
|
5517
|
+
value,
|
|
5518
|
+
onChange,
|
|
5519
|
+
orientation = "vertical",
|
|
5520
|
+
error,
|
|
5521
|
+
name,
|
|
5522
|
+
size = "md",
|
|
5523
|
+
...props
|
|
5524
|
+
}, ref) => {
|
|
5525
|
+
const errorId = React50.useId();
|
|
5526
|
+
return /* @__PURE__ */ jsxs52(
|
|
5527
|
+
"fieldset",
|
|
5528
|
+
{
|
|
5529
|
+
ref,
|
|
5530
|
+
"aria-invalid": error ? true : void 0,
|
|
5531
|
+
"aria-describedby": error ? errorId : void 0,
|
|
5532
|
+
className: cn("min-w-0 space-y-2", className),
|
|
5533
|
+
...props,
|
|
5534
|
+
children: [
|
|
5535
|
+
/* @__PURE__ */ jsx67("legend", { className: "mb-2 text-sm font-medium text-foreground", children: legend }),
|
|
5536
|
+
/* @__PURE__ */ jsx67(
|
|
5537
|
+
"div",
|
|
5538
|
+
{
|
|
5539
|
+
className: cn(
|
|
5540
|
+
orientation === "horizontal" ? "flex flex-wrap gap-x-6 gap-y-2" : "space-y-2"
|
|
5541
|
+
),
|
|
5542
|
+
children: options.map((o) => /* @__PURE__ */ jsx67(
|
|
5543
|
+
Checkbox,
|
|
5544
|
+
{
|
|
5545
|
+
name,
|
|
5546
|
+
value: o.value,
|
|
5547
|
+
size,
|
|
5548
|
+
label: o.label,
|
|
5549
|
+
description: o.description,
|
|
5550
|
+
disabled: o.disabled,
|
|
5551
|
+
error: Boolean(error),
|
|
5552
|
+
checked: value.includes(o.value),
|
|
5553
|
+
readOnly: onChange === void 0,
|
|
5554
|
+
onCheckedChange: (checked) => onChange?.(
|
|
5555
|
+
checked ? [...value, o.value] : value.filter((v) => v !== o.value)
|
|
5556
|
+
)
|
|
5557
|
+
},
|
|
5558
|
+
o.value
|
|
5559
|
+
))
|
|
5560
|
+
}
|
|
5561
|
+
),
|
|
5562
|
+
error && /* @__PURE__ */ jsx67("p", { id: errorId, className: "text-intent-error-foreground text-sm", children: error })
|
|
5563
|
+
]
|
|
5564
|
+
}
|
|
5565
|
+
);
|
|
5566
|
+
}
|
|
5567
|
+
);
|
|
5568
|
+
CheckboxGroup.displayName = "CheckboxGroup";
|
|
5569
|
+
|
|
5570
|
+
// src/progress.tsx
|
|
5571
|
+
import * as React51 from "react";
|
|
5572
|
+
import { jsx as jsx68, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
5573
|
+
var FILL = {
|
|
5574
|
+
primary: "bg-primary-solid dark:bg-primary",
|
|
5575
|
+
success: "bg-intent-success-solid dark:bg-intent-success",
|
|
5576
|
+
warning: "bg-intent-warning-solid dark:bg-intent-warning",
|
|
5577
|
+
error: "bg-intent-error-solid dark:bg-intent-error"
|
|
5578
|
+
};
|
|
5579
|
+
var Progress = React51.forwardRef(
|
|
5580
|
+
({
|
|
5581
|
+
className,
|
|
5582
|
+
value,
|
|
5583
|
+
intent = "primary",
|
|
5584
|
+
size = "md",
|
|
5585
|
+
label,
|
|
5586
|
+
showValue = false,
|
|
5587
|
+
...props
|
|
5588
|
+
}, ref) => {
|
|
5589
|
+
if (value !== void 0 && !(value >= 0 && value <= 100))
|
|
5590
|
+
throw new Error(`Progress: value must be within 0\u2013100, got ${value}`);
|
|
5591
|
+
const labelId = React51.useId();
|
|
5592
|
+
const shown = Math.round(value ?? 0);
|
|
5593
|
+
return /* @__PURE__ */ jsxs53("div", { ref, className: cn("w-full min-w-0 space-y-1.5", className), children: [
|
|
5594
|
+
(label || showValue && value !== void 0) && /* @__PURE__ */ jsxs53("div", { className: "flex items-baseline justify-between gap-3 text-sm", children: [
|
|
5595
|
+
label && /* @__PURE__ */ jsx68(
|
|
5596
|
+
"span",
|
|
5597
|
+
{
|
|
5598
|
+
id: labelId,
|
|
5599
|
+
className: "min-w-0 font-medium text-foreground",
|
|
5600
|
+
children: label
|
|
5601
|
+
}
|
|
5602
|
+
),
|
|
5603
|
+
showValue && value !== void 0 && /* @__PURE__ */ jsxs53("span", { className: "ml-auto shrink-0 tabular-nums text-muted-foreground", children: [
|
|
5604
|
+
shown,
|
|
5605
|
+
"%"
|
|
5606
|
+
] })
|
|
5607
|
+
] }),
|
|
5608
|
+
/* @__PURE__ */ jsx68(
|
|
5609
|
+
"div",
|
|
5610
|
+
{
|
|
5611
|
+
role: "progressbar",
|
|
5612
|
+
"aria-valuemin": 0,
|
|
5613
|
+
"aria-valuemax": 100,
|
|
5614
|
+
"aria-valuenow": value === void 0 ? void 0 : shown,
|
|
5615
|
+
"aria-labelledby": label ? labelId : void 0,
|
|
5616
|
+
"data-state": value === void 0 ? "indeterminate" : "determinate",
|
|
5617
|
+
className: cn(
|
|
5618
|
+
"relative w-full overflow-hidden rounded-full bg-muted",
|
|
5619
|
+
size === "sm" ? "h-1.5" : "h-2.5"
|
|
5620
|
+
),
|
|
5621
|
+
...props,
|
|
5622
|
+
children: /* @__PURE__ */ jsx68(
|
|
5623
|
+
"div",
|
|
5624
|
+
{
|
|
5625
|
+
"data-ui-boundary": "",
|
|
5626
|
+
className: cn(
|
|
5627
|
+
"h-full rounded-full",
|
|
5628
|
+
FILL[intent],
|
|
5629
|
+
value === void 0 ? "animate-progress-indeterminate absolute inset-y-0 left-0 w-2/5 motion-reduce:animate-none" : "transition-[width] duration-300"
|
|
5630
|
+
),
|
|
5631
|
+
style: value === void 0 ? void 0 : { width: `${value}%` }
|
|
5632
|
+
}
|
|
5633
|
+
)
|
|
5634
|
+
}
|
|
5635
|
+
)
|
|
5636
|
+
] });
|
|
5637
|
+
}
|
|
5638
|
+
);
|
|
5639
|
+
Progress.displayName = "Progress";
|
|
5640
|
+
|
|
5088
5641
|
// src/hooks/use-debounce.ts
|
|
5089
|
-
import { useEffect as
|
|
5642
|
+
import { useEffect as useEffect12, useState as useState12 } from "react";
|
|
5090
5643
|
function useDebounce(value, ms) {
|
|
5091
|
-
const [debounced, setDebounced] =
|
|
5092
|
-
|
|
5644
|
+
const [debounced, setDebounced] = useState12(value);
|
|
5645
|
+
useEffect12(() => {
|
|
5093
5646
|
const handle = setTimeout(() => setDebounced(value), ms);
|
|
5094
5647
|
return () => clearTimeout(handle);
|
|
5095
5648
|
}, [value, ms]);
|
|
@@ -5118,6 +5671,8 @@ export {
|
|
|
5118
5671
|
CardFooter,
|
|
5119
5672
|
CardHeader,
|
|
5120
5673
|
CardTitle,
|
|
5674
|
+
Checkbox,
|
|
5675
|
+
CheckboxGroup,
|
|
5121
5676
|
ClampedList,
|
|
5122
5677
|
CollapsibleSidebar,
|
|
5123
5678
|
Combobox,
|
|
@@ -5160,6 +5715,7 @@ export {
|
|
|
5160
5715
|
InputGroup,
|
|
5161
5716
|
IntentBadge,
|
|
5162
5717
|
IntentIcon,
|
|
5718
|
+
Label,
|
|
5163
5719
|
MarkdownRenderer,
|
|
5164
5720
|
MediaObject,
|
|
5165
5721
|
ModalBody,
|
|
@@ -5178,10 +5734,12 @@ export {
|
|
|
5178
5734
|
Pagination,
|
|
5179
5735
|
PaginationButton,
|
|
5180
5736
|
Popover,
|
|
5737
|
+
Progress,
|
|
5181
5738
|
RadioGroup,
|
|
5182
5739
|
SCROLL_HINT_X,
|
|
5183
5740
|
SectionCard,
|
|
5184
5741
|
SectionHeading,
|
|
5742
|
+
Select,
|
|
5185
5743
|
SidePanelLayout,
|
|
5186
5744
|
SimpleAccordion,
|
|
5187
5745
|
SkeletonBar,
|
|
@@ -5190,6 +5748,7 @@ export {
|
|
|
5190
5748
|
SkeletonDetail,
|
|
5191
5749
|
SkeletonRow,
|
|
5192
5750
|
SkeletonTable,
|
|
5751
|
+
Spinner,
|
|
5193
5752
|
StackedList,
|
|
5194
5753
|
StackedListItem,
|
|
5195
5754
|
StageList,
|
|
@@ -5207,6 +5766,7 @@ export {
|
|
|
5207
5766
|
TableCell,
|
|
5208
5767
|
TableHeader,
|
|
5209
5768
|
TableRow,
|
|
5769
|
+
Textarea,
|
|
5210
5770
|
Toggle,
|
|
5211
5771
|
ToggleGroup,
|
|
5212
5772
|
Tooltip,
|
|
@@ -5217,6 +5777,7 @@ export {
|
|
|
5217
5777
|
buildDiceBearUrl,
|
|
5218
5778
|
buttonVariants,
|
|
5219
5779
|
cn,
|
|
5780
|
+
fieldVariants,
|
|
5220
5781
|
getPageRange,
|
|
5221
5782
|
isEmptyValue,
|
|
5222
5783
|
useDebounce,
|