@boyernick/standard-ui-react 0.1.1-canary.9 → 0.2.0

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 (82) hide show
  1. package/package.json +5 -3
  2. package/src/accordion.tsx +5 -2
  3. package/src/alert-dialog.tsx +1 -1
  4. package/src/attachment.tsx +5 -2
  5. package/src/autocomplete.tsx +4 -3
  6. package/src/block-editor.tsx +1747 -0
  7. package/src/brand.tsx +2 -2
  8. package/src/breadcrumb.tsx +14 -7
  9. package/src/button.tsx +22 -11
  10. package/src/calendar.tsx +6 -3
  11. package/src/carousel.tsx +220 -53
  12. package/src/checkbox.tsx +3 -2
  13. package/src/code-block.tsx +66 -5
  14. package/src/collapsible.tsx +4 -2
  15. package/src/combobox.tsx +4 -3
  16. package/src/command.tsx +27 -12
  17. package/src/dialog.tsx +33 -10
  18. package/src/empty.tsx +4 -4
  19. package/src/field.tsx +4 -3
  20. package/src/filter-group.tsx +143 -0
  21. package/src/icons.tsx +28 -1
  22. package/src/illustrations.tsx +219 -141
  23. package/src/index.ts +238 -18
  24. package/src/input.tsx +8 -5
  25. package/src/kbd.tsx +10 -4
  26. package/src/lib/focus.ts +41 -0
  27. package/src/lib/popup.ts +1 -1
  28. package/src/lifeline/company-icon.tsx +71 -0
  29. package/src/lifeline/index.ts +42 -0
  30. package/src/lifeline/lifeline-data.ts +97 -0
  31. package/src/lifeline/lifeline-desktop.tsx +204 -0
  32. package/src/lifeline/lifeline-event.tsx +108 -0
  33. package/src/lifeline/lifeline-fireworks.tsx +302 -0
  34. package/src/lifeline/lifeline-hover-image.tsx +269 -0
  35. package/src/lifeline/lifeline-icons.tsx +39 -0
  36. package/src/lifeline/lifeline-intro-timing.ts +105 -0
  37. package/src/lifeline/lifeline-labels.tsx +24 -0
  38. package/src/lifeline/lifeline-layout.ts +1 -0
  39. package/src/lifeline/lifeline-legend.tsx +31 -0
  40. package/src/lifeline/lifeline-lightbox.tsx +309 -0
  41. package/src/lifeline/lifeline-marker.tsx +183 -0
  42. package/src/lifeline/lifeline-people.tsx +99 -0
  43. package/src/lifeline/lifeline-photos.tsx +366 -0
  44. package/src/lifeline/lifeline-shell.tsx +135 -0
  45. package/src/lifeline/lifeline-utils.ts +83 -0
  46. package/src/lifeline/lifeline-vertical.tsx +482 -0
  47. package/src/lifeline/lifeline.tsx +69 -0
  48. package/src/lifeline/types.ts +112 -0
  49. package/src/lifeline/use-lifeline-intro.ts +130 -0
  50. package/src/lifeline/use-lifeline-scroll.ts +1011 -0
  51. package/src/lifeline/use-lifeline-vertical-scroll.ts +271 -0
  52. package/src/menubar.tsx +9 -2
  53. package/src/minimap.tsx +296 -0
  54. package/src/modal.tsx +608 -0
  55. package/src/navigation-menu.tsx +338 -67
  56. package/src/number-field.tsx +336 -61
  57. package/src/otp-field.tsx +4 -3
  58. package/src/pagination.tsx +262 -42
  59. package/src/password-protection.tsx +345 -0
  60. package/src/popover.tsx +1 -1
  61. package/src/progress.tsx +5 -0
  62. package/src/questionnaire.tsx +284 -0
  63. package/src/radio.tsx +4 -2
  64. package/src/scroll-area.tsx +4 -1
  65. package/src/select.tsx +5 -2
  66. package/src/sidebar.tsx +113 -28
  67. package/src/slider.tsx +66 -6
  68. package/src/sounds.tsx +6 -10
  69. package/src/spinner.tsx +105 -32
  70. package/src/switch.tsx +4 -1
  71. package/src/table.tsx +82 -15
  72. package/src/tabs.tsx +189 -38
  73. package/src/text-animate.tsx +71 -28
  74. package/src/textarea.tsx +6 -1
  75. package/src/timeline.tsx +378 -0
  76. package/src/toast.tsx +214 -35
  77. package/src/toggle.tsx +4 -2
  78. package/src/toolbar.tsx +12 -7
  79. package/src/tooltip.tsx +43 -3
  80. package/src/video-player.tsx +396 -127
  81. package/src/image-modal.tsx +0 -110
  82. package/src/markdown-editor.tsx +0 -302
@@ -1,22 +1,188 @@
1
1
  "use client"
2
2
 
3
3
  import { NavigationMenu as BaseNavigationMenu } from "@base-ui/react/navigation-menu"
4
- import type { ComponentProps } from "react"
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"
8
10
  import { popupSurface } from "./lib/popup"
9
11
 
10
- export type NavigationMenuProps = ComponentProps<typeof BaseNavigationMenu.Root>
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
+ }
11
168
  export type NavigationMenuListProps = ComponentProps<
12
169
  typeof BaseNavigationMenu.List
13
170
  >
14
171
  export type NavigationMenuItemProps = ComponentProps<
15
172
  typeof BaseNavigationMenu.Item
16
173
  >
17
- export type NavigationMenuTriggerProps = ComponentProps<
18
- typeof BaseNavigationMenu.Trigger
19
- >
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
20
186
  export type NavigationMenuContentProps = ComponentProps<
21
187
  typeof BaseNavigationMenu.Content
22
188
  >
@@ -38,41 +204,59 @@ export type NavigationMenuPopupProps = ComponentProps<
38
204
  export type NavigationMenuArrowProps = ComponentProps<
39
205
  typeof BaseNavigationMenu.Arrow
40
206
  >
41
- export type NavigationMenuLinkProps = ComponentProps<
42
- typeof BaseNavigationMenu.Link
43
- >
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">
44
215
  export type NavigationMenuIconProps = ComponentProps<
45
216
  typeof BaseNavigationMenu.Icon
46
217
  >
47
218
 
48
- const navigationMenuTriggerClassName = cn(
49
- "inline-flex h-9 cursor-pointer items-center gap-1 rounded-md px-3 text-sm text-fg-secondary outline-none",
50
- motion.colors,
51
- "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",
52
- )
53
-
54
219
  export const NavigationMenu = ({
55
220
  className,
221
+ orientation = "horizontal",
222
+ size = "md",
223
+ variant = "plain",
56
224
  ...props
57
- }: NavigationMenuProps) => (
58
- <BaseNavigationMenu.Root
59
- className={cn("relative isolate z-10 flex max-w-max flex-1 items-center justify-center", className)}
60
- {...props}
61
- />
62
- )
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
+ }
63
243
 
64
244
  export const NavigationMenuList = ({
65
245
  className,
66
246
  ...props
67
- }: NavigationMenuListProps) => (
68
- <BaseNavigationMenu.List
69
- className={cn(
70
- "group flex flex-1 list-none items-center justify-center gap-0.5",
71
- className,
72
- )}
73
- {...props}
74
- />
75
- )
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
+ }
76
260
 
77
261
  export const NavigationMenuItem = ({
78
262
  className,
@@ -84,34 +268,79 @@ export const NavigationMenuItem = ({
84
268
  export const NavigationMenuTrigger = ({
85
269
  className,
86
270
  children,
271
+ showIcon = true,
272
+ size,
273
+ variant,
87
274
  ...props
88
- }: NavigationMenuTriggerProps) => (
89
- <BaseNavigationMenu.Trigger
90
- className={cn(navigationMenuTriggerClassName, className)}
91
- {...props}
92
- >
93
- {children}
94
- <NavigationMenuIcon />
95
- </BaseNavigationMenu.Trigger>
96
- )
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
+ }
97
318
 
98
319
  export const NavigationMenuIcon = ({
99
320
  className,
100
321
  children,
101
322
  ...props
102
- }: NavigationMenuIconProps) => (
103
- <BaseNavigationMenu.Icon
104
- className={cn(
105
- "inline-flex text-fg-tertiary transition-transform duration-[var(--duration-sm)] ease-enter motion-reduce:transition-none data-popup-open:rotate-180",
106
- className,
107
- )}
108
- {...props}
109
- >
110
- {children ?? (
111
- <IconChevronDownSmall size={14} className="size-3.5" aria-hidden />
112
- )}
113
- </BaseNavigationMenu.Icon>
114
- )
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
+ }
115
344
 
116
345
  export const NavigationMenuContent = ({
117
346
  className,
@@ -119,8 +348,7 @@ export const NavigationMenuContent = ({
119
348
  }: NavigationMenuContentProps) => (
120
349
  <BaseNavigationMenu.Content
121
350
  className={cn(
122
- "w-auto p-2 data-ending-style:opacity-0 data-starting-style:opacity-0",
123
- 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",
124
352
  className,
125
353
  )}
126
354
  {...props}
@@ -129,19 +357,49 @@ export const NavigationMenuContent = ({
129
357
 
130
358
  export const NavigationMenuLink = ({
131
359
  className,
360
+ variant,
361
+ size,
132
362
  ...props
133
363
  }: NavigationMenuLinkProps) => (
134
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
135
375
  className={cn(
136
- "flex cursor-pointer flex-col gap-0.5 rounded-md p-2.5 text-sm text-fg-primary outline-none",
137
- motion.colors,
138
- "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",
139
377
  className,
140
378
  )}
141
379
  {...props}
142
380
  />
143
381
  )
144
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
+
145
403
  export const NavigationMenuPortal = (props: NavigationMenuPortalProps) => (
146
404
  <BaseNavigationMenu.Portal {...props} />
147
405
  )
@@ -162,12 +420,17 @@ export const NavigationMenuBackdrop = ({
162
420
 
163
421
  export const NavigationMenuPositioner = ({
164
422
  sideOffset = 8,
423
+ collisionPadding = 16,
165
424
  className,
166
425
  ...props
167
426
  }: NavigationMenuPositionerProps) => (
168
427
  <BaseNavigationMenu.Positioner
169
428
  sideOffset={sideOffset}
170
- className={cn("z-50 outline-none", className)}
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
+ )}
171
434
  {...props}
172
435
  />
173
436
  )
@@ -178,10 +441,10 @@ export const NavigationMenuPopup = ({
178
441
  }: NavigationMenuPopupProps) => (
179
442
  <BaseNavigationMenu.Popup
180
443
  className={cn(
181
- "relative z-50 w-[var(--popup-width)] overflow-hidden",
444
+ "relative z-50 h-[var(--popup-height)] w-[var(--popup-width)] max-w-[calc(100vw-2rem)]",
182
445
  popupSurface,
183
- "h-[var(--popup-height)] transition-[width,height,opacity] duration-[var(--duration-md)] ease-enter motion-reduce:transition-none",
184
- "data-starting-style:opacity-0 data-ending-style:opacity-0",
446
+ motion.popupAnchor,
447
+ "transition-[width,height,transform,scale,opacity] duration-[var(--duration-md)]",
185
448
  className,
186
449
  )}
187
450
  {...props}
@@ -204,16 +467,24 @@ export const NavigationMenuArrow = ({
204
467
  }: NavigationMenuArrowProps) => (
205
468
  <BaseNavigationMenu.Arrow
206
469
  className={cn(
207
- "data-[side=bottom]:top-[-6px] data-[side=left]:right-[-6px] data-[side=right]:left-[-6px] data-[side=top]:bottom-[-6px]",
208
- "size-2.5 rotate-45 border border-border-primary bg-surface",
209
- "data-[side=bottom]:border-r-0 data-[side=bottom]:border-b-0",
210
- "data-[side=top]:border-t-0 data-[side=top]:border-l-0",
211
- "data-[side=left]:border-b-0 data-[side=left]:border-l-0",
212
- "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",
213
472
  className,
214
473
  )}
215
474
  {...props}
216
475
  />
217
476
  )
218
477
 
219
- export { navigationMenuTriggerClassName }
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
+ }