@yenio-pld/blocks 0.0.0 → 1.0.0-rc.2

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
@@ -1,118 +1,61 @@
1
1
  "use client";
2
- import * as React from 'react';
3
2
  import { createContext, useContext, useState, useRef, useId, useEffect, useCallback, useLayoutEffect } from 'react';
4
- import { Loader2, AlertTriangle, Inbox, Bell, Moon, Sun, Monitor, Languages, Upload, Move, ZoomOut, ZoomIn, RotateCcw, RotateCw, Grid3X3, RefreshCw, X, User, Pencil, Check, Pause, Play, BarChart3, XIcon } from 'lucide-react';
3
+ import { Skeleton } from './ui/skeleton.js';
4
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
+ import { Loader2, AlertTriangle, Inbox, Bell, Moon, Sun, Monitor, Languages, Upload, Move, ZoomOut, ZoomIn, RotateCcw, RotateCw, Grid3X3, RefreshCw, X, User, Pencil, Check, Pause, Play, BarChart3 } from 'lucide-react';
5
6
  import { clsx } from 'clsx';
6
7
  import { twMerge } from 'tailwind-merge';
8
+ import { Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent } from './ui/empty.js';
7
9
  import { cva } from 'class-variance-authority';
8
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
- import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
10
- import { Slot } from '@radix-ui/react-slot';
11
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
10
+ import { AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from './ui/alert-dialog.js';
11
+ import { Button } from './ui/button.js';
12
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, miniMenuContentClassName, miniMenuContentDefaults, DropdownMenuItem } from './ui/dropdown-menu.js';
12
13
  import { useTheme } from 'next-themes';
13
- import * as SliderPrimitive from '@radix-ui/react-slider';
14
- import * as TogglePrimitive from '@radix-ui/react-toggle';
15
- import * as DialogPrimitive from '@radix-ui/react-dialog';
16
- import { Drawer as Drawer$1 } from 'vaul';
14
+ import { Slider } from './ui/slider.js';
15
+ import { Toggle } from './ui/toggle.js';
16
+ import { DialogClose, Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './ui/dialog.js';
17
+ import { DrawerClose, Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerFooter } from './ui/drawer.js';
17
18
  import { AnimatePresence, motion } from 'framer-motion';
18
19
 
19
20
  var LanguageContext = createContext(null);
20
21
  function useLanguageContext() {
21
22
  return useContext(LanguageContext);
22
23
  }
23
- function cn(...inputs) {
24
- return twMerge(clsx(inputs));
25
- }
26
- function Empty({ className, ...props }) {
27
- return /* @__PURE__ */ jsx(
28
- "div",
29
- {
30
- "data-slot": "empty",
31
- className: cn(
32
- "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg p-6 text-center text-balance md:p-12",
33
- className
34
- ),
35
- ...props
36
- }
37
- );
38
- }
39
- function EmptyHeader({ className, ...props }) {
40
- return /* @__PURE__ */ jsx(
41
- "div",
42
- {
43
- "data-slot": "empty-header",
44
- className: cn(
45
- "flex max-w-sm flex-col items-center gap-2 text-center",
46
- className
47
- ),
48
- ...props
49
- }
50
- );
24
+ function PageTitle({
25
+ title,
26
+ description
27
+ }) {
28
+ return /* @__PURE__ */ jsxs("header", { className: "flex flex-col gap-1", children: [
29
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold tracking-tight", children: title }),
30
+ description ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: description }) : null
31
+ ] });
51
32
  }
52
- var emptyMediaVariants = cva(
53
- "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
54
- {
55
- variants: {
56
- variant: {
57
- default: "bg-transparent",
58
- icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
59
- }
60
- },
61
- defaultVariants: {
62
- variant: "default"
63
- }
64
- }
65
- );
66
- function EmptyMedia({
67
- className,
68
- variant = "default",
69
- ...props
33
+ function Field({
34
+ label,
35
+ children
70
36
  }) {
71
- return /* @__PURE__ */ jsx(
72
- "div",
73
- {
74
- "data-slot": "empty-icon",
75
- "data-variant": variant,
76
- className: cn(emptyMediaVariants({ variant, className })),
77
- ...props
78
- }
79
- );
37
+ return /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-sm", children: [
38
+ /* @__PURE__ */ jsx("span", { className: "font-medium", children: label }),
39
+ children
40
+ ] });
80
41
  }
81
- function EmptyTitle({ className, ...props }) {
82
- return /* @__PURE__ */ jsx(
83
- "div",
84
- {
85
- "data-slot": "empty-title",
86
- className: cn("text-lg font-medium tracking-tight", className),
87
- ...props
88
- }
89
- );
42
+ function ListSkeleton() {
43
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", "aria-hidden": "true", children: [
44
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-48" }),
45
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-10 w-full" }),
46
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-16 w-full" }),
47
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-16 w-full" }),
48
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-16 w-full" })
49
+ ] });
90
50
  }
91
- function EmptyDescription({ className, ...props }) {
92
- return /* @__PURE__ */ jsx(
93
- "div",
94
- {
95
- "data-slot": "empty-description",
96
- className: cn(
97
- "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
98
- className
99
- ),
100
- ...props
101
- }
102
- );
51
+ function TableSkeleton({
52
+ columns,
53
+ rows = 5
54
+ }) {
55
+ return /* @__PURE__ */ jsx("div", { "aria-busy": "true", className: "flex flex-col gap-2", children: Array.from({ length: rows }, (_, row) => /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: Array.from({ length: columns }, (_2, column) => /* @__PURE__ */ jsx(Skeleton, { className: "h-8 flex-1" }, column)) }, row)) });
103
56
  }
104
- function EmptyContent({ className, ...props }) {
105
- return /* @__PURE__ */ jsx(
106
- "div",
107
- {
108
- "data-slot": "empty-content",
109
- className: cn(
110
- "flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
111
- className
112
- ),
113
- ...props
114
- }
115
- );
57
+ function cn(...inputs) {
58
+ return twMerge(clsx(inputs));
116
59
  }
117
60
  function LoadingState({
118
61
  label = "Loading\u2026",
@@ -206,187 +149,97 @@ function EmptyState({
206
149
  }
207
150
  );
208
151
  }
209
- var buttonVariants = cva(
210
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
152
+ function Empty2({ className, ...props }) {
153
+ return /* @__PURE__ */ jsx(
154
+ "div",
155
+ {
156
+ "data-slot": "empty",
157
+ className: cn(
158
+ "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg p-6 text-center text-balance md:p-12",
159
+ className
160
+ ),
161
+ ...props
162
+ }
163
+ );
164
+ }
165
+ function EmptyHeader2({ className, ...props }) {
166
+ return /* @__PURE__ */ jsx(
167
+ "div",
168
+ {
169
+ "data-slot": "empty-header",
170
+ className: cn(
171
+ "flex max-w-sm flex-col items-center gap-2 text-center",
172
+ className
173
+ ),
174
+ ...props
175
+ }
176
+ );
177
+ }
178
+ var emptyMediaVariants = cva(
179
+ "mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
211
180
  {
212
181
  variants: {
213
182
  variant: {
214
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
215
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
216
- outline: "border bg-background text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:text-foreground dark:hover:bg-muted dark:hover:text-foreground",
217
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
218
- ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 dark:hover:text-foreground",
219
- link: "text-primary underline-offset-4 hover:underline"
220
- },
221
- size: {
222
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
223
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
224
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
225
- icon: "size-9",
226
- "icon-sm": "size-8",
227
- "icon-lg": "size-10"
183
+ default: "bg-transparent",
184
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
228
185
  }
229
186
  },
230
187
  defaultVariants: {
231
- variant: "default",
232
- size: "default"
188
+ variant: "default"
233
189
  }
234
190
  }
235
191
  );
236
- function Button({
192
+ function EmptyMedia2({
237
193
  className,
238
194
  variant = "default",
239
- size = "default",
240
- asChild = false,
241
195
  ...props
242
196
  }) {
243
- const Comp = asChild ? Slot : "button";
244
197
  return /* @__PURE__ */ jsx(
245
- Comp,
198
+ "div",
246
199
  {
247
- "data-slot": "button",
200
+ "data-slot": "empty-icon",
248
201
  "data-variant": variant,
249
- "data-size": size,
250
- className: cn(buttonVariants({ variant, size, className })),
202
+ className: cn(emptyMediaVariants({ variant, className })),
251
203
  ...props
252
204
  }
253
205
  );
254
206
  }
255
- function AlertDialog({
256
- ...props
257
- }) {
258
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
259
- }
260
- function AlertDialogPortal({
261
- ...props
262
- }) {
263
- return /* @__PURE__ */ jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props });
264
- }
265
- function AlertDialogOverlay({
266
- className,
267
- ...props
268
- }) {
207
+ function EmptyTitle2({ className, ...props }) {
269
208
  return /* @__PURE__ */ jsx(
270
- AlertDialogPrimitive.Overlay,
209
+ "div",
271
210
  {
272
- "data-slot": "alert-dialog-overlay",
273
- className: cn(
274
- "fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
275
- className
276
- ),
211
+ "data-slot": "empty-title",
212
+ className: cn("text-lg font-medium tracking-tight", className),
277
213
  ...props
278
214
  }
279
215
  );
280
216
  }
281
- function AlertDialogContent({
282
- className,
283
- size = "default",
284
- ...props
285
- }) {
286
- return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [
287
- /* @__PURE__ */ jsx(AlertDialogOverlay, {}),
288
- /* @__PURE__ */ jsx(
289
- AlertDialogPrimitive.Content,
290
- {
291
- "data-slot": "alert-dialog-content",
292
- "data-size": size,
293
- className: cn(
294
- "group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg",
295
- className
296
- ),
297
- ...props
298
- }
299
- )
300
- ] });
301
- }
302
- function AlertDialogHeader({
303
- className,
304
- ...props
305
- }) {
217
+ function EmptyDescription2({ className, ...props }) {
306
218
  return /* @__PURE__ */ jsx(
307
219
  "div",
308
220
  {
309
- "data-slot": "alert-dialog-header",
221
+ "data-slot": "empty-description",
310
222
  className: cn(
311
- "flex flex-col gap-1.5 text-center sm:text-left",
223
+ "text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
312
224
  className
313
225
  ),
314
226
  ...props
315
227
  }
316
228
  );
317
229
  }
318
- function AlertDialogFooter({
319
- className,
320
- ...props
321
- }) {
230
+ function EmptyContent2({ className, ...props }) {
322
231
  return /* @__PURE__ */ jsx(
323
232
  "div",
324
233
  {
325
- "data-slot": "alert-dialog-footer",
234
+ "data-slot": "empty-content",
326
235
  className: cn(
327
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
236
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
328
237
  className
329
238
  ),
330
239
  ...props
331
240
  }
332
241
  );
333
242
  }
334
- function AlertDialogTitle({
335
- className,
336
- ...props
337
- }) {
338
- return /* @__PURE__ */ jsx(
339
- AlertDialogPrimitive.Title,
340
- {
341
- "data-slot": "alert-dialog-title",
342
- className: cn("text-lg font-semibold", className),
343
- ...props
344
- }
345
- );
346
- }
347
- function AlertDialogDescription({
348
- className,
349
- ...props
350
- }) {
351
- return /* @__PURE__ */ jsx(
352
- AlertDialogPrimitive.Description,
353
- {
354
- "data-slot": "alert-dialog-description",
355
- className: cn("text-sm text-muted-foreground", className),
356
- ...props
357
- }
358
- );
359
- }
360
- function AlertDialogAction({
361
- className,
362
- variant = "default",
363
- size = "default",
364
- ...props
365
- }) {
366
- return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
367
- AlertDialogPrimitive.Action,
368
- {
369
- "data-slot": "alert-dialog-action",
370
- className: cn(className),
371
- ...props
372
- }
373
- ) });
374
- }
375
- function AlertDialogCancel({
376
- className,
377
- variant = "outline",
378
- size = "default",
379
- ...props
380
- }) {
381
- return /* @__PURE__ */ jsx(Button, { variant, size, asChild: true, children: /* @__PURE__ */ jsx(
382
- AlertDialogPrimitive.Cancel,
383
- {
384
- "data-slot": "alert-dialog-cancel",
385
- className: cn(className),
386
- ...props
387
- }
388
- ) });
389
- }
390
243
  function ConfirmDestructiveDialog({
391
244
  open,
392
245
  onOpenChange,
@@ -417,65 +270,6 @@ function ConfirmDestructiveDialog({
417
270
  ] })
418
271
  ] }) });
419
272
  }
420
- var miniMenuContentClassName = "max-h-none overflow-x-visible overflow-y-visible";
421
- var miniMenuContentDefaults = {
422
- sideOffset: 8,
423
- collisionPadding: 12
424
- };
425
- function DropdownMenu({
426
- ...props
427
- }) {
428
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
429
- }
430
- function DropdownMenuTrigger({
431
- ...props
432
- }) {
433
- return /* @__PURE__ */ jsx(
434
- DropdownMenuPrimitive.Trigger,
435
- {
436
- "data-slot": "dropdown-menu-trigger",
437
- ...props
438
- }
439
- );
440
- }
441
- function DropdownMenuContent({
442
- className,
443
- sideOffset = 4,
444
- ...props
445
- }) {
446
- return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
447
- DropdownMenuPrimitive.Content,
448
- {
449
- "data-slot": "dropdown-menu-content",
450
- sideOffset,
451
- className: cn(
452
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[200] max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
453
- className
454
- ),
455
- ...props
456
- }
457
- ) });
458
- }
459
- function DropdownMenuItem({
460
- className,
461
- inset,
462
- variant = "default",
463
- ...props
464
- }) {
465
- return /* @__PURE__ */ jsx(
466
- DropdownMenuPrimitive.Item,
467
- {
468
- "data-slot": "dropdown-menu-item",
469
- "data-inset": inset,
470
- "data-variant": variant,
471
- className: cn(
472
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[highlighted]:[&_svg:not([class*='text-'])]:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:[&_svg:not([class*='text-'])]:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 dark:data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:data-[highlighted]:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
473
- className
474
- ),
475
- ...props
476
- }
477
- );
478
- }
479
273
  var DEFAULT_NOTIFICATION_BELL_LABELS = {
480
274
  title: "Notifications",
481
275
  empty: "You're all caught up.",
@@ -532,63 +326,76 @@ function NotificationBell({
532
326
  className
533
327
  }) {
534
328
  const labels = { ...DEFAULT_NOTIFICATION_BELL_LABELS, ...labelOverrides };
535
- return /* @__PURE__ */ jsxs(DropdownMenu, { modal: false, onOpenChange, children: [
536
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
537
- Button,
538
- {
539
- type: "button",
540
- variant: "ghost",
541
- size: "icon",
542
- className: cn("relative size-9", className),
543
- "aria-label": labels.title,
544
- children: [
545
- /* @__PURE__ */ jsx(Bell, { className: "size-4" }),
546
- unreadCount > 0 ? /* @__PURE__ */ jsx("span", { className: "bg-destructive text-destructive-foreground absolute -top-0.5 -right-0.5 flex size-4 items-center justify-center rounded-full text-[10px] leading-none font-medium tabular-nums", children: formatUnreadBadge(unreadCount) }) : null
547
- ]
548
- }
549
- ) }),
550
- /* @__PURE__ */ jsxs(DropdownMenuContent, { align, className: "w-80 p-0", children: [
551
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between border-b px-4 py-3", children: /* @__PURE__ */ jsx("h4", { className: "font-semibold", children: labels.title }) }),
552
- /* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx(NotificationListSkeleton, {}) : items.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground px-4 py-8 text-center text-sm", children: labels.empty }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: items.map((item, index) => {
553
- const body = /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1", children: [
554
- /* @__PURE__ */ jsx("p", { className: "text-sm leading-none font-medium", children: item.title }),
555
- /* @__PURE__ */ jsx("p", { className: "text-muted-foreground line-clamp-2 text-xs", children: item.message }),
556
- /* @__PURE__ */ jsx("p", { className: "text-muted-foreground/70 text-xs", children: formatTime(item.createdAt) })
557
- ] });
558
- return /* @__PURE__ */ jsxs("div", { children: [
559
- item.href ? /* @__PURE__ */ jsx(
560
- "a",
561
- {
562
- href: item.href,
563
- className: cn(
564
- "hover:bg-muted/50 flex gap-3 px-4 py-3 motion-safe:transition-colors",
565
- !item.read && "bg-muted/30"
329
+ return /* @__PURE__ */ jsxs(
330
+ DropdownMenu,
331
+ {
332
+ onOpenChange: (open) => {
333
+ onOpenChange?.(open);
334
+ },
335
+ children: [
336
+ /* @__PURE__ */ jsxs(
337
+ DropdownMenuTrigger,
338
+ {
339
+ render: /* @__PURE__ */ jsx(
340
+ Button,
341
+ {
342
+ type: "button",
343
+ variant: "ghost",
344
+ size: "icon",
345
+ className: cn("relative size-9", className),
346
+ "aria-label": labels.title
347
+ }
348
+ ),
349
+ children: [
350
+ /* @__PURE__ */ jsx(Bell, { className: "size-4" }),
351
+ unreadCount > 0 ? /* @__PURE__ */ jsx("span", { className: "bg-destructive text-destructive-foreground absolute -top-0.5 -right-0.5 flex size-4 items-center justify-center rounded-full text-[10px] leading-none font-medium tabular-nums", children: formatUnreadBadge(unreadCount) }) : null
352
+ ]
353
+ }
354
+ ),
355
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { align, className: "w-80 p-0", children: [
356
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between border-b px-4 py-3", children: /* @__PURE__ */ jsx("h4", { className: "font-semibold", children: labels.title }) }),
357
+ /* @__PURE__ */ jsx("div", { className: "max-h-80 overflow-y-auto", children: isLoading ? /* @__PURE__ */ jsx(NotificationListSkeleton, {}) : items.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground px-4 py-8 text-center text-sm", children: labels.empty }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col", children: items.map((item, index) => {
358
+ const body = /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1", children: [
359
+ /* @__PURE__ */ jsx("p", { className: "text-sm leading-none font-medium", children: item.title }),
360
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground line-clamp-2 text-xs", children: item.message }),
361
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground/70 text-xs", children: formatTime(item.createdAt) })
362
+ ] });
363
+ return /* @__PURE__ */ jsxs("div", { children: [
364
+ item.href ? /* @__PURE__ */ jsx(
365
+ "a",
366
+ {
367
+ href: item.href,
368
+ className: cn(
369
+ "hover:bg-muted/50 flex gap-3 px-4 py-3 motion-safe:transition-colors",
370
+ !item.read && "bg-muted/30"
371
+ ),
372
+ children: body
373
+ }
374
+ ) : /* @__PURE__ */ jsx(
375
+ "div",
376
+ {
377
+ className: cn(
378
+ "flex gap-3 px-4 py-3",
379
+ !item.read && "bg-muted/30"
380
+ ),
381
+ children: body
382
+ }
566
383
  ),
567
- children: body
568
- }
569
- ) : /* @__PURE__ */ jsx(
570
- "div",
384
+ index < items.length - 1 ? /* @__PURE__ */ jsx("div", { className: "bg-border h-px" }) : null
385
+ ] }, item.id);
386
+ }) }) }),
387
+ /* @__PURE__ */ jsx("div", { className: "border-t px-4 py-2", children: /* @__PURE__ */ jsx(
388
+ "a",
571
389
  {
572
- className: cn(
573
- "flex gap-3 px-4 py-3",
574
- !item.read && "bg-muted/30"
575
- ),
576
- children: body
390
+ href: viewAllHref,
391
+ className: "text-primary block text-center text-sm font-medium hover:underline",
392
+ children: labels.viewAll
577
393
  }
578
- ),
579
- index < items.length - 1 ? /* @__PURE__ */ jsx("div", { className: "bg-border h-px" }) : null
580
- ] }, item.id);
581
- }) }) }),
582
- /* @__PURE__ */ jsx("div", { className: "border-t px-4 py-2", children: /* @__PURE__ */ jsx(
583
- "a",
584
- {
585
- href: viewAllHref,
586
- className: "text-primary block text-center text-sm font-medium hover:underline",
587
- children: labels.viewAll
588
- }
589
- ) })
590
- ] })
591
- ] });
394
+ ) })
395
+ ] })
396
+ ]
397
+ }
398
+ );
592
399
  }
593
400
 
594
401
  // src/components/editable/types.ts
@@ -1039,23 +846,28 @@ function ThemeSwitcher({
1039
846
  }
1040
847
  const currentTheme = storedTheme(theme);
1041
848
  const TriggerIcon = currentTheme ? themeIcons[currentTheme] : Monitor;
1042
- return /* @__PURE__ */ jsxs(DropdownMenu, { modal: false, children: [
1043
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1044
- Button,
849
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
850
+ /* @__PURE__ */ jsx(
851
+ DropdownMenuTrigger,
1045
852
  {
1046
- "data-testid": "theme-switcher",
1047
- variant: "outline",
1048
- size: "icon",
1049
- "aria-label": labels.theme,
1050
- className: cn(
1051
- sizes.button,
1052
- shapeClass,
1053
- iconTriggerClassName,
1054
- className
853
+ render: /* @__PURE__ */ jsx(
854
+ Button,
855
+ {
856
+ "data-testid": "theme-switcher",
857
+ variant: "outline",
858
+ size: "icon",
859
+ "aria-label": labels.theme,
860
+ className: cn(
861
+ sizes.button,
862
+ shapeClass,
863
+ iconTriggerClassName,
864
+ className
865
+ )
866
+ }
1055
867
  ),
1056
868
  children: /* @__PURE__ */ jsx(TriggerIcon, { className: sizes.icon })
1057
869
  }
1058
- ) }),
870
+ ),
1059
871
  /* @__PURE__ */ jsx(
1060
872
  DropdownMenuContent,
1061
873
  {
@@ -1121,22 +933,27 @@ function LanguageSwitcher({
1121
933
  const sizes = sizeClasses2[size];
1122
934
  const shapeClass = shapeClasses2[shape];
1123
935
  const accessibleName = labels.language ?? "Language";
1124
- return /* @__PURE__ */ jsxs(DropdownMenu, { modal: false, children: [
1125
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1126
- Button,
936
+ return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
937
+ /* @__PURE__ */ jsx(
938
+ DropdownMenuTrigger,
1127
939
  {
1128
- variant: "outline",
1129
- size: "icon",
1130
- "aria-label": accessibleName,
1131
- className: cn(
1132
- sizes.button,
1133
- shapeClass,
1134
- iconTriggerClassName2,
1135
- className
940
+ render: /* @__PURE__ */ jsx(
941
+ Button,
942
+ {
943
+ variant: "outline",
944
+ size: "icon",
945
+ "aria-label": accessibleName,
946
+ className: cn(
947
+ sizes.button,
948
+ shapeClass,
949
+ iconTriggerClassName2,
950
+ className
951
+ )
952
+ }
1136
953
  ),
1137
954
  children: /* @__PURE__ */ jsx(Languages, { className: sizes.icon })
1138
955
  }
1139
- ) }),
956
+ ),
1140
957
  /* @__PURE__ */ jsx(
1141
958
  DropdownMenuContent,
1142
959
  {
@@ -1161,97 +978,6 @@ function LanguageSwitcher({
1161
978
  )
1162
979
  ] });
1163
980
  }
1164
- function Slider({
1165
- className,
1166
- defaultValue,
1167
- value,
1168
- min = 0,
1169
- max = 100,
1170
- ...props
1171
- }) {
1172
- const _values = React.useMemo(
1173
- () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
1174
- [value, defaultValue, min, max]
1175
- );
1176
- return /* @__PURE__ */ jsxs(
1177
- SliderPrimitive.Root,
1178
- {
1179
- "data-slot": "slider",
1180
- defaultValue,
1181
- value,
1182
- min,
1183
- max,
1184
- className: cn(
1185
- "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
1186
- className
1187
- ),
1188
- ...props,
1189
- children: [
1190
- /* @__PURE__ */ jsx(
1191
- SliderPrimitive.Track,
1192
- {
1193
- "data-slot": "slider-track",
1194
- className: cn(
1195
- "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
1196
- ),
1197
- children: /* @__PURE__ */ jsx(
1198
- SliderPrimitive.Range,
1199
- {
1200
- "data-slot": "slider-range",
1201
- className: cn(
1202
- "bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
1203
- )
1204
- }
1205
- )
1206
- }
1207
- ),
1208
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
1209
- SliderPrimitive.Thumb,
1210
- {
1211
- "data-slot": "slider-thumb",
1212
- className: "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
1213
- },
1214
- index
1215
- ))
1216
- ]
1217
- }
1218
- );
1219
- }
1220
- var toggleVariants = cva(
1221
- "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
1222
- {
1223
- variants: {
1224
- variant: {
1225
- default: "bg-transparent",
1226
- outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
1227
- },
1228
- size: {
1229
- default: "h-9 px-2 min-w-9",
1230
- sm: "h-8 px-1.5 min-w-8",
1231
- lg: "h-10 px-2.5 min-w-10"
1232
- }
1233
- },
1234
- defaultVariants: {
1235
- variant: "default",
1236
- size: "default"
1237
- }
1238
- }
1239
- );
1240
- function Toggle({
1241
- className,
1242
- variant,
1243
- size,
1244
- ...props
1245
- }) {
1246
- return /* @__PURE__ */ jsx(
1247
- TogglePrimitive.Root,
1248
- {
1249
- "data-slot": "toggle",
1250
- className: cn(toggleVariants({ variant, size, className })),
1251
- ...props
1252
- }
1253
- );
1254
- }
1255
981
  var DEFAULT_LABELS = {
1256
982
  uploadAria: "Upload image",
1257
983
  uploadHint: "Click to upload",
@@ -1784,203 +1510,6 @@ function AvatarEditor({
1784
1510
  }
1785
1511
  );
1786
1512
  }
1787
- function Dialog({
1788
- ...props
1789
- }) {
1790
- return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
1791
- }
1792
- function DialogPortal({
1793
- ...props
1794
- }) {
1795
- return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
1796
- }
1797
- function DialogClose({
1798
- ...props
1799
- }) {
1800
- return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
1801
- }
1802
- function DialogOverlay({
1803
- className,
1804
- ...props
1805
- }) {
1806
- return /* @__PURE__ */ jsx(
1807
- DialogPrimitive.Overlay,
1808
- {
1809
- "data-slot": "dialog-overlay",
1810
- className: cn(
1811
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1812
- className
1813
- ),
1814
- ...props
1815
- }
1816
- );
1817
- }
1818
- function DialogContent({
1819
- className,
1820
- children,
1821
- showCloseButton = true,
1822
- ...props
1823
- }) {
1824
- return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
1825
- /* @__PURE__ */ jsx(DialogOverlay, {}),
1826
- /* @__PURE__ */ jsxs(
1827
- DialogPrimitive.Content,
1828
- {
1829
- "data-slot": "dialog-content",
1830
- className: cn(
1831
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
1832
- className
1833
- ),
1834
- ...props,
1835
- children: [
1836
- children,
1837
- showCloseButton && /* @__PURE__ */ jsxs(
1838
- DialogPrimitive.Close,
1839
- {
1840
- "data-slot": "dialog-close",
1841
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1842
- children: [
1843
- /* @__PURE__ */ jsx(XIcon, {}),
1844
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
1845
- ]
1846
- }
1847
- )
1848
- ]
1849
- }
1850
- )
1851
- ] });
1852
- }
1853
- function DialogHeader({ className, ...props }) {
1854
- return /* @__PURE__ */ jsx(
1855
- "div",
1856
- {
1857
- "data-slot": "dialog-header",
1858
- className: cn("flex flex-col gap-2 text-center sm:text-left", className),
1859
- ...props
1860
- }
1861
- );
1862
- }
1863
- function DialogFooter({ className, ...props }) {
1864
- return /* @__PURE__ */ jsx(
1865
- "div",
1866
- {
1867
- "data-slot": "dialog-footer",
1868
- className: cn(
1869
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
1870
- className
1871
- ),
1872
- ...props
1873
- }
1874
- );
1875
- }
1876
- function DialogTitle({
1877
- className,
1878
- ...props
1879
- }) {
1880
- return /* @__PURE__ */ jsx(
1881
- DialogPrimitive.Title,
1882
- {
1883
- "data-slot": "dialog-title",
1884
- className: cn("text-lg leading-none font-semibold", className),
1885
- ...props
1886
- }
1887
- );
1888
- }
1889
- function Drawer({
1890
- ...props
1891
- }) {
1892
- return /* @__PURE__ */ jsx(Drawer$1.Root, { "data-slot": "drawer", ...props });
1893
- }
1894
- function DrawerPortal({
1895
- ...props
1896
- }) {
1897
- return /* @__PURE__ */ jsx(Drawer$1.Portal, { "data-slot": "drawer-portal", ...props });
1898
- }
1899
- function DrawerClose({
1900
- ...props
1901
- }) {
1902
- return /* @__PURE__ */ jsx(Drawer$1.Close, { "data-slot": "drawer-close", ...props });
1903
- }
1904
- function DrawerOverlay({
1905
- className,
1906
- ...props
1907
- }) {
1908
- return /* @__PURE__ */ jsx(
1909
- Drawer$1.Overlay,
1910
- {
1911
- "data-slot": "drawer-overlay",
1912
- className: cn(
1913
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1914
- className
1915
- ),
1916
- ...props
1917
- }
1918
- );
1919
- }
1920
- function DrawerContent({
1921
- className,
1922
- children,
1923
- ...props
1924
- }) {
1925
- return /* @__PURE__ */ jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [
1926
- /* @__PURE__ */ jsx(DrawerOverlay, {}),
1927
- /* @__PURE__ */ jsxs(
1928
- Drawer$1.Content,
1929
- {
1930
- "data-slot": "drawer-content",
1931
- className: cn(
1932
- "group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
1933
- "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
1934
- "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
1935
- "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
1936
- "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
1937
- className
1938
- ),
1939
- ...props,
1940
- children: [
1941
- /* @__PURE__ */ jsx("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
1942
- children
1943
- ]
1944
- }
1945
- )
1946
- ] });
1947
- }
1948
- function DrawerHeader({ className, ...props }) {
1949
- return /* @__PURE__ */ jsx(
1950
- "div",
1951
- {
1952
- "data-slot": "drawer-header",
1953
- className: cn(
1954
- "flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left",
1955
- className
1956
- ),
1957
- ...props
1958
- }
1959
- );
1960
- }
1961
- function DrawerFooter({ className, ...props }) {
1962
- return /* @__PURE__ */ jsx(
1963
- "div",
1964
- {
1965
- "data-slot": "drawer-footer",
1966
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
1967
- ...props
1968
- }
1969
- );
1970
- }
1971
- function DrawerTitle({
1972
- className,
1973
- ...props
1974
- }) {
1975
- return /* @__PURE__ */ jsx(
1976
- Drawer$1.Title,
1977
- {
1978
- "data-slot": "drawer-title",
1979
- className: cn("text-foreground font-semibold", className),
1980
- ...props
1981
- }
1982
- );
1983
- }
1984
1513
  function useMediaQuery(query) {
1985
1514
  const [matches, setMatches] = useState(false);
1986
1515
  useEffect(() => {
@@ -2561,50 +2090,47 @@ function FileUploadMenu({
2561
2090
  const activeCount = visible.filter(
2562
2091
  (job) => isActiveStatus(job.status)
2563
2092
  ).length;
2564
- return /* @__PURE__ */ jsxs(
2565
- DropdownMenu,
2566
- {
2567
- modal: false,
2568
- open: resolvedOpen,
2569
- onOpenChange: setResolvedOpen,
2570
- children: [
2571
- /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
2093
+ return /* @__PURE__ */ jsxs(DropdownMenu, { open: resolvedOpen, onOpenChange: setResolvedOpen, children: [
2094
+ /* @__PURE__ */ jsxs(
2095
+ DropdownMenuTrigger,
2096
+ {
2097
+ render: /* @__PURE__ */ jsx(
2572
2098
  Button,
2573
2099
  {
2574
2100
  type: "button",
2575
2101
  variant: "ghost",
2576
2102
  size: "icon",
2577
2103
  className: cn("relative size-9", className),
2578
- "aria-label": labels.title,
2579
- children: [
2580
- /* @__PURE__ */ jsx(Upload, { className: "size-4" }),
2581
- activeCount > 0 ? /* @__PURE__ */ jsx("span", { className: "bg-destructive text-destructive-foreground absolute -top-0.5 -right-0.5 flex size-4 items-center justify-center rounded-full text-[10px] leading-none font-medium tabular-nums", children: formatActiveBadge(activeCount) }) : null
2582
- ]
2583
- }
2584
- ) }),
2585
- /* @__PURE__ */ jsxs(
2586
- DropdownMenuContent,
2587
- {
2588
- align,
2589
- className: "w-80 min-w-0 max-w-[calc(100vw-2rem)] overflow-x-hidden p-0",
2590
- children: [
2591
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between border-b px-4 py-3", children: /* @__PURE__ */ jsx("h4", { className: "font-semibold", children: labels.title }) }),
2592
- /* @__PURE__ */ jsx("div", { className: "max-h-80 min-w-0 overflow-x-hidden overflow-y-auto p-3", children: /* @__PURE__ */ jsx(
2593
- FileUploadTray,
2594
- {
2595
- jobs: visible,
2596
- labels,
2597
- onPause,
2598
- onResume,
2599
- onCancel
2600
- }
2601
- ) })
2602
- ]
2104
+ "aria-label": labels.title
2603
2105
  }
2604
- )
2605
- ]
2606
- }
2607
- );
2106
+ ),
2107
+ children: [
2108
+ /* @__PURE__ */ jsx(Upload, { className: "size-4" }),
2109
+ activeCount > 0 ? /* @__PURE__ */ jsx("span", { className: "bg-destructive text-destructive-foreground absolute -top-0.5 -right-0.5 flex size-4 items-center justify-center rounded-full text-[10px] leading-none font-medium tabular-nums", children: formatActiveBadge(activeCount) }) : null
2110
+ ]
2111
+ }
2112
+ ),
2113
+ /* @__PURE__ */ jsxs(
2114
+ DropdownMenuContent,
2115
+ {
2116
+ align,
2117
+ className: "w-80 min-w-0 max-w-[calc(100vw-2rem)] overflow-x-hidden p-0",
2118
+ children: [
2119
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between border-b px-4 py-3", children: /* @__PURE__ */ jsx("h4", { className: "font-semibold", children: labels.title }) }),
2120
+ /* @__PURE__ */ jsx("div", { className: "max-h-80 min-w-0 overflow-x-hidden overflow-y-auto p-3", children: /* @__PURE__ */ jsx(
2121
+ FileUploadTray,
2122
+ {
2123
+ jobs: visible,
2124
+ labels,
2125
+ onPause,
2126
+ onResume,
2127
+ onCancel
2128
+ }
2129
+ ) })
2130
+ ]
2131
+ }
2132
+ )
2133
+ ] });
2608
2134
  }
2609
2135
 
2610
2136
  // src/components/upload/createMultipartUploadController.ts
@@ -3942,6 +3468,6 @@ function MatchReview({
3942
3468
  );
3943
3469
  }
3944
3470
 
3945
- export { AuditTimeline, AvatarEditor, AvatarEditorDialog, COOKIE_CONSENT_MAX_AGE, COOKIE_CONSENT_NAME, COOKIE_CONSENT_VALUES, ConfirmDestructiveDialog, CookieConsentBanner, CostBreakdownCard, DEFAULT_AUDIT_TIMELINE_LABELS, DEFAULT_COOKIE_CONSENT_BANNER_LABELS, DEFAULT_EDITABLE_SECTION_LABELS, DEFAULT_ENTITY_GRAPH_LABELS, DEFAULT_FILE_DROPZONE_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILE_UPLOAD_TRAY_LABELS, DEFAULT_LEGAL_ACCEPT_CHECKBOX_LABELS, DEFAULT_LEGAL_ACCEPT_DIALOG_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_NOTIFICATION_BELL_LABELS, DEFAULT_RISK_BADGE_LABELS, DataList, DataListItem, DimensionBreakdownTable, EditableSection, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyState, EmptyTitle, EntityGraph, ErrorState, FieldMessage, FileDropzone, FileUploadMenu, FileUploadTray, LanguageContext, LanguageSwitcher, LegalAcceptCheckbox, LegalAcceptDialog, LegalMarkdown, LoadingState, MatchReview, MetricChartCard, MetricEmptyState, MetricSkeleton, NotificationBell, RiskBadge, SafeImage, SparklineStat, StatHighlightCard, THEME_INIT_SCRIPT, THEME_INIT_SCRIPT_ID, THEME_STORAGE_KEY, TIME_RANGE_OPTIONS, ThemeSwitcher, TimeRangePicker, avatarFallbackStyle, cn, cookieConsentAllowsReplay, cookieDomainFromHostname, createMultipartUploadController, defaultLanguages, fileMatchesAccept, getAvatarColors, getInitials, isCookieConsentValue, isEmbeddedWindow, matchClaimIsUnverified, parseCookieConsent, partRanges, progressFromBytes, readCookieConsent, serializeCookieConsent, sourceUrlIsHttps, useEditableSection, useLanguageContext, useMediaQuery2 as useMediaQuery, writeCookieConsent };
3471
+ export { AuditTimeline, AvatarEditor, AvatarEditorDialog, COOKIE_CONSENT_MAX_AGE, COOKIE_CONSENT_NAME, COOKIE_CONSENT_VALUES, ConfirmDestructiveDialog, CookieConsentBanner, CostBreakdownCard, DEFAULT_AUDIT_TIMELINE_LABELS, DEFAULT_COOKIE_CONSENT_BANNER_LABELS, DEFAULT_EDITABLE_SECTION_LABELS, DEFAULT_ENTITY_GRAPH_LABELS, DEFAULT_FILE_DROPZONE_LABELS, DEFAULT_FILE_UPLOAD_LABELS, DEFAULT_FILE_UPLOAD_TRAY_LABELS, DEFAULT_LEGAL_ACCEPT_CHECKBOX_LABELS, DEFAULT_LEGAL_ACCEPT_DIALOG_LABELS, DEFAULT_MATCH_REVIEW_LABELS, DEFAULT_NOTIFICATION_BELL_LABELS, DEFAULT_RISK_BADGE_LABELS, DataList, DataListItem, DimensionBreakdownTable, EditableSection, Empty2 as Empty, EmptyContent2 as EmptyContent, EmptyDescription2 as EmptyDescription, EmptyHeader2 as EmptyHeader, EmptyMedia2 as EmptyMedia, EmptyState, EmptyTitle2 as EmptyTitle, EntityGraph, ErrorState, Field, FieldMessage, FileDropzone, FileUploadMenu, FileUploadTray, LanguageContext, LanguageSwitcher, LegalAcceptCheckbox, LegalAcceptDialog, LegalMarkdown, ListSkeleton, LoadingState, MatchReview, MetricChartCard, MetricEmptyState, MetricSkeleton, NotificationBell, PageTitle, RiskBadge, SafeImage, SparklineStat, StatHighlightCard, THEME_INIT_SCRIPT, THEME_INIT_SCRIPT_ID, THEME_STORAGE_KEY, TIME_RANGE_OPTIONS, TableSkeleton, ThemeSwitcher, TimeRangePicker, avatarFallbackStyle, cn, cookieConsentAllowsReplay, cookieDomainFromHostname, createMultipartUploadController, defaultLanguages, fileMatchesAccept, getAvatarColors, getInitials, isCookieConsentValue, isEmbeddedWindow, matchClaimIsUnverified, parseCookieConsent, partRanges, progressFromBytes, readCookieConsent, serializeCookieConsent, sourceUrlIsHttps, useEditableSection, useLanguageContext, useMediaQuery2 as useMediaQuery, writeCookieConsent };
3946
3472
  //# sourceMappingURL=index.js.map
3947
3473
  //# sourceMappingURL=index.js.map