@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.
- package/LICENSE +201 -0
- package/dist/components/account-drawer.d.ts +1 -1
- package/dist/components/account-drawer.js +12 -12
- package/dist/components/on-screen-controls.js +12 -12
- package/dist/components/scene-settings.d.ts +3 -3
- package/dist/components/scene-settings.js +11 -11
- package/dist/components/theme-provider.d.ts +1 -1
- package/dist/components/theme-provider.js +2 -2
- package/dist/components/theme-toggle.js +8 -8
- package/dist/components/ui/badge.d.ts +3 -3
- package/dist/components/ui/badge.js +15 -15
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/button.js +19 -19
- package/dist/components/ui/card.d.ts +1 -1
- package/dist/components/ui/card.js +3 -3
- package/dist/components/ui/dialog.d.ts +4 -4
- package/dist/components/ui/dialog.js +10 -10
- package/dist/components/ui/drawer.d.ts +5 -5
- package/dist/components/ui/drawer.js +26 -26
- package/dist/components/ui/dropdown-menu.d.ts +5 -5
- package/dist/components/ui/dropdown-menu.js +12 -12
- package/dist/components/ui/empty.d.ts +7 -7
- package/dist/components/ui/empty.js +11 -11
- package/dist/components/ui/field.d.ts +12 -12
- package/dist/components/ui/field.js +22 -22
- package/dist/components/ui/input.d.ts +2 -2
- package/dist/components/ui/input.js +3 -3
- package/dist/components/ui/label.d.ts +2 -2
- package/dist/components/ui/label.js +3 -3
- package/dist/components/ui/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group.js +6 -6
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.js +5 -5
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.js +2 -2
- package/dist/components/ui/spinner.d.ts +2 -2
- package/dist/components/ui/spinner.js +3 -3
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.js +5 -5
- package/dist/components/ui/tabs.d.ts +2 -2
- package/dist/components/ui/tabs.js +13 -13
- package/dist/components/ui/toggle-group.d.ts +6 -6
- package/dist/components/ui/toggle-group.js +13 -13
- package/dist/components/ui/toggle.d.ts +2 -2
- package/dist/components/ui/toggle.js +11 -11
- package/dist/components/ui/tooltip.d.ts +3 -3
- package/dist/components/ui/tooltip.js +5 -5
- package/dist/components/version-dialog.d.ts +1 -1
- package/dist/components/version-dialog.js +33 -33
- package/dist/components/workspace-brand.js +1 -1
- package/dist/components/workspace-logo.d.ts +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.js +19 -19
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js +2 -2
- package/dist/lib/version-notes.js +18 -18
- package/package.json +24 -9
- package/src/components/account-drawer.tsx +27 -27
- package/src/components/on-screen-controls.tsx +45 -45
- package/src/components/scene-settings.tsx +55 -55
- package/src/components/theme-provider.tsx +7 -7
- package/src/components/theme-toggle.tsx +20 -20
- package/src/components/ui/badge.tsx +20 -20
- package/src/components/ui/button.tsx +24 -24
- package/src/components/ui/card.tsx +6 -6
- package/src/components/ui/dialog.tsx +24 -24
- package/src/components/ui/drawer.tsx +55 -55
- package/src/components/ui/dropdown-menu.tsx +39 -39
- package/src/components/ui/empty.tsx +25 -25
- package/src/components/ui/field.tsx +55 -55
- package/src/components/ui/input.tsx +7 -7
- package/src/components/ui/label.tsx +7 -7
- package/src/components/ui/radio-group.tsx +9 -9
- package/src/components/ui/separator.tsx +7 -7
- package/src/components/ui/skeleton.tsx +5 -5
- package/src/components/ui/spinner.tsx +6 -6
- package/src/components/ui/switch.tsx +8 -8
- package/src/components/ui/tabs.tsx +21 -21
- package/src/components/ui/toggle-group.tsx +25 -25
- package/src/components/ui/toggle.tsx +15 -15
- package/src/components/ui/tooltip.tsx +13 -13
- package/src/components/version-dialog.tsx +113 -113
- package/src/components/workspace-brand.tsx +4 -4
- package/src/components/workspace-logo.tsx +2 -2
- package/src/index.tsx +19 -19
- package/src/lib/utils.ts +3 -3
- package/src/lib/version-notes.ts +23 -23
- package/src/styles/conventional-workspace.css +26 -26
- package/src/styles/globals.css +2 -2
- package/src/styles/theme.css +1 -1
- package/src/styles/workspace-shell.css +2 -2
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
'use client'
|
|
2
2
|
|
|
3
|
-
import { useSyncExternalStore } from
|
|
4
|
-
import { Monitor, Moon, Sun } from
|
|
5
|
-
import { useTheme } from
|
|
6
|
-
import { Button } from
|
|
7
|
-
import { cn } from
|
|
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 :
|
|
24
|
+
const selectedTheme = mounted ? theme : 'system'
|
|
25
25
|
|
|
26
26
|
return (
|
|
27
27
|
<div
|
|
28
28
|
className={cn(
|
|
29
|
-
|
|
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 ===
|
|
38
|
+
aria-checked={selectedTheme === 'system'}
|
|
39
39
|
aria-label="System theme"
|
|
40
|
-
variant={selectedTheme ===
|
|
40
|
+
variant={selectedTheme === 'system' ? 'default' : 'ghost'}
|
|
41
41
|
size="icon-sm"
|
|
42
|
-
onClick={() => setTheme(
|
|
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 ===
|
|
50
|
+
aria-checked={selectedTheme === 'light'}
|
|
51
51
|
aria-label="Light theme"
|
|
52
|
-
variant={selectedTheme ===
|
|
52
|
+
variant={selectedTheme === 'light' ? 'default' : 'ghost'}
|
|
53
53
|
size="icon-sm"
|
|
54
|
-
onClick={() => setTheme(
|
|
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 ===
|
|
62
|
+
aria-checked={selectedTheme === 'dark'}
|
|
63
63
|
aria-label="Dark theme"
|
|
64
|
-
variant={selectedTheme ===
|
|
64
|
+
variant={selectedTheme === 'dark' ? 'default' : 'ghost'}
|
|
65
65
|
size="icon-sm"
|
|
66
|
-
onClick={() => setTheme(
|
|
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
|
|
2
|
-
import { useRender } from
|
|
3
|
-
import { cva, type VariantProps } from
|
|
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
|
|
5
|
+
import { cn } from '#lib/utils'
|
|
6
6
|
|
|
7
7
|
const badgeVariants = cva(
|
|
8
|
-
|
|
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:
|
|
13
|
-
secondary:
|
|
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
|
-
|
|
16
|
-
outline:
|
|
17
|
-
ghost:
|
|
18
|
-
link:
|
|
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:
|
|
22
|
+
variant: 'default',
|
|
23
23
|
},
|
|
24
24
|
}
|
|
25
|
-
)
|
|
25
|
+
)
|
|
26
26
|
|
|
27
27
|
function Badge({
|
|
28
28
|
className,
|
|
29
|
-
variant =
|
|
29
|
+
variant = 'default',
|
|
30
30
|
render,
|
|
31
31
|
...props
|
|
32
|
-
}: useRender.ComponentProps<
|
|
32
|
+
}: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {
|
|
33
33
|
return useRender({
|
|
34
|
-
defaultTagName:
|
|
35
|
-
props: mergeProps<
|
|
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:
|
|
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
|
|
2
|
-
import { cva, type VariantProps } from
|
|
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
|
|
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:
|
|
11
|
+
default: 'bg-primary text-primary-foreground hover:bg-primary/80',
|
|
12
12
|
outline:
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17
|
+
'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',
|
|
18
18
|
destructive:
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
link:
|
|
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
|
-
|
|
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:
|
|
30
|
-
icon:
|
|
31
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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:
|
|
40
|
-
size:
|
|
39
|
+
variant: 'default',
|
|
40
|
+
size: 'default',
|
|
41
41
|
},
|
|
42
42
|
}
|
|
43
|
-
)
|
|
43
|
+
)
|
|
44
44
|
|
|
45
45
|
function Button({
|
|
46
46
|
className,
|
|
47
|
-
variant =
|
|
48
|
-
size =
|
|
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
|
|
2
|
-
import { cn } from
|
|
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(
|
|
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(
|
|
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
|
-
|
|
1
|
+
'use client'
|
|
2
2
|
|
|
3
|
-
import * as React from
|
|
4
|
-
import { Dialog as DialogPrimitive } from
|
|
5
|
-
import { X } from
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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<
|
|
75
|
+
function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
|
|
76
76
|
return (
|
|
77
77
|
<div
|
|
78
78
|
data-slot="dialog-header"
|
|
79
|
-
className={cn(
|
|
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<
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
+
}
|