@boyernick/standard-ui-react 0.1.1-canary.3 → 0.1.1-canary.34
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 +5 -3
- package/src/accordion.tsx +5 -2
- package/src/alert-dialog.tsx +1 -1
- package/src/attachment.tsx +5 -2
- package/src/autocomplete.tsx +12 -9
- package/src/badge.tsx +73 -9
- package/src/block-editor.tsx +1747 -0
- package/src/brand.tsx +2 -2
- package/src/breadcrumb.tsx +46 -21
- package/src/button.tsx +23 -12
- package/src/calendar.tsx +25 -11
- package/src/card.tsx +57 -14
- package/src/carousel.tsx +339 -15
- package/src/checkbox.tsx +36 -13
- package/src/code-block.tsx +66 -5
- package/src/collapsible.tsx +7 -3
- package/src/combobox.tsx +17 -15
- package/src/command.tsx +41 -14
- package/src/context-menu.tsx +6 -3
- package/src/date-picker.tsx +174 -0
- package/src/dialog.tsx +33 -10
- package/src/empty.tsx +4 -4
- package/src/field.tsx +4 -3
- package/src/filter-group.tsx +143 -0
- package/src/icons.tsx +55 -1
- package/src/illustrations.tsx +219 -141
- package/src/index.ts +263 -18
- package/src/input.tsx +8 -5
- package/src/kbd.tsx +49 -0
- package/src/lib/focus.ts +41 -0
- package/src/lib/motion.ts +16 -1
- package/src/lib/popup.ts +45 -0
- package/src/lifeline/company-icon.tsx +71 -0
- package/src/lifeline/index.ts +42 -0
- package/src/lifeline/lifeline-data.ts +97 -0
- package/src/lifeline/lifeline-desktop.tsx +204 -0
- package/src/lifeline/lifeline-event.tsx +108 -0
- package/src/lifeline/lifeline-fireworks.tsx +302 -0
- package/src/lifeline/lifeline-hover-image.tsx +269 -0
- package/src/lifeline/lifeline-icons.tsx +39 -0
- package/src/lifeline/lifeline-intro-timing.ts +105 -0
- package/src/lifeline/lifeline-labels.tsx +24 -0
- package/src/lifeline/lifeline-layout.ts +1 -0
- package/src/lifeline/lifeline-legend.tsx +31 -0
- package/src/lifeline/lifeline-lightbox.tsx +309 -0
- package/src/lifeline/lifeline-marker.tsx +183 -0
- package/src/lifeline/lifeline-people.tsx +99 -0
- package/src/lifeline/lifeline-photos.tsx +366 -0
- package/src/lifeline/lifeline-shell.tsx +135 -0
- package/src/lifeline/lifeline-utils.ts +83 -0
- package/src/lifeline/lifeline-vertical.tsx +482 -0
- package/src/lifeline/lifeline.tsx +69 -0
- package/src/lifeline/types.ts +112 -0
- package/src/lifeline/use-lifeline-intro.ts +130 -0
- package/src/lifeline/use-lifeline-scroll.ts +1011 -0
- package/src/lifeline/use-lifeline-vertical-scroll.ts +271 -0
- package/src/menu.tsx +7 -4
- package/src/menubar.tsx +9 -2
- package/src/minimap.tsx +296 -0
- package/src/modal.tsx +608 -0
- package/src/navigation-menu.tsx +340 -67
- package/src/number-field.tsx +336 -61
- package/src/otp-field.tsx +4 -3
- package/src/pagination.tsx +262 -42
- package/src/password-protection.tsx +345 -0
- package/src/popover.tsx +3 -1
- package/src/preview-card.tsx +3 -1
- package/src/progress.tsx +5 -0
- package/src/questionnaire.tsx +284 -0
- package/src/radio.tsx +4 -2
- package/src/scroll-area.tsx +4 -1
- package/src/select.tsx +12 -7
- package/src/sidebar.tsx +113 -28
- package/src/slider.tsx +66 -6
- package/src/sounds.tsx +6 -10
- package/src/spinner.tsx +105 -32
- package/src/switch.tsx +4 -1
- package/src/table.tsx +82 -15
- package/src/tabs.tsx +189 -38
- package/src/text-animate.tsx +71 -28
- package/src/textarea.tsx +6 -1
- package/src/timeline.tsx +378 -0
- package/src/toast.tsx +214 -35
- package/src/toggle.tsx +4 -2
- package/src/toolbar.tsx +12 -7
- package/src/tooltip.tsx +43 -3
- package/src/video-player.tsx +396 -127
- package/src/image-modal.tsx +0 -110
- package/src/markdown-editor.tsx +0 -302
package/src/navigation-menu.tsx
CHANGED
|
@@ -1,21 +1,188 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
|
|
3
3
|
import { NavigationMenu as BaseNavigationMenu } from "@base-ui/react/navigation-menu"
|
|
4
|
-
import type
|
|
4
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
5
|
+
import { createContext, useContext, useMemo, type ComponentProps } from "react"
|
|
5
6
|
import { IconChevronDownSmall } from "./icons"
|
|
6
7
|
import { cn } from "./lib/cn"
|
|
8
|
+
import { focusRing, focusRingBorder } from "./lib/focus"
|
|
7
9
|
import { motion } from "./lib/motion"
|
|
10
|
+
import { popupSurface } from "./lib/popup"
|
|
8
11
|
|
|
9
|
-
export type
|
|
12
|
+
export type NavigationMenuVariant = "plain" | "pill" | "underline"
|
|
13
|
+
export type NavigationMenuSize = "sm" | "md" | "lg"
|
|
14
|
+
type NavigationMenuOrientation = "horizontal" | "vertical"
|
|
15
|
+
|
|
16
|
+
type NavigationMenuStyleContextValue = {
|
|
17
|
+
orientation: NavigationMenuOrientation
|
|
18
|
+
size: NavigationMenuSize
|
|
19
|
+
variant: NavigationMenuVariant
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const NavigationMenuStyleContext =
|
|
23
|
+
createContext<NavigationMenuStyleContextValue>({
|
|
24
|
+
orientation: "horizontal",
|
|
25
|
+
size: "md",
|
|
26
|
+
variant: "plain",
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
const navigationMenuRootVariants = cva("relative isolate z-10 flex", {
|
|
30
|
+
variants: {
|
|
31
|
+
orientation: {
|
|
32
|
+
horizontal: "max-w-max flex-1 items-center justify-center",
|
|
33
|
+
vertical: "w-full max-w-56 flex-col items-stretch",
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: {
|
|
37
|
+
orientation: "horizontal",
|
|
38
|
+
},
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const navigationMenuListVariants = cva("group list-none", {
|
|
42
|
+
variants: {
|
|
43
|
+
orientation: {
|
|
44
|
+
horizontal: "flex flex-1 items-center justify-center gap-0.5",
|
|
45
|
+
vertical: "flex w-full flex-col items-stretch gap-0.5",
|
|
46
|
+
},
|
|
47
|
+
variant: {
|
|
48
|
+
plain: "",
|
|
49
|
+
pill: "bg-background-secondary p-1",
|
|
50
|
+
underline: "border-border-primary",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
compoundVariants: [
|
|
54
|
+
{
|
|
55
|
+
orientation: "horizontal",
|
|
56
|
+
variant: "pill",
|
|
57
|
+
className: "rounded-full",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
orientation: "vertical",
|
|
61
|
+
variant: "pill",
|
|
62
|
+
className: "rounded-lg",
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
orientation: "horizontal",
|
|
66
|
+
variant: "underline",
|
|
67
|
+
className: "border-b",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
orientation: "vertical",
|
|
71
|
+
variant: "underline",
|
|
72
|
+
className: "border-l",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
defaultVariants: {
|
|
76
|
+
orientation: "horizontal",
|
|
77
|
+
variant: "plain",
|
|
78
|
+
},
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
const navigationMenuBarItemVariants = cva(
|
|
82
|
+
cn(
|
|
83
|
+
"inline-flex cursor-pointer items-center gap-1 border border-transparent text-fg-secondary",
|
|
84
|
+
motion.colors,
|
|
85
|
+
focusRing,
|
|
86
|
+
"hover:text-fg-primary data-active:font-medium data-active:text-fg-primary data-popup-open:text-fg-primary",
|
|
87
|
+
),
|
|
88
|
+
{
|
|
89
|
+
variants: {
|
|
90
|
+
orientation: {
|
|
91
|
+
horizontal: "justify-center",
|
|
92
|
+
vertical: "w-full justify-between",
|
|
93
|
+
},
|
|
94
|
+
size: {
|
|
95
|
+
sm: "h-8 px-2.5 text-xs",
|
|
96
|
+
md: "h-9 px-3 text-sm",
|
|
97
|
+
lg: "h-10 px-3.5 text-sm",
|
|
98
|
+
},
|
|
99
|
+
variant: {
|
|
100
|
+
plain:
|
|
101
|
+
"rounded-md hover:bg-background-tertiary data-active:bg-background-tertiary data-popup-open:bg-background-tertiary",
|
|
102
|
+
pill: "rounded-full hover:bg-surface data-active:border-brand-primary-border data-active:bg-brand-primary data-active:text-brand-foreground data-popup-open:bg-surface data-popup-open:shadow-sm",
|
|
103
|
+
underline: "rounded-none hover:bg-transparent",
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
compoundVariants: [
|
|
107
|
+
{
|
|
108
|
+
orientation: "horizontal",
|
|
109
|
+
variant: "underline",
|
|
110
|
+
className:
|
|
111
|
+
"h-auto border-x-0 border-t-0 border-b-2 border-b-transparent px-2 py-2.5 data-active:border-b-brand-primary data-popup-open:border-b-brand-primary",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
orientation: "vertical",
|
|
115
|
+
variant: "underline",
|
|
116
|
+
className:
|
|
117
|
+
"border-y-0 border-r-0 border-l-2 border-l-transparent data-active:border-l-brand-primary data-popup-open:border-l-brand-primary",
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
defaultVariants: {
|
|
121
|
+
orientation: "horizontal",
|
|
122
|
+
size: "md",
|
|
123
|
+
variant: "plain",
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
const navigationMenuLinkVariants = cva(
|
|
129
|
+
cn(
|
|
130
|
+
"group/navigation-link flex cursor-pointer rounded-md text-fg-primary",
|
|
131
|
+
focusRingBorder,
|
|
132
|
+
motion.colors,
|
|
133
|
+
focusRing,
|
|
134
|
+
"hover:bg-background-tertiary focus-visible:bg-background-tertiary data-active:bg-background-tertiary",
|
|
135
|
+
),
|
|
136
|
+
{
|
|
137
|
+
variants: {
|
|
138
|
+
variant: {
|
|
139
|
+
default: "flex-col gap-0.5",
|
|
140
|
+
featured:
|
|
141
|
+
"min-h-32 flex-col justify-end gap-1 bg-background-secondary",
|
|
142
|
+
},
|
|
143
|
+
size: {
|
|
144
|
+
sm: "p-2 text-xs",
|
|
145
|
+
md: "p-2.5 text-sm",
|
|
146
|
+
lg: "p-3 text-sm",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
defaultVariants: {
|
|
150
|
+
variant: "default",
|
|
151
|
+
size: "md",
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
type NavigationMenuBarItemVariantProps = Omit<
|
|
157
|
+
VariantProps<typeof navigationMenuBarItemVariants>,
|
|
158
|
+
"orientation"
|
|
159
|
+
>
|
|
160
|
+
|
|
161
|
+
export type NavigationMenuProps = Omit<
|
|
162
|
+
ComponentProps<typeof BaseNavigationMenu.Root>,
|
|
163
|
+
"size"
|
|
164
|
+
> & {
|
|
165
|
+
size?: NavigationMenuSize
|
|
166
|
+
variant?: NavigationMenuVariant
|
|
167
|
+
}
|
|
10
168
|
export type NavigationMenuListProps = ComponentProps<
|
|
11
169
|
typeof BaseNavigationMenu.List
|
|
12
170
|
>
|
|
13
171
|
export type NavigationMenuItemProps = ComponentProps<
|
|
14
172
|
typeof BaseNavigationMenu.Item
|
|
15
173
|
>
|
|
16
|
-
export type NavigationMenuTriggerProps =
|
|
17
|
-
typeof BaseNavigationMenu.Trigger
|
|
18
|
-
|
|
174
|
+
export type NavigationMenuTriggerProps = Omit<
|
|
175
|
+
ComponentProps<typeof BaseNavigationMenu.Trigger>,
|
|
176
|
+
"size"
|
|
177
|
+
> &
|
|
178
|
+
NavigationMenuBarItemVariantProps & {
|
|
179
|
+
showIcon?: boolean
|
|
180
|
+
}
|
|
181
|
+
export type NavigationMenuBarLinkProps = Omit<
|
|
182
|
+
ComponentProps<typeof BaseNavigationMenu.Link>,
|
|
183
|
+
"size"
|
|
184
|
+
> &
|
|
185
|
+
NavigationMenuBarItemVariantProps
|
|
19
186
|
export type NavigationMenuContentProps = ComponentProps<
|
|
20
187
|
typeof BaseNavigationMenu.Content
|
|
21
188
|
>
|
|
@@ -37,41 +204,59 @@ export type NavigationMenuPopupProps = ComponentProps<
|
|
|
37
204
|
export type NavigationMenuArrowProps = ComponentProps<
|
|
38
205
|
typeof BaseNavigationMenu.Arrow
|
|
39
206
|
>
|
|
40
|
-
export type NavigationMenuLinkProps =
|
|
41
|
-
typeof BaseNavigationMenu.Link
|
|
42
|
-
|
|
207
|
+
export type NavigationMenuLinkProps = Omit<
|
|
208
|
+
ComponentProps<typeof BaseNavigationMenu.Link>,
|
|
209
|
+
"size"
|
|
210
|
+
> &
|
|
211
|
+
VariantProps<typeof navigationMenuLinkVariants>
|
|
212
|
+
export type NavigationMenuLinkIconProps = ComponentProps<"span">
|
|
213
|
+
export type NavigationMenuLinkTitleProps = ComponentProps<"span">
|
|
214
|
+
export type NavigationMenuLinkDescriptionProps = ComponentProps<"span">
|
|
43
215
|
export type NavigationMenuIconProps = ComponentProps<
|
|
44
216
|
typeof BaseNavigationMenu.Icon
|
|
45
217
|
>
|
|
46
218
|
|
|
47
|
-
const navigationMenuTriggerClassName = cn(
|
|
48
|
-
"inline-flex h-9 cursor-pointer items-center gap-1 rounded-md px-3 text-sm text-fg-secondary outline-none",
|
|
49
|
-
motion.colors,
|
|
50
|
-
"hover:bg-background-tertiary hover:text-fg-primary focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-offset-1 focus-visible:ring-offset-background-primary focus-visible:ring-ring/20 data-popup-open:bg-background-tertiary data-popup-open:text-fg-primary",
|
|
51
|
-
)
|
|
52
|
-
|
|
53
219
|
export const NavigationMenu = ({
|
|
54
220
|
className,
|
|
221
|
+
orientation = "horizontal",
|
|
222
|
+
size = "md",
|
|
223
|
+
variant = "plain",
|
|
55
224
|
...props
|
|
56
|
-
}: NavigationMenuProps) =>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
225
|
+
}: NavigationMenuProps) => {
|
|
226
|
+
const styleContext = useMemo(
|
|
227
|
+
() => ({ orientation, size, variant }),
|
|
228
|
+
[orientation, size, variant],
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
return (
|
|
232
|
+
<NavigationMenuStyleContext.Provider value={styleContext}>
|
|
233
|
+
<BaseNavigationMenu.Root
|
|
234
|
+
orientation={orientation}
|
|
235
|
+
data-orientation={orientation}
|
|
236
|
+
data-variant={variant}
|
|
237
|
+
className={cn(navigationMenuRootVariants({ orientation }), className)}
|
|
238
|
+
{...props}
|
|
239
|
+
/>
|
|
240
|
+
</NavigationMenuStyleContext.Provider>
|
|
241
|
+
)
|
|
242
|
+
}
|
|
62
243
|
|
|
63
244
|
export const NavigationMenuList = ({
|
|
64
245
|
className,
|
|
65
246
|
...props
|
|
66
|
-
}: NavigationMenuListProps) =>
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
)
|
|
247
|
+
}: NavigationMenuListProps) => {
|
|
248
|
+
const { orientation, variant } = useContext(NavigationMenuStyleContext)
|
|
249
|
+
|
|
250
|
+
return (
|
|
251
|
+
<BaseNavigationMenu.List
|
|
252
|
+
className={cn(
|
|
253
|
+
navigationMenuListVariants({ orientation, variant }),
|
|
254
|
+
className,
|
|
255
|
+
)}
|
|
256
|
+
{...props}
|
|
257
|
+
/>
|
|
258
|
+
)
|
|
259
|
+
}
|
|
75
260
|
|
|
76
261
|
export const NavigationMenuItem = ({
|
|
77
262
|
className,
|
|
@@ -83,34 +268,79 @@ export const NavigationMenuItem = ({
|
|
|
83
268
|
export const NavigationMenuTrigger = ({
|
|
84
269
|
className,
|
|
85
270
|
children,
|
|
271
|
+
showIcon = true,
|
|
272
|
+
size,
|
|
273
|
+
variant,
|
|
86
274
|
...props
|
|
87
|
-
}: NavigationMenuTriggerProps) =>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
275
|
+
}: NavigationMenuTriggerProps) => {
|
|
276
|
+
const styles = useContext(NavigationMenuStyleContext)
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<BaseNavigationMenu.Trigger
|
|
280
|
+
className={cn(
|
|
281
|
+
navigationMenuBarItemVariants({
|
|
282
|
+
orientation: styles.orientation,
|
|
283
|
+
size: size ?? styles.size,
|
|
284
|
+
variant: variant ?? styles.variant,
|
|
285
|
+
}),
|
|
286
|
+
className,
|
|
287
|
+
)}
|
|
288
|
+
{...props}
|
|
289
|
+
>
|
|
290
|
+
{children}
|
|
291
|
+
{showIcon ? <NavigationMenuIcon /> : null}
|
|
292
|
+
</BaseNavigationMenu.Trigger>
|
|
293
|
+
)
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export const NavigationMenuBarLink = ({
|
|
297
|
+
className,
|
|
298
|
+
size,
|
|
299
|
+
variant,
|
|
300
|
+
...props
|
|
301
|
+
}: NavigationMenuBarLinkProps) => {
|
|
302
|
+
const styles = useContext(NavigationMenuStyleContext)
|
|
303
|
+
|
|
304
|
+
return (
|
|
305
|
+
<BaseNavigationMenu.Link
|
|
306
|
+
className={cn(
|
|
307
|
+
navigationMenuBarItemVariants({
|
|
308
|
+
orientation: styles.orientation,
|
|
309
|
+
size: size ?? styles.size,
|
|
310
|
+
variant: variant ?? styles.variant,
|
|
311
|
+
}),
|
|
312
|
+
className,
|
|
313
|
+
)}
|
|
314
|
+
{...props}
|
|
315
|
+
/>
|
|
316
|
+
)
|
|
317
|
+
}
|
|
96
318
|
|
|
97
319
|
export const NavigationMenuIcon = ({
|
|
98
320
|
className,
|
|
99
321
|
children,
|
|
100
322
|
...props
|
|
101
|
-
}: NavigationMenuIconProps) =>
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
)
|
|
323
|
+
}: NavigationMenuIconProps) => {
|
|
324
|
+
const { orientation } = useContext(NavigationMenuStyleContext)
|
|
325
|
+
|
|
326
|
+
return (
|
|
327
|
+
<BaseNavigationMenu.Icon
|
|
328
|
+
className={cn(
|
|
329
|
+
"inline-flex text-fg-tertiary",
|
|
330
|
+
motion.transform,
|
|
331
|
+
orientation === "horizontal"
|
|
332
|
+
? "data-popup-open:rotate-180"
|
|
333
|
+
: "-rotate-90 data-popup-open:rotate-0",
|
|
334
|
+
className,
|
|
335
|
+
)}
|
|
336
|
+
{...props}
|
|
337
|
+
>
|
|
338
|
+
{children ?? (
|
|
339
|
+
<IconChevronDownSmall size={14} className="size-3.5" aria-hidden />
|
|
340
|
+
)}
|
|
341
|
+
</BaseNavigationMenu.Icon>
|
|
342
|
+
)
|
|
343
|
+
}
|
|
114
344
|
|
|
115
345
|
export const NavigationMenuContent = ({
|
|
116
346
|
className,
|
|
@@ -118,8 +348,7 @@ export const NavigationMenuContent = ({
|
|
|
118
348
|
}: NavigationMenuContentProps) => (
|
|
119
349
|
<BaseNavigationMenu.Content
|
|
120
350
|
className={cn(
|
|
121
|
-
"w-auto p-2 data-
|
|
122
|
-
motion.colors,
|
|
351
|
+
"w-auto p-2 transition-[opacity,transform] duration-[var(--duration-sm)] ease-enter motion-reduce:transition-none data-starting-style:translate-y-1 data-starting-style:opacity-0 data-ending-style:translate-y-1 data-ending-style:opacity-0",
|
|
123
352
|
className,
|
|
124
353
|
)}
|
|
125
354
|
{...props}
|
|
@@ -128,19 +357,49 @@ export const NavigationMenuContent = ({
|
|
|
128
357
|
|
|
129
358
|
export const NavigationMenuLink = ({
|
|
130
359
|
className,
|
|
360
|
+
variant,
|
|
361
|
+
size,
|
|
131
362
|
...props
|
|
132
363
|
}: NavigationMenuLinkProps) => (
|
|
133
364
|
<BaseNavigationMenu.Link
|
|
365
|
+
className={cn(navigationMenuLinkVariants({ variant, size }), className)}
|
|
366
|
+
{...props}
|
|
367
|
+
/>
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
export const NavigationMenuLinkIcon = ({
|
|
371
|
+
className,
|
|
372
|
+
...props
|
|
373
|
+
}: NavigationMenuLinkIconProps) => (
|
|
374
|
+
<span
|
|
134
375
|
className={cn(
|
|
135
|
-
"
|
|
136
|
-
motion.colors,
|
|
137
|
-
"hover:bg-background-tertiary focus-visible:bg-background-tertiary focus-visible:ring-[3px] focus-visible:ring-offset-1 focus-visible:ring-offset-background-primary focus-visible:ring-ring/20 data-active:bg-background-tertiary",
|
|
376
|
+
"mb-1 flex size-9 shrink-0 items-center justify-center rounded-md border border-border-primary bg-surface text-fg-secondary transition-colors duration-[var(--duration-sm)] ease-enter group-hover/navigation-link:border-border-secondary group-hover/navigation-link:bg-background-quaternary group-hover/navigation-link:text-fg-primary [&_svg]:size-4",
|
|
138
377
|
className,
|
|
139
378
|
)}
|
|
140
379
|
{...props}
|
|
141
380
|
/>
|
|
142
381
|
)
|
|
143
382
|
|
|
383
|
+
export const NavigationMenuLinkTitle = ({
|
|
384
|
+
className,
|
|
385
|
+
...props
|
|
386
|
+
}: NavigationMenuLinkTitleProps) => (
|
|
387
|
+
<span
|
|
388
|
+
className={cn("text-sm-strong text-fg-primary", className)}
|
|
389
|
+
{...props}
|
|
390
|
+
/>
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
export const NavigationMenuLinkDescription = ({
|
|
394
|
+
className,
|
|
395
|
+
...props
|
|
396
|
+
}: NavigationMenuLinkDescriptionProps) => (
|
|
397
|
+
<span
|
|
398
|
+
className={cn("text-xs leading-relaxed text-fg-tertiary", className)}
|
|
399
|
+
{...props}
|
|
400
|
+
/>
|
|
401
|
+
)
|
|
402
|
+
|
|
144
403
|
export const NavigationMenuPortal = (props: NavigationMenuPortalProps) => (
|
|
145
404
|
<BaseNavigationMenu.Portal {...props} />
|
|
146
405
|
)
|
|
@@ -161,12 +420,17 @@ export const NavigationMenuBackdrop = ({
|
|
|
161
420
|
|
|
162
421
|
export const NavigationMenuPositioner = ({
|
|
163
422
|
sideOffset = 8,
|
|
423
|
+
collisionPadding = 16,
|
|
164
424
|
className,
|
|
165
425
|
...props
|
|
166
426
|
}: NavigationMenuPositionerProps) => (
|
|
167
427
|
<BaseNavigationMenu.Positioner
|
|
168
428
|
sideOffset={sideOffset}
|
|
169
|
-
|
|
429
|
+
collisionPadding={collisionPadding}
|
|
430
|
+
className={cn(
|
|
431
|
+
"z-50 h-[var(--positioner-height)] w-[var(--positioner-width)] max-w-[var(--available-width)] outline-none transition-[top,left,right,bottom] duration-[var(--duration-md)] ease-move data-instant:transition-none before:absolute before:content-[''] data-[side=bottom]:before:top-[-8px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0 data-[side=bottom]:before:h-2 data-[side=left]:before:top-0 data-[side=left]:before:right-[-8px] data-[side=left]:before:bottom-0 data-[side=left]:before:w-2 data-[side=right]:before:top-0 data-[side=right]:before:bottom-0 data-[side=right]:before:left-[-8px] data-[side=right]:before:w-2 data-[side=top]:before:right-0 data-[side=top]:before:bottom-[-8px] data-[side=top]:before:left-0 data-[side=top]:before:h-2",
|
|
432
|
+
className,
|
|
433
|
+
)}
|
|
170
434
|
{...props}
|
|
171
435
|
/>
|
|
172
436
|
)
|
|
@@ -177,9 +441,10 @@ export const NavigationMenuPopup = ({
|
|
|
177
441
|
}: NavigationMenuPopupProps) => (
|
|
178
442
|
<BaseNavigationMenu.Popup
|
|
179
443
|
className={cn(
|
|
180
|
-
"relative z-50
|
|
181
|
-
|
|
182
|
-
|
|
444
|
+
"relative z-50 h-[var(--popup-height)] w-[var(--popup-width)] max-w-[calc(100vw-2rem)]",
|
|
445
|
+
popupSurface,
|
|
446
|
+
motion.popupAnchor,
|
|
447
|
+
"transition-[width,height,transform,scale,opacity] duration-[var(--duration-md)]",
|
|
183
448
|
className,
|
|
184
449
|
)}
|
|
185
450
|
{...props}
|
|
@@ -202,16 +467,24 @@ export const NavigationMenuArrow = ({
|
|
|
202
467
|
}: NavigationMenuArrowProps) => (
|
|
203
468
|
<BaseNavigationMenu.Arrow
|
|
204
469
|
className={cn(
|
|
205
|
-
"
|
|
206
|
-
"
|
|
207
|
-
"data-[side=bottom]:border-r-0 data-[side=bottom]:border-b-0",
|
|
208
|
-
"data-[side=top]:border-t-0 data-[side=top]:border-l-0",
|
|
209
|
-
"data-[side=left]:border-b-0 data-[side=left]:border-l-0",
|
|
210
|
-
"data-[side=right]:border-t-0 data-[side=right]:border-r-0",
|
|
470
|
+
"relative block h-1.5 w-3 overflow-clip transition-[top,right,bottom,left] duration-[var(--duration-md)] ease-move before:absolute before:bottom-0 before:left-1/2 before:block before:size-[calc(6px*1.414)] before:-translate-x-1/2 before:translate-y-1/2 before:rotate-45 before:border before:border-border-primary before:bg-surface before:content-['']",
|
|
471
|
+
"data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180",
|
|
211
472
|
className,
|
|
212
473
|
)}
|
|
213
474
|
{...props}
|
|
214
475
|
/>
|
|
215
476
|
)
|
|
216
477
|
|
|
217
|
-
|
|
478
|
+
const navigationMenuTriggerClassName = navigationMenuBarItemVariants({
|
|
479
|
+
orientation: "horizontal",
|
|
480
|
+
size: "md",
|
|
481
|
+
variant: "plain",
|
|
482
|
+
})
|
|
483
|
+
|
|
484
|
+
export {
|
|
485
|
+
navigationMenuBarItemVariants,
|
|
486
|
+
navigationMenuLinkVariants,
|
|
487
|
+
navigationMenuListVariants,
|
|
488
|
+
navigationMenuRootVariants,
|
|
489
|
+
navigationMenuTriggerClassName,
|
|
490
|
+
}
|