@octanejs/shadcn 0.0.52 → 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
|
@@ -34,22 +34,21 @@ import { cn } from 'cn';
|
|
|
34
34
|
type Props = { className?: string; children?: OctaneNode } & Record<string, unknown>;
|
|
35
35
|
|
|
36
36
|
/** Props routed to the Positioner rather than the popup. */
|
|
37
|
-
export type BaseUiPositioningProps =
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
>;
|
|
37
|
+
export type BaseUiPositioningProps = Pick<
|
|
38
|
+
MenuPrimitive.Positioner.Props,
|
|
39
|
+
| 'side'
|
|
40
|
+
| 'sideOffset'
|
|
41
|
+
| 'align'
|
|
42
|
+
| 'alignOffset'
|
|
43
|
+
| 'anchor'
|
|
44
|
+
| 'positionMethod'
|
|
45
|
+
| 'collisionBoundary'
|
|
46
|
+
| 'collisionPadding'
|
|
47
|
+
| 'collisionAvoidance'
|
|
48
|
+
| 'arrowPadding'
|
|
49
|
+
| 'sticky'
|
|
50
|
+
| 'disableAnchorTracking'
|
|
51
|
+
>;
|
|
53
52
|
|
|
54
53
|
export function Menubar({ className, ...props }: Props) @{
|
|
55
54
|
<MenubarPrimitive
|
|
@@ -129,7 +128,12 @@ export function MenubarContent({
|
|
|
129
128
|
</MenuPrimitive.Portal>
|
|
130
129
|
}
|
|
131
130
|
|
|
132
|
-
export function MenubarItem({
|
|
131
|
+
export function MenubarItem({
|
|
132
|
+
className,
|
|
133
|
+
inset,
|
|
134
|
+
variant = 'default',
|
|
135
|
+
...props
|
|
136
|
+
}: Props & {
|
|
133
137
|
inset?: boolean;
|
|
134
138
|
variant?: 'default' | 'destructive';
|
|
135
139
|
}) @{
|
|
@@ -138,17 +142,19 @@ export function MenubarItem({ className, inset, variant = 'default', ...props }:
|
|
|
138
142
|
data-inset={inset}
|
|
139
143
|
data-variant={variant}
|
|
140
144
|
className={cn(
|
|
141
|
-
|
|
145
|
+
"group/menubar-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!",
|
|
142
146
|
className,
|
|
143
147
|
)}
|
|
144
148
|
{...props}
|
|
145
149
|
/>
|
|
146
150
|
}
|
|
147
151
|
|
|
148
|
-
export function MenubarCheckboxItem(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
+
export function MenubarCheckboxItem(
|
|
153
|
+
props: Props & {
|
|
154
|
+
checked?: boolean;
|
|
155
|
+
inset?: boolean;
|
|
156
|
+
},
|
|
157
|
+
) @{
|
|
152
158
|
const { className, children: _children, checked, inset, ...rest } = props;
|
|
153
159
|
|
|
154
160
|
<MenuPrimitive.CheckboxItem
|
|
@@ -161,9 +167,7 @@ export function MenubarCheckboxItem(props: Props & {
|
|
|
161
167
|
checked={checked}
|
|
162
168
|
{...rest}
|
|
163
169
|
>
|
|
164
|
-
<span
|
|
165
|
-
className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4"
|
|
166
|
-
>
|
|
170
|
+
<span className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4">
|
|
167
171
|
<MenuPrimitive.CheckboxItemIndicator>
|
|
168
172
|
<CheckIcon />
|
|
169
173
|
</MenuPrimitive.CheckboxItemIndicator>
|
|
@@ -172,24 +176,24 @@ export function MenubarCheckboxItem(props: Props & {
|
|
|
172
176
|
</MenuPrimitive.CheckboxItem>
|
|
173
177
|
}
|
|
174
178
|
|
|
175
|
-
export function MenubarRadioItem(
|
|
176
|
-
className
|
|
177
|
-
|
|
178
|
-
|
|
179
|
+
export function MenubarRadioItem(
|
|
180
|
+
props: Omit<MenuPrimitive.RadioItem.Props, 'className'> & {
|
|
181
|
+
className?: string;
|
|
182
|
+
inset?: boolean;
|
|
183
|
+
},
|
|
184
|
+
) @{
|
|
179
185
|
const { className, children: _children, inset, ...rest } = props;
|
|
180
186
|
|
|
181
187
|
<MenuPrimitive.RadioItem
|
|
182
188
|
data-slot="menubar-radio-item"
|
|
183
189
|
data-inset={inset}
|
|
184
190
|
className={cn(
|
|
185
|
-
|
|
191
|
+
"relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
186
192
|
className,
|
|
187
193
|
)}
|
|
188
194
|
{...rest}
|
|
189
195
|
>
|
|
190
|
-
<span
|
|
191
|
-
className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4"
|
|
192
|
-
>
|
|
196
|
+
<span className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4">
|
|
193
197
|
<MenuPrimitive.RadioItemIndicator>
|
|
194
198
|
<CheckIcon />
|
|
195
199
|
</MenuPrimitive.RadioItemIndicator>
|
|
@@ -239,7 +243,7 @@ export function MenubarSubTrigger(props: Props & { inset?: boolean }) @{
|
|
|
239
243
|
data-slot="menubar-sub-trigger"
|
|
240
244
|
data-inset={inset}
|
|
241
245
|
className={cn(
|
|
242
|
-
|
|
246
|
+
"flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4",
|
|
243
247
|
className,
|
|
244
248
|
)}
|
|
245
249
|
{...rest}
|
|
@@ -12,10 +12,9 @@ import { ChevronDownIcon } from '@octanejs/lucide';
|
|
|
12
12
|
import { cn } from 'cn';
|
|
13
13
|
import type { HostProps } from '../../../lib/types';
|
|
14
14
|
|
|
15
|
-
export type NativeSelectProps =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
15
|
+
export type NativeSelectProps = Omit<HostProps<'select'>, 'size'> & {
|
|
16
|
+
size?: 'sm' | 'default';
|
|
17
|
+
};
|
|
19
18
|
|
|
20
19
|
export function NativeSelect({ className, size = 'default', ...props }: NativeSelectProps) @{
|
|
21
20
|
<div
|
|
@@ -12,37 +12,45 @@ function NavigationMenu({
|
|
|
12
12
|
children,
|
|
13
13
|
...props
|
|
14
14
|
}: NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, 'align'>) {
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
return (
|
|
16
|
+
<NavigationMenuPrimitive.Root
|
|
17
|
+
data-slot="navigation-menu"
|
|
18
|
+
className={cn(
|
|
19
|
+
'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
{...props}
|
|
23
|
+
>
|
|
24
|
+
{children}
|
|
25
|
+
<NavigationMenuPositioner align={align} />
|
|
26
|
+
</NavigationMenuPrimitive.Root>
|
|
27
|
+
);
|
|
26
28
|
}
|
|
27
29
|
|
|
28
|
-
function NavigationMenuList({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
function NavigationMenuList({
|
|
31
|
+
className,
|
|
32
|
+
...props
|
|
33
|
+
}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.List>) {
|
|
34
|
+
return (
|
|
35
|
+
<NavigationMenuPrimitive.List
|
|
36
|
+
data-slot="navigation-menu-list"
|
|
37
|
+
className={cn('gap-0 group flex flex-1 list-none items-center justify-center', className)}
|
|
38
|
+
{...props}
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
36
41
|
}
|
|
37
42
|
|
|
38
|
-
function NavigationMenuItem({
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
function NavigationMenuItem({
|
|
44
|
+
className,
|
|
45
|
+
...props
|
|
46
|
+
}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Item>) {
|
|
47
|
+
return (
|
|
48
|
+
<NavigationMenuPrimitive.Item
|
|
49
|
+
data-slot="navigation-menu-item"
|
|
50
|
+
className={cn('relative', className)}
|
|
51
|
+
{...props}
|
|
52
|
+
/>
|
|
53
|
+
);
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
const navigationMenuTriggerStyle = cva(
|
|
@@ -54,29 +62,32 @@ function NavigationMenuTrigger({
|
|
|
54
62
|
children,
|
|
55
63
|
...props
|
|
56
64
|
}: NavigationMenuPrimitive.Trigger.Props) {
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
return (
|
|
66
|
+
<NavigationMenuPrimitive.Trigger
|
|
67
|
+
data-slot="navigation-menu-trigger"
|
|
68
|
+
className={cn(navigationMenuTriggerStyle(), 'group', className)}
|
|
69
|
+
{...props}
|
|
70
|
+
>
|
|
71
|
+
{children}{' '}
|
|
72
|
+
<ChevronDownIcon
|
|
73
|
+
className="relative top-px ml-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180"
|
|
74
|
+
aria-hidden="true"
|
|
75
|
+
/>
|
|
76
|
+
</NavigationMenuPrimitive.Trigger>
|
|
77
|
+
);
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
function NavigationMenuContent({ className, ...props }: NavigationMenuPrimitive.Content.Props) {
|
|
72
|
-
return
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
return (
|
|
82
|
+
<NavigationMenuPrimitive.Content
|
|
83
|
+
data-slot="navigation-menu-content"
|
|
84
|
+
className={cn(
|
|
85
|
+
'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-1 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto transition-[opacity,transform,translate] duration-[0.35s] data-ending-style:opacity-0 data-starting-style:opacity-0 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',
|
|
86
|
+
className,
|
|
87
|
+
)}
|
|
88
|
+
{...props}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
function NavigationMenuPositioner({
|
|
@@ -87,51 +98,66 @@ function NavigationMenuPositioner({
|
|
|
87
98
|
alignOffset = 0,
|
|
88
99
|
...props
|
|
89
100
|
}: NavigationMenuPrimitive.Positioner.Props) {
|
|
90
|
-
return
|
|
91
|
-
<NavigationMenuPrimitive.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
<NavigationMenuPrimitive.Popup
|
|
103
|
-
className="bg-popover text-popover-foreground ring-foreground/10 rounded-lg shadow ring-1 outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0 data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]"
|
|
101
|
+
return (
|
|
102
|
+
<NavigationMenuPrimitive.Portal>
|
|
103
|
+
<NavigationMenuPrimitive.Positioner
|
|
104
|
+
side={side}
|
|
105
|
+
sideOffset={sideOffset}
|
|
106
|
+
align={align}
|
|
107
|
+
alignOffset={alignOffset}
|
|
108
|
+
className={cn(
|
|
109
|
+
'ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0 isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] data-instant:transition-none',
|
|
110
|
+
className,
|
|
111
|
+
)}
|
|
112
|
+
{...props}
|
|
104
113
|
>
|
|
105
|
-
<NavigationMenuPrimitive.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
114
|
+
<NavigationMenuPrimitive.Popup className="bg-popover text-popover-foreground ring-foreground/10 rounded-lg shadow ring-1 outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0 data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) transition-[opacity,transform,width,height,scale,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)]">
|
|
115
|
+
<NavigationMenuPrimitive.Viewport className="relative size-full overflow-hidden" />
|
|
116
|
+
</NavigationMenuPrimitive.Popup>
|
|
117
|
+
</NavigationMenuPrimitive.Positioner>
|
|
118
|
+
</NavigationMenuPrimitive.Portal>
|
|
119
|
+
);
|
|
109
120
|
}
|
|
110
121
|
|
|
111
122
|
function NavigationMenuLink({ className, ...props }: NavigationMenuPrimitive.Link.Props) {
|
|
112
|
-
return
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
123
|
+
return (
|
|
124
|
+
<NavigationMenuPrimitive.Link
|
|
125
|
+
data-slot="navigation-menu-link"
|
|
126
|
+
className={cn(
|
|
127
|
+
"data-active:focus:bg-muted data-active:hover:bg-muted data-active:bg-muted/50 focus-visible:ring-ring/50 hover:bg-muted focus:bg-muted flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none focus-visible:ring-3 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md [&_svg:not([class*='size-'])]:size-4",
|
|
128
|
+
className,
|
|
129
|
+
)}
|
|
130
|
+
{...props}
|
|
131
|
+
/>
|
|
132
|
+
);
|
|
120
133
|
}
|
|
121
134
|
|
|
122
|
-
function NavigationMenuIndicator({
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
className
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
function NavigationMenuIndicator({
|
|
136
|
+
className,
|
|
137
|
+
...props
|
|
138
|
+
}: React.ComponentPropsWithRef<typeof NavigationMenuPrimitive.Icon>) {
|
|
139
|
+
return (
|
|
140
|
+
<NavigationMenuPrimitive.Icon
|
|
141
|
+
data-slot="navigation-menu-indicator"
|
|
142
|
+
className={cn(
|
|
143
|
+
'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-1 flex h-1.5 items-end justify-center overflow-hidden',
|
|
144
|
+
className,
|
|
145
|
+
)}
|
|
146
|
+
{...props}
|
|
147
|
+
>
|
|
148
|
+
<div className="bg-border rounded-tl-sm shadow-md relative top-[60%] h-2 w-2 rotate-45" />
|
|
149
|
+
</NavigationMenuPrimitive.Icon>
|
|
150
|
+
);
|
|
135
151
|
}
|
|
136
152
|
|
|
137
|
-
export {
|
|
153
|
+
export {
|
|
154
|
+
NavigationMenu,
|
|
155
|
+
NavigationMenuContent,
|
|
156
|
+
NavigationMenuIndicator,
|
|
157
|
+
NavigationMenuItem,
|
|
158
|
+
NavigationMenuLink,
|
|
159
|
+
NavigationMenuList,
|
|
160
|
+
NavigationMenuTrigger,
|
|
161
|
+
navigationMenuTriggerStyle,
|
|
162
|
+
NavigationMenuPositioner,
|
|
163
|
+
};
|
|
@@ -95,7 +95,11 @@ export function PaginationPrevious({
|
|
|
95
95
|
</PaginationLink>
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
export function PaginationNext({
|
|
98
|
+
export function PaginationNext({
|
|
99
|
+
className,
|
|
100
|
+
text = 'Next',
|
|
101
|
+
...props
|
|
102
|
+
}: PaginationLinkProps & {
|
|
99
103
|
text?: string;
|
|
100
104
|
}) @{
|
|
101
105
|
<PaginationLink
|
|
@@ -114,7 +118,7 @@ export function PaginationEllipsis({ className, ...props }: Props) @{
|
|
|
114
118
|
aria-hidden="true"
|
|
115
119
|
data-slot="pagination-ellipsis"
|
|
116
120
|
className={cn(
|
|
117
|
-
|
|
121
|
+
"flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
|
|
118
122
|
className,
|
|
119
123
|
)}
|
|
120
124
|
{...props}
|
|
@@ -42,22 +42,21 @@ export function PopoverTrigger(props: Record<string, unknown>) @{
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/** Props routed to the Positioner rather than the popup. */
|
|
45
|
-
export type BaseUiPositioningProps =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
>;
|
|
45
|
+
export type BaseUiPositioningProps = Pick<
|
|
46
|
+
PopoverPrimitive.Positioner.Props,
|
|
47
|
+
| 'side'
|
|
48
|
+
| 'sideOffset'
|
|
49
|
+
| 'align'
|
|
50
|
+
| 'alignOffset'
|
|
51
|
+
| 'anchor'
|
|
52
|
+
| 'positionMethod'
|
|
53
|
+
| 'collisionBoundary'
|
|
54
|
+
| 'collisionPadding'
|
|
55
|
+
| 'collisionAvoidance'
|
|
56
|
+
| 'arrowPadding'
|
|
57
|
+
| 'sticky'
|
|
58
|
+
| 'disableAnchorTracking'
|
|
59
|
+
>;
|
|
61
60
|
|
|
62
61
|
export interface PopoverContentProps extends Record<string, unknown>, BaseUiPositioningProps {
|
|
63
62
|
className?: string;
|
|
@@ -54,9 +54,7 @@ export function RadioGroupItem({ className, ...props }: ItemProps) @{
|
|
|
54
54
|
data-slot="radio-group-indicator"
|
|
55
55
|
className="flex size-full items-center justify-center"
|
|
56
56
|
>
|
|
57
|
-
<CircleIcon
|
|
58
|
-
className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary"
|
|
59
|
-
/>
|
|
57
|
+
<CircleIcon className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-primary" />
|
|
60
58
|
</RadioPrimitive.Indicator>
|
|
61
59
|
</RadioPrimitive.Root>
|
|
62
60
|
}
|
|
@@ -4,18 +4,22 @@ import { ScrollArea as ScrollAreaPrimitive } from '@octanejs/base-ui/scroll-area
|
|
|
4
4
|
import { cn } from 'cn';
|
|
5
5
|
|
|
6
6
|
function ScrollArea({ className, children, ...props }: ScrollAreaPrimitive.Root.Props) {
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
return (
|
|
8
|
+
<ScrollAreaPrimitive.Root
|
|
9
|
+
data-slot="scroll-area"
|
|
10
|
+
className={cn('relative', className)}
|
|
11
|
+
{...props}
|
|
12
|
+
>
|
|
13
|
+
<ScrollAreaPrimitive.Viewport
|
|
14
|
+
data-slot="scroll-area-viewport"
|
|
15
|
+
className="size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1"
|
|
16
|
+
>
|
|
17
|
+
{children}
|
|
18
|
+
</ScrollAreaPrimitive.Viewport>
|
|
19
|
+
<ScrollBar />
|
|
20
|
+
<ScrollAreaPrimitive.Corner />
|
|
21
|
+
</ScrollAreaPrimitive.Root>
|
|
22
|
+
);
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
function ScrollBar({
|
|
@@ -23,21 +27,23 @@ function ScrollBar({
|
|
|
23
27
|
orientation = 'vertical',
|
|
24
28
|
...props
|
|
25
29
|
}: ScrollAreaPrimitive.Scrollbar.Props) {
|
|
26
|
-
return
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
return (
|
|
31
|
+
<ScrollAreaPrimitive.Scrollbar
|
|
32
|
+
data-slot="scroll-area-scrollbar"
|
|
33
|
+
data-orientation={orientation}
|
|
34
|
+
orientation={orientation}
|
|
35
|
+
className={cn(
|
|
36
|
+
'data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent flex touch-none p-px transition-colors select-none',
|
|
37
|
+
className,
|
|
38
|
+
)}
|
|
39
|
+
{...props}
|
|
40
|
+
>
|
|
41
|
+
<ScrollAreaPrimitive.Thumb
|
|
42
|
+
data-slot="scroll-area-thumb"
|
|
43
|
+
className="rounded-full relative flex-1 bg-border"
|
|
44
|
+
/>
|
|
45
|
+
</ScrollAreaPrimitive.Scrollbar>
|
|
46
|
+
);
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
export { ScrollArea, ScrollBar };
|