@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.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
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
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__ */ jsx(
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__ */ jsxs(Fragment, { children: [
61
- /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin", "aria-hidden": "true" }),
62
- /* @__PURE__ */ jsx("span", { children: loadingText || children })
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
- import { jsx as jsx2 } from "react/jsx-runtime";
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__ */ jsx2(
255
+ ({ className, type, error, errorMessageId, size = "md", ...props }, ref) => {
256
+ return /* @__PURE__ */ jsx4(
76
257
  "input",
77
258
  {
78
259
  type,
79
- "aria-invalid": error || void 0,
80
- "aria-describedby": error && errorMessageId ? errorMessageId : void 0,
260
+ ...fieldAria(error, errorMessageId),
81
261
  className: cn(
82
- "flex h-11 w-full rounded-md border bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
83
- error ? "border-intent-error focus-visible:ring-intent-error dark:border-intent-error" : "border-input focus-visible:ring-ring",
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 jsx3 } from "react/jsx-runtime";
97
- var Card = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3(
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__ */ jsx3("div", { ref, className: cn("p-6 pt-0", className), ...props }));
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__ */ jsx3(
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 jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
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__ */ jsx4(
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__ */ jsx4(
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__ */ jsxs2("div", { className: "flex items-center gap-3", children: [
371
+ return /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3", children: [
190
372
  switchElement,
191
- /* @__PURE__ */ jsxs2("div", { className: "flex flex-col", children: [
192
- /* @__PURE__ */ jsx4(
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__ */ jsx4("span", { className: "text-xs text-muted-foreground dark:text-muted-foreground", children: description })
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 jsx5 } from "react/jsx-runtime";
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__ */ jsx5(
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 jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
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__ */ jsxs3(
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__ */ jsxs3(
251
- "label",
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__ */ jsxs3(
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__ */ jsx6(ErrorIcon, { className: "size-4 shrink-0" }),
292
- /* @__PURE__ */ jsx6("span", { children: error })
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__ */ jsx6(
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__ */ jsx6(
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__ */ jsx6("div", { className: cn("grid gap-4", "grid-cols-1 sm:grid-cols-2", className), children });
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__ */ jsxs3("fieldset", { className: cn("space-y-4", className), children: [
330
- (title || description) && /* @__PURE__ */ jsxs3("div", { className: "space-y-1", children: [
331
- title && /* @__PURE__ */ jsx6("legend", { className: "text-base font-medium text-foreground dark:text-foreground", children: title }),
332
- description && /* @__PURE__ */ jsx6("p", { className: "text-sm text-muted-foreground dark:text-muted-foreground", children: description })
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__ */ jsx6("div", { className: "space-y-4", children })
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__ */ jsx6(
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__ */ jsxs3("div", { className: "flex gap-3", children: [
349
- /* @__PURE__ */ jsx6(ErrorIcon, { className: "text-intent-error dark:text-intent-error size-5 shrink-0" }),
350
- /* @__PURE__ */ jsx6("p", { className: "text-intent-error-foreground dark:text-intent-error-foreground text-sm", children: error })
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__ */ jsx6(
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__ */ jsxs3("div", { className: "flex gap-3", children: [
367
- /* @__PURE__ */ jsx6(SuccessIcon, { className: "text-intent-success dark:text-intent-success size-5 shrink-0" }),
368
- /* @__PURE__ */ jsx6("p", { className: "text-intent-success-foreground dark:text-intent-success-foreground text-sm", children: message })
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__ */ jsx6(
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__ */ jsx6(
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 jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
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__ */ jsx7(
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__ */ jsxs4(
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__ */ jsx7(
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__ */ jsxs4(
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__ */ jsx7("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" }),
461
- /* @__PURE__ */ jsx7("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
462
- /* @__PURE__ */ jsx7("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
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__ */ jsx7(
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__ */ jsxs4(
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__ */ jsxs4(
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__ */ jsx7(
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__ */ jsx7(
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__ */ jsxs4(
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__ */ jsxs4(
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__ */ jsx7(
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__ */ jsx7("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" })
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__ */ jsxs4(
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__ */ jsxs4(
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__ */ jsx7("path", { d: "M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2V9z" }),
614
- /* @__PURE__ */ jsx7("polyline", { points: "9,22 9,12 15,12 15,22" })
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__ */ jsxs4(
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__ */ jsx7(
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 React6 from "react";
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] = React6.useState(defaultOpen);
798
- const id = React6.useId();
799
- React6.useEffect(() => {
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__ */ jsxs5(Fragment2, { children: [
809
- /* @__PURE__ */ jsx9(
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__ */ jsx9(Icon, { name: "menu", size: "sm" })
893
+ children: /* @__PURE__ */ jsx11(Icon, { name: "menu", size: "sm" })
819
894
  }
820
895
  ),
821
- open && /* @__PURE__ */ jsxs5("div", { className: "z-overlay fixed inset-0", children: [
822
- /* @__PURE__ */ jsx9(
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__ */ jsxs5(
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__ */ jsx9(
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__ */ jsx9(
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__ */ jsx9(Icon, { name: "x", size: "sm" })
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 jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
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__ */ jsx10("a", { href: String(href), className, children });
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__ */ jsxs6(
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__ */ jsx10(Icon2, { className: cn("size-5 shrink-0", collapsed && "size-5") }),
929
- !collapsed && /* @__PURE__ */ jsxs6("div", { className: "min-w-0 flex-1 overflow-hidden", children: [
930
- /* @__PURE__ */ jsx10("div", { className: "truncate text-sm font-medium", children: item.name }),
931
- item.description && /* @__PURE__ */ jsx10(
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__ */ jsxs6(Tooltip, { children: [
949
- /* @__PURE__ */ jsx10(TooltipTrigger, { asChild: true, children: linkContent }),
950
- /* @__PURE__ */ jsxs6(TooltipContent, { side: "right", className: "flex flex-col", children: [
951
- /* @__PURE__ */ jsx10("span", { className: "font-medium", children: item.name }),
952
- item.description && /* @__PURE__ */ jsx10("span", { className: "text-xs text-muted-foreground", children: item.description })
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__ */ jsx10("div", { children: linkContent }, item.href);
1031
+ return /* @__PURE__ */ jsx12("div", { children: linkContent }, item.href);
957
1032
  };
958
- return /* @__PURE__ */ jsx10(SidebarContext.Provider, { value: { isCollapsed, toggle }, children: /* @__PURE__ */ jsxs6(TooltipProvider, { delayDuration: 100, children: [
959
- /* @__PURE__ */ jsx10(
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__ */ jsxs6(NavDrawer, { label: navLabel, side: "left", defaultOpen: defaultNavOpen, children: [
967
- header && /* @__PURE__ */ jsx10("div", { className: "border-b border-border px-4 pb-4", children: header }),
968
- /* @__PURE__ */ jsx10("div", { className: "flex-1 space-y-1 p-2", children: items.map((item) => renderItem(item, false)) }),
969
- footer && /* @__PURE__ */ jsx10("div", { className: "mt-auto border-t border-border p-2", children: footer })
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__ */ jsxs6(
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__ */ jsx10(
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__ */ jsx10(ChevronRight2, { className: "size-4" }) : /* @__PURE__ */ jsx10(ChevronLeft2, { className: "size-4" })
1065
+ children: isCollapsed ? /* @__PURE__ */ jsx12(ChevronRight2, { className: "size-4" }) : /* @__PURE__ */ jsx12(ChevronLeft2, { className: "size-4" })
991
1066
  }
992
1067
  ),
993
- (header || collapsedHeader) && /* @__PURE__ */ jsx10(
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__ */ jsx10("div", { className: "flex-1 space-y-1 overflow-y-auto p-2", children: items.map((item) => renderItem(item, isCollapsed)) }),
1004
- (footer || collapsedFooter) && /* @__PURE__ */ jsx10("div", { className: "mt-auto border-t border-border p-2", children: isCollapsed ? collapsedFooter || null : footer })
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 jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
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__ */ jsx11(
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__ */ jsx11("div", { className: cn("space-y-2", className), "data-accordion-root": "", children })
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__ */ jsx11(
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__ */ jsx11("div", { className: cn("space-y-2", className), "data-accordion-root": "", children })
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__ */ jsx11(AccordionMultiple, { ...props });
1177
+ return /* @__PURE__ */ jsx13(AccordionMultiple, { ...props });
1103
1178
  }
1104
- return /* @__PURE__ */ jsx11(AccordionSingle, { ...props });
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__ */ jsx11(
1193
+ return /* @__PURE__ */ jsx13(
1119
1194
  AccordionItemContext.Provider,
1120
1195
  {
1121
1196
  value: { value, isOpen, triggerId, contentId, disabled },
1122
- children: /* @__PURE__ */ jsx11(
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__ */ jsxs7(
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__ */ jsxs7("span", { className: "flex items-center gap-3", children: [
1168
- icon && /* @__PURE__ */ jsx11("span", { className: "shrink-0", children: icon }),
1169
- /* @__PURE__ */ jsx11("span", { children })
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__ */ jsxs7("span", { className: "flex items-center gap-2", children: [
1246
+ /* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-2", children: [
1172
1247
  rightContent,
1173
- /* @__PURE__ */ jsx11(
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__ */ jsx11(
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__ */ jsx11("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx11("div", { className: cn("px-4 pb-4", className), children }) })
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__ */ jsxs7(
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__ */ jsxs7(
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__ */ jsxs7("span", { className: "flex items-center gap-3", children: [
1267
- icon && /* @__PURE__ */ jsx11("span", { className: "shrink-0", children: icon }),
1268
- /* @__PURE__ */ jsx11("span", { children: title })
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__ */ jsxs7("span", { className: "flex items-center gap-2", children: [
1345
+ /* @__PURE__ */ jsxs9("span", { className: "flex items-center gap-2", children: [
1271
1346
  rightContent,
1272
- /* @__PURE__ */ jsx11(
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__ */ jsx11(
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__ */ jsx11("div", { className: "overflow-hidden", children: /* @__PURE__ */ jsx11("div", { className: cn("px-4 pb-4", contentClassName), children }) })
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 React7 from "react";
1309
- import { Loader2 as Loader22 } from "lucide-react";
1310
- import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
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
- React7.useEffect(() => {
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__ */ jsx12(
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__ */ jsxs8(
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__ */ jsx12(
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__ */ jsx12(
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__ */ jsxs8("div", { className: "mt-6 flex justify-end gap-3", children: [
1369
- /* @__PURE__ */ jsx12(
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__ */ jsx12(
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__ */ jsxs8(Fragment3, { children: [
1387
- /* @__PURE__ */ jsx12(Loader22, { className: "mr-2 size-4 animate-spin" }),
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 React8 from "react";
1403
- import { cva as cva2 } from "class-variance-authority";
1404
- import { jsx as jsx13 } from "react/jsx-runtime";
1405
- var avatarVariants = cva2(
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 = React8.forwardRef(
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] = React8.useState(false);
1513
+ const [hasError, setHasError] = React9.useState(false);
1439
1514
  const url = buildDiceBearUrl(seed, avatarStyle);
1440
- React8.useEffect(() => {
1515
+ React9.useEffect(() => {
1441
1516
  setHasError(false);
1442
1517
  }, [seed, avatarStyle]);
1443
- return /* @__PURE__ */ jsx13(
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__ */ jsx13("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__ */ jsx13("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__ */ jsx13(
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 jsx14 } from "react/jsx-runtime";
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__ */ jsx14(
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__ */ jsx14("div", { className: `${inner} ${innerBg} flex items-center justify-center`, children: /* @__PURE__ */ jsx14(Icon2, { className: iconColor, size: iconSize }) })
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 jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsxs9(
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__ */ jsx15(Tag2, { className: cn("text-foreground dark:text-foreground", sizeClass), children: title }),
1559
- description && /* @__PURE__ */ jsx15("p", { className: "text-sm font-normal leading-[21px] text-muted-foreground dark:text-muted-foreground", children: description })
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 jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
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__ */ jsxs10(
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__ */ jsx16(
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 jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
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__ */ jsxs11(
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__ */ jsx17("span", { className: `size-2 rounded-full ${dotClass}` }),
1629
- /* @__PURE__ */ jsx17("span", { className: "tabular-nums", children: count }),
1630
- /* @__PURE__ */ jsx17("span", { className: "text-muted-foreground", children: label })
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 jsx18 } from "react/jsx-runtime";
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__ */ jsx18(
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 jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
1736
+ import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
1662
1737
  function SkeletonCard({ className = "" }) {
1663
- return /* @__PURE__ */ jsxs12(
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__ */ jsx19(SkeletonBar, { width: 80, height: 10 }),
1673
- /* @__PURE__ */ jsx19(SkeletonBar, { width: 60, height: 24 }),
1674
- /* @__PURE__ */ jsx19(SkeletonBar, { width: 100, height: 10 })
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 jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1756
+ import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
1682
1757
  function SkeletonRow({ className = "" }) {
1683
- return /* @__PURE__ */ jsxs13(
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__ */ jsx20("div", { className: "h-9 w-9 flex-shrink-0 animate-pulse rounded-full bg-muted dark:bg-muted" }),
1693
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-1 flex-col gap-1.5", children: [
1694
- /* @__PURE__ */ jsx20(SkeletonBar, { width: 200, height: 12 }),
1695
- /* @__PURE__ */ jsx20(SkeletonBar, { width: 140, height: 10 })
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 React9 from "react";
1704
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
1705
- var StackedList = React9.forwardRef(
1706
- ({ className, divided = true, density = "default", ...props }, ref) => /* @__PURE__ */ jsx21(
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 = React9.forwardRef(
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__ */ jsxs14(
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__ */ jsx21("div", { className: "flex-shrink-0", children: avatar }),
1740
- /* @__PURE__ */ jsxs14("div", { className: "min-w-0 flex-1", children: [
1741
- /* @__PURE__ */ jsx21(
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__ */ jsx21(
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__ */ jsx21("span", { className: "flex-shrink-0 text-sm text-muted-foreground", children: meta }),
1763
- action && /* @__PURE__ */ jsx21("div", { className: "flex-shrink-0", children: action })
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 React10 from "react";
1772
- import { jsx as jsx22 } from "react/jsx-runtime";
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 = React10.forwardRef(
1784
- ({ className, columns = 3, gap = "md", ...props }, ref) => /* @__PURE__ */ jsx22(
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 = React10.forwardRef(
1800
- ({ className, hoverable = false, ...props }, ref) => /* @__PURE__ */ jsx22(
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 React11 from "react";
1817
- import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
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 = React11.forwardRef(({ className, active, disabled, ...props }, ref) => /* @__PURE__ */ jsx23(
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-input",
1914
+ "border border-border",
1840
1915
  className
1841
1916
  ),
1842
1917
  ...props
1843
1918
  }
1844
1919
  ));
1845
1920
  PaginationButton.displayName = "PaginationButton";
1846
- var Pagination = React11.forwardRef(
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__ */ jsxs15(
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__ */ jsx23(
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__ */ jsxs15("span", { className: "text-sm text-muted-foreground", children: [
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__ */ jsx23(
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__ */ jsxs15(
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__ */ jsx23(
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__ */ jsx23(
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__ */ jsx23(
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__ */ jsx23(
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 React12 from "react";
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 = "pr-6 [mask-image:linear-gradient(to_right,black_calc(100%-1.5rem),transparent)]";
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 jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
1960
- var StepContext = React12.createContext({
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 = React12.forwardRef(
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 } = React12.useContext(StepContext);
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__ */ jsx24(
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__ */ jsxs16(
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__ */ jsxs16("div", { className: "flex flex-col items-center", children: [
2185
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col items-center", children: [
2021
2186
  indicator,
2022
- !isLast && /* @__PURE__ */ jsx24(
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__ */ jsxs16("div", { className: "pb-6", children: [
2035
- /* @__PURE__ */ jsx24(
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__ */ jsx24("p", { className: "mt-0.5 text-xs text-muted-foreground", children: description })
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__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
2217
+ const stepContent = /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-2", children: [
2053
2218
  indicator,
2054
- /* @__PURE__ */ jsx24(
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__ */ jsxs16(
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__ */ jsx24(
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__ */ jsx24(
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 = React12.forwardRef(
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 = React12.Children.toArray(children);
2110
- return /* @__PURE__ */ jsx24(
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" ? cn("flex items-center overflow-x-auto", SCROLL_HINT_X) : "flex flex-col",
2282
+ variant === "horizontal" ? "flex items-center overflow-x-auto" : "flex flex-col",
2118
2283
  className
2119
2284
  ),
2120
2285
  ...props,
2121
- children: steps.map((child, i) => /* @__PURE__ */ jsx24(
2122
- StepContext.Provider,
2123
- {
2124
- value: {
2125
- index: i,
2126
- activeStep,
2127
- isLast: i === steps.length - 1,
2128
- variant,
2129
- size
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
- children: child
2132
- },
2133
- i
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 React13 from "react";
2143
- import { Fragment as Fragment4, jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
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 = React13.forwardRef(
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] = React13.useState("");
2161
- const [activeIndex, setActiveIndex] = React13.useState(0);
2162
- React13.useEffect(() => {
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
- React13.useEffect(() => {
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__ */ jsxs17(Fragment4, { children: [
2196
- /* @__PURE__ */ jsx25(
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__ */ jsx25("div", { className: "z-modal fixed inset-0 flex items-start justify-center pt-[15vh]", children: /* @__PURE__ */ jsxs17(
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__ */ jsxs17("div", { className: "flex items-center border-b border-border px-4", children: [
2215
- /* @__PURE__ */ jsx25("span", { className: "mr-2 text-muted-foreground", children: "\u2318" }),
2216
- /* @__PURE__ */ jsx25(
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__ */ jsx25("kbd", { className: "rounded border border-border px-1.5 py-0.5 text-xs text-muted-foreground", children: "Esc" })
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__ */ jsx25("div", { className: "max-h-80 overflow-y-auto p-2", children: Object.entries(grouped).length === 0 ? /* @__PURE__ */ jsx25("p", { className: "py-6 text-center text-sm text-muted-foreground", children: "No results found" }) : Object.entries(grouped).map(([group, items]) => /* @__PURE__ */ jsxs17("div", { children: [
2233
- /* @__PURE__ */ jsx25("p", { className: "px-2 py-1.5 text-xs font-medium text-muted-foreground", children: group }),
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__ */ jsxs17(
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__ */ jsx25("span", { className: "flex-shrink-0 text-muted-foreground", children: item.icon }),
2251
- /* @__PURE__ */ jsx25("span", { className: "flex-1", children: item.label }),
2252
- item.shortcut && /* @__PURE__ */ jsx25("kbd", { className: "rounded border border-border px-1.5 py-0.5 text-xs text-muted-foreground", children: item.shortcut })
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 React14 from "react";
2269
- import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
2270
- var AppShell = React14.forwardRef(
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__ */ jsxs18(
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__ */ jsx26("main", { className: "flex-1", children })
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__ */ jsxs18(
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__ */ jsx26(
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__ */ jsxs18("div", { className: "flex min-w-0 flex-1 flex-col", children: [
2487
+ /* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col", children: [
2320
2488
  header,
2321
- /* @__PURE__ */ jsxs18("div", { className: "flex flex-1 flex-col lg:flex-row", children: [
2322
- /* @__PURE__ */ jsx26("main", { className: "min-w-0 flex-1 overflow-y-auto", children }),
2323
- detailPanel && /* @__PURE__ */ jsx26("aside", { className: "flex-shrink-0 border-t border-border bg-card lg:w-80 lg:border-l lg:border-t-0", children: detailPanel })
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__ */ jsx26(
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__ */ jsxs18(
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__ */ jsxs18("div", { className: "flex min-w-0 flex-1 flex-col", children: [
2351
- sidebar && /* @__PURE__ */ jsx26(
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__ */ jsx26(
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__ */ jsx26("main", { className: "min-w-0 flex-1 overflow-y-auto", children })
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 React15 from "react";
2382
- import { Fragment as Fragment5, jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
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 = React15.forwardRef(
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] = React15.useState(false);
2573
+ const [internalOpen, setInternalOpen] = React17.useState(false);
2406
2574
  const isOpen = open ?? internalOpen;
2407
2575
  const setOpen = onOpenChange ?? setInternalOpen;
2408
- React15.useEffect(() => {
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__ */ jsxs19(
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__ */ jsx27("div", { onClick: () => setOpen(!isOpen), children: trigger }),
2424
- isOpen && /* @__PURE__ */ jsxs19(Fragment5, { children: [
2425
- /* @__PURE__ */ jsx27(
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__ */ jsx27(
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 = React15.forwardRef(
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] = React15.useState(false);
2461
- const timeoutRef = React15.useRef();
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
- React15.useEffect(() => {
2638
+ React17.useEffect(() => {
2471
2639
  return () => clearTimeout(timeoutRef.current);
2472
2640
  }, []);
2473
- return /* @__PURE__ */ jsxs19(
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__ */ jsx27(
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 React16 from "react";
2505
- import { Fragment as Fragment6, jsx as jsx28, jsxs as jsxs20 } from "react/jsx-runtime";
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 = React16.forwardRef(
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 = React16.useMemo(() => {
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] = React16.useState(initialDate.getFullYear());
2567
- const [viewMonth, setViewMonth] = React16.useState(initialDate.getMonth());
2568
- const [focusedDay, setFocusedDay] = React16.useState(null);
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__ */ jsxs20(
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__ */ jsxs20("div", { className: "mb-2 flex items-center justify-between", children: [
2718
- /* @__PURE__ */ jsx28(
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__ */ jsx28(
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__ */ jsx28(
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__ */ jsx28("div", { role: "row", className: cn("grid grid-cols-7", config.gap), children: WEEKDAYS.map((day) => /* @__PURE__ */ jsx28(
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__ */ jsx28("div", { className: cn("grid grid-cols-7", config.gap), children: cells.map((day, i) => {
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__ */ jsx28("div", { className: config.cell }, `empty-${i}`);
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__ */ jsxs20(
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__ */ jsx28(
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 = React16.forwardRef(
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] = React16.useState(false);
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__ */ jsxs20(
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__ */ jsxs20(
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__ */ jsx28("span", { className: "text-muted-foreground", "aria-hidden": "true", children: "\u{1F4C5}" }),
2890
- /* @__PURE__ */ jsx28("span", { className: "flex-1 text-left", children: displayText ?? placeholder ?? defaultPlaceholder }),
2891
- /* @__PURE__ */ jsx28("span", { className: "text-muted-foreground", "aria-hidden": "true", children: "\u25BE" })
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__ */ jsxs20(Fragment6, { children: [
2896
- /* @__PURE__ */ jsx28(
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__ */ jsx28("div", { className: "z-popover absolute left-0 top-full mt-1", children: /* @__PURE__ */ jsx28(
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 React17 from "react";
2928
- import { jsx as jsx29, jsxs as jsxs21 } from "react/jsx-runtime";
2929
- var Navbar = React17.forwardRef(
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__ */ jsxs21(
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__ */ jsxs21("div", { className: "mx-auto flex h-14 max-w-content-xl items-center gap-4 px-4 sm:px-6", children: [
2952
- logo && /* @__PURE__ */ jsx29("div", { className: "flex-shrink-0", children: logo }),
2953
- /* @__PURE__ */ jsx29(
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__ */ jsx29("div", { className: "min-w-0 flex-1 px-4", children: search }),
2968
- variant !== "centered" && variant !== "withSearch" && /* @__PURE__ */ jsx29("div", { className: "flex-1" }),
2969
- actions && /* @__PURE__ */ jsx29("div", { className: "flex shrink-0 items-center gap-2", children: actions })
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__ */ jsx29("div", { className: "border-t border-border", children: /* @__PURE__ */ jsx29("div", { className: "mx-auto flex max-w-content-xl items-center gap-4 px-4 py-2 sm:px-6", children: secondaryNav }) })
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 = React17.forwardRef(
2978
- ({ className, active, ...props }, ref) => /* @__PURE__ */ jsx29(
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 React18 from "react";
3163
+ import * as React20 from "react";
2995
3164
 
2996
3165
  // src/empty-value.tsx
2997
- import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
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__ */ jsxs22("span", { "data-empty-value": true, className: cn("text-muted-foreground", className), children: [
3004
- /* @__PURE__ */ jsx30("span", { "aria-hidden": "true", children: EMPTY_VALUE_GLYPH }),
3005
- /* @__PURE__ */ jsx30("span", { className: "sr-only", children: "Not set" })
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 jsx31, jsxs as jsxs23 } from "react/jsx-runtime";
3011
- var HorizontalCard = React18.forwardRef(
3012
- ({ className, media, hoverable, children, ...props }, ref) => /* @__PURE__ */ jsxs23(
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__ */ jsx31("div", { className: "flex-shrink-0", children: media }),
3024
- /* @__PURE__ */ jsx31("div", { className: "flex-1 p-4", children })
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 = React18.forwardRef(
3031
- ({ className, imageSrc, imageAlt, hoverable, children, ...props }, ref) => /* @__PURE__ */ jsxs23(
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__ */ jsx31("div", { className: "aspect-video w-full bg-muted", children: /* @__PURE__ */ jsx31(
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__ */ jsx31("div", { className: "p-4", children })
3219
+ /* @__PURE__ */ jsx34("div", { className: "p-4", children })
3051
3220
  ]
3052
3221
  }
3053
3222
  )
3054
3223
  );
3055
3224
  ImageCard.displayName = "ImageCard";
3056
- var StatCardExtended = React18.forwardRef(({ className, label, value, trend, icon, ...props }, ref) => /* @__PURE__ */ jsxs23(
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__ */ jsxs23("div", { className: "flex items-center justify-between", children: [
3067
- /* @__PURE__ */ jsx31("span", { className: "text-sm text-muted-foreground", children: label }),
3068
- icon && /* @__PURE__ */ jsx31("div", { className: "text-muted-foreground", children: icon })
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__ */ jsx31("p", { className: "mt-2 text-3xl font-bold text-foreground", children: isEmptyValue(value) ? /* @__PURE__ */ jsx31(EmptyValue, {}) : value }),
3071
- trend && /* @__PURE__ */ jsxs23(
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 = React18.forwardRef(
3092
- ({ className, title, description, actions, children, ...props }, ref) => /* @__PURE__ */ jsxs23(
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__ */ jsxs23("div", { className: "p-6", children: [
3103
- /* @__PURE__ */ jsx31("h3", { className: "font-semibold text-foreground", children: title }),
3104
- description && /* @__PURE__ */ jsx31("p", { className: "mt-1 text-sm text-muted-foreground", children: description }),
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__ */ jsx31("div", { className: "flex items-center gap-2 border-t border-border px-6 py-4", children: actions })
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 React19 from "react";
3284
+ import * as React21 from "react";
3116
3285
  import { createPortal } from "react-dom";
3117
- import { Fragment as Fragment7, jsx as jsx32, jsxs as jsxs24 } from "react/jsx-runtime";
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 = React19.forwardRef(
3294
+ var ModalDialog = React21.forwardRef(
3126
3295
  ({ className, open, onClose, size = "md", children, ...props }, ref) => {
3127
- React19.useEffect(() => {
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__ */ jsxs24(Fragment7, { children: [
3138
- /* @__PURE__ */ jsx32(
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__ */ jsx32("div", { className: "z-modal fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx32(
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 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
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 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32("div", { ref, className: cn("px-6 py-4", className), ...props }));
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 = React19.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx32(
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 React20 from "react";
3362
+ import * as React22 from "react";
3194
3363
  import { createPortal as createPortal2 } from "react-dom";
3195
- import { Fragment as Fragment8, jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
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 = React20.forwardRef(
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
- React20.useEffect(() => {
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__ */ jsxs25(Fragment8, { children: [
3227
- /* @__PURE__ */ jsx33(
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__ */ jsx33(
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 = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
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 = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
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 = React20.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx33(
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 React21 from "react";
3293
- import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
3294
- var FormLayout = React21.forwardRef(
3295
- ({ className, layout = "stacked", ...props }, ref) => /* @__PURE__ */ jsx34(
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 = React21.forwardRef(({ className, title, description, children, ...props }, ref) => /* @__PURE__ */ jsxs26(
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__ */ jsxs26("div", { className: "mb-4", children: [
3318
- title && /* @__PURE__ */ jsx34("h3", { className: "text-base font-semibold text-foreground", children: title }),
3319
- description && /* @__PURE__ */ jsx34("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
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__ */ jsx34("div", { className: "space-y-4", children })
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 React22 from "react";
3329
- import { jsx as jsx35, jsxs as jsxs27 } from "react/jsx-runtime";
3330
- var InputGroup = React22.forwardRef(
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__ */ jsxs27(
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__ */ jsx35("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 }),
3346
- /* @__PURE__ */ jsx35(
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__ */ jsx35("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 })
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 React23 from "react";
3365
- import { jsx as jsx36, jsxs as jsxs28 } from "react/jsx-runtime";
3366
- var RadioGroup = React23.forwardRef(
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__ */ jsxs28("fieldset", { ref, className: cn("space-y-2", className), ...props, children: [
3377
- label && /* @__PURE__ */ jsx36("legend", { className: "mb-2 text-sm font-medium text-foreground", children: label }),
3378
- /* @__PURE__ */ jsx36(
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__ */ jsxs28(
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__ */ jsx36(
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__ */ jsxs28("div", { children: [
3409
- /* @__PURE__ */ jsx36("span", { className: "text-sm font-medium text-foreground", children: option.label }),
3410
- option.description && /* @__PURE__ */ jsx36("p", { className: "mt-0.5 text-xs text-muted-foreground", children: option.description })
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__ */ jsxs28(
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__ */ jsx36(
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__ */ jsx36("span", { className: "text-sm text-foreground", children: option.label }),
3438
- option.description && variant === "stacked" && /* @__PURE__ */ jsx36("span", { className: "ml-auto text-xs text-muted-foreground", children: option.description })
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 React24 from "react";
3452
- import { jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
3453
- var Combobox = React24.forwardRef(
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] = React24.useState(false);
3465
- const [search, setSearch] = React24.useState("");
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__ */ jsxs29("div", { ref, className: cn("relative", className), ...props, children: [
3485
- /* @__PURE__ */ jsxs29(
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__ */ jsx37("div", { className: "flex flex-wrap gap-1", children: selected.map((v) => /* @__PURE__ */ jsxs29(
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__ */ jsx37(
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__ */ jsx37(
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__ */ jsx37("span", { className: "ml-auto text-muted-foreground", children: "\u25BE" })
3691
+ /* @__PURE__ */ jsx40("span", { className: "ml-auto text-muted-foreground", children: "\u25BE" })
3523
3692
  ]
3524
3693
  }
3525
3694
  ),
3526
- open && /* @__PURE__ */ jsxs29("div", { className: "z-dropdown absolute mt-1 w-full rounded-md border border-border bg-card shadow-lg", children: [
3527
- filterable && /* @__PURE__ */ jsx37("div", { className: "border-b border-border p-2", children: /* @__PURE__ */ jsx37(
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__ */ jsx37("div", { className: "max-h-60 overflow-y-auto p-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx37("div", { className: "px-3 py-2 text-sm text-muted-foreground", children: "No results" }) : filtered.map((option) => {
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__ */ jsxs29(
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__ */ jsx37("span", { className: "mr-2", children: isSelected ? "\u2611" : "\u2610" }),
3719
+ multi && /* @__PURE__ */ jsx40("span", { className: "mr-2", children: isSelected ? "\u2611" : "\u2610" }),
3551
3720
  option.label,
3552
- !multi && isSelected && /* @__PURE__ */ jsx37("span", { className: "text-primary-text ml-auto", children: "\u2713" })
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 React25 from "react";
3566
- import { jsx as jsx38, jsxs as jsxs30 } from "react/jsx-runtime";
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 = React25.forwardRef(
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] = React25.useState(false);
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__ */ jsxs30(
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__ */ jsx38("span", { className: "flex-shrink-0 pt-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx38(Icon, { name: ICON_MAP[intent], size: "md" }) }),
3626
- /* @__PURE__ */ jsxs30("div", { className: "min-w-0 flex-1", children: [
3627
- title && /* @__PURE__ */ jsx38("p", { className: "font-semibold", children: title }),
3628
- children && /* @__PURE__ */ jsx38("div", { className: cn(title && "mt-1", "text-sm"), children })
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__ */ jsx38("div", { className: "flex-shrink-0", children: action }),
3631
- dismissible && /* @__PURE__ */ jsx38(
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 React26 from "react";
3650
- import { jsx as jsx39, jsxs as jsxs31 } from "react/jsx-runtime";
3651
- var NotificationPanel = React26.forwardRef(({ className, unreadCount = 0, onMarkAllRead, children, ...props }, ref) => /* @__PURE__ */ jsxs31(
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__ */ jsxs31("div", { className: "flex items-center justify-between border-b border-border px-4 py-3", children: [
3662
- /* @__PURE__ */ jsxs31("h3", { className: "text-sm font-semibold text-foreground", children: [
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__ */ jsx39("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 })
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__ */ jsx39(
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__ */ jsx39("div", { className: "max-h-80 divide-y divide-border overflow-y-auto", children })
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 = React26.forwardRef(({ className, title, description, time, unread, icon, ...props }, ref) => /* @__PURE__ */ jsxs31(
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__ */ jsx39("div", { className: "flex-shrink-0 pt-0.5", children: icon }),
3693
- /* @__PURE__ */ jsxs31("div", { className: "min-w-0 flex-1", children: [
3694
- /* @__PURE__ */ jsx39(
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__ */ jsx39("p", { className: "mt-0.5 text-xs text-muted-foreground", children: description }),
3705
- time && /* @__PURE__ */ jsx39("p", { className: "mt-1 text-xs text-muted-foreground", children: time })
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__ */ jsx39("div", { className: "flex-shrink-0 pt-1.5", children: /* @__PURE__ */ jsx39("div", { className: "h-2 w-2 rounded-full bg-primary" }) })
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 jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
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__ */ jsx40(
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__ */ jsxs32(
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__ */ jsx40("div", { className: "flex gap-4 border-b border-border bg-muted/50 px-4 py-3", children: Array.from({ length: columns }).map((_, i) => /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 flex-1" }, `h-${i}`)) }),
3743
- Array.from({ length: rows }).map((_, row) => /* @__PURE__ */ jsx40(
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__ */ jsx40(
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__ */ jsx40("div", { className: cn("grid gap-4", colClass, className), ...props, children: Array.from({ length: cards }).map((_, i) => /* @__PURE__ */ jsxs32(
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__ */ jsx40(SkeletonBar2, { className: "h-4 w-3/4" }),
3778
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-3 w-full" }),
3779
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-3 w-5/6" }),
3780
- /* @__PURE__ */ jsxs32("div", { className: "flex gap-2 pt-2", children: [
3781
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-6 w-6 rounded-full" }),
3782
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-20" })
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__ */ jsxs32("div", { className: cn("space-y-6", className), ...props, children: [
3792
- /* @__PURE__ */ jsxs32("div", { className: "space-y-2", children: [
3793
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-8 w-1/3" }),
3794
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-2/3" })
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__ */ jsx40("div", { className: "space-y-4", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs32("div", { className: "flex justify-between", children: [
3797
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-24" }),
3798
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-40" })
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__ */ jsxs32("div", { className: "space-y-2", children: [
3801
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-full" }),
3802
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-full" }),
3803
- /* @__PURE__ */ jsx40(SkeletonBar2, { className: "h-4 w-3/4" })
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 React27 from "react";
3811
- import { jsx as jsx41 } from "react/jsx-runtime";
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 = React27.forwardRef(
3818
- ({ className, pressed, variant = "default", size = "md", ...props }, ref) => /* @__PURE__ */ jsx41(
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-input",
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 = React27.forwardRef(
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__ */ jsx41(
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: React27.Children.map(children, (child) => {
3872
- if (!React27.isValidElement(child)) return child;
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 React27.cloneElement(child, {
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 React28 from "react";
3893
- import { jsx as jsx42, jsxs as jsxs33 } from "react/jsx-runtime";
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 = React28.forwardRef(
4075
+ var AvatarGroup = React30.forwardRef(
3907
4076
  ({ className, max = 5, size = "md", children, ...props }, ref) => {
3908
- const items = React28.Children.toArray(children);
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__ */ jsxs33("div", { ref, className: cn("flex items-center", className), ...props, children: [
3913
- visible.map((child, i) => /* @__PURE__ */ jsx42(
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__ */ jsx42(
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__ */ jsxs33(
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 = React28.forwardRef(({ className, fallback, size = "md", alt, src, ...props }, ref) => {
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__ */ jsx42(
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__ */ jsx42(
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 React29 from "react";
3985
- import { jsx as jsx43 } from "react/jsx-runtime";
3986
- var TabBar = React29.forwardRef(
3987
- ({ className, variant = "underline", children, ...props }, ref) => /* @__PURE__ */ jsx43(
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 (`SCROLL_HINT_X`): the last 1.5rem fades, and
3997
- // the same 1.5rem of end padding means only a clipped tab fades.
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: React29.Children.map(children, (child) => {
4009
- if (!React29.isValidElement(child)) return child;
4010
- return React29.cloneElement(
4011
- child,
4012
- { _variant: variant }
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 = React29.forwardRef(
4020
- ({ className, active, disabled, _variant: variant = "underline", ...props }, ref) => /* @__PURE__ */ jsx43(
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 jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
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__ */ jsx44(
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__ */ jsxs34("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
4076
- context != null ? /* @__PURE__ */ jsx44("div", { className: "flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1.5", children: context }) : /* @__PURE__ */ jsx44("span", {}),
4077
- /* @__PURE__ */ jsx44("div", { className: "flex shrink-0 items-center gap-2", children: actions })
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 React30 from "react";
4085
- import { jsx as jsx45 } from "react/jsx-runtime";
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 = React30.forwardRef(
4092
- ({ className, variant = "default", size = "md", children, ...props }, ref) => /* @__PURE__ */ jsx45(
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-input bg-muted p-0.5",
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: React30.Children.map(children, (child) => {
4106
- if (!React30.isValidElement(child)) return child;
4107
- return React30.cloneElement(
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 = React30.forwardRef(
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__ */ jsx45(
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-input bg-background text-foreground hover:bg-muted",
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-input bg-transparent text-foreground hover:bg-muted",
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 React31 from "react";
4165
- import { jsx as jsx46, jsxs as jsxs35 } from "react/jsx-runtime";
4166
- var DataTable = React31.forwardRef(
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) => /* @__PURE__ */ jsx46("div", { className: cn("w-full overflow-x-auto", SCROLL_HINT_X), children: /* @__PURE__ */ jsx46(
4174
- "table",
4175
- {
4176
- ref,
4177
- className: cn(
4178
- "w-full caption-bottom text-sm",
4179
- bordered && "border border-border",
4180
- className
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
- "data-density": density,
4183
- "data-striped": striped,
4184
- ...props
4185
- }
4186
- ) })
4361
+ /* @__PURE__ */ jsx49(ScrollHintXMark, {})
4362
+ ] })
4363
+ )
4187
4364
  );
4188
4365
  DataTable.displayName = "DataTable";
4189
- var TableHeader = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
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 = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
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 = React31.forwardRef(
4208
- ({ className, selected, ...props }, ref) => /* @__PURE__ */ jsx46(
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 = React31.forwardRef(
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__ */ jsxs35(
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__ */ jsx46("span", { className: "text-primary-text ml-1", children: sortIndicator })
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 = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx46(
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 React32 from "react";
4269
- import { jsx as jsx47 } from "react/jsx-runtime";
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 = React32.forwardRef(
4276
- ({ className, columns = 3, variant = "card", children, ...props }, ref) => /* @__PURE__ */ jsx47(
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 React33 from "react";
4295
- import { jsx as jsx48, jsxs as jsxs36 } from "react/jsx-runtime";
4296
- var DescriptionLayoutContext = React33.createContext("stacked");
4297
- var DescriptionList = React33.forwardRef(({ className, layout = "stacked", ...props }, ref) => /* @__PURE__ */ jsx48(DescriptionLayoutContext.Provider, { value: layout, children: /* @__PURE__ */ jsx48(
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 = React33.forwardRef(
4488
+ var DescriptionItem = React35.forwardRef(
4312
4489
  ({ className, label, value, ...props }, ref) => {
4313
- const layout = React33.useContext(DescriptionLayoutContext);
4314
- return /* @__PURE__ */ jsxs36(
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__ */ jsx48(
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__ */ jsx48(
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__ */ jsx48(EmptyValue, {}) : value
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 React34 from "react";
4356
- import { jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
4357
- var ActivityFeed = React34.forwardRef(
4358
- ({ className, variant = "simple", ...props }, ref) => /* @__PURE__ */ jsx49(
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 = React34.forwardRef(
4370
- ({ className, avatar, eventDescription, timestamp, isLast, ...props }, ref) => /* @__PURE__ */ jsxs37(
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__ */ jsx49("div", { className: "absolute left-5 top-10 -ml-px h-full w-0.5 bg-muted" }),
4378
- /* @__PURE__ */ jsx49("div", { className: "relative flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-full bg-muted", children: avatar }),
4379
- /* @__PURE__ */ jsxs37("div", { className: "min-w-0 flex-1 pt-1", children: [
4380
- /* @__PURE__ */ jsx49("div", { className: "text-sm text-foreground", children: eventDescription }),
4381
- timestamp && /* @__PURE__ */ jsx49("p", { className: "mt-0.5 text-xs text-muted-foreground", children: timestamp })
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 React35 from "react";
4391
- import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
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 = React35.forwardRef(
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__ */ jsxs38(
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__ */ jsx50("span", { className: "flex-shrink-0 pt-0.5", "aria-hidden": "true", children: /* @__PURE__ */ jsx50(Icon, { name: ICON_MAP2[intent], size: "md" }) }),
4437
- /* @__PURE__ */ jsxs38("div", { className: "min-w-0 flex-1", children: [
4438
- title && /* @__PURE__ */ jsx50("p", { className: "font-semibold", children: title }),
4439
- children && /* @__PURE__ */ jsx50("div", { className: cn(title && "mt-1", "text-sm"), children })
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__ */ jsx50(
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 jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
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__ */ jsxs39(
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__ */ jsx51(
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__ */ jsx51(Icon2, { className: compact ? "size-6" : "size-8" })
4665
+ children: /* @__PURE__ */ jsx54(Icon2, { className: compact ? "size-6" : "size-8" })
4489
4666
  }
4490
4667
  ),
4491
- /* @__PURE__ */ jsx51(
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__ */ jsx51(
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__ */ jsx51("div", { className: compact ? "mt-4" : "mt-6", children: action })
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 React36 from "react";
4519
- import { Fragment as Fragment9, jsx as jsx52, jsxs as jsxs40 } from "react/jsx-runtime";
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 = React36.forwardRef(
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__ */ jsx52(
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__ */ jsxs40(Fragment9, { children: [
4546
- /* @__PURE__ */ jsxs40("div", { className: "min-w-0", children: [
4547
- /* @__PURE__ */ jsx52("h3", { className: "font-semibold text-foreground", children: title }),
4548
- description && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-muted-foreground", children: description })
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__ */ jsx52("div", { className: "flex-shrink-0", children: action })
4551
- ] }) : /* @__PURE__ */ jsxs40(Fragment9, { children: [
4552
- /* @__PURE__ */ jsx52("h3", { className: "font-semibold text-foreground", children: title }),
4553
- description && /* @__PURE__ */ jsx52("p", { className: "mt-1 text-sm text-muted-foreground", children: description }),
4554
- action && /* @__PURE__ */ jsx52("div", { className: "mt-4", children: action })
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 React37 from "react";
4563
- import { jsx as jsx53, jsxs as jsxs41 } from "react/jsx-runtime";
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 = React37.forwardRef(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsxs41(
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsx53(
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 React38 from "react";
4655
- import { jsx as jsx54 } from "react/jsx-runtime";
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 = React38.forwardRef(
4664
- ({ className, size = "xl", padded = true, ...props }, ref) => /* @__PURE__ */ jsx54(
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 React39 from "react";
4682
- import { jsx as jsx55 } from "react/jsx-runtime";
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 = React39.forwardRef(
4690
- ({ className, gap = "md", padded = true, children, ...props }, ref) => /* @__PURE__ */ jsx55(
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 React40 from "react";
4704
- import { jsx as jsx56, jsxs as jsxs42 } from "react/jsx-runtime";
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 = React40.forwardRef(
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__ */ jsxs42(
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__ */ jsx56("div", { className: cn("flex-shrink-0", MEDIA_SIZE[mediaSize]), children: media }),
4734
- /* @__PURE__ */ jsxs42("div", { className: "min-w-0", children: [
4735
- title && /* @__PURE__ */ jsx56("p", { className: "font-medium text-foreground", children: title }),
4736
- description && /* @__PURE__ */ jsx56("p", { className: "text-sm text-muted-foreground", children: description })
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__ */ jsx56("div", { children: action })
4915
+ action && /* @__PURE__ */ jsx59("div", { children: action })
4739
4916
  ]
4740
4917
  }
4741
4918
  );
4742
4919
  }
4743
- return /* @__PURE__ */ jsxs42(
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__ */ jsx56("div", { className: cn("flex-shrink-0", MEDIA_SIZE[mediaSize]), children: media }),
4755
- /* @__PURE__ */ jsxs42("div", { className: "min-w-0 flex-1", children: [
4756
- title && /* @__PURE__ */ jsx56("p", { className: "font-medium text-foreground", children: title }),
4757
- description && /* @__PURE__ */ jsx56("p", { className: "text-sm text-muted-foreground", children: description })
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__ */ jsx56("div", { className: "flex-shrink-0", children: action })
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 React41 from "react";
4769
- import { jsx as jsx57, jsxs as jsxs43 } from "react/jsx-runtime";
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 = React41.forwardRef(
4777
- ({ className, width = "default", ...props }, ref) => /* @__PURE__ */ jsx57(
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 = React41.forwardRef(
4792
- ({ className, title, description, meta, actions, ...props }, ref) => /* @__PURE__ */ jsxs43(
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__ */ jsxs43("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
4803
- /* @__PURE__ */ jsx57("h1", { className: "break-words text-2xl font-semibold tracking-tight text-foreground sm:text-3xl", children: title }),
4804
- description && /* @__PURE__ */ jsx57("p", { className: "break-words text-sm text-muted-foreground sm:text-base", children: description }),
4805
- meta && /* @__PURE__ */ jsx57("div", { className: "mt-2 flex flex-wrap gap-2", children: meta })
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__ */ jsx57("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: actions })
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 = React41.forwardRef(
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__ */ jsxs43(
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__ */ jsxs43(
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__ */ jsxs43("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
4844
- title && /* @__PURE__ */ jsx57(
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__ */ jsx57("p", { className: "text-sm text-muted-foreground", children: description })
5031
+ description && /* @__PURE__ */ jsx60("p", { className: "text-sm text-muted-foreground", children: description })
4855
5032
  ] }),
4856
- actions && /* @__PURE__ */ jsx57("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: actions })
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__ */ jsx57("div", { className: cn("min-w-0", !flush && pad), children })
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 = React41.forwardRef(
4868
- ({ className, tabs, tabsLabel, children, ...props }, ref) => /* @__PURE__ */ jsxs43(
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__ */ jsx57("div", { className: "px-4 pt-3 sm:px-6", children: /* @__PURE__ */ jsx57(TabBar, { variant: "underline", "aria-label": tabsLabel, children: tabs }) }),
4876
- /* @__PURE__ */ jsx57("div", { className: "min-w-0 p-4 sm:p-6", children })
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 = React41.forwardRef(
4883
- ({ className, aside, asideLabel, children, ...props }, ref) => /* @__PURE__ */ jsxs43(
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__ */ jsx57("div", { className: "flex min-w-0 flex-col gap-6 lg:col-span-2", children }),
4894
- /* @__PURE__ */ jsx57(
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 React42 from "react";
4910
- import { jsx as jsx58 } from "react/jsx-runtime";
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 = React42.forwardRef(
4919
- ({ className, intent = "neutral", children, ...props }, ref) => /* @__PURE__ */ jsx58(
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__ */ jsx58("span", { className: "truncate", children: isEmptyValue(children) ? /* @__PURE__ */ jsx58(EmptyValue, {}) : children })
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 React43 from "react";
4938
- import { Fragment as Fragment10, jsx as jsx59, jsxs as jsxs44 } from "react/jsx-runtime";
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] = React43.useState(defaultOpen);
4946
- const menuId = React43.useId();
4947
- React43.useEffect(() => {
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__ */ jsxs44("div", { className: cn("relative inline-block", className), children: [
4956
- /* @__PURE__ */ jsx59(
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__ */ jsx59(Icon, { name: "ellipsis", size: "sm" })
5143
+ children: /* @__PURE__ */ jsx62(Icon, { name: "ellipsis", size: "sm" })
4967
5144
  }
4968
5145
  ),
4969
- open && /* @__PURE__ */ jsxs44(Fragment10, { children: [
4970
- /* @__PURE__ */ jsx59(
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__ */ jsx59(
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__ */ jsxs44(
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__ */ jsx59(Icon, { name: item.icon, size: "sm" }),
5001
- /* @__PURE__ */ jsx59("span", { className: "min-w-0 truncate", children: item.label })
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 React44 from "react";
5014
- import { jsx as jsx60, jsxs as jsxs45 } from "react/jsx-runtime";
5015
- var StageList = React44.forwardRef(
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__ */ jsxs45(
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__ */ jsx60(
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__ */ jsx60(StepperStep, { label: outcome.label, error: true }, outcome.value)
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 React45 from "react";
5050
- import { jsx as jsx61, jsxs as jsxs46 } from "react/jsx-runtime";
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 = React45.forwardRef(
5057
- ({ className, label, maxHeight = "md", children, ...props }, ref) => /* @__PURE__ */ jsxs46(
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__ */ jsx61(
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__ */ jsx61("span", { className: "flex items-center rounded-full border border-border bg-card px-2 text-muted-foreground shadow-sm", children: /* @__PURE__ */ jsx61(Icon, { name: "chevron-down", size: "sm" }) })
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 useEffect10, useState as useState11 } from "react";
5642
+ import { useEffect as useEffect12, useState as useState12 } from "react";
5090
5643
  function useDebounce(value, ms) {
5091
- const [debounced, setDebounced] = useState11(value);
5092
- useEffect10(() => {
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,