@create-lft-app/cli 1.0.14 → 1.1.1

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 (61) hide show
  1. package/dist/bin/cli.js +150 -171
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/src/index.js +148 -169
  4. package/dist/src/index.js.map +1 -1
  5. package/package.json +1 -1
  6. package/templates/app/auth/login/page.tsx +0 -153
  7. package/templates/app/dashboard/page.tsx +0 -102
  8. package/templates/app/globals.css +0 -249
  9. package/templates/app/layout.tsx +0 -40
  10. package/templates/app/page.tsx +0 -5
  11. package/templates/components/dashboard/widget.tsx +0 -113
  12. package/templates/components/layout/admin-midday-sidebar.tsx +0 -247
  13. package/templates/components/layout/admin-sidebar.tsx +0 -146
  14. package/templates/components/layout/header.tsx +0 -71
  15. package/templates/components/layout/main-content.tsx +0 -28
  16. package/templates/components/layout/midday-sidebar.tsx +0 -381
  17. package/templates/components/layout/nav-user.tsx +0 -108
  18. package/templates/components/layout/page-header.tsx +0 -95
  19. package/templates/components/layout/sidebar-context.tsx +0 -33
  20. package/templates/components/layout/sidebar.tsx +0 -194
  21. package/templates/components/layout/suspension-banner.tsx +0 -21
  22. package/templates/components/ui/accordion.tsx +0 -58
  23. package/templates/components/ui/alert-dialog.tsx +0 -165
  24. package/templates/components/ui/alert.tsx +0 -66
  25. package/templates/components/ui/avatar.tsx +0 -55
  26. package/templates/components/ui/badge.tsx +0 -50
  27. package/templates/components/ui/button.tsx +0 -89
  28. package/templates/components/ui/calendar.tsx +0 -220
  29. package/templates/components/ui/card.tsx +0 -89
  30. package/templates/components/ui/checkbox.tsx +0 -38
  31. package/templates/components/ui/collapsible.tsx +0 -33
  32. package/templates/components/ui/command.tsx +0 -196
  33. package/templates/components/ui/dialog.tsx +0 -153
  34. package/templates/components/ui/dropdown-menu.tsx +0 -280
  35. package/templates/components/ui/form.tsx +0 -171
  36. package/templates/components/ui/icons.tsx +0 -167
  37. package/templates/components/ui/input.tsx +0 -28
  38. package/templates/components/ui/label.tsx +0 -25
  39. package/templates/components/ui/popover.tsx +0 -59
  40. package/templates/components/ui/progress.tsx +0 -32
  41. package/templates/components/ui/radio-group.tsx +0 -45
  42. package/templates/components/ui/scroll-area.tsx +0 -63
  43. package/templates/components/ui/select.tsx +0 -208
  44. package/templates/components/ui/separator.tsx +0 -28
  45. package/templates/components/ui/sheet.tsx +0 -146
  46. package/templates/components/ui/sidebar.tsx +0 -726
  47. package/templates/components/ui/skeleton.tsx +0 -15
  48. package/templates/components/ui/slider.tsx +0 -58
  49. package/templates/components/ui/sonner.tsx +0 -47
  50. package/templates/components/ui/spinner.tsx +0 -27
  51. package/templates/components/ui/submit-button.tsx +0 -47
  52. package/templates/components/ui/switch.tsx +0 -31
  53. package/templates/components/ui/table.tsx +0 -120
  54. package/templates/components/ui/tabs.tsx +0 -75
  55. package/templates/components/ui/textarea.tsx +0 -26
  56. package/templates/components/ui/tooltip.tsx +0 -70
  57. package/templates/hooks/use-mobile.ts +0 -21
  58. package/templates/lib/supabase/client.ts +0 -8
  59. package/templates/lib/supabase/server.ts +0 -29
  60. package/templates/lib/utils.ts +0 -6
  61. package/templates/modules/auth/actions/auth-actions.ts +0 -12
@@ -1,196 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import { Command as CommandPrimitive } from "cmdk"
5
- import { SearchIcon } from "lucide-react"
6
-
7
- import { cn } from "@/lib/utils"
8
- import {
9
- Dialog,
10
- DialogContent,
11
- DialogDescription,
12
- DialogHeader,
13
- DialogTitle,
14
- } from "@/components/ui/dialog"
15
-
16
- function Command({
17
- className,
18
- ...props
19
- }: React.ComponentProps<typeof CommandPrimitive>) {
20
- return (
21
- <CommandPrimitive
22
- data-slot="command"
23
- className={cn(
24
- "flex h-full w-full flex-col overflow-hidden",
25
- "rounded-md bg-background",
26
- "text-popover-foreground",
27
- className
28
- )}
29
- {...props}
30
- />
31
- )
32
- }
33
-
34
- function CommandDialog({
35
- title = "Command Palette",
36
- description = "Search for a command to run...",
37
- children,
38
- className,
39
- showCloseButton = true,
40
- ...props
41
- }: React.ComponentProps<typeof Dialog> & {
42
- title?: string
43
- description?: string
44
- className?: string
45
- showCloseButton?: boolean
46
- }) {
47
- return (
48
- <Dialog {...props}>
49
- <DialogHeader className="sr-only">
50
- <DialogTitle>{title}</DialogTitle>
51
- <DialogDescription>{description}</DialogDescription>
52
- </DialogHeader>
53
- <DialogContent
54
- className={cn("overflow-hidden p-0", className)}
55
- showCloseButton={showCloseButton}
56
- >
57
- <Command className="[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
58
- {children}
59
- </Command>
60
- </DialogContent>
61
- </Dialog>
62
- )
63
- }
64
-
65
- function CommandInput({
66
- className,
67
- ...props
68
- }: React.ComponentProps<typeof CommandPrimitive.Input>) {
69
- return (
70
- <div
71
- data-slot="command-input-wrapper"
72
- className="flex items-center border-b border-border px-3"
73
- >
74
- <SearchIcon className="mr-2 h-4 w-4 shrink-0 text-[#878787]" />
75
- <CommandPrimitive.Input
76
- data-slot="command-input"
77
- className={cn(
78
- "flex h-11 w-full rounded-md bg-transparent py-3",
79
- "text-sm outline-none",
80
- "placeholder:text-muted-foreground",
81
- "disabled:cursor-not-allowed disabled:opacity-50",
82
- className
83
- )}
84
- {...props}
85
- />
86
- </div>
87
- )
88
- }
89
-
90
- function CommandList({
91
- className,
92
- ...props
93
- }: React.ComponentProps<typeof CommandPrimitive.List>) {
94
- return (
95
- <CommandPrimitive.List
96
- data-slot="command-list"
97
- className={cn(
98
- "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
99
- className
100
- )}
101
- {...props}
102
- />
103
- )
104
- }
105
-
106
- function CommandEmpty({
107
- ...props
108
- }: React.ComponentProps<typeof CommandPrimitive.Empty>) {
109
- return (
110
- <CommandPrimitive.Empty
111
- data-slot="command-empty"
112
- className="py-6 text-center text-sm"
113
- {...props}
114
- />
115
- )
116
- }
117
-
118
- function CommandGroup({
119
- className,
120
- ...props
121
- }: React.ComponentProps<typeof CommandPrimitive.Group>) {
122
- return (
123
- <CommandPrimitive.Group
124
- data-slot="command-group"
125
- className={cn(
126
- "text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",
127
- className
128
- )}
129
- {...props}
130
- />
131
- )
132
- }
133
-
134
- function CommandSeparator({
135
- className,
136
- ...props
137
- }: React.ComponentProps<typeof CommandPrimitive.Separator>) {
138
- return (
139
- <CommandPrimitive.Separator
140
- data-slot="command-separator"
141
- className={cn("bg-border -mx-1 h-px", className)}
142
- {...props}
143
- />
144
- )
145
- }
146
-
147
- function CommandItem({
148
- className,
149
- ...props
150
- }: React.ComponentProps<typeof CommandPrimitive.Item>) {
151
- return (
152
- <CommandPrimitive.Item
153
- data-slot="command-item"
154
- className={cn(
155
- "relative flex cursor-default select-none items-center",
156
- "rounded-sm px-2 py-1.5",
157
- "text-sm outline-none",
158
- "transition-colors duration-150",
159
- "data-[selected=true]:bg-[#f2f2f2] dark:data-[selected=true]:bg-[#2c2c2c]",
160
- "data-[selected=true]:text-foreground",
161
- "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50",
162
- "[&_svg]:mr-2 [&_svg]:h-4 [&_svg]:w-4 [&_svg]:text-[#878787]",
163
- className
164
- )}
165
- {...props}
166
- />
167
- )
168
- }
169
-
170
- function CommandShortcut({
171
- className,
172
- ...props
173
- }: React.ComponentProps<"span">) {
174
- return (
175
- <span
176
- data-slot="command-shortcut"
177
- className={cn(
178
- "text-muted-foreground ml-auto text-xs tracking-widest",
179
- className
180
- )}
181
- {...props}
182
- />
183
- )
184
- }
185
-
186
- export {
187
- Command,
188
- CommandDialog,
189
- CommandInput,
190
- CommandList,
191
- CommandEmpty,
192
- CommandGroup,
193
- CommandItem,
194
- CommandShortcut,
195
- CommandSeparator,
196
- }
@@ -1,153 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import * as DialogPrimitive from "@radix-ui/react-dialog"
5
- import { XIcon } from "lucide-react"
6
-
7
- import { cn } from "@/lib/utils"
8
-
9
- function Dialog({
10
- ...props
11
- }: React.ComponentProps<typeof DialogPrimitive.Root>) {
12
- return <DialogPrimitive.Root data-slot="dialog" {...props} />
13
- }
14
-
15
- function DialogTrigger({
16
- ...props
17
- }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
18
- return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
19
- }
20
-
21
- function DialogPortal({
22
- ...props
23
- }: React.ComponentProps<typeof DialogPrimitive.Portal>) {
24
- return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
25
- }
26
-
27
- function DialogClose({
28
- ...props
29
- }: React.ComponentProps<typeof DialogPrimitive.Close>) {
30
- return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
31
- }
32
-
33
- function DialogOverlay({
34
- className,
35
- ...props
36
- }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {
37
- return (
38
- <DialogPrimitive.Overlay
39
- data-slot="dialog-overlay"
40
- className={cn(
41
- "fixed inset-0 z-50",
42
- "bg-[#f6f6f3]/60 dark:bg-[#0C0C0C]/80",
43
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
44
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
45
- className
46
- )}
47
- {...props}
48
- />
49
- )
50
- }
51
-
52
- function DialogContent({
53
- className,
54
- children,
55
- showCloseButton = true,
56
- ...props
57
- }: React.ComponentProps<typeof DialogPrimitive.Content> & {
58
- showCloseButton?: boolean
59
- }) {
60
- return (
61
- <DialogPortal data-slot="dialog-portal">
62
- <DialogOverlay />
63
- <DialogPrimitive.Content
64
- data-slot="dialog-content"
65
- className={cn(
66
- "fixed left-[50%] top-[50%] z-50",
67
- "translate-x-[-50%] translate-y-[-50%]",
68
- "grid w-full max-w-xl gap-4 border bg-background p-6",
69
- "duration-200",
70
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
71
- "data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
72
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
73
- "data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]",
74
- className
75
- )}
76
- {...props}
77
- >
78
- {children}
79
- {showCloseButton && (
80
- <DialogPrimitive.Close
81
- data-slot="dialog-close"
82
- className="absolute right-6 top-6 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none"
83
- >
84
- <XIcon className="h-4 w-4" />
85
- <span className="sr-only">Close</span>
86
- </DialogPrimitive.Close>
87
- )}
88
- </DialogPrimitive.Content>
89
- </DialogPortal>
90
- )
91
- }
92
-
93
- function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
94
- return (
95
- <div
96
- data-slot="dialog-header"
97
- className={cn("flex flex-col gap-2 text-center sm:text-left", className)}
98
- {...props}
99
- />
100
- )
101
- }
102
-
103
- function DialogFooter({ className, ...props }: React.ComponentProps<"div">) {
104
- return (
105
- <div
106
- data-slot="dialog-footer"
107
- className={cn(
108
- "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
109
- className
110
- )}
111
- {...props}
112
- />
113
- )
114
- }
115
-
116
- function DialogTitle({
117
- className,
118
- ...props
119
- }: React.ComponentProps<typeof DialogPrimitive.Title>) {
120
- return (
121
- <DialogPrimitive.Title
122
- data-slot="dialog-title"
123
- className={cn("text-lg leading-none font-semibold", className)}
124
- {...props}
125
- />
126
- )
127
- }
128
-
129
- function DialogDescription({
130
- className,
131
- ...props
132
- }: React.ComponentProps<typeof DialogPrimitive.Description>) {
133
- return (
134
- <DialogPrimitive.Description
135
- data-slot="dialog-description"
136
- className={cn("text-muted-foreground text-sm", className)}
137
- {...props}
138
- />
139
- )
140
- }
141
-
142
- export {
143
- Dialog,
144
- DialogClose,
145
- DialogContent,
146
- DialogDescription,
147
- DialogFooter,
148
- DialogHeader,
149
- DialogOverlay,
150
- DialogPortal,
151
- DialogTitle,
152
- DialogTrigger,
153
- }
@@ -1,280 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
5
- import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
6
-
7
- import { cn } from "@/lib/utils"
8
-
9
- function DropdownMenu({
10
- ...props
11
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
12
- return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />
13
- }
14
-
15
- function DropdownMenuPortal({
16
- ...props
17
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
18
- return (
19
- <DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
20
- )
21
- }
22
-
23
- function DropdownMenuTrigger({
24
- ...props
25
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {
26
- return (
27
- <DropdownMenuPrimitive.Trigger
28
- data-slot="dropdown-menu-trigger"
29
- {...props}
30
- />
31
- )
32
- }
33
-
34
- function DropdownMenuContent({
35
- className,
36
- sideOffset = 4,
37
- ...props
38
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {
39
- return (
40
- <DropdownMenuPrimitive.Portal>
41
- <DropdownMenuPrimitive.Content
42
- data-slot="dropdown-menu-content"
43
- sideOffset={sideOffset}
44
- className={cn(
45
- "z-50 min-w-[8rem] overflow-hidden",
46
- "rounded-md border border-border",
47
- "bg-background dark:bg-[#1c1c1c]",
48
- "p-1",
49
- "text-popover-foreground",
50
- "data-[state=open]:animate-in data-[state=closed]:animate-out",
51
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
52
- "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
53
- "data-[side=bottom]:slide-in-from-top-2",
54
- "data-[side=left]:slide-in-from-right-2",
55
- "data-[side=right]:slide-in-from-left-2",
56
- "data-[side=top]:slide-in-from-bottom-2",
57
- className
58
- )}
59
- {...props}
60
- />
61
- </DropdownMenuPrimitive.Portal>
62
- )
63
- }
64
-
65
- function DropdownMenuGroup({
66
- ...props
67
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
68
- return (
69
- <DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
70
- )
71
- }
72
-
73
- function DropdownMenuItem({
74
- className,
75
- inset,
76
- variant = "default",
77
- ...props
78
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
79
- inset?: boolean
80
- variant?: "default" | "destructive"
81
- }) {
82
- return (
83
- <DropdownMenuPrimitive.Item
84
- data-slot="dropdown-menu-item"
85
- data-inset={inset}
86
- data-variant={variant}
87
- className={cn(
88
- "relative flex cursor-default select-none items-center gap-2",
89
- "rounded-sm px-2 py-1.5",
90
- "text-sm outline-none",
91
- "transition-colors duration-150",
92
- "focus:bg-[#f2f2f2] dark:focus:bg-[#2c2c2c]",
93
- "focus:text-foreground",
94
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
95
- "data-[inset]:pl-8",
96
- "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
97
- "[&_svg:not([class*='text-'])]:text-[#878787]",
98
- "data-[variant=destructive]:text-destructive",
99
- "data-[variant=destructive]:focus:bg-destructive/10",
100
- "data-[variant=destructive]:focus:text-destructive",
101
- className
102
- )}
103
- {...props}
104
- />
105
- )
106
- }
107
-
108
- function DropdownMenuCheckboxItem({
109
- className,
110
- children,
111
- checked,
112
- ...props
113
- }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {
114
- return (
115
- <DropdownMenuPrimitive.CheckboxItem
116
- data-slot="dropdown-menu-checkbox-item"
117
- className={cn(
118
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
119
- className
120
- )}
121
- checked={checked}
122
- {...props}
123
- >
124
- <span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
125
- <DropdownMenuPrimitive.ItemIndicator>
126
- <CheckIcon className="size-4" />
127
- </DropdownMenuPrimitive.ItemIndicator>
128
- </span>
129
- {children}
130
- </DropdownMenuPrimitive.CheckboxItem>
131
- )
132
- }
133
-
134
- function DropdownMenuRadioGroup({
135
- ...props
136
- }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {
137
- return (
138
- <DropdownMenuPrimitive.RadioGroup
139
- data-slot="dropdown-menu-radio-group"
140
- {...props}
141
- />
142
- )
143
- }
144
-
145
- function DropdownMenuRadioItem({
146
- className,
147
- children,
148
- ...props
149
- }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {
150
- return (
151
- <DropdownMenuPrimitive.RadioItem
152
- data-slot="dropdown-menu-radio-item"
153
- className={cn(
154
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
155
- className
156
- )}
157
- {...props}
158
- >
159
- <span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
160
- <DropdownMenuPrimitive.ItemIndicator>
161
- <CircleIcon className="size-2 fill-current" />
162
- </DropdownMenuPrimitive.ItemIndicator>
163
- </span>
164
- {children}
165
- </DropdownMenuPrimitive.RadioItem>
166
- )
167
- }
168
-
169
- function DropdownMenuLabel({
170
- className,
171
- inset,
172
- ...props
173
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
174
- inset?: boolean
175
- }) {
176
- return (
177
- <DropdownMenuPrimitive.Label
178
- data-slot="dropdown-menu-label"
179
- data-inset={inset}
180
- className={cn(
181
- "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
182
- className
183
- )}
184
- {...props}
185
- />
186
- )
187
- }
188
-
189
- function DropdownMenuSeparator({
190
- className,
191
- ...props
192
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {
193
- return (
194
- <DropdownMenuPrimitive.Separator
195
- data-slot="dropdown-menu-separator"
196
- className={cn("bg-border -mx-1 my-1 h-px", className)}
197
- {...props}
198
- />
199
- )
200
- }
201
-
202
- function DropdownMenuShortcut({
203
- className,
204
- ...props
205
- }: React.ComponentProps<"span">) {
206
- return (
207
- <span
208
- data-slot="dropdown-menu-shortcut"
209
- className={cn(
210
- "text-muted-foreground ml-auto text-xs tracking-widest",
211
- className
212
- )}
213
- {...props}
214
- />
215
- )
216
- }
217
-
218
- function DropdownMenuSub({
219
- ...props
220
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
221
- return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
222
- }
223
-
224
- function DropdownMenuSubTrigger({
225
- className,
226
- inset,
227
- children,
228
- ...props
229
- }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
230
- inset?: boolean
231
- }) {
232
- return (
233
- <DropdownMenuPrimitive.SubTrigger
234
- data-slot="dropdown-menu-sub-trigger"
235
- data-inset={inset}
236
- className={cn(
237
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
238
- className
239
- )}
240
- {...props}
241
- >
242
- {children}
243
- <ChevronRightIcon className="ml-auto size-4" />
244
- </DropdownMenuPrimitive.SubTrigger>
245
- )
246
- }
247
-
248
- function DropdownMenuSubContent({
249
- className,
250
- ...props
251
- }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {
252
- return (
253
- <DropdownMenuPrimitive.SubContent
254
- data-slot="dropdown-menu-sub-content"
255
- className={cn(
256
- "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-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
257
- className
258
- )}
259
- {...props}
260
- />
261
- )
262
- }
263
-
264
- export {
265
- DropdownMenu,
266
- DropdownMenuPortal,
267
- DropdownMenuTrigger,
268
- DropdownMenuContent,
269
- DropdownMenuGroup,
270
- DropdownMenuLabel,
271
- DropdownMenuItem,
272
- DropdownMenuCheckboxItem,
273
- DropdownMenuRadioGroup,
274
- DropdownMenuRadioItem,
275
- DropdownMenuSeparator,
276
- DropdownMenuShortcut,
277
- DropdownMenuSub,
278
- DropdownMenuSubTrigger,
279
- DropdownMenuSubContent,
280
- }