betterstart-cli 0.0.106 → 0.0.107

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 (99) hide show
  1. package/dist/assets/adapters/next/templates/init/components/layouts/admin-nav-link.tsx +10 -8
  2. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-nav-link-skeleton.tsx +1 -5
  3. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +54 -48
  4. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sign-out.tsx +2 -2
  5. package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +3 -5
  6. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +1 -1
  7. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +1 -1
  8. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +5 -7
  9. package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +9 -10
  10. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +2 -4
  11. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-restore-dialog.tsx +2 -4
  12. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +2 -4
  13. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-drawer.tsx +1 -1
  14. package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx +2 -2
  15. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx +5 -5
  16. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +52 -53
  17. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +3 -5
  18. package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +1 -1
  19. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-drawer.tsx +1 -1
  20. package/dist/assets/adapters/next/templates/init/pages/settings/forms/form-notifications-drawer.tsx +5 -5
  21. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-actions.tsx +20 -20
  22. package/dist/assets/adapters/next/templates/init/pages/users/change-password-dialog.tsx +7 -5
  23. package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +3 -5
  24. package/dist/assets/adapters/next/templates/init/pages/users/create-user-dialog.tsx +1 -3
  25. package/dist/assets/adapters/next/templates/init/pages/users/delete-user-dialog.tsx +11 -5
  26. package/dist/assets/adapters/next/templates/init/pages/users/edit-role-dialog.tsx +1 -1
  27. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-popover-button.tsx +13 -11
  28. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx +16 -14
  29. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +2 -2
  30. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +14 -12
  31. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +16 -14
  32. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +15 -13
  33. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu-item.tsx +1 -1
  34. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +31 -29
  35. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +15 -13
  36. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu-item.tsx +1 -1
  37. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +22 -20
  38. package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +16 -14
  39. package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +8 -6
  40. package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +8 -7
  41. package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +2 -4
  42. package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +11 -28
  43. package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +30 -47
  44. package/dist/assets/shared-assets/react-admin/ui/alert.tsx +4 -4
  45. package/dist/assets/shared-assets/react-admin/ui/aspect-ratio.tsx +18 -5
  46. package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +10 -13
  47. package/dist/assets/shared-assets/react-admin/ui/badge.tsx +21 -20
  48. package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +20 -19
  49. package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +25 -24
  50. package/dist/assets/shared-assets/react-admin/ui/button.tsx +22 -31
  51. package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +9 -6
  52. package/dist/assets/shared-assets/react-admin/ui/card.tsx +6 -16
  53. package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +20 -17
  54. package/dist/assets/shared-assets/react-admin/ui/chart.tsx +19 -16
  55. package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +3 -4
  56. package/dist/assets/shared-assets/react-admin/ui/collapsible.tsx +6 -10
  57. package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +10 -36
  58. package/dist/assets/shared-assets/react-admin/ui/command.tsx +7 -6
  59. package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +77 -79
  60. package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +29 -54
  61. package/dist/assets/shared-assets/react-admin/ui/direction.tsx +1 -18
  62. package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +121 -49
  63. package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +117 -131
  64. package/dist/assets/shared-assets/react-admin/ui/empty.tsx +3 -3
  65. package/dist/assets/shared-assets/react-admin/ui/field.tsx +20 -30
  66. package/dist/assets/shared-assets/react-admin/ui/form.tsx +27 -31
  67. package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +26 -18
  68. package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +25 -12
  69. package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +3 -3
  70. package/dist/assets/shared-assets/react-admin/ui/input.tsx +4 -3
  71. package/dist/assets/shared-assets/react-admin/ui/item.tsx +26 -19
  72. package/dist/assets/shared-assets/react-admin/ui/label.tsx +18 -14
  73. package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +80 -73
  74. package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +3 -3
  75. package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +40 -39
  76. package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +18 -11
  77. package/dist/assets/shared-assets/react-admin/ui/popover.tsx +31 -30
  78. package/dist/assets/shared-assets/react-admin/ui/progress.tsx +51 -16
  79. package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +11 -17
  80. package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
  81. package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +9 -13
  82. package/dist/assets/shared-assets/react-admin/ui/select.tsx +66 -60
  83. package/dist/assets/shared-assets/react-admin/ui/separator.tsx +3 -10
  84. package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +22 -27
  85. package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +144 -126
  86. package/dist/assets/shared-assets/react-admin/ui/skeleton.tsx +1 -1
  87. package/dist/assets/shared-assets/react-admin/ui/slider.tsx +27 -29
  88. package/dist/assets/shared-assets/react-admin/ui/sonner.tsx +8 -3
  89. package/dist/assets/shared-assets/react-admin/ui/spinner.tsx +4 -3
  90. package/dist/assets/shared-assets/react-admin/ui/switch.tsx +4 -5
  91. package/dist/assets/shared-assets/react-admin/ui/table.tsx +8 -21
  92. package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +11 -16
  93. package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +2 -2
  94. package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +12 -11
  95. package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +4 -5
  96. package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +29 -27
  97. package/dist/cli.js +90 -110
  98. package/dist/cli.js.map +1 -1
  99. package/package.json +1 -1
