betterstart-cli 0.0.105 → 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 (117) 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/data-table/data-grid-body.tsx +20 -0
  6. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-cell.tsx +20 -0
  7. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-head.tsx +21 -0
  8. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-header.tsx +20 -0
  9. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-row.tsx +22 -0
  10. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +7 -81
  11. package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +3 -5
  12. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +1 -1
  13. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +1 -1
  14. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +5 -7
  15. package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +9 -10
  16. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +2 -4
  17. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-restore-dialog.tsx +2 -4
  18. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +2 -4
  19. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-drawer.tsx +1 -1
  20. package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx +2 -2
  21. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx +5 -5
  22. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +52 -53
  23. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +3 -5
  24. package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +1 -1
  25. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-drawer.tsx +1 -1
  26. package/dist/assets/adapters/next/templates/init/pages/settings/forms/form-notifications-drawer.tsx +5 -5
  27. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-actions.tsx +20 -20
  28. package/dist/assets/adapters/next/templates/init/pages/users/change-password-dialog.tsx +7 -5
  29. package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +3 -5
  30. package/dist/assets/adapters/next/templates/init/pages/users/create-user-dialog.tsx +1 -3
  31. package/dist/assets/adapters/next/templates/init/pages/users/delete-user-dialog.tsx +11 -5
  32. package/dist/assets/adapters/next/templates/init/pages/users/edit-role-dialog.tsx +1 -1
  33. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-popover-button.tsx +13 -11
  34. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx +16 -14
  35. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +2 -2
  36. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +14 -12
  37. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +4 -11
  38. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-shortcut-badge.tsx +15 -0
  39. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +4 -11
  40. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-shortcut-badge.tsx +15 -0
  41. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +6 -42
  42. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-shortcut-badge.tsx +15 -0
  43. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/highlight-swatch.tsx +34 -0
  44. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +16 -14
  45. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +15 -13
  46. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu-item.tsx +1 -1
  47. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +31 -29
  48. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +15 -13
  49. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu-item.tsx +1 -1
  50. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +22 -20
  51. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +5 -14
  52. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-shortcut-badge.tsx +18 -0
  53. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/history-shortcut-badge.tsx +18 -0
  54. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +5 -14
  55. package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +16 -14
  56. package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +8 -6
  57. package/dist/assets/shared-assets/react-admin/custom/icon-picker/memoized-icon.tsx +10 -0
  58. package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +9 -10
  59. package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +2 -4
  60. package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +11 -28
  61. package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +30 -47
  62. package/dist/assets/shared-assets/react-admin/ui/alert.tsx +4 -4
  63. package/dist/assets/shared-assets/react-admin/ui/aspect-ratio.tsx +18 -5
  64. package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +10 -13
  65. package/dist/assets/shared-assets/react-admin/ui/badge.tsx +21 -20
  66. package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +20 -19
  67. package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +25 -24
  68. package/dist/assets/shared-assets/react-admin/ui/button.tsx +22 -31
  69. package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +9 -6
  70. package/dist/assets/shared-assets/react-admin/ui/card.tsx +6 -16
  71. package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +20 -17
  72. package/dist/assets/shared-assets/react-admin/ui/chart.tsx +19 -16
  73. package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +3 -4
  74. package/dist/assets/shared-assets/react-admin/ui/collapsible.tsx +6 -10
  75. package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +10 -36
  76. package/dist/assets/shared-assets/react-admin/ui/command.tsx +7 -6
  77. package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +77 -79
  78. package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +29 -54
  79. package/dist/assets/shared-assets/react-admin/ui/direction.tsx +1 -18
  80. package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +121 -49
  81. package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +117 -131
  82. package/dist/assets/shared-assets/react-admin/ui/empty.tsx +3 -3
  83. package/dist/assets/shared-assets/react-admin/ui/field.tsx +20 -30
  84. package/dist/assets/shared-assets/react-admin/ui/form.tsx +27 -31
  85. package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +26 -18
  86. package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +25 -12
  87. package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +3 -3
  88. package/dist/assets/shared-assets/react-admin/ui/input.tsx +4 -3
  89. package/dist/assets/shared-assets/react-admin/ui/item.tsx +26 -19
  90. package/dist/assets/shared-assets/react-admin/ui/label.tsx +18 -14
  91. package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +80 -73
  92. package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +3 -3
  93. package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +40 -39
  94. package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +18 -11
  95. package/dist/assets/shared-assets/react-admin/ui/popover.tsx +31 -30
  96. package/dist/assets/shared-assets/react-admin/ui/progress.tsx +51 -16
  97. package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +11 -17
  98. package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
  99. package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +9 -13
  100. package/dist/assets/shared-assets/react-admin/ui/select.tsx +66 -60
  101. package/dist/assets/shared-assets/react-admin/ui/separator.tsx +3 -10
  102. package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +22 -27
  103. package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +144 -126
  104. package/dist/assets/shared-assets/react-admin/ui/skeleton.tsx +1 -1
  105. package/dist/assets/shared-assets/react-admin/ui/slider.tsx +27 -29
  106. package/dist/assets/shared-assets/react-admin/ui/sonner.tsx +8 -3
  107. package/dist/assets/shared-assets/react-admin/ui/spinner.tsx +4 -3
  108. package/dist/assets/shared-assets/react-admin/ui/switch.tsx +4 -5
  109. package/dist/assets/shared-assets/react-admin/ui/table.tsx +8 -21
  110. package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +11 -16
  111. package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +2 -2
  112. package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +12 -11
  113. package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +4 -5
  114. package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +29 -27
  115. package/dist/cli.js +145 -111
  116. package/dist/cli.js.map +1 -1
  117. package/package.json +1 -1
@@ -1,18 +1,19 @@
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 { ContextMenu as ContextMenuPrimitive } from '@base-ui/react/context-menu'
5
6
  import { CheckIcon, ChevronRightIcon } from 'lucide-react'
6
- import { ContextMenu as ContextMenuPrimitive } from 'radix-ui'
7
7
 
8
- function ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
8
+ function ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) {
9
9
  return <ContextMenuPrimitive.Root data-slot="context-menu" {...props} />
10
10
  }
11
11
 
12
- function ContextMenuTrigger({
13
- className,
14
- ...props
15
- }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {
12
+ function ContextMenuPortal({ ...props }: ContextMenuPrimitive.Portal.Props) {
13
+ return <ContextMenuPrimitive.Portal data-slot="context-menu-portal" {...props} />
14
+ }
15
+
16
+ function ContextMenuTrigger({ className, ...props }: ContextMenuPrimitive.Trigger.Props) {
16
17
  return (
17
18
  <ContextMenuPrimitive.Trigger
18
19
  data-slot="context-menu-trigger"
@@ -22,41 +23,55 @@ function ContextMenuTrigger({
22
23
  )
23
24
  }
24
25
 
25
- function ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {
26
- return <ContextMenuPrimitive.Group data-slot="context-menu-group" {...props} />
27
- }
28
-
29
- function ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {
30
- return <ContextMenuPrimitive.Portal data-slot="context-menu-portal" {...props} />
31
- }
32
-
33
- function ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {
34
- return <ContextMenuPrimitive.Sub data-slot="context-menu-sub" {...props} />
26
+ function ContextMenuContent({
27
+ className,
28
+ align = 'start',
29
+ alignOffset = 4,
30
+ side = 'right',
31
+ sideOffset = 0,
32
+ ...props
33
+ }: ContextMenuPrimitive.Popup.Props &
34
+ Pick<ContextMenuPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>) {
35
+ return (
36
+ <ContextMenuPrimitive.Portal>
37
+ <ContextMenuPrimitive.Positioner
38
+ className="isolate z-50 outline-none"
39
+ align={align}
40
+ alignOffset={alignOffset}
41
+ side={side}
42
+ sideOffset={sideOffset}
43
+ >
44
+ <ContextMenuPrimitive.Popup
45
+ data-slot="context-menu-content"
46
+ className={cn(
47
+ 'cn-menu-target cn-menu-translucent z-50 max-h-(--available-height) 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 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',
48
+ className
49
+ )}
50
+ {...props}
51
+ />
52
+ </ContextMenuPrimitive.Positioner>
53
+ </ContextMenuPrimitive.Portal>
54
+ )
35
55
  }
36
56
 
37
- function ContextMenuRadioGroup({
38
- ...props
39
- }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {
40
- return <ContextMenuPrimitive.RadioGroup data-slot="context-menu-radio-group" {...props} />
57
+ function ContextMenuGroup({ ...props }: ContextMenuPrimitive.Group.Props) {
58
+ return <ContextMenuPrimitive.Group data-slot="context-menu-group" {...props} />
41
59
  }
42
60
 
43
- function ContextMenuContent({
61
+ function ContextMenuLabel({
44
62
  className,
63
+ inset,
45
64
  ...props
46
- }: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {
47
- side?: 'top' | 'right' | 'bottom' | 'left'
65
+ }: ContextMenuPrimitive.GroupLabel.Props & {
66
+ inset?: boolean
48
67
  }) {
49
68
  return (
50
- <ContextMenuPrimitive.Portal>
51
- <ContextMenuPrimitive.Content
52
- data-slot="context-menu-content"
53
- className={cn(
54
- 'relative z-50 max-h-(--radix-context-menu-content-available-height) min-w-48 origin-(--radix-context-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto 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-[variant=destructive]:**:text-accent-foreground! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:focus: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',
55
- className
56
- )}
57
- {...props}
58
- />
59
- </ContextMenuPrimitive.Portal>
69
+ <ContextMenuPrimitive.GroupLabel
70
+ data-slot="context-menu-label"
71
+ data-inset={inset}
72
+ className={cn('px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5', className)}
73
+ {...props}
74
+ />
60
75
  )
61
76
  }
62
77
 
@@ -65,7 +80,7 @@ function ContextMenuItem({
65
80
  inset,
66
81
  variant = 'default',
67
82
  ...props
68
- }: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {
83
+ }: ContextMenuPrimitive.Item.Props & {
69
84
  inset?: boolean
70
85
  variant?: 'default' | 'destructive'
71
86
  }) {
@@ -75,7 +90,7 @@ function ContextMenuItem({
75
90
  data-inset={inset}
76
91
  data-variant={variant}
77
92
  className={cn(
78
- "group/context-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-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 focus:*:[svg]:text-foreground data-[variant=destructive]:*:[svg]:text-foreground",
93
+ "group/context-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 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 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
79
94
  className
80
95
  )}
81
96
  {...props}
@@ -83,41 +98,40 @@ function ContextMenuItem({
83
98
  )
84
99
  }
85
100
 
101
+ function ContextMenuSub({ ...props }: ContextMenuPrimitive.SubmenuRoot.Props) {
102
+ return <ContextMenuPrimitive.SubmenuRoot data-slot="context-menu-sub" {...props} />
103
+ }
104
+
86
105
  function ContextMenuSubTrigger({
87
106
  className,
88
107
  inset,
89
108
  children,
90
109
  ...props
91
- }: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
110
+ }: ContextMenuPrimitive.SubmenuTrigger.Props & {
92
111
  inset?: boolean
93
112
  }) {
94
113
  return (
95
- <ContextMenuPrimitive.SubTrigger
114
+ <ContextMenuPrimitive.SubmenuTrigger
96
115
  data-slot="context-menu-sub-trigger"
97
116
  data-inset={inset}
98
117
  className={cn(
99
- "flex cursor-default items-center rounded-sm px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-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",
118
+ "flex cursor-default items-center rounded-xl px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-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",
100
119
  className
101
120
  )}
102
121
  {...props}
103
122
  >
104
123
  {children}
105
- <ChevronRightIcon className="ml-auto" />
106
- </ContextMenuPrimitive.SubTrigger>
124
+ <ChevronRightIcon className="cn-rtl-flip ml-auto" />
125
+ </ContextMenuPrimitive.SubmenuTrigger>
107
126
  )
108
127
  }
109
128
 
110
- function ContextMenuSubContent({
111
- className,
112
- ...props
113
- }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {
129
+ function ContextMenuSubContent({ ...props }: React.ComponentProps<typeof ContextMenuContent>) {
114
130
  return (
115
- <ContextMenuPrimitive.SubContent
131
+ <ContextMenuContent
116
132
  data-slot="context-menu-sub-content"
117
- className={cn(
118
- 'relative z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) animate-none! overflow-hidden rounded-sm border bg-popover/70 p-1 text-popover-foreground shadow-lg 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-[variant=destructive]:**:text-accent-foreground! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:focus: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',
119
- className
120
- )}
133
+ className="cn-menu-target cn-menu-translucent shadow-lg"
134
+ side="right"
121
135
  {...props}
122
136
  />
123
137
  )
@@ -129,7 +143,7 @@ function ContextMenuCheckboxItem({
129
143
  checked,
130
144
  inset,
131
145
  ...props
132
- }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {
146
+ }: ContextMenuPrimitive.CheckboxItem.Props & {
133
147
  inset?: boolean
134
148
  }) {
135
149
  return (
@@ -137,28 +151,32 @@ function ContextMenuCheckboxItem({
137
151
  data-slot="context-menu-checkbox-item"
138
152
  data-inset={inset}
139
153
  className={cn(
140
- "relative flex cursor-default items-center gap-2 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent 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",
154
+ "relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent 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",
141
155
  className
142
156
  )}
143
157
  checked={checked}
144
158
  {...props}
145
159
  >
146
160
  <span className="pointer-events-none absolute right-2">
147
- <ContextMenuPrimitive.ItemIndicator>
161
+ <ContextMenuPrimitive.CheckboxItemIndicator>
148
162
  <CheckIcon />
149
- </ContextMenuPrimitive.ItemIndicator>
163
+ </ContextMenuPrimitive.CheckboxItemIndicator>
150
164
  </span>
151
165
  {children}
152
166
  </ContextMenuPrimitive.CheckboxItem>
153
167
  )
154
168
  }
155
169
 
170
+ function ContextMenuRadioGroup({ ...props }: ContextMenuPrimitive.RadioGroup.Props) {
171
+ return <ContextMenuPrimitive.RadioGroup data-slot="context-menu-radio-group" {...props} />
172
+ }
173
+
156
174
  function ContextMenuRadioItem({
157
175
  className,
158
176
  children,
159
177
  inset,
160
178
  ...props
161
- }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {
179
+ }: ContextMenuPrimitive.RadioItem.Props & {
162
180
  inset?: boolean
163
181
  }) {
164
182
  return (
@@ -166,42 +184,22 @@ function ContextMenuRadioItem({
166
184
  data-slot="context-menu-radio-item"
167
185
  data-inset={inset}
168
186
  className={cn(
169
- "relative flex cursor-default items-center gap-2 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent 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",
187
+ "relative flex cursor-default items-center gap-2 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent 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",
170
188
  className
171
189
  )}
172
190
  {...props}
173
191
  >
174
192
  <span className="pointer-events-none absolute right-2">
175
- <ContextMenuPrimitive.ItemIndicator>
193
+ <ContextMenuPrimitive.RadioItemIndicator>
176
194
  <CheckIcon />
177
- </ContextMenuPrimitive.ItemIndicator>
195
+ </ContextMenuPrimitive.RadioItemIndicator>
178
196
  </span>
179
197
  {children}
180
198
  </ContextMenuPrimitive.RadioItem>
181
199
  )
182
200
  }
183
201
 
184
- function ContextMenuLabel({
185
- className,
186
- inset,
187
- ...props
188
- }: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {
189
- inset?: boolean
190
- }) {
191
- return (
192
- <ContextMenuPrimitive.Label
193
- data-slot="context-menu-label"
194
- data-inset={inset}
195
- className={cn('px-3 py-2.5 text-xs text-muted-foreground data-inset:pl-9.5', className)}
196
- {...props}
197
- />
198
- )
199
- }
200
-
201
- function ContextMenuSeparator({
202
- className,
203
- ...props
204
- }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {
202
+ function ContextMenuSeparator({ className, ...props }: ContextMenuPrimitive.Separator.Props) {
205
203
  return (
206
204
  <ContextMenuPrimitive.Separator
207
205
  data-slot="context-menu-separator"
@@ -1,36 +1,33 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
3
+ import * as React from 'react'
4
4
  import { Button } from '@admin/components/ui/button'
5
5
  import { cn } from '@admin/utils/shared/cn'
6
+ import { Dialog as DialogPrimitive } from '@base-ui/react/dialog'
6
7
  import { XIcon } from 'lucide-react'
7
- import { Dialog as DialogPrimitive } from 'radix-ui'
8
8
 
9
- function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {
9
+ function Dialog({ ...props }: DialogPrimitive.Root.Props) {
10
10
  return <DialogPrimitive.Root data-slot="dialog" {...props} />
11
11
  }
12
12
 
13
- function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
13
+ function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {
14
14
  return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
15
15
  }
16
16
 
17
- function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {
17
+ function DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {
18
18
  return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
19
19
  }
20
20
 
21
- function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {
21
+ function DialogClose({ ...props }: DialogPrimitive.Close.Props) {
22
22
  return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
23
23
  }
24
24
 
25
- function DialogOverlay({
26
- className,
27
- ...props
28
- }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {
25
+ function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props) {
29
26
  return (
30
- <DialogPrimitive.Overlay
27
+ <DialogPrimitive.Backdrop
31
28
  data-slot="dialog-overlay"
32
29
  className={cn(
33
- 'fixed inset-0 isolate z-200 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',
30
+ 'fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',
34
31
  className
35
32
  )}
36
33
  {...props}
@@ -43,55 +40,43 @@ function DialogContent({
43
40
  children,
44
41
  showCloseButton = true,
45
42
  ...props
46
- }: React.ComponentProps<typeof DialogPrimitive.Content> & {
43
+ }: DialogPrimitive.Popup.Props & {
47
44
  showCloseButton?: boolean
48
45
  }) {
49
46
  return (
50
47
  <DialogPortal>
51
48
  <DialogOverlay />
52
- <DialogPrimitive.Content
49
+ <DialogPrimitive.Popup
53
50
  data-slot="dialog-content"
54
51
  className={cn(
55
- 'fixed top-1/2 left-1/2 z-200 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-0 overflow-hidden rounded-sm bg-card text-sm text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95',
52
+ 'fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-sm text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md 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',
56
53
  className
57
54
  )}
58
55
  {...props}
59
56
  >
60
57
  {children}
61
58
  {showCloseButton && (
62
- <DialogPrimitive.Close data-slot="dialog-close" asChild>
63
- <Button variant="ghost" className="absolute top-4 right-4" size="icon-sm">
64
- <XIcon />
65
- <span className="sr-only">Close</span>
66
- </Button>
59
+ <DialogPrimitive.Close
60
+ data-slot="dialog-close"
61
+ render={<Button variant="ghost" className="absolute top-4 right-4" size="icon-sm" />}
62
+ >
63
+ <XIcon />
64
+ <span className="sr-only">Close</span>
67
65
  </DialogPrimitive.Close>
68
66
  )}
69
- </DialogPrimitive.Content>
67
+ </DialogPrimitive.Popup>
70
68
  </DialogPortal>
71
69
  )
72
70
  }
73
71
 
74
72
  function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
75
73
  return (
76
- <div
77
- data-slot="dialog-header"
78
- className={cn('flex flex-col gap-1 px-6 pt-6 pb-4', className)}
79
- {...props}
80
- />
74
+ <div data-slot="dialog-header" className={cn('flex flex-col gap-2', className)} {...props} />
81
75
  )
82
76
  }
83
77
 
84
78
  function DialogBody({ className, ...props }: React.ComponentProps<'div'>) {
85
- return (
86
- <div
87
- data-slot="dialog-body"
88
- className={cn(
89
- 'flex flex-col gap-1 rounded-sm border border-border bg-card p-6 shadow-input',
90
- className
91
- )}
92
- {...props}
93
- />
94
- )
79
+ return <div data-slot="dialog-body" className={cn('flex flex-col gap-4', className)} {...props} />
95
80
  }
96
81
 
97
82
  function DialogFooter({
@@ -105,38 +90,28 @@ function DialogFooter({
105
90
  return (
106
91
  <div
107
92
  data-slot="dialog-footer"
108
- className={cn(
109
- 'flex flex-col-reverse items-center gap-1 bg-muted px-6 pt-2 pb-3 sm:flex-row sm:justify-between',
110
- className
111
- )}
93
+ className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)}
112
94
  {...props}
113
95
  >
96
+ {children}
114
97
  {showCloseButton && (
115
- <DialogPrimitive.Close asChild>
116
- <Button variant="outline" size="lg">
117
- Close
118
- </Button>
119
- </DialogPrimitive.Close>
98
+ <DialogPrimitive.Close render={<Button variant="outline" />}>Close</DialogPrimitive.Close>
120
99
  )}
121
- <div className="flex items-center gap-2">{children}</div>
122
100
  </div>
123
101
  )
124
102
  }
125
103
 
126
- function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {
104
+ function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props) {
127
105
  return (
128
106
  <DialogPrimitive.Title
129
107
  data-slot="dialog-title"
130
- className={cn('font-heading text-base leading-none font-medium', className)}
108
+ className={cn('cn-font-heading text-base leading-none font-medium', className)}
131
109
  {...props}
132
110
  />
133
111
  )
134
112
  }
135
113
 
136
- function DialogDescription({
137
- className,
138
- ...props
139
- }: React.ComponentProps<typeof DialogPrimitive.Description>) {
114
+ function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props) {
140
115
  return (
141
116
  <DialogPrimitive.Description
142
117
  data-slot="dialog-description"
@@ -154,11 +129,11 @@ export {
154
129
  DialogClose,
155
130
  DialogContent,
156
131
  DialogDescription,
132
+ DialogBody,
157
133
  DialogFooter,
158
134
  DialogHeader,
159
135
  DialogOverlay,
160
136
  DialogPortal,
161
137
  DialogTitle,
162
- DialogTrigger,
163
- DialogBody
138
+ DialogTrigger
164
139
  }
@@ -1,20 +1,3 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
4
- import { Direction } from 'radix-ui'
5
-
6
- function DirectionProvider({
7
- dir,
8
- direction,
9
- children
10
- }: React.ComponentProps<typeof Direction.DirectionProvider> & {
11
- direction?: React.ComponentProps<typeof Direction.DirectionProvider>['dir']
12
- }) {
13
- return (
14
- <Direction.DirectionProvider dir={direction ?? dir}>{children}</Direction.DirectionProvider>
15
- )
16
- }
17
-
18
- const useDirection = Direction.useDirection
19
-
20
- export { DirectionProvider, useDirection }
3
+ export { DirectionProvider, useDirection } from '@base-ui/react/direction-provider'