@octanejs/shadcn 0.0.51 → 0.0.53
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/package.json +9 -9
- package/src/bases/base-ui/ui/accordion.tsrx +3 -1
- package/src/bases/base-ui/ui/alert-dialog.tsrx +6 -5
- package/src/bases/base-ui/ui/alert.tsrx +3 -2
- package/src/bases/base-ui/ui/aspect-ratio.tsrx +5 -3
- package/src/bases/base-ui/ui/badge.tsrx +2 -1
- package/src/bases/base-ui/ui/breadcrumb.tsrx +4 -4
- package/src/bases/base-ui/ui/button.tsrx +17 -10
- package/src/bases/base-ui/ui/context-menu.tsrx +37 -29
- package/src/bases/base-ui/ui/dialog.tsrx +6 -4
- package/src/bases/base-ui/ui/dropdown-menu.tsrx +37 -29
- package/src/bases/base-ui/ui/empty.tsrx +1 -1
- package/src/bases/base-ui/ui/field.tsrx +17 -11
- package/src/bases/base-ui/ui/hover-card.tsrx +15 -16
- package/src/bases/base-ui/ui/item.tsrx +3 -2
- package/src/bases/base-ui/ui/kbd.tsrx +1 -1
- package/src/bases/base-ui/ui/menubar.tsrx +38 -34
- package/src/bases/base-ui/ui/native-select.tsrx +3 -4
- package/src/bases/base-ui/ui/navigation-menu.tsrx +113 -87
- package/src/bases/base-ui/ui/pagination.tsrx +6 -2
- package/src/bases/base-ui/ui/popover.tsrx +15 -16
- package/src/bases/base-ui/ui/radio-group.tsrx +1 -3
- package/src/bases/base-ui/ui/scroll-area.tsrx +33 -27
- package/src/bases/base-ui/ui/select.tsrx +138 -106
- package/src/bases/base-ui/ui/sheet.tsrx +6 -4
- package/src/bases/base-ui/ui/sidebar.tsrx +65 -44
- package/src/bases/base-ui/ui/slider.tsrx +1 -3
- package/src/bases/base-ui/ui/tabs.tsrx +1 -1
- package/src/bases/base-ui/ui/toggle-group.tsrx +3 -3
- package/src/bases/base-ui/ui/toggle.tsrx +3 -2
- package/src/bases/base-ui/ui/tooltip.tsrx +17 -17
- package/src/bases/radix/ui/accordion.tsrx +3 -1
- package/src/bases/radix/ui/alert-dialog.tsrx +1 -1
- package/src/bases/radix/ui/alert.tsrx +15 -14
- package/src/bases/radix/ui/badge.tsrx +2 -1
- package/src/bases/radix/ui/button.tsrx +17 -10
- package/src/bases/radix/ui/context-menu.tsrx +20 -10
- package/src/bases/radix/ui/dropdown-menu.tsrx +16 -9
- package/src/bases/radix/ui/empty.tsrx +1 -1
- package/src/bases/radix/ui/field.tsrx +17 -11
- package/src/bases/radix/ui/item.tsrx +3 -2
- package/src/bases/radix/ui/menubar.tsrx +17 -14
- package/src/bases/radix/ui/native-select.tsrx +8 -8
- package/src/bases/radix/ui/navigation-menu.tsrx +2 -3
- package/src/bases/radix/ui/pagination.tsrx +6 -2
- package/src/bases/radix/ui/radio-group.tsrx +1 -3
- package/src/bases/radix/ui/scroll-area.tsrx +8 -2
- package/src/bases/radix/ui/select.tsrx +10 -5
- package/src/bases/radix/ui/sidebar.tsrx +61 -42
- package/src/bases/radix/ui/slider.tsrx +9 -7
- package/src/bases/radix/ui/tabs.tsrx +11 -5
- package/src/bases/radix/ui/toggle.tsrx +3 -2
- package/src/bases/radix/ui/tooltip.tsrx +2 -1
- package/src/bases/react-aria/ui/accordion.tsrx +58 -47
- package/src/bases/react-aria/ui/alert-dialog.tsrx +118 -92
- package/src/bases/react-aria/ui/alert.tsrx +39 -32
- package/src/bases/react-aria/ui/aspect-ratio.tsrx +12 -8
- package/src/bases/react-aria/ui/avatar.tsrx +73 -57
- package/src/bases/react-aria/ui/badge.tsrx +19 -12
- package/src/bases/react-aria/ui/breadcrumb.tsrx +66 -57
- package/src/bases/react-aria/ui/button.tsrx +17 -10
- package/src/bases/react-aria/ui/card.tsrx +63 -49
- package/src/bases/react-aria/ui/checkbox.tsrx +25 -19
- package/src/bases/react-aria/ui/dialog.tsrx +103 -83
- package/src/bases/react-aria/ui/empty.tsrx +58 -44
- package/src/bases/react-aria/ui/field.tsrx +142 -100
- package/src/bases/react-aria/ui/input.tsrx +2 -3
- package/src/bases/react-aria/ui/item.tsrx +98 -78
- package/src/bases/react-aria/ui/kbd.tsrx +1 -1
- package/src/bases/react-aria/ui/label.tsrx +12 -10
- package/src/bases/react-aria/ui/native-select.tsrx +38 -30
- package/src/bases/react-aria/ui/pagination.tsrx +76 -60
- package/src/bases/react-aria/ui/popover.tsrx +32 -22
- package/src/bases/react-aria/ui/radio-group.tsrx +30 -23
- package/src/bases/react-aria/ui/scroll-area.tsrx +12 -8
- package/src/bases/react-aria/ui/sheet.tsrx +92 -73
- package/src/bases/react-aria/ui/skeleton.tsrx +7 -5
- package/src/bases/react-aria/ui/slider.tsrx +44 -38
- package/src/bases/react-aria/ui/switch.tsrx +28 -20
- package/src/bases/react-aria/ui/table.tsrx +67 -51
- package/src/bases/react-aria/ui/tabs.tsrx +40 -31
- package/src/bases/react-aria/ui/textarea.tsrx +2 -3
- package/src/bases/react-aria/ui/toggle.tsrx +11 -8
|
@@ -4,22 +4,26 @@ import { cn } from 'cn';
|
|
|
4
4
|
import type { HostProps } from '../../../lib/types';
|
|
5
5
|
|
|
6
6
|
export function Empty({ className, ...props }: HostProps<'div'>) {
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
return (
|
|
8
|
+
<div
|
|
9
|
+
data-slot="empty"
|
|
10
|
+
className={cn(
|
|
11
|
+
'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance',
|
|
12
|
+
className,
|
|
13
|
+
)}
|
|
14
|
+
{...props}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
export function EmptyHeader({ className, ...props }: HostProps<'div'>) {
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
return (
|
|
21
|
+
<div
|
|
22
|
+
data-slot="empty-header"
|
|
23
|
+
className={cn('flex max-w-sm flex-col items-center gap-2', className)}
|
|
24
|
+
{...props}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
const emptyMediaVariants = cva(
|
|
@@ -28,7 +32,7 @@ const emptyMediaVariants = cva(
|
|
|
28
32
|
variants: {
|
|
29
33
|
variant: {
|
|
30
34
|
default: 'bg-transparent',
|
|
31
|
-
icon:
|
|
35
|
+
icon: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4",
|
|
32
36
|
},
|
|
33
37
|
},
|
|
34
38
|
defaultVariants: {
|
|
@@ -37,43 +41,53 @@ const emptyMediaVariants = cva(
|
|
|
37
41
|
},
|
|
38
42
|
);
|
|
39
43
|
|
|
40
|
-
export function EmptyMedia({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
export function EmptyMedia({
|
|
45
|
+
className,
|
|
46
|
+
variant = 'default',
|
|
47
|
+
...props
|
|
48
|
+
}: HostProps<'div'> & VariantProps<typeof emptyMediaVariants>) {
|
|
49
|
+
return (
|
|
50
|
+
<div
|
|
51
|
+
data-slot="empty-icon"
|
|
52
|
+
data-variant={variant}
|
|
53
|
+
className={cn(emptyMediaVariants({ variant, className }))}
|
|
54
|
+
{...props}
|
|
55
|
+
/>
|
|
56
|
+
);
|
|
49
57
|
}
|
|
50
58
|
|
|
51
59
|
export function EmptyTitle({ className, ...props }: HostProps<'div'>) {
|
|
52
|
-
return
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
return (
|
|
61
|
+
<div
|
|
62
|
+
data-slot="empty-title"
|
|
63
|
+
className={cn('text-sm font-medium tracking-tight', className)}
|
|
64
|
+
{...props}
|
|
65
|
+
/>
|
|
66
|
+
);
|
|
57
67
|
}
|
|
58
68
|
|
|
59
69
|
export function EmptyDescription({ className, ...props }: HostProps<'p'>) {
|
|
60
|
-
return
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
return (
|
|
71
|
+
<div
|
|
72
|
+
data-slot="empty-description"
|
|
73
|
+
className={cn(
|
|
74
|
+
'text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',
|
|
75
|
+
className,
|
|
76
|
+
)}
|
|
77
|
+
{...props}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
68
80
|
}
|
|
69
81
|
|
|
70
82
|
export function EmptyContent({ className, ...props }: HostProps<'div'>) {
|
|
71
|
-
return
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
return (
|
|
84
|
+
<div
|
|
85
|
+
data-slot="empty-content"
|
|
86
|
+
className={cn(
|
|
87
|
+
'flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance',
|
|
88
|
+
className,
|
|
89
|
+
)}
|
|
90
|
+
{...props}
|
|
91
|
+
/>
|
|
92
|
+
);
|
|
79
93
|
}
|
|
@@ -7,47 +7,59 @@ import { Label } from './label.tsrx';
|
|
|
7
7
|
import { Separator } from './separator.tsrx';
|
|
8
8
|
|
|
9
9
|
export function FieldSet({ className, ...props }: HostProps<'fieldset'>) {
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
return (
|
|
11
|
+
<fieldset
|
|
12
|
+
data-slot="field-set"
|
|
13
|
+
className={cn(
|
|
14
|
+
'flex flex-col gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3',
|
|
15
|
+
className,
|
|
16
|
+
)}
|
|
17
|
+
{...props}
|
|
18
|
+
/>
|
|
19
|
+
);
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
export function FieldLegend({
|
|
22
|
+
export function FieldLegend({
|
|
23
|
+
className,
|
|
24
|
+
variant = 'legend',
|
|
25
|
+
...props
|
|
26
|
+
}: HostProps<'legend'> & {
|
|
21
27
|
variant?: 'legend' | 'label';
|
|
22
28
|
}) {
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
return (
|
|
30
|
+
<legend
|
|
31
|
+
data-slot="field-legend"
|
|
32
|
+
data-variant={variant}
|
|
33
|
+
className={cn(
|
|
34
|
+
'mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base',
|
|
35
|
+
className,
|
|
36
|
+
)}
|
|
37
|
+
{...props}
|
|
38
|
+
/>
|
|
39
|
+
);
|
|
32
40
|
}
|
|
33
41
|
|
|
34
42
|
export function FieldGroup({ className, ...props }: HostProps<'div'>) {
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
return (
|
|
44
|
+
<div
|
|
45
|
+
data-slot="field-group"
|
|
46
|
+
className={cn(
|
|
47
|
+
'group/field-group @container/field-group flex w-full flex-col gap-5 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4',
|
|
48
|
+
className,
|
|
49
|
+
)}
|
|
50
|
+
{...props}
|
|
51
|
+
/>
|
|
52
|
+
);
|
|
43
53
|
}
|
|
44
54
|
|
|
45
55
|
const fieldVariants = cva('group/field flex w-full gap-2 data-[invalid=true]:text-destructive', {
|
|
46
56
|
variants: {
|
|
47
57
|
orientation: {
|
|
48
58
|
vertical: 'flex-col *:w-full [&>.sr-only]:w-auto',
|
|
49
|
-
horizontal:
|
|
50
|
-
|
|
59
|
+
horizontal:
|
|
60
|
+
'flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',
|
|
61
|
+
responsive:
|
|
62
|
+
'flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',
|
|
51
63
|
},
|
|
52
64
|
},
|
|
53
65
|
defaultVariants: {
|
|
@@ -55,84 +67,110 @@ const fieldVariants = cva('group/field flex w-full gap-2 data-[invalid=true]:tex
|
|
|
55
67
|
},
|
|
56
68
|
});
|
|
57
69
|
|
|
58
|
-
export function Field({
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
export function Field({
|
|
71
|
+
className,
|
|
72
|
+
orientation = 'vertical',
|
|
73
|
+
...props
|
|
74
|
+
}: HostProps<'div'> & VariantProps<typeof fieldVariants>) {
|
|
75
|
+
return (
|
|
76
|
+
<div
|
|
77
|
+
role="group"
|
|
78
|
+
data-slot="field"
|
|
79
|
+
data-orientation={orientation}
|
|
80
|
+
className={cn(fieldVariants({ orientation }), className)}
|
|
81
|
+
{...props}
|
|
82
|
+
/>
|
|
83
|
+
);
|
|
68
84
|
}
|
|
69
85
|
|
|
70
86
|
export function FieldContent({ className, ...props }: HostProps<'div'>) {
|
|
71
|
-
return
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
87
|
+
return (
|
|
88
|
+
<div
|
|
89
|
+
data-slot="field-content"
|
|
90
|
+
className={cn('group/field-content flex flex-1 flex-col gap-0.5 leading-snug', className)}
|
|
91
|
+
{...props}
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
76
94
|
}
|
|
77
95
|
|
|
78
96
|
export function FieldLabel({ className, ...props }: Record<string, any>) {
|
|
79
|
-
return
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
97
|
+
return (
|
|
98
|
+
<Label
|
|
99
|
+
data-slot="field-label"
|
|
100
|
+
className={cn(
|
|
101
|
+
'group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-data-selected:border-primary/30 has-data-selected:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-2.5 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 dark:has-data-selected:border-primary/20 dark:has-data-selected:bg-primary/10',
|
|
102
|
+
'has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col',
|
|
103
|
+
className,
|
|
104
|
+
)}
|
|
105
|
+
{...props}
|
|
106
|
+
/>
|
|
107
|
+
);
|
|
88
108
|
}
|
|
89
109
|
|
|
90
110
|
export function FieldTitle({ className, ...props }: HostProps<'div'>) {
|
|
91
|
-
return
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
111
|
+
return (
|
|
112
|
+
<div
|
|
113
|
+
data-slot="field-label"
|
|
114
|
+
className={cn(
|
|
115
|
+
'flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50',
|
|
116
|
+
className,
|
|
117
|
+
)}
|
|
118
|
+
{...props}
|
|
119
|
+
/>
|
|
120
|
+
);
|
|
99
121
|
}
|
|
100
122
|
|
|
101
123
|
export function FieldDescription({ className, ...props }: HostProps<'p'>) {
|
|
102
|
-
return
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
124
|
+
return (
|
|
125
|
+
<p
|
|
126
|
+
data-slot="field-description"
|
|
127
|
+
className={cn(
|
|
128
|
+
'text-left text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5',
|
|
129
|
+
'last:mt-0 nth-last-2:-mt-1',
|
|
130
|
+
'[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',
|
|
131
|
+
className,
|
|
132
|
+
)}
|
|
133
|
+
{...props}
|
|
134
|
+
/>
|
|
135
|
+
);
|
|
112
136
|
}
|
|
113
137
|
|
|
114
|
-
export function FieldSeparator({
|
|
138
|
+
export function FieldSeparator({
|
|
139
|
+
children,
|
|
140
|
+
className,
|
|
141
|
+
...props
|
|
142
|
+
}: HostProps<'div'> & {
|
|
115
143
|
children?: OctaneNode;
|
|
116
144
|
}) {
|
|
117
|
-
return
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
145
|
+
return (
|
|
146
|
+
<div
|
|
147
|
+
data-slot="field-separator"
|
|
148
|
+
data-content={!!children}
|
|
149
|
+
className={cn(
|
|
150
|
+
'relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2',
|
|
151
|
+
className,
|
|
152
|
+
)}
|
|
153
|
+
{...props}
|
|
154
|
+
>
|
|
155
|
+
<Separator className="absolute inset-0 top-1/2" />
|
|
156
|
+
{children && (
|
|
157
|
+
<span
|
|
158
|
+
className="relative mx-auto block w-fit bg-background px-2 text-muted-foreground"
|
|
159
|
+
data-slot="field-separator-content"
|
|
160
|
+
>
|
|
161
|
+
{children}
|
|
162
|
+
</span>
|
|
163
|
+
)}
|
|
164
|
+
</div>
|
|
165
|
+
);
|
|
133
166
|
}
|
|
134
167
|
|
|
135
|
-
export function FieldError({
|
|
168
|
+
export function FieldError({
|
|
169
|
+
className,
|
|
170
|
+
children,
|
|
171
|
+
errors,
|
|
172
|
+
...props
|
|
173
|
+
}: HostProps<'div'> & {
|
|
136
174
|
errors?: Array<{ message?: string } | undefined>;
|
|
137
175
|
}) {
|
|
138
176
|
const content = useMemo(() => {
|
|
@@ -144,27 +182,31 @@ export function FieldError({ className, children, errors, ...props }: HostProps<
|
|
|
144
182
|
return null;
|
|
145
183
|
}
|
|
146
184
|
|
|
147
|
-
const uniqueErrors = [
|
|
148
|
-
...new Map(errors.map((error) => [error?.message, error])).values(),
|
|
149
|
-
];
|
|
185
|
+
const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
|
|
150
186
|
|
|
151
187
|
if (uniqueErrors?.length == 1) {
|
|
152
188
|
return uniqueErrors[0]?.message;
|
|
153
189
|
}
|
|
154
190
|
|
|
155
|
-
return
|
|
156
|
-
|
|
157
|
-
|
|
191
|
+
return (
|
|
192
|
+
<ul className="ml-4 flex list-disc flex-col gap-1">
|
|
193
|
+
{uniqueErrors.map((error, index) => error?.message && <li key={index}>{error.message}</li>)}
|
|
194
|
+
</ul>
|
|
195
|
+
);
|
|
158
196
|
}, [children, errors]);
|
|
159
197
|
|
|
160
198
|
if (!content) {
|
|
161
199
|
return null;
|
|
162
200
|
}
|
|
163
201
|
|
|
164
|
-
return
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
202
|
+
return (
|
|
203
|
+
<div
|
|
204
|
+
role="alert"
|
|
205
|
+
data-slot="field-error"
|
|
206
|
+
className={cn('text-sm font-normal text-destructive', className)}
|
|
207
|
+
{...props}
|
|
208
|
+
>
|
|
209
|
+
{content}
|
|
210
|
+
</div>
|
|
211
|
+
);
|
|
170
212
|
}
|
|
@@ -16,9 +16,8 @@ export function Input({ className, type, ...props }: InputProps) @{
|
|
|
16
16
|
<InputPrimitive
|
|
17
17
|
type={type}
|
|
18
18
|
data-slot="input"
|
|
19
|
-
className={composeRenderProps(
|
|
20
|
-
|
|
21
|
-
(resolved: string | undefined) => cn(
|
|
19
|
+
className={composeRenderProps(className, (resolved: string | undefined) =>
|
|
20
|
+
cn(
|
|
22
21
|
'h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',
|
|
23
22
|
resolved,
|
|
24
23
|
),
|