@@ -2,52 +2,76 @@
2
2
 
3
3
  import * as React from 'react'
4
4
  import { cn } from '@admin/utils/shared/cn'
5
- import { Drawer as DrawerPrimitive } from 'vaul'
5
+ import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer'
6
+
7
+ type DrawerContextProps = {
8
+ container?: DrawerPrimitive.Portal.Props['container']
9
+ hasSnapPoints: boolean
10
+ modal: DrawerPrimitive.Root.Props['modal']
11
+ showSwipeHandle: boolean
12
+ swipeDirection: NonNullable<DrawerPrimitive.Root.Props['swipeDirection']>
13
+ }
14
+
15
+ const DrawerContext = React.createContext<DrawerContextProps | null>(null)
16
+
17
+ function useDrawer() {
18
+ const context = React.useContext(DrawerContext)
19
+
20
+ if (!context) {
21
+ throw new Error('useDrawer must be used within a Drawer.')
22
+ }
23
+
24
+ return context
25
+ }
6
26
 
7
27
  function Drawer({
8
- children,
9
28
  container,
10
- handleOnly = true,
29
+ modal = true,
30
+ showSwipeHandle = false,
31
+ snapPoints,
32
+ swipeDirection = 'down',
11
33
  ...props
12
- }: React.ComponentProps<typeof DrawerPrimitive.Root>) {
13
- const portalContainerRef = React.useRef<HTMLDivElement>(null)
34
+ }: DrawerPrimitive.Root.Props & {
35
+ container?: DrawerPrimitive.Portal.Props['container']
36
+ showSwipeHandle?: boolean
37
+ }) {
38
+ const hasSnapPoints = snapPoints != null && snapPoints.length > 0
39
+ const contextValue = React.useMemo(
40
+ () => ({ container, hasSnapPoints, modal, showSwipeHandle, swipeDirection }),
41
+ [container, hasSnapPoints, modal, showSwipeHandle, swipeDirection]
42
+ )
14
43
 
15
44
  return (
16
- <>
17
- <div ref={portalContainerRef} data-slot="drawer-container" className="contents" />
45
+ <DrawerContext.Provider value={contextValue}>
18
46
  <DrawerPrimitive.Root
19
47
  data-slot="drawer"
20
- container={container ?? portalContainerRef.current}
21
- handleOnly={handleOnly}
48
+ modal={modal}
49
+ snapPoints={snapPoints}
50
+ swipeDirection={swipeDirection}
22
51
  {...props}
23
- >
24
- {children}
25
- </DrawerPrimitive.Root>
26
- </>
52
+ />
53
+ </DrawerContext.Provider>
27
54
  )
28
55
  }
29
56
 
30
- function DrawerTrigger({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {
57
+ function DrawerTrigger({ ...props }: DrawerPrimitive.Trigger.Props) {
31
58
  return <DrawerPrimitive.Trigger data-slot="drawer-trigger" {...props} />
32
59
  }
33
60
 
34
- function DrawerPortal({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {
61
+ function DrawerPortal({ ...props }: DrawerPrimitive.Portal.Props) {
35
62
  return <DrawerPrimitive.Portal data-slot="drawer-portal" {...props} />
36
63
  }
37
64
 
38
- function DrawerClose({ ...props }: React.ComponentProps<typeof DrawerPrimitive.Close>) {
65
+ function DrawerClose({ ...props }: DrawerPrimitive.Close.Props) {
39
66
  return <DrawerPrimitive.Close data-slot="drawer-close" {...props} />
40
67
  }
41
68
 
42
- function DrawerOverlay({
43
- className,
44
- ...props
45
- }: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {
69
+ function DrawerOverlay({ className, ...props }: DrawerPrimitive.Backdrop.Props) {
46
70
  return (
47
- <DrawerPrimitive.Overlay
71
+ <DrawerPrimitive.Backdrop
48
72
  data-slot="drawer-overlay"
49
73
  className={cn(
50
- 'fixed inset-0 z-200 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',
74
+ 'fixed inset-0 z-50 min-h-dvh bg-black/80 opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-backdrop-filter:backdrop-blur-xs supports-[-webkit-touch-callout:none]:absolute',
51
75
  className
52
76
  )}
53
77
  {...props}
@@ -55,26 +79,76 @@ function DrawerOverlay({
55
79
  )
56
80
  }
57
81
 
58
- function DrawerContent({
59
- className,
60
- children,
61
- style,
62
- ...props
63
- }: React.ComponentProps<typeof DrawerPrimitive.Content>) {
82
+ function DrawerSwipeHandle({ className, ...props }: React.ComponentProps<'div'>) {
64
83
  return (
65
- <DrawerPortal data-slot="drawer-portal">
66
- <DrawerOverlay />
67
- <DrawerPrimitive.Content
68
- data-slot="drawer-content"
69
- className={cn(
70
- 'group/drawer-content fixed z-200 flex h-auto flex-col space-y-4 bg-transparent p-2 text-sm text-popover-foreground before:absolute before:inset-2 before:-z-10 before:rounded-sm before:border before:border-border before:bg-popover data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-md',
71
- className
72
- )}
73
- style={{ touchAction: 'auto', userSelect: 'text', ...style }}
74
- {...props}
84
+ <div
85
+ data-slot="drawer-swipe-handle"
86
+ aria-hidden="true"
87
+ className={cn(
88
+ 'relative z-10 flex shrink-0 cursor-grab transition-opacity duration-200 group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=left]/drawer-popup:order-last group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end group-data-[swipe-direction=up]/drawer-popup:order-last group-data-[swipe-direction=up]/drawer-popup:items-start after:block after:shrink-0 after:rounded-full after:bg-muted group-data-[swipe-axis=x]/drawer-popup:after:h-[100px] group-data-[swipe-axis=x]/drawer-popup:after:w-1.5 group-data-[swipe-axis=y]/drawer-popup:after:h-1.5 group-data-[swipe-axis=y]/drawer-popup:after:w-[100px] active:cursor-grabbing',
89
+ className
90
+ )}
91
+ {...props}
92
+ />
93
+ )
94
+ }
95
+
96
+ function DrawerContent({ className, children, ...props }: DrawerPrimitive.Popup.Props) {
97
+ const { container, hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer()
98
+ const swipeAxis = swipeDirection === 'down' || swipeDirection === 'up' ? 'y' : 'x'
99
+
100
+ return (
101
+ <DrawerPortal data-slot="drawer-portal" container={container}>
102
+ {modal === true && <DrawerOverlay data-snap-points={hasSnapPoints ? '' : undefined} />}
103
+ <DrawerPrimitive.Viewport
104
+ data-slot="drawer-viewport"
105
+ data-modal={modal}
106
+ className="pointer-events-none fixed inset-0 z-50 select-none data-[modal=true]:pointer-events-auto"
75
107
  >
76
- {children}
77
- </DrawerPrimitive.Content>
108
+ <DrawerPrimitive.Popup
109
+ data-slot="drawer-popup"
110
+ data-swipe-axis={swipeAxis}
111
+ data-snap-points={hasSnapPoints ? '' : undefined}
112
+ className={cn(
113
+ // Base.
114
+ 'group/drawer-popup pointer-events-auto fixed z-50 m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)_scale(var(--stack-scale))] flex-col rounded-4xl border border-popover bg-popover text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [--drawer-bleed-background:transparent] [--drawer-inset:--spacing(2)] [interpolate-size:allow-keywords] dark:border-border',
115
+ // Nested.
116
+ 'data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95',
117
+ // Bleed.
118
+ 'after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full',
119
+ // Sizing.
120
+ '[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]',
121
+ // Stack.
122
+ '[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-scale-base:max(0,calc(1-(var(--nested-drawers)*var(--stack-step))))] [--stack-scale:clamp(0,calc(var(--stack-scale-base)+(var(--stack-step)*var(--stack-progress))),1)] [--stack-shrink:calc(1-var(--stack-scale))] [--stack-step:0.05]',
123
+ // Transitions.
124
+ 'data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]',
125
+ // Axis: y.
126
+ 'data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)',
127
+ // Axis: x.
128
+ 'data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row',
129
+ // Direction: down.
130
+ 'data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]',
131
+ // Direction: up.
132
+ 'data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]',
133
+ // Direction: left.
134
+ 'data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]',
135
+ // Direction: right.
136
+ 'data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]',
137
+ className
138
+ )}
139
+ {...props}
140
+ >
141
+ {showSwipeHandle && <DrawerSwipeHandle />}
142
+ <DrawerPrimitive.Content
143
+ data-slot="drawer-content"
144
+ className={cn(
145
+ 'flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-[cubic-bezier(0.45,1.005,0,1.005)] select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none'
146
+ )}
147
+ >
148
+ {children}
149
+ </DrawerPrimitive.Content>
150
+ </DrawerPrimitive.Popup>
151
+ </DrawerPrimitive.Viewport>
78
152
  </DrawerPortal>
79
153
  )
80
154
  }
@@ -84,7 +158,7 @@ function DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {
84
158
  <div
85
159
  data-slot="drawer-header"
86
160
  className={cn(
87
- 'flex flex-col px-6 pt-6 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left',
161
+ 'flex shrink-0 flex-col gap-0.5 p-4 pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-1.5 md:text-left',
88
162
  className
89
163
  )}
90
164
  {...props}
@@ -96,30 +170,27 @@ function DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {
96
170
  return (
97
171
  <div
98
172
  data-slot="drawer-footer"
99
- className={cn('mt-auto flex flex-col gap-2 px-6 py-6', className)}
173
+ className={cn('mt-auto flex shrink-0 flex-col gap-2 p-4 pt-0', className)}
100
174
  {...props}
101
175
  />
102
176
  )
103
177
  }
104
178
 
105
- function DrawerTitle({ className, ...props }: React.ComponentProps<typeof DrawerPrimitive.Title>) {
179
+ function DrawerTitle({ className, ...props }: DrawerPrimitive.Title.Props) {
106
180
  return (
107
181
  <DrawerPrimitive.Title
108
182
  data-slot="drawer-title"
109
- className={cn('font-heading text-base font-medium text-foreground', className)}
183
+ className={cn('cn-font-heading text-base font-medium text-foreground', className)}
110
184
  {...props}
111
185
  />
112
186
  )
113
187
  }
114
188
 
115
- function DrawerDescription({
116
- className,
117
- ...props
118
- }: React.ComponentProps<typeof DrawerPrimitive.Description>) {
189
+ function DrawerDescription({ className, ...props }: DrawerPrimitive.Description.Props) {
119
190
  return (
120
191
  <DrawerPrimitive.Description
121
192
  data-slot="drawer-description"
122
- className={cn('text-sm text-muted-foreground', className)}
193
+ className={cn('text-sm text-balance text-muted-foreground', className)}
123
194
  {...props}
124
195
  />
125
196
  )
@@ -129,6 +200,7 @@ export {
129
200
  Drawer,
130
201
  DrawerPortal,
131
202
  DrawerOverlay,
203
+ DrawerSwipeHandle,
132
204
  DrawerTrigger,
133
205
  DrawerClose,
134
206
  DrawerContent,
@@ -1,92 +1,144 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
3
+ import * as React from 'react'
4
4
  import { cn } from '@admin/utils/shared/cn'
5
+ import { Menu as MenuPrimitive } from '@base-ui/react/menu'
5
6
  import { CheckIcon, ChevronRightIcon } from 'lucide-react'
6
- import { DropdownMenu as DropdownMenuPrimitive } from 'radix-ui'
7
7
 
8
- function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
9
- return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />
8
+ function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {
9
+ return <MenuPrimitive.Root data-slot="dropdown-menu" {...props} />
10
10
  }
11
11
 
12
- function DropdownMenuPortal({
12
+ function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {
13
+ return <MenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
14
+ }
15
+
16
+ function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {
17
+ return <MenuPrimitive.Trigger data-slot="dropdown-menu-trigger" {...props} />
18
+ }
19
+
20
+ function DropdownMenuContent({
21
+ align = 'start',
22
+ alignOffset = 0,
23
+ side = 'bottom',
24
+ sideOffset = 4,
25
+ className,
13
26
  ...props
14
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
15
- return <DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
27
+ }: MenuPrimitive.Popup.Props &
28
+ Pick<MenuPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>) {
29
+ return (
30
+ <MenuPrimitive.Portal>
31
+ <MenuPrimitive.Positioner
32
+ className="isolate z-50 outline-none"
33
+ align={align}
34
+ alignOffset={alignOffset}
35
+ side={side}
36
+ sideOffset={sideOffset}
37
+ >
38
+ <MenuPrimitive.Popup
39
+ data-slot="dropdown-menu-content"
40
+ className={cn(
41
+ 'cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) w-(--anchor-width) min-w-48 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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 dark:ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95',
42
+ className
43
+ )}
44
+ {...props}
45
+ />
46
+ </MenuPrimitive.Positioner>
47
+ </MenuPrimitive.Portal>
48
+ )
16
49
  }
17
50
 
18
- function DropdownMenuTrigger({
51
+ function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {
52
+ return <MenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
53
+ }
54
+
55
+ function DropdownMenuLabel({
19
56
  className,
57
+ inset,
20
58
  ...props
21
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {
59
+ }: MenuPrimitive.GroupLabel.Props & {
60
+ inset?: boolean
61
+ }) {
22
62
  return (
23
- <DropdownMenuPrimitive.Trigger
24
- data-slot="dropdown-menu-trigger"
25
- className={cn('aria-expanded:border-primary/8', className)}
63
+ <MenuPrimitive.GroupLabel
64
+ data-slot="dropdown-menu-label"
65
+ data-inset={inset}
66
+ className={cn('px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5', className)}
26
67
  {...props}
27
68
  />
28
69
  )
29
70
  }
30
71
 
31
- type DropdownMenuContentProps = React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {
32
- portalContainer?: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>['container']
33
- portalled?: boolean
34
- }
35
-
36
- function DropdownMenuContent({
72
+ function DropdownMenuItem({
37
73
  className,
38
- align = 'start',
39
- portalContainer,
40
- portalled = true,
41
- sideOffset = 4,
74
+ inset,
75
+ variant = 'default',
42
76
  ...props
43
- }: DropdownMenuContentProps) {
44
- const content = (
45
- <DropdownMenuPrimitive.Content
46
- data-slot="dropdown-menu-content"
47
- sideOffset={sideOffset}
48
- align={align}
77
+ }: MenuPrimitive.Item.Props & {
78
+ inset?: boolean
79
+ variant?: 'default' | 'destructive'
80
+ }) {
81
+ return (
82
+ <MenuPrimitive.Item
83
+ data-slot="dropdown-menu-item"
84
+ data-inset={inset}
85
+ data-variant={variant}
49
86
  className={cn(
50
- 'relative z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-35 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl/10 ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 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 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! data-[state=closed]:overflow-hidden dark:ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
87
+ "group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 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",
51
88
  className
52
89
  )}
53
90
  {...props}
54
91
  />
55
92
  )
56
-
57
- if (!portalled) {
58
- return content
59
- }
60
-
61
- return (
62
- <DropdownMenuPrimitive.Portal container={portalContainer}>
63
- {content}
64
- </DropdownMenuPrimitive.Portal>
65
- )
66
93
  }
67
94
 
68
- function DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
69
- return <DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
95
+ function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {
96
+ return <MenuPrimitive.SubmenuRoot data-slot="dropdown-menu-sub" {...props} />
70
97
  }
71
98
 
72
- function DropdownMenuItem({
99
+ function DropdownMenuSubTrigger({
73
100
  className,
74
101
  inset,
75
- variant = 'default',
102
+ children,
76
103
  ...props
77
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
104
+ }: MenuPrimitive.SubmenuTrigger.Props & {
78
105
  inset?: boolean
79
- variant?: 'default' | 'destructive'
80
106
  }) {
81
107
  return (
82
- <DropdownMenuPrimitive.Item
83
- data-slot="dropdown-menu-item"
108
+ <MenuPrimitive.SubmenuTrigger
109
+ data-slot="dropdown-menu-sub-trigger"
84
110
  data-inset={inset}
85
- data-variant={variant}
86
111
  className={cn(
87
- "group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-sm px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-9.5 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",
112
+ "flex cursor-default items-center gap-2 rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
113
+ className
114
+ )}
115
+ {...props}
116
+ >
117
+ {children}
118
+ <ChevronRightIcon className="cn-rtl-flip ml-auto" />
119
+ </MenuPrimitive.SubmenuTrigger>
120
+ )
121
+ }
122
+
123
+ function DropdownMenuSubContent({
124
+ align = 'start',
125
+ alignOffset = -3,
126
+ side = 'right',
127
+ sideOffset = 0,
128
+ className,
129
+ ...props
130
+ }: React.ComponentProps<typeof DropdownMenuContent>) {
131
+ return (
132
+ <DropdownMenuContent
133
+ data-slot="dropdown-menu-sub-content"
134
+ className={cn(
135
+ 'cn-menu-target cn-menu-translucent w-auto min-w-36 rounded-2xl bg-popover p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
88
136
  className
89
137
  )}
138
+ align={align}
139
+ alignOffset={alignOffset}
140
+ side={side}
141
+ sideOffset={sideOffset}
90
142
  {...props}
91
143
  />
92
144
  )
@@ -98,15 +150,15 @@ function DropdownMenuCheckboxItem({
98
150
  checked,
99
151
  inset,
100
152
  ...props
101
- }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {
153
+ }: MenuPrimitive.CheckboxItem.Props & {
102
154
  inset?: boolean
103
155
  }) {
104
156
  return (
105
- <DropdownMenuPrimitive.CheckboxItem
157
+ <MenuPrimitive.CheckboxItem
106
158
  data-slot="dropdown-menu-checkbox-item"
107
159
  data-inset={inset}
108
160
  className={cn(
109
- "relative flex cursor-default items-center gap-2.5 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
161
+ "relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
110
162
  className
111
163
  )}
112
164
  checked={checked}
@@ -116,19 +168,17 @@ function DropdownMenuCheckboxItem({
116
168
  className="pointer-events-none absolute right-2 flex items-center justify-center"
117
169
  data-slot="dropdown-menu-checkbox-item-indicator"
118
170
  >
119
- <DropdownMenuPrimitive.ItemIndicator>
171
+ <MenuPrimitive.CheckboxItemIndicator>
120
172
  <CheckIcon />
121
- </DropdownMenuPrimitive.ItemIndicator>
173
+ </MenuPrimitive.CheckboxItemIndicator>
122
174
  </span>
123
175
  {children}
124
- </DropdownMenuPrimitive.CheckboxItem>
176
+ </MenuPrimitive.CheckboxItem>
125
177
  )
126
178
  }
127
179
 
128
- function DropdownMenuRadioGroup({
129
- ...props
130
- }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {
131
- return <DropdownMenuPrimitive.RadioGroup data-slot="dropdown-menu-radio-group" {...props} />
180
+ function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {
181
+ return <MenuPrimitive.RadioGroup data-slot="dropdown-menu-radio-group" {...props} />
132
182
  }
133
183
 
134
184
  function DropdownMenuRadioItem({
@@ -136,15 +186,15 @@ function DropdownMenuRadioItem({
136
186
  children,
137
187
  inset,
138
188
  ...props
139
- }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {
189
+ }: MenuPrimitive.RadioItem.Props & {
140
190
  inset?: boolean
141
191
  }) {
142
192
  return (
143
- <DropdownMenuPrimitive.RadioItem
193
+ <MenuPrimitive.RadioItem
144
194
  data-slot="dropdown-menu-radio-item"
145
195
  data-inset={inset}
146
196
  className={cn(
147
- "relative flex cursor-default items-center gap-2.5 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none hover:bg-secondary focus:bg-secondary focus:text-foreground focus:**:text-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
197
+ "relative flex cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
148
198
  className
149
199
  )}
150
200
  {...props}
@@ -153,38 +203,18 @@ function DropdownMenuRadioItem({
153
203
  className="pointer-events-none absolute right-2 flex items-center justify-center"
154
204
  data-slot="dropdown-menu-radio-item-indicator"
155
205
  >
156
- <DropdownMenuPrimitive.ItemIndicator>
206
+ <MenuPrimitive.RadioItemIndicator>
157
207
  <CheckIcon />
158
- </DropdownMenuPrimitive.ItemIndicator>
208
+ </MenuPrimitive.RadioItemIndicator>
159
209
  </span>
160
210
  {children}
161
- </DropdownMenuPrimitive.RadioItem>
162
- )
163
- }
164
-
165
- function DropdownMenuLabel({
166
- className,
167
- inset,
168
- ...props
169
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
170
- inset?: boolean
171
- }) {
172
- return (
173
- <DropdownMenuPrimitive.Label
174
- data-slot="dropdown-menu-label"
175
- data-inset={inset}
176
- className={cn('px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5', className)}
177
- {...props}
178
- />
211
+ </MenuPrimitive.RadioItem>
179
212
  )
180
213
  }
181
214
 
182
- function DropdownMenuSeparator({
183
- className,
184
- ...props
185
- }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {
215
+ function DropdownMenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {
186
216
  return (
187
- <DropdownMenuPrimitive.Separator
217
+ <MenuPrimitive.Separator
188
218
  data-slot="dropdown-menu-separator"
189
219
  className={cn('-mx-1 my-1 h-px bg-border/50', className)}
190
220
  {...props}
@@ -205,50 +235,6 @@ function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'spa
205
235
  )
206
236
  }
207
237
 
208
- function DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
209
- return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />
210
- }
211
-
212
- function DropdownMenuSubTrigger({
213
- className,
214
- inset,
215
- children,
216
- ...props
217
- }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
218
- inset?: boolean
219
- }) {
220
- return (
221
- <DropdownMenuPrimitive.SubTrigger
222
- data-slot="dropdown-menu-sub-trigger"
223
- data-inset={inset}
224
- className={cn(
225
- "flex cursor-default items-center gap-2 rounded-sm px-3 py-2 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
226
- className
227
- )}
228
- {...props}
229
- >
230
- {children}
231
- <ChevronRightIcon className="ml-auto" />
232
- </DropdownMenuPrimitive.SubTrigger>
233
- )
234
- }
235
-
236
- function DropdownMenuSubContent({
237
- className,
238
- ...props
239
- }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {
240
- return (
241
- <DropdownMenuPrimitive.SubContent
242
- data-slot="dropdown-menu-sub-content"
243
- className={cn(
244
- 'relative z-50 min-w-36 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 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 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
245
- className
246
- )}
247
- {...props}
248
- />
249
- )
250
- }
251
-
252
238
  export {
253
239
  DropdownMenu,
254
240
  DropdownMenuPortal,
@@ -7,7 +7,7 @@ function Empty({ className, ...props }: React.ComponentProps<'div'>) {
7
7
  <div
8
8
  data-slot="empty"
9
9
  className={cn(
10
- 'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-sm border-dashed p-12 text-center text-balance',
10
+ 'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance',
11
11
  className
12
12
  )}
13
13
  {...props}
@@ -31,7 +31,7 @@ const emptyMediaVariants = cva(
31
31
  variants: {
32
32
  variant: {
33
33
  default: 'bg-transparent',
34
- icon: "flex size-10 shrink-0 items-center justify-center rounded-sm bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
34
+ icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
35
35
  }
36
36
  },
37
37
  defaultVariants: {
@@ -59,7 +59,7 @@ function EmptyTitle({ className, ...props }: React.ComponentProps<'div'>) {
59
59
  return (
60
60
  <div
61
61
  data-slot="empty-title"
62
- className={cn('font-heading text-lg font-medium tracking-tight', className)}
62
+ className={cn('cn-font-heading text-lg font-medium tracking-tight', className)}
63
63
  {...props}
64
64
  />
65
65
  )