@greatapps/greatauth-ui 0.1.0 → 0.1.4

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.
@@ -0,0 +1,261 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
5
+ import { Check, ChevronRight } 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
+ align = "start",
37
+ sideOffset = 4,
38
+ ...props
39
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {
40
+ return (
41
+ <DropdownMenuPrimitive.Portal>
42
+ <DropdownMenuPrimitive.Content
43
+ data-slot="dropdown-menu-content"
44
+ sideOffset={sideOffset}
45
+ align={align}
46
+ className={cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden", className )}
47
+ {...props}
48
+ />
49
+ </DropdownMenuPrimitive.Portal>
50
+ )
51
+ }
52
+
53
+ function DropdownMenuGroup({
54
+ ...props
55
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
56
+ return (
57
+ <DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
58
+ )
59
+ }
60
+
61
+ function DropdownMenuItem({
62
+ className,
63
+ inset,
64
+ variant = "default",
65
+ ...props
66
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
67
+ inset?: boolean
68
+ variant?: "default" | "destructive"
69
+ }) {
70
+ return (
71
+ <DropdownMenuPrimitive.Item
72
+ data-slot="dropdown-menu-item"
73
+ data-inset={inset}
74
+ data-variant={variant}
75
+ className={cn(
76
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
77
+ className
78
+ )}
79
+ {...props}
80
+ />
81
+ )
82
+ }
83
+
84
+ function DropdownMenuCheckboxItem({
85
+ className,
86
+ children,
87
+ checked,
88
+ inset,
89
+ ...props
90
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {
91
+ inset?: boolean
92
+ }) {
93
+ return (
94
+ <DropdownMenuPrimitive.CheckboxItem
95
+ data-slot="dropdown-menu-checkbox-item"
96
+ data-inset={inset}
97
+ className={cn(
98
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
99
+ className
100
+ )}
101
+ checked={checked}
102
+ {...props}
103
+ >
104
+ <span
105
+ className="absolute right-2 flex items-center justify-center pointer-events-none"
106
+ data-slot="dropdown-menu-checkbox-item-indicator"
107
+ >
108
+ <DropdownMenuPrimitive.ItemIndicator>
109
+ <Check />
110
+ </DropdownMenuPrimitive.ItemIndicator>
111
+ </span>
112
+ {children}
113
+ </DropdownMenuPrimitive.CheckboxItem>
114
+ )
115
+ }
116
+
117
+ function DropdownMenuRadioGroup({
118
+ ...props
119
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {
120
+ return (
121
+ <DropdownMenuPrimitive.RadioGroup
122
+ data-slot="dropdown-menu-radio-group"
123
+ {...props}
124
+ />
125
+ )
126
+ }
127
+
128
+ function DropdownMenuRadioItem({
129
+ className,
130
+ children,
131
+ inset,
132
+ ...props
133
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {
134
+ inset?: boolean
135
+ }) {
136
+ return (
137
+ <DropdownMenuPrimitive.RadioItem
138
+ data-slot="dropdown-menu-radio-item"
139
+ data-inset={inset}
140
+ className={cn(
141
+ "focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
142
+ className
143
+ )}
144
+ {...props}
145
+ >
146
+ <span
147
+ className="absolute right-2 flex items-center justify-center pointer-events-none"
148
+ data-slot="dropdown-menu-radio-item-indicator"
149
+ >
150
+ <DropdownMenuPrimitive.ItemIndicator>
151
+ <Check />
152
+ </DropdownMenuPrimitive.ItemIndicator>
153
+ </span>
154
+ {children}
155
+ </DropdownMenuPrimitive.RadioItem>
156
+ )
157
+ }
158
+
159
+ function DropdownMenuLabel({
160
+ className,
161
+ inset,
162
+ ...props
163
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
164
+ inset?: boolean
165
+ }) {
166
+ return (
167
+ <DropdownMenuPrimitive.Label
168
+ data-slot="dropdown-menu-label"
169
+ data-inset={inset}
170
+ className={cn("text-muted-foreground px-2 py-1.5 text-xs font-medium data-inset:pl-8", className)}
171
+ {...props}
172
+ />
173
+ )
174
+ }
175
+
176
+ function DropdownMenuSeparator({
177
+ className,
178
+ ...props
179
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {
180
+ return (
181
+ <DropdownMenuPrimitive.Separator
182
+ data-slot="dropdown-menu-separator"
183
+ className={cn("bg-border -mx-1 my-1 h-px", className)}
184
+ {...props}
185
+ />
186
+ )
187
+ }
188
+
189
+ function DropdownMenuShortcut({
190
+ className,
191
+ ...props
192
+ }: React.ComponentProps<"span">) {
193
+ return (
194
+ <span
195
+ data-slot="dropdown-menu-shortcut"
196
+ className={cn("text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className)}
197
+ {...props}
198
+ />
199
+ )
200
+ }
201
+
202
+ function DropdownMenuSub({
203
+ ...props
204
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
205
+ return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
206
+ }
207
+
208
+ function DropdownMenuSubTrigger({
209
+ className,
210
+ inset,
211
+ children,
212
+ ...props
213
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
214
+ inset?: boolean
215
+ }) {
216
+ return (
217
+ <DropdownMenuPrimitive.SubTrigger
218
+ data-slot="dropdown-menu-sub-trigger"
219
+ data-inset={inset}
220
+ className={cn(
221
+ "focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-sm px-2 py-1.5 text-sm data-inset:pl-8 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
222
+ className
223
+ )}
224
+ {...props}
225
+ >
226
+ {children}
227
+ <ChevronRight className="ml-auto" />
228
+ </DropdownMenuPrimitive.SubTrigger>
229
+ )
230
+ }
231
+
232
+ function DropdownMenuSubContent({
233
+ className,
234
+ ...props
235
+ }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {
236
+ return (
237
+ <DropdownMenuPrimitive.SubContent
238
+ data-slot="dropdown-menu-sub-content"
239
+ className={cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-[96px] rounded-md p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden", className )}
240
+ {...props}
241
+ />
242
+ )
243
+ }
244
+
245
+ export {
246
+ DropdownMenu,
247
+ DropdownMenuPortal,
248
+ DropdownMenuTrigger,
249
+ DropdownMenuContent,
250
+ DropdownMenuGroup,
251
+ DropdownMenuLabel,
252
+ DropdownMenuItem,
253
+ DropdownMenuCheckboxItem,
254
+ DropdownMenuRadioGroup,
255
+ DropdownMenuRadioItem,
256
+ DropdownMenuSeparator,
257
+ DropdownMenuShortcut,
258
+ DropdownMenuSub,
259
+ DropdownMenuSubTrigger,
260
+ DropdownMenuSubContent,
261
+ }
@@ -0,0 +1,19 @@
1
+ import * as React from "react"
2
+
3
+ import { cn } from "../../lib/utils"
4
+
5
+ function Input({ className, type, ...props }: React.ComponentProps<"input">) {
6
+ return (
7
+ <input
8
+ type={type}
9
+ data-slot="input"
10
+ className={cn(
11
+ "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
12
+ className
13
+ )}
14
+ {...props}
15
+ />
16
+ )
17
+ }
18
+
19
+ export { Input }
@@ -0,0 +1,24 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Label as LabelPrimitive } from "radix-ui"
5
+
6
+ import { cn } from "../../lib/utils"
7
+
8
+ function Label({
9
+ className,
10
+ ...props
11
+ }: React.ComponentProps<typeof LabelPrimitive.Root>) {
12
+ return (
13
+ <LabelPrimitive.Root
14
+ data-slot="label"
15
+ className={cn(
16
+ "gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed",
17
+ className
18
+ )}
19
+ {...props}
20
+ />
21
+ )
22
+ }
23
+
24
+ export { Label }
@@ -0,0 +1,28 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Separator as SeparatorPrimitive } from "radix-ui"
5
+
6
+ import { cn } from "../../lib/utils"
7
+
8
+ function Separator({
9
+ className,
10
+ orientation = "horizontal",
11
+ decorative = true,
12
+ ...props
13
+ }: React.ComponentProps<typeof SeparatorPrimitive.Root>) {
14
+ return (
15
+ <SeparatorPrimitive.Root
16
+ data-slot="separator"
17
+ decorative={decorative}
18
+ orientation={orientation}
19
+ className={cn(
20
+ "bg-border shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",
21
+ className
22
+ )}
23
+ {...props}
24
+ />
25
+ )
26
+ }
27
+
28
+ export { Separator }
@@ -0,0 +1,133 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { Dialog as SheetPrimitive } from "radix-ui"
5
+ import { X } from "lucide-react"
6
+
7
+ import { cn } from "../../lib/utils"
8
+ import { Button } from "./button"
9
+
10
+ function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
11
+ return <SheetPrimitive.Root data-slot="sheet" {...props} />
12
+ }
13
+
14
+ function SheetTrigger({
15
+ ...props
16
+ }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
17
+ return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
18
+ }
19
+
20
+ function SheetClose({
21
+ ...props
22
+ }: React.ComponentProps<typeof SheetPrimitive.Close>) {
23
+ return <SheetPrimitive.Close data-slot="sheet-close" {...props} />
24
+ }
25
+
26
+ function SheetPortal({
27
+ ...props
28
+ }: React.ComponentProps<typeof SheetPrimitive.Portal>) {
29
+ return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />
30
+ }
31
+
32
+ function SheetOverlay({
33
+ className,
34
+ ...props
35
+ }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
36
+ return (
37
+ <SheetPrimitive.Overlay
38
+ data-slot="sheet-overlay"
39
+ className={cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 z-50", className)}
40
+ {...props}
41
+ />
42
+ )
43
+ }
44
+
45
+ function SheetContent({
46
+ className,
47
+ children,
48
+ side = "right",
49
+ showCloseButton = true,
50
+ ...props
51
+ }: React.ComponentProps<typeof SheetPrimitive.Content> & {
52
+ side?: "top" | "right" | "bottom" | "left"
53
+ showCloseButton?: boolean
54
+ }) {
55
+ return (
56
+ <SheetPortal>
57
+ <SheetOverlay />
58
+ <SheetPrimitive.Content
59
+ data-slot="sheet-content"
60
+ data-side={side}
61
+ className={cn("bg-background data-open:animate-in data-closed:animate-out data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 fixed z-50 flex flex-col gap-4 bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm", className)}
62
+ {...props}
63
+ >
64
+ {children}
65
+ {showCloseButton && (
66
+ <SheetPrimitive.Close data-slot="sheet-close" asChild>
67
+ <Button variant="ghost" className="absolute top-4 right-4" size="icon-sm">
68
+ <X />
69
+ <span className="sr-only">Close</span>
70
+ </Button>
71
+ </SheetPrimitive.Close>
72
+ )}
73
+ </SheetPrimitive.Content>
74
+ </SheetPortal>
75
+ )
76
+ }
77
+
78
+ function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
79
+ return (
80
+ <div
81
+ data-slot="sheet-header"
82
+ className={cn("gap-1.5 p-4 flex flex-col", className)}
83
+ {...props}
84
+ />
85
+ )
86
+ }
87
+
88
+ function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
89
+ return (
90
+ <div
91
+ data-slot="sheet-footer"
92
+ className={cn("gap-2 p-4 mt-auto flex flex-col", className)}
93
+ {...props}
94
+ />
95
+ )
96
+ }
97
+
98
+ function SheetTitle({
99
+ className,
100
+ ...props
101
+ }: React.ComponentProps<typeof SheetPrimitive.Title>) {
102
+ return (
103
+ <SheetPrimitive.Title
104
+ data-slot="sheet-title"
105
+ className={cn("text-foreground font-medium", className)}
106
+ {...props}
107
+ />
108
+ )
109
+ }
110
+
111
+ function SheetDescription({
112
+ className,
113
+ ...props
114
+ }: React.ComponentProps<typeof SheetPrimitive.Description>) {
115
+ return (
116
+ <SheetPrimitive.Description
117
+ data-slot="sheet-description"
118
+ className={cn("text-muted-foreground text-sm", className)}
119
+ {...props}
120
+ />
121
+ )
122
+ }
123
+
124
+ export {
125
+ Sheet,
126
+ SheetTrigger,
127
+ SheetClose,
128
+ SheetContent,
129
+ SheetHeader,
130
+ SheetFooter,
131
+ SheetTitle,
132
+ SheetDescription,
133
+ }