@adea-ai/ui 0.12.0 → 0.13.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.
Files changed (91) hide show
  1. package/LICENSE +201 -0
  2. package/dist/components/account-drawer.d.ts +1 -1
  3. package/dist/components/account-drawer.js +12 -12
  4. package/dist/components/on-screen-controls.js +12 -12
  5. package/dist/components/scene-settings.d.ts +3 -3
  6. package/dist/components/scene-settings.js +11 -11
  7. package/dist/components/theme-provider.d.ts +1 -1
  8. package/dist/components/theme-provider.js +2 -2
  9. package/dist/components/theme-toggle.js +8 -8
  10. package/dist/components/ui/badge.d.ts +3 -3
  11. package/dist/components/ui/badge.js +15 -15
  12. package/dist/components/ui/button.d.ts +2 -2
  13. package/dist/components/ui/button.js +19 -19
  14. package/dist/components/ui/card.d.ts +1 -1
  15. package/dist/components/ui/card.js +3 -3
  16. package/dist/components/ui/dialog.d.ts +4 -4
  17. package/dist/components/ui/dialog.js +10 -10
  18. package/dist/components/ui/drawer.d.ts +5 -5
  19. package/dist/components/ui/drawer.js +26 -26
  20. package/dist/components/ui/dropdown-menu.d.ts +5 -5
  21. package/dist/components/ui/dropdown-menu.js +12 -12
  22. package/dist/components/ui/empty.d.ts +7 -7
  23. package/dist/components/ui/empty.js +11 -11
  24. package/dist/components/ui/field.d.ts +12 -12
  25. package/dist/components/ui/field.js +22 -22
  26. package/dist/components/ui/input.d.ts +2 -2
  27. package/dist/components/ui/input.js +3 -3
  28. package/dist/components/ui/label.d.ts +2 -2
  29. package/dist/components/ui/label.js +3 -3
  30. package/dist/components/ui/radio-group.d.ts +2 -2
  31. package/dist/components/ui/radio-group.js +6 -6
  32. package/dist/components/ui/separator.d.ts +1 -1
  33. package/dist/components/ui/separator.js +5 -5
  34. package/dist/components/ui/skeleton.d.ts +1 -1
  35. package/dist/components/ui/skeleton.js +2 -2
  36. package/dist/components/ui/spinner.d.ts +2 -2
  37. package/dist/components/ui/spinner.js +3 -3
  38. package/dist/components/ui/switch.d.ts +2 -2
  39. package/dist/components/ui/switch.js +5 -5
  40. package/dist/components/ui/tabs.d.ts +2 -2
  41. package/dist/components/ui/tabs.js +13 -13
  42. package/dist/components/ui/toggle-group.d.ts +6 -6
  43. package/dist/components/ui/toggle-group.js +13 -13
  44. package/dist/components/ui/toggle.d.ts +2 -2
  45. package/dist/components/ui/toggle.js +11 -11
  46. package/dist/components/ui/tooltip.d.ts +3 -3
  47. package/dist/components/ui/tooltip.js +5 -5
  48. package/dist/components/version-dialog.d.ts +1 -1
  49. package/dist/components/version-dialog.js +33 -33
  50. package/dist/components/workspace-brand.js +1 -1
  51. package/dist/components/workspace-logo.d.ts +1 -1
  52. package/dist/index.d.ts +19 -19
  53. package/dist/index.js +19 -19
  54. package/dist/lib/utils.d.ts +1 -1
  55. package/dist/lib/utils.js +2 -2
  56. package/dist/lib/version-notes.js +18 -18
  57. package/package.json +24 -9
  58. package/src/components/account-drawer.tsx +27 -27
  59. package/src/components/on-screen-controls.tsx +45 -45
  60. package/src/components/scene-settings.tsx +55 -55
  61. package/src/components/theme-provider.tsx +7 -7
  62. package/src/components/theme-toggle.tsx +20 -20
  63. package/src/components/ui/badge.tsx +20 -20
  64. package/src/components/ui/button.tsx +24 -24
  65. package/src/components/ui/card.tsx +6 -6
  66. package/src/components/ui/dialog.tsx +24 -24
  67. package/src/components/ui/drawer.tsx +55 -55
  68. package/src/components/ui/dropdown-menu.tsx +39 -39
  69. package/src/components/ui/empty.tsx +25 -25
  70. package/src/components/ui/field.tsx +55 -55
  71. package/src/components/ui/input.tsx +7 -7
  72. package/src/components/ui/label.tsx +7 -7
  73. package/src/components/ui/radio-group.tsx +9 -9
  74. package/src/components/ui/separator.tsx +7 -7
  75. package/src/components/ui/skeleton.tsx +5 -5
  76. package/src/components/ui/spinner.tsx +6 -6
  77. package/src/components/ui/switch.tsx +8 -8
  78. package/src/components/ui/tabs.tsx +21 -21
  79. package/src/components/ui/toggle-group.tsx +25 -25
  80. package/src/components/ui/toggle.tsx +15 -15
  81. package/src/components/ui/tooltip.tsx +13 -13
  82. package/src/components/version-dialog.tsx +113 -113
  83. package/src/components/workspace-brand.tsx +4 -4
  84. package/src/components/workspace-logo.tsx +2 -2
  85. package/src/index.tsx +19 -19
  86. package/src/lib/utils.ts +3 -3
  87. package/src/lib/version-notes.ts +23 -23
  88. package/src/styles/conventional-workspace.css +26 -26
  89. package/src/styles/globals.css +2 -2
  90. package/src/styles/theme.css +1 -1
  91. package/src/styles/workspace-shell.css +2 -2
@@ -1,32 +1,32 @@
1
- "use client";
1
+ 'use client'
2
2
 
3
- import { useSyncExternalStore } from "react";
4
- import { Monitor, Moon, Sun } from "lucide-react";
5
- import { useTheme } from "next-themes";
6
- import { Button } from "#components/ui/button";
7
- import { cn } from "#lib/utils";
3
+ import { useSyncExternalStore } from 'react'
4
+ import { Monitor, Moon, Sun } from 'lucide-react'
5
+ import { useTheme } from 'next-themes'
6
+ import { Button } from '#components/ui/button'
7
+ import { cn } from '#lib/utils'
8
8
 
9
9
  /**
10
10
  * Compact sun/moon theme selector. Wired to the next-themes provider so the
11
11
  * choice persists across the app (localStorage) and applies to every scene.
12
12
  */
13
13
  export function ThemeToggle({ className }: { className?: string }) {
14
- const { theme, setTheme } = useTheme();
14
+ const { theme, setTheme } = useTheme()
15
15
  const mounted = useSyncExternalStore(
16
16
  () => () => undefined,
17
17
  () => true,
18
18
  () => false
19
- );
19
+ )
20
20
 
21
21
  // next-themes resolves the saved/system theme after mount. Use the stable
22
22
  // light presentation for both SSR and the first client render so the
23
23
  // aria/class attributes cannot mismatch during hydration.
24
- const selectedTheme = mounted ? theme : "system";
24
+ const selectedTheme = mounted ? theme : 'system'
25
25
 
26
26
  return (
27
27
  <div
28
28
  className={cn(
29
- "inline-flex items-center gap-1.5 rounded-full border border-input bg-background p-1.5",
29
+ 'inline-flex items-center gap-1.5 rounded-full border border-input bg-background p-1.5',
30
30
  className
31
31
  )}
32
32
  role="radiogroup"
@@ -35,11 +35,11 @@ export function ThemeToggle({ className }: { className?: string }) {
35
35
  <Button
36
36
  type="button"
37
37
  role="radio"
38
- aria-checked={selectedTheme === "system"}
38
+ aria-checked={selectedTheme === 'system'}
39
39
  aria-label="System theme"
40
- variant={selectedTheme === "system" ? "default" : "ghost"}
40
+ variant={selectedTheme === 'system' ? 'default' : 'ghost'}
41
41
  size="icon-sm"
42
- onClick={() => setTheme("system")}
42
+ onClick={() => setTheme('system')}
43
43
  className="rounded-full"
44
44
  >
45
45
  <Monitor className="size-4" aria-hidden="true" />
@@ -47,11 +47,11 @@ export function ThemeToggle({ className }: { className?: string }) {
47
47
  <Button
48
48
  type="button"
49
49
  role="radio"
50
- aria-checked={selectedTheme === "light"}
50
+ aria-checked={selectedTheme === 'light'}
51
51
  aria-label="Light theme"
52
- variant={selectedTheme === "light" ? "default" : "ghost"}
52
+ variant={selectedTheme === 'light' ? 'default' : 'ghost'}
53
53
  size="icon-sm"
54
- onClick={() => setTheme("light")}
54
+ onClick={() => setTheme('light')}
55
55
  className="rounded-full"
56
56
  >
57
57
  <Sun className="size-4" aria-hidden="true" />
@@ -59,15 +59,15 @@ export function ThemeToggle({ className }: { className?: string }) {
59
59
  <Button
60
60
  type="button"
61
61
  role="radio"
62
- aria-checked={selectedTheme === "dark"}
62
+ aria-checked={selectedTheme === 'dark'}
63
63
  aria-label="Dark theme"
64
- variant={selectedTheme === "dark" ? "default" : "ghost"}
64
+ variant={selectedTheme === 'dark' ? 'default' : 'ghost'}
65
65
  size="icon-sm"
66
- onClick={() => setTheme("dark")}
66
+ onClick={() => setTheme('dark')}
67
67
  className="rounded-full"
68
68
  >
69
69
  <Moon className="size-4" aria-hidden="true" />
70
70
  </Button>
71
71
  </div>
72
- );
72
+ )
73
73
  }
@@ -1,38 +1,38 @@
1
- import { mergeProps } from "@base-ui/react/merge-props";
2
- import { useRender } from "@base-ui/react/use-render";
3
- import { cva, type VariantProps } from "class-variance-authority";
1
+ import { mergeProps } from '@base-ui/react/merge-props'
2
+ import { useRender } from '@base-ui/react/use-render'
3
+ import { cva, type VariantProps } from 'class-variance-authority'
4
4
 
5
- import { cn } from "#lib/utils";
5
+ import { cn } from '#lib/utils'
6
6
 
7
7
  const badgeVariants = cva(
8
- "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
8
+ 'group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!',
9
9
  {
10
10
  variants: {
11
11
  variant: {
12
- default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
13
- secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
12
+ default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',
13
+ secondary: 'bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80',
14
14
  destructive:
15
- "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
16
- outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
17
- ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
18
- link: "text-primary underline-offset-4 hover:underline",
15
+ 'bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20',
16
+ outline: 'border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground',
17
+ ghost: 'hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50',
18
+ link: 'text-primary underline-offset-4 hover:underline',
19
19
  },
20
20
  },
21
21
  defaultVariants: {
22
- variant: "default",
22
+ variant: 'default',
23
23
  },
24
24
  }
25
- );
25
+ )
26
26
 
27
27
  function Badge({
28
28
  className,
29
- variant = "default",
29
+ variant = 'default',
30
30
  render,
31
31
  ...props
32
- }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>) {
32
+ }: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {
33
33
  return useRender({
34
- defaultTagName: "span",
35
- props: mergeProps<"span">(
34
+ defaultTagName: 'span',
35
+ props: mergeProps<'span'>(
36
36
  {
37
37
  className: cn(badgeVariants({ variant }), className),
38
38
  },
@@ -40,10 +40,10 @@ function Badge({
40
40
  ),
41
41
  render,
42
42
  state: {
43
- slot: "badge",
43
+ slot: 'badge',
44
44
  variant,
45
45
  },
46
- });
46
+ })
47
47
  }
48
48
 
49
- export { Badge, badgeVariants };
49
+ export { Badge, badgeVariants }
@@ -1,51 +1,51 @@
1
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
2
- import { cva, type VariantProps } from "class-variance-authority";
1
+ import { Button as ButtonPrimitive } from '@base-ui/react/button'
2
+ import { cva, type VariantProps } from 'class-variance-authority'
3
3
 
4
- import { cn } from "#lib/utils";
4
+ import { cn } from '#lib/utils'
5
5
 
6
6
  const buttonVariants = cva(
7
7
  "group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default: "bg-primary text-primary-foreground hover:bg-primary/80",
11
+ default: 'bg-primary text-primary-foreground hover:bg-primary/80',
12
12
  outline:
13
- "border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
13
+ 'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50',
14
14
  secondary:
15
- "bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
15
+ 'bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',
16
16
  ghost:
17
- "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
17
+ 'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',
18
18
  destructive:
19
- "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
19
+ 'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',
20
20
  success:
21
- "bg-[#1a7f37]/10 text-[#1a7f37] hover:bg-[#1a7f37]/20 focus-visible:border-[#1a7f37]/40 focus-visible:ring-[#1a7f37]/20 dark:bg-[#3fb950]/20 dark:text-[#7ee787] dark:hover:bg-[#3fb950]/30 dark:focus-visible:ring-[#3fb950]/40",
22
- link: "text-primary underline-offset-4 hover:underline",
21
+ 'bg-[#1a7f37]/10 text-[#1a7f37] hover:bg-[#1a7f37]/20 focus-visible:border-[#1a7f37]/40 focus-visible:ring-[#1a7f37]/20 dark:bg-[#3fb950]/20 dark:text-[#7ee787] dark:hover:bg-[#3fb950]/30 dark:focus-visible:ring-[#3fb950]/40',
22
+ link: 'text-primary underline-offset-4 hover:underline',
23
23
  },
24
24
  size: {
25
25
  default:
26
- "h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
26
+ 'h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
27
27
  xs: "h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
28
28
  sm: "h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
29
- lg: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
30
- icon: "size-8",
31
- "icon-xs":
29
+ lg: 'h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
30
+ icon: 'size-8',
31
+ 'icon-xs':
32
32
  "size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3",
33
- "icon-sm":
34
- "size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg",
35
- "icon-lg": "size-9",
33
+ 'icon-sm':
34
+ 'size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg',
35
+ 'icon-lg': 'size-9',
36
36
  },
37
37
  },
38
38
  defaultVariants: {
39
- variant: "default",
40
- size: "default",
39
+ variant: 'default',
40
+ size: 'default',
41
41
  },
42
42
  }
43
- );
43
+ )
44
44
 
45
45
  function Button({
46
46
  className,
47
- variant = "default",
48
- size = "default",
47
+ variant = 'default',
48
+ size = 'default',
49
49
  ...props
50
50
  }: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {
51
51
  return (
@@ -54,7 +54,7 @@ function Button({
54
54
  className={cn(buttonVariants({ variant, size, className }))}
55
55
  {...props}
56
56
  />
57
- );
57
+ )
58
58
  }
59
59
 
60
- export { Button, buttonVariants };
60
+ export { Button, buttonVariants }
@@ -1,18 +1,18 @@
1
- import type { HTMLAttributes } from "react";
2
- import { cn } from "#lib/utils";
1
+ import type { HTMLAttributes } from 'react'
2
+ import { cn } from '#lib/utils'
3
3
 
4
4
  function Card({ className, ...props }: HTMLAttributes<HTMLDivElement>) {
5
5
  return (
6
6
  <div
7
7
  data-slot="card"
8
- className={cn("rounded-xl border bg-card text-card-foreground shadow-sm", className)}
8
+ className={cn('rounded-xl border bg-card text-card-foreground shadow-sm', className)}
9
9
  {...props}
10
10
  />
11
- );
11
+ )
12
12
  }
13
13
 
14
14
  function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>) {
15
- return <div data-slot="card-content" className={cn("p-4", className)} {...props} />;
15
+ return <div data-slot="card-content" className={cn('p-4', className)} {...props} />
16
16
  }
17
17
 
18
- export { Card, CardContent };
18
+ export { Card, CardContent }
@@ -1,25 +1,25 @@
1
- "use client";
1
+ 'use client'
2
2
 
3
- import * as React from "react";
4
- import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
5
- import { X } from "lucide-react";
3
+ import * as React from 'react'
4
+ import { Dialog as DialogPrimitive } from '@base-ui/react/dialog'
5
+ import { X } from 'lucide-react'
6
6
 
7
- import { cn } from "#lib/utils";
7
+ import { cn } from '#lib/utils'
8
8
 
9
9
  function Dialog({ ...props }: DialogPrimitive.Root.Props) {
10
- return <DialogPrimitive.Root data-slot="dialog" {...props} />;
10
+ return <DialogPrimitive.Root data-slot="dialog" {...props} />
11
11
  }
12
12
 
13
13
  function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {
14
- return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />;
14
+ return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
15
15
  }
16
16
 
17
17
  function DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {
18
- return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />;
18
+ return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
19
19
  }
20
20
 
21
21
  function DialogClose({ ...props }: DialogPrimitive.Close.Props) {
22
- return <DialogPrimitive.Close data-slot="dialog-close" {...props} />;
22
+ return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
23
23
  }
24
24
 
25
25
  function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props) {
@@ -27,12 +27,12 @@ function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props)
27
27
  <DialogPrimitive.Backdrop
28
28
  data-slot="dialog-overlay"
29
29
  className={cn(
30
- "fixed inset-0 z-[120] bg-slate-950/55 backdrop-blur-[2px] transition-opacity duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0",
30
+ 'fixed inset-0 z-[120] bg-slate-950/55 backdrop-blur-[2px] transition-opacity duration-200 data-ending-style:opacity-0 data-starting-style:opacity-0',
31
31
  className
32
32
  )}
33
33
  {...props}
34
34
  />
35
- );
35
+ )
36
36
  }
37
37
 
38
38
  function DialogContent({
@@ -51,7 +51,7 @@ function DialogContent({
51
51
  <DialogPrimitive.Popup
52
52
  data-slot="dialog-content"
53
53
  className={cn(
54
- "relative grid max-h-[min(44rem,calc(100dvh-2rem))] w-full max-w-2xl gap-0 overflow-hidden rounded-2xl border bg-card text-card-foreground shadow-2xl outline-none transition-[opacity,transform] duration-200 data-ending-style:scale-[0.98] data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-starting-style:opacity-0",
54
+ 'relative grid max-h-[min(44rem,calc(100dvh-2rem))] w-full max-w-2xl gap-0 overflow-hidden rounded-2xl border bg-card text-card-foreground shadow-2xl outline-none transition-[opacity,transform] duration-200 data-ending-style:scale-[0.98] data-ending-style:opacity-0 data-starting-style:scale-[0.98] data-starting-style:opacity-0',
55
55
  className
56
56
  )}
57
57
  {...props}
@@ -69,50 +69,50 @@ function DialogContent({
69
69
  </DialogPrimitive.Popup>
70
70
  </DialogPrimitive.Viewport>
71
71
  </DialogPortal>
72
- );
72
+ )
73
73
  }
74
74
 
75
- function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
75
+ function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
76
76
  return (
77
77
  <div
78
78
  data-slot="dialog-header"
79
- className={cn("flex flex-col gap-1.5 border-b px-6 py-5 pr-14", className)}
79
+ className={cn('flex flex-col gap-1.5 border-b px-6 py-5 pr-14', className)}
80
80
  {...props}
81
81
  />
82
- );
82
+ )
83
83
  }
84
84
 
85
- function DialogFooter({ className, ...props }: React.ComponentProps<"div">) {
85
+ function DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {
86
86
  return (
87
87
  <div
88
88
  data-slot="dialog-footer"
89
89
  className={cn(
90
- "flex flex-col-reverse gap-2 border-t px-6 py-4 sm:flex-row sm:justify-end",
90
+ 'flex flex-col-reverse gap-2 border-t px-6 py-4 sm:flex-row sm:justify-end',
91
91
  className
92
92
  )}
93
93
  {...props}
94
94
  />
95
- );
95
+ )
96
96
  }
97
97
 
98
98
  function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {
99
99
  return (
100
100
  <DialogPrimitive.Title
101
101
  data-slot="dialog-title"
102
- className={cn("text-base font-semibold tracking-tight", className)}
102
+ className={cn('text-base font-semibold tracking-tight', className)}
103
103
  {...props}
104
104
  />
105
- );
105
+ )
106
106
  }
107
107
 
108
108
  function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props) {
109
109
  return (
110
110
  <DialogPrimitive.Description
111
111
  data-slot="dialog-description"
112
- className={cn("text-sm leading-5 text-muted-foreground", className)}
112
+ className={cn('text-sm leading-5 text-muted-foreground', className)}
113
113
  {...props}
114
114
  />
115
- );
115
+ )
116
116
  }
117
117
 
118
118
  export {
@@ -126,4 +126,4 @@ export {
126
126
  DialogPortal,
127
127
  DialogTitle,
128
128
  DialogTrigger,
129
- };
129
+ }