ucode-agent 1.5.0 → 1.6.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/README.md +53 -1
- package/package.json +3 -1
- package/skills/ui-ux/SKILL.md +2 -2
- package/src/core/doctor.js +122 -0
- package/src/core/loop.js +301 -12
- package/src/core/provider.js +93 -10
- package/src/core/stuck.js +269 -0
- package/src/tools/browser.js +121 -59
- package/src/tools/deploy.js +283 -0
- package/src/tools/files.js +91 -8
- package/src/tools/index.js +44 -10
- package/src/tools/scaffold.js +61 -1
- package/src/tools/shell.js +89 -1
- package/src/ui/activity.js +203 -0
- package/src/ui/plain.js +22 -3
- package/src/ui/screen.js +65 -19
- package/templates/next-shadcn/TEMPLATE.md +53 -9
- package/templates/next-shadcn/_package-lock.json +1335 -148
- package/templates/next-shadcn/components.json +1 -1
- package/templates/next-shadcn/next.config.ts +2 -1
- package/templates/next-shadcn/package.json +4 -2
- package/templates/next-shadcn/presets/citrus.json +77 -0
- package/templates/next-shadcn/presets/graphite.json +77 -0
- package/templates/next-shadcn/presets/grove.json +77 -0
- package/templates/next-shadcn/presets/ocean.json +78 -0
- package/templates/next-shadcn/presets/sunset.json +77 -0
- package/templates/next-shadcn/presets/violet.json +77 -0
- package/templates/next-shadcn/src/components/ui/accordion.tsx +80 -0
- package/templates/next-shadcn/src/components/ui/alert-dialog.tsx +34 -22
- package/templates/next-shadcn/src/components/ui/avatar.tsx +7 -4
- package/templates/next-shadcn/src/components/ui/badge.tsx +15 -18
- package/templates/next-shadcn/src/components/ui/button.tsx +12 -3
- package/templates/next-shadcn/src/components/ui/calendar.tsx +1 -0
- package/templates/next-shadcn/src/components/ui/checkbox.tsx +6 -2
- package/templates/next-shadcn/src/components/ui/collapsible.tsx +33 -0
- package/templates/next-shadcn/src/components/ui/command.tsx +1 -2
- package/templates/next-shadcn/src/components/ui/dialog.tsx +34 -26
- package/templates/next-shadcn/src/components/ui/dropdown-menu.tsx +115 -114
- package/templates/next-shadcn/src/components/ui/hover-card.tsx +43 -0
- package/templates/next-shadcn/src/components/ui/input-group.tsx +2 -4
- package/templates/next-shadcn/src/components/ui/input.tsx +1 -2
- package/templates/next-shadcn/src/components/ui/label.tsx +6 -2
- package/templates/next-shadcn/src/components/ui/popover.tsx +27 -28
- package/templates/next-shadcn/src/components/ui/progress.tsx +11 -63
- package/templates/next-shadcn/src/components/ui/radio-group.tsx +43 -0
- package/templates/next-shadcn/src/components/ui/scroll-area.tsx +6 -6
- package/templates/next-shadcn/src/components/ui/select.tsx +55 -64
- package/templates/next-shadcn/src/components/ui/separator.tsx +6 -3
- package/templates/next-shadcn/src/components/ui/sheet.tsx +35 -26
- package/templates/next-shadcn/src/components/ui/slider.tsx +58 -0
- package/templates/next-shadcn/src/components/ui/switch.tsx +3 -2
- package/templates/next-shadcn/src/components/ui/table.tsx +115 -0
- package/templates/next-shadcn/src/components/ui/tabs.tsx +16 -8
- package/templates/next-shadcn/src/components/ui/toggle-group.tsx +89 -0
- package/templates/next-shadcn/src/components/ui/toggle.tsx +46 -0
- package/templates/next-shadcn/src/components/ui/tooltip.tsx +24 -33
- package/templates/next-shadcn/src/lib/utils.ts +6 -1
- package/ucode.js +8 -1
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import * as React from "react"
|
|
4
|
-
import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog"
|
|
5
4
|
import { cn } from "cn"
|
|
5
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui"
|
|
6
6
|
|
|
7
7
|
import { Button } from "@/components/ui/button"
|
|
8
8
|
|
|
9
|
-
function AlertDialog({
|
|
9
|
+
function AlertDialog({
|
|
10
|
+
...props
|
|
11
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {
|
|
10
12
|
return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
function AlertDialogTrigger({
|
|
15
|
+
function AlertDialogTrigger({
|
|
16
|
+
...props
|
|
17
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {
|
|
14
18
|
return (
|
|
15
19
|
<AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
|
|
16
20
|
)
|
|
17
21
|
}
|
|
18
22
|
|
|
19
|
-
function AlertDialogPortal({
|
|
23
|
+
function AlertDialogPortal({
|
|
24
|
+
...props
|
|
25
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {
|
|
20
26
|
return (
|
|
21
27
|
<AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} />
|
|
22
28
|
)
|
|
@@ -25,12 +31,12 @@ function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {
|
|
|
25
31
|
function AlertDialogOverlay({
|
|
26
32
|
className,
|
|
27
33
|
...props
|
|
28
|
-
}: AlertDialogPrimitive.
|
|
34
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {
|
|
29
35
|
return (
|
|
30
|
-
<AlertDialogPrimitive.
|
|
36
|
+
<AlertDialogPrimitive.Overlay
|
|
31
37
|
data-slot="alert-dialog-overlay"
|
|
32
38
|
className={cn(
|
|
33
|
-
"fixed inset-0
|
|
39
|
+
"fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
34
40
|
className
|
|
35
41
|
)}
|
|
36
42
|
{...props}
|
|
@@ -42,13 +48,13 @@ function AlertDialogContent({
|
|
|
42
48
|
className,
|
|
43
49
|
size = "default",
|
|
44
50
|
...props
|
|
45
|
-
}: AlertDialogPrimitive.
|
|
51
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {
|
|
46
52
|
size?: "default" | "sm"
|
|
47
53
|
}) {
|
|
48
54
|
return (
|
|
49
55
|
<AlertDialogPortal>
|
|
50
56
|
<AlertDialogOverlay />
|
|
51
|
-
<AlertDialogPrimitive.
|
|
57
|
+
<AlertDialogPrimitive.Content
|
|
52
58
|
data-slot="alert-dialog-content"
|
|
53
59
|
data-size={size}
|
|
54
60
|
className={cn(
|
|
@@ -143,14 +149,19 @@ function AlertDialogDescription({
|
|
|
143
149
|
|
|
144
150
|
function AlertDialogAction({
|
|
145
151
|
className,
|
|
152
|
+
variant = "default",
|
|
153
|
+
size = "default",
|
|
146
154
|
...props
|
|
147
|
-
}: React.ComponentProps<typeof
|
|
155
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &
|
|
156
|
+
Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {
|
|
148
157
|
return (
|
|
149
|
-
<Button
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
158
|
+
<Button variant={variant} size={size} asChild>
|
|
159
|
+
<AlertDialogPrimitive.Action
|
|
160
|
+
data-slot="alert-dialog-action"
|
|
161
|
+
className={cn(className)}
|
|
162
|
+
{...props}
|
|
163
|
+
/>
|
|
164
|
+
</Button>
|
|
154
165
|
)
|
|
155
166
|
}
|
|
156
167
|
|
|
@@ -159,15 +170,16 @@ function AlertDialogCancel({
|
|
|
159
170
|
variant = "outline",
|
|
160
171
|
size = "default",
|
|
161
172
|
...props
|
|
162
|
-
}: AlertDialogPrimitive.
|
|
173
|
+
}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &
|
|
163
174
|
Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {
|
|
164
175
|
return (
|
|
165
|
-
<
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
176
|
+
<Button variant={variant} size={size} asChild>
|
|
177
|
+
<AlertDialogPrimitive.Cancel
|
|
178
|
+
data-slot="alert-dialog-cancel"
|
|
179
|
+
className={cn(className)}
|
|
180
|
+
{...props}
|
|
181
|
+
/>
|
|
182
|
+
</Button>
|
|
171
183
|
)
|
|
172
184
|
}
|
|
173
185
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import * as React from "react"
|
|
4
|
-
import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar"
|
|
5
4
|
import { cn } from "cn"
|
|
5
|
+
import { Avatar as AvatarPrimitive } from "radix-ui"
|
|
6
6
|
|
|
7
7
|
function Avatar({
|
|
8
8
|
className,
|
|
9
9
|
size = "default",
|
|
10
10
|
...props
|
|
11
|
-
}: AvatarPrimitive.Root
|
|
11
|
+
}: React.ComponentProps<typeof AvatarPrimitive.Root> & {
|
|
12
12
|
size?: "default" | "sm" | "lg"
|
|
13
13
|
}) {
|
|
14
14
|
return (
|
|
@@ -24,7 +24,10 @@ function Avatar({
|
|
|
24
24
|
)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function AvatarImage({
|
|
27
|
+
function AvatarImage({
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}: React.ComponentProps<typeof AvatarPrimitive.Image>) {
|
|
28
31
|
return (
|
|
29
32
|
<AvatarPrimitive.Image
|
|
30
33
|
data-slot="avatar-image"
|
|
@@ -40,7 +43,7 @@ function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {
|
|
|
40
43
|
function AvatarFallback({
|
|
41
44
|
className,
|
|
42
45
|
...props
|
|
43
|
-
}: AvatarPrimitive.Fallback
|
|
46
|
+
}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
|
|
44
47
|
return (
|
|
45
48
|
<AvatarPrimitive.Fallback
|
|
46
49
|
data-slot="avatar-fallback"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useRender } from "@base-ui/react/use-render"
|
|
1
|
+
import * as React from "react"
|
|
3
2
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
3
|
import { cn } from "cn"
|
|
4
|
+
import { Slot } from "radix-ui"
|
|
5
5
|
|
|
6
6
|
const badgeVariants = cva(
|
|
7
7
|
"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!",
|
|
@@ -29,23 +29,20 @@ const badgeVariants = cva(
|
|
|
29
29
|
function Badge({
|
|
30
30
|
className,
|
|
31
31
|
variant = "default",
|
|
32
|
-
|
|
32
|
+
asChild = false,
|
|
33
33
|
...props
|
|
34
|
-
}:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
variant,
|
|
47
|
-
},
|
|
48
|
-
})
|
|
34
|
+
}: React.ComponentProps<"span"> &
|
|
35
|
+
VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
|
|
36
|
+
const Comp = asChild ? Slot.Root : "span"
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<Comp
|
|
40
|
+
data-slot="badge"
|
|
41
|
+
data-variant={variant}
|
|
42
|
+
className={cn(badgeVariants({ variant }), className)}
|
|
43
|
+
{...props}
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
49
46
|
}
|
|
50
47
|
|
|
51
48
|
export { Badge, badgeVariants }
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as React from "react"
|
|
2
2
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
3
3
|
import { cn } from "cn"
|
|
4
|
+
import { Slot } from "radix-ui"
|
|
4
5
|
|
|
5
6
|
const buttonVariants = cva(
|
|
6
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",
|
|
@@ -43,11 +44,19 @@ function Button({
|
|
|
43
44
|
className,
|
|
44
45
|
variant = "default",
|
|
45
46
|
size = "default",
|
|
47
|
+
asChild = false,
|
|
46
48
|
...props
|
|
47
|
-
}:
|
|
49
|
+
}: React.ComponentProps<"button"> &
|
|
50
|
+
VariantProps<typeof buttonVariants> & {
|
|
51
|
+
asChild?: boolean
|
|
52
|
+
}) {
|
|
53
|
+
const Comp = asChild ? Slot.Root : "button"
|
|
54
|
+
|
|
48
55
|
return (
|
|
49
|
-
<
|
|
56
|
+
<Comp
|
|
50
57
|
data-slot="button"
|
|
58
|
+
data-variant={variant}
|
|
59
|
+
data-size={size}
|
|
51
60
|
className={cn(buttonVariants({ variant, size, className }))}
|
|
52
61
|
{...props}
|
|
53
62
|
/>
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import * as React from "react"
|
|
4
4
|
import { cn } from "cn"
|
|
5
|
+
import { Checkbox as CheckboxPrimitive } from "radix-ui"
|
|
5
6
|
import { CheckIcon } from "lucide-react"
|
|
6
7
|
|
|
7
|
-
function Checkbox({
|
|
8
|
+
function Checkbox({
|
|
9
|
+
className,
|
|
10
|
+
...props
|
|
11
|
+
}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {
|
|
8
12
|
return (
|
|
9
13
|
<CheckboxPrimitive.Root
|
|
10
14
|
data-slot="checkbox"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
import { Collapsible as CollapsiblePrimitive } from "radix-ui"
|
|
4
|
+
|
|
5
|
+
function Collapsible({
|
|
6
|
+
...props
|
|
7
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
|
|
8
|
+
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function CollapsibleTrigger({
|
|
12
|
+
...props
|
|
13
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
|
|
14
|
+
return (
|
|
15
|
+
<CollapsiblePrimitive.CollapsibleTrigger
|
|
16
|
+
data-slot="collapsible-trigger"
|
|
17
|
+
{...props}
|
|
18
|
+
/>
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function CollapsibleContent({
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
|
|
25
|
+
return (
|
|
26
|
+
<CollapsiblePrimitive.CollapsibleContent
|
|
27
|
+
data-slot="collapsible-content"
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { Collapsible, CollapsibleTrigger, CollapsibleContent }
|
|
@@ -40,12 +40,11 @@ function CommandDialog({
|
|
|
40
40
|
className,
|
|
41
41
|
showCloseButton = false,
|
|
42
42
|
...props
|
|
43
|
-
}:
|
|
43
|
+
}: React.ComponentProps<typeof Dialog> & {
|
|
44
44
|
title?: string
|
|
45
45
|
description?: string
|
|
46
46
|
className?: string
|
|
47
47
|
showCloseButton?: boolean
|
|
48
|
-
children: React.ReactNode
|
|
49
48
|
}) {
|
|
50
49
|
return (
|
|
51
50
|
<Dialog {...props}>
|
|
@@ -1,34 +1,42 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import * as React from "react"
|
|
4
|
-
import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"
|
|
5
4
|
import { cn } from "cn"
|
|
5
|
+
import { Dialog as DialogPrimitive } from "radix-ui"
|
|
6
6
|
|
|
7
7
|
import { Button } from "@/components/ui/button"
|
|
8
8
|
import { XIcon } from "lucide-react"
|
|
9
9
|
|
|
10
|
-
function Dialog({
|
|
10
|
+
function Dialog({
|
|
11
|
+
...props
|
|
12
|
+
}: React.ComponentProps<typeof DialogPrimitive.Root>) {
|
|
11
13
|
return <DialogPrimitive.Root data-slot="dialog" {...props} />
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
function DialogTrigger({
|
|
16
|
+
function DialogTrigger({
|
|
17
|
+
...props
|
|
18
|
+
}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
|
|
15
19
|
return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
function DialogPortal({
|
|
22
|
+
function DialogPortal({
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<typeof DialogPrimitive.Portal>) {
|
|
19
25
|
return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
|
|
20
26
|
}
|
|
21
27
|
|
|
22
|
-
function DialogClose({
|
|
28
|
+
function DialogClose({
|
|
29
|
+
...props
|
|
30
|
+
}: React.ComponentProps<typeof DialogPrimitive.Close>) {
|
|
23
31
|
return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
function DialogOverlay({
|
|
27
35
|
className,
|
|
28
36
|
...props
|
|
29
|
-
}: DialogPrimitive.
|
|
37
|
+
}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {
|
|
30
38
|
return (
|
|
31
|
-
<DialogPrimitive.
|
|
39
|
+
<DialogPrimitive.Overlay
|
|
32
40
|
data-slot="dialog-overlay"
|
|
33
41
|
className={cn(
|
|
34
42
|
"fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
|
|
@@ -44,13 +52,13 @@ function DialogContent({
|
|
|
44
52
|
children,
|
|
45
53
|
showCloseButton = true,
|
|
46
54
|
...props
|
|
47
|
-
}: DialogPrimitive.
|
|
55
|
+
}: React.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
48
56
|
showCloseButton?: boolean
|
|
49
57
|
}) {
|
|
50
58
|
return (
|
|
51
59
|
<DialogPortal>
|
|
52
60
|
<DialogOverlay />
|
|
53
|
-
<DialogPrimitive.
|
|
61
|
+
<DialogPrimitive.Content
|
|
54
62
|
data-slot="dialog-content"
|
|
55
63
|
className={cn(
|
|
56
64
|
"fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
@@ -60,22 +68,19 @@ function DialogContent({
|
|
|
60
68
|
>
|
|
61
69
|
{children}
|
|
62
70
|
{showCloseButton && (
|
|
63
|
-
<DialogPrimitive.Close
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
<DialogPrimitive.Close data-slot="dialog-close" asChild>
|
|
72
|
+
<Button
|
|
73
|
+
variant="ghost"
|
|
74
|
+
className="absolute top-2 right-2"
|
|
75
|
+
size="icon-sm"
|
|
76
|
+
>
|
|
77
|
+
<XIcon
|
|
70
78
|
/>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<XIcon
|
|
74
|
-
/>
|
|
75
|
-
<span className="sr-only">Close</span>
|
|
79
|
+
<span className="sr-only">Close</span>
|
|
80
|
+
</Button>
|
|
76
81
|
</DialogPrimitive.Close>
|
|
77
82
|
)}
|
|
78
|
-
</DialogPrimitive.
|
|
83
|
+
</DialogPrimitive.Content>
|
|
79
84
|
</DialogPortal>
|
|
80
85
|
)
|
|
81
86
|
}
|
|
@@ -109,15 +114,18 @@ function DialogFooter({
|
|
|
109
114
|
>
|
|
110
115
|
{children}
|
|
111
116
|
{showCloseButton && (
|
|
112
|
-
<DialogPrimitive.Close
|
|
113
|
-
Close
|
|
117
|
+
<DialogPrimitive.Close asChild>
|
|
118
|
+
<Button variant="outline">Close</Button>
|
|
114
119
|
</DialogPrimitive.Close>
|
|
115
120
|
)}
|
|
116
121
|
</div>
|
|
117
122
|
)
|
|
118
123
|
}
|
|
119
124
|
|
|
120
|
-
function DialogTitle({
|
|
125
|
+
function DialogTitle({
|
|
126
|
+
className,
|
|
127
|
+
...props
|
|
128
|
+
}: React.ComponentProps<typeof DialogPrimitive.Title>) {
|
|
121
129
|
return (
|
|
122
130
|
<DialogPrimitive.Title
|
|
123
131
|
data-slot="dialog-title"
|
|
@@ -133,7 +141,7 @@ function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {
|
|
|
133
141
|
function DialogDescription({
|
|
134
142
|
className,
|
|
135
143
|
...props
|
|
136
|
-
}: DialogPrimitive.Description
|
|
144
|
+
}: React.ComponentProps<typeof DialogPrimitive.Description>) {
|
|
137
145
|
return (
|
|
138
146
|
<DialogPrimitive.Description
|
|
139
147
|
data-slot="dialog-description"
|