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,43 +1,48 @@
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 { Popover as PopoverPrimitive } from 'radix-ui'
5
+ import { Popover as PopoverPrimitive } from '@base-ui/react/popover'
6
6
 
7
- function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {
7
+ function Popover({ ...props }: PopoverPrimitive.Root.Props) {
8
8
  return <PopoverPrimitive.Root data-slot="popover" {...props} />
9
9
  }
10
10
 
11
- function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
11
+ function PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {
12
12
  return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />
13
13
  }
14
14
 
15
15
  function PopoverContent({
16
16
  className,
17
17
  align = 'center',
18
+ alignOffset = 0,
19
+ side = 'bottom',
18
20
  sideOffset = 4,
19
21
  ...props
20
- }: React.ComponentProps<typeof PopoverPrimitive.Content>) {
22
+ }: PopoverPrimitive.Popup.Props &
23
+ Pick<PopoverPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>) {
21
24
  return (
22
25
  <PopoverPrimitive.Portal>
23
- <PopoverPrimitive.Content
24
- data-slot="popover-content"
26
+ <PopoverPrimitive.Positioner
25
27
  align={align}
28
+ alignOffset={alignOffset}
29
+ side={side}
26
30
  sideOffset={sideOffset}
27
- className={cn(
28
- 'z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-sm bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden 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',
29
- className
30
- )}
31
- {...props}
32
- />
31
+ className="isolate z-50"
32
+ >
33
+ <PopoverPrimitive.Popup
34
+ data-slot="popover-content"
35
+ className={cn(
36
+ 'z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 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',
37
+ className
38
+ )}
39
+ {...props}
40
+ />
41
+ </PopoverPrimitive.Positioner>
33
42
  </PopoverPrimitive.Portal>
34
43
  )
35
44
  }
36
45
 
37
- function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {
38
- return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />
39
- }
40
-
41
46
  function PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {
42
47
  return (
43
48
  <div
@@ -48,15 +53,19 @@ function PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {
48
53
  )
49
54
  }
50
55
 
51
- function PopoverTitle({ className, ...props }: React.ComponentProps<'h2'>) {
56
+ function PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {
52
57
  return (
53
- <div data-slot="popover-title" className={cn('text-base font-medium', className)} {...props} />
58
+ <PopoverPrimitive.Title
59
+ data-slot="popover-title"
60
+ className={cn('text-base font-medium', className)}
61
+ {...props}
62
+ />
54
63
  )
55
64
  }
56
65
 
57
- function PopoverDescription({ className, ...props }: React.ComponentProps<'p'>) {
66
+ function PopoverDescription({ className, ...props }: PopoverPrimitive.Description.Props) {
58
67
  return (
59
- <p
68
+ <PopoverPrimitive.Description
60
69
  data-slot="popover-description"
61
70
  className={cn('text-muted-foreground', className)}
62
71
  {...props}
@@ -64,12 +73,4 @@ function PopoverDescription({ className, ...props }: React.ComponentProps<'p'>)
64
73
  )
65
74
  }
66
75
 
67
- export {
68
- Popover,
69
- PopoverAnchor,
70
- PopoverContent,
71
- PopoverDescription,
72
- PopoverHeader,
73
- PopoverTitle,
74
- PopoverTrigger
75
- }
76
+ export { Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger }
@@ -1,30 +1,65 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
4
3
  import { cn } from '@admin/utils/shared/cn'
5
- import { Progress as ProgressPrimitive } from 'radix-ui'
4
+ import { Progress as ProgressPrimitive } from '@base-ui/react/progress'
6
5
 
7
- function Progress({
8
- className,
9
- value,
10
- ...props
11
- }: React.ComponentProps<typeof ProgressPrimitive.Root>) {
6
+ function Progress({ className, children, value, ...props }: ProgressPrimitive.Root.Props) {
12
7
  return (
13
8
  <ProgressPrimitive.Root
9
+ value={value}
14
10
  data-slot="progress"
11
+ className={cn('flex flex-wrap gap-3', className)}
12
+ {...props}
13
+ >
14
+ {children}
15
+ <ProgressTrack>
16
+ <ProgressIndicator />
17
+ </ProgressTrack>
18
+ </ProgressPrimitive.Root>
19
+ )
20
+ }
21
+
22
+ function ProgressTrack({ className, ...props }: ProgressPrimitive.Track.Props) {
23
+ return (
24
+ <ProgressPrimitive.Track
15
25
  className={cn(
16
- 'relative flex h-3 w-full items-center overflow-x-hidden rounded-sm bg-muted',
26
+ 'relative flex h-3 w-full items-center overflow-x-hidden rounded-4xl bg-muted',
17
27
  className
18
28
  )}
29
+ data-slot="progress-track"
19
30
  {...props}
20
- >
21
- <ProgressPrimitive.Indicator
22
- data-slot="progress-indicator"
23
- className="size-full flex-1 bg-primary transition-all"
24
- style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
25
- />
26
- </ProgressPrimitive.Root>
31
+ />
32
+ )
33
+ }
34
+
35
+ function ProgressIndicator({ className, ...props }: ProgressPrimitive.Indicator.Props) {
36
+ return (
37
+ <ProgressPrimitive.Indicator
38
+ data-slot="progress-indicator"
39
+ className={cn('h-full bg-primary transition-all', className)}
40
+ {...props}
41
+ />
42
+ )
43
+ }
44
+
45
+ function ProgressLabel({ className, ...props }: ProgressPrimitive.Label.Props) {
46
+ return (
47
+ <ProgressPrimitive.Label
48
+ className={cn('text-sm font-medium', className)}
49
+ data-slot="progress-label"
50
+ {...props}
51
+ />
52
+ )
53
+ }
54
+
55
+ function ProgressValue({ className, ...props }: ProgressPrimitive.Value.Props) {
56
+ return (
57
+ <ProgressPrimitive.Value
58
+ className={cn('ml-auto text-sm text-muted-foreground tabular-nums', className)}
59
+ data-slot="progress-value"
60
+ {...props}
61
+ />
27
62
  )
28
63
  }
29
64
 
30
- export { Progress }
65
+ export { Progress, ProgressTrack, ProgressIndicator, ProgressLabel, ProgressValue }
@@ -1,15 +1,12 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
4
3
  import { cn } from '@admin/utils/shared/cn'
5
- import { RadioGroup as RadioGroupPrimitive } from 'radix-ui'
4
+ import { Radio as RadioPrimitive } from '@base-ui/react/radio'
5
+ import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group'
6
6
 
7
- function RadioGroup({
8
- className,
9
- ...props
10
- }: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {
7
+ function RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {
11
8
  return (
12
- <RadioGroupPrimitive.Root
9
+ <RadioGroupPrimitive
13
10
  data-slot="radio-group"
14
11
  className={cn('grid w-full gap-3', className)}
15
12
  {...props}
@@ -17,26 +14,23 @@ function RadioGroup({
17
14
  )
18
15
  }
19
16
 
20
- function RadioGroupItem({
21
- className,
22
- ...props
23
- }: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {
17
+ function RadioGroupItem({ className, ...props }: RadioPrimitive.Root.Props) {
24
18
  return (
25
- <RadioGroupPrimitive.Item
19
+ <RadioPrimitive.Root
26
20
  data-slot="radio-group-item"
27
21
  className={cn(
28
- 'group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-sm border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary',
22
+ 'group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary',
29
23
  className
30
24
  )}
31
25
  {...props}
32
26
  >
33
- <RadioGroupPrimitive.Indicator
27
+ <RadioPrimitive.Indicator
34
28
  data-slot="radio-group-indicator"
35
29
  className="flex size-4 items-center justify-center"
36
30
  >
37
- <span className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-sm bg-primary-foreground" />
38
- </RadioGroupPrimitive.Indicator>
39
- </RadioGroupPrimitive.Item>
31
+ <span className="absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground" />
32
+ </RadioPrimitive.Indicator>
33
+ </RadioPrimitive.Root>
40
34
  )
41
35
  }
42
36
 
@@ -33,7 +33,7 @@ function ResizableHandle({
33
33
  )}
34
34
  {...props}
35
35
  >
36
- {withHandle && <div className="z-10 flex h-6 w-1 shrink-0 rounded-sm bg-border" />}
36
+ {withHandle && <div className="z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border" />}
37
37
  </ResizablePrimitive.Separator>
38
38
  )
39
39
  }
@@ -1,14 +1,10 @@
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 { ScrollArea as ScrollAreaPrimitive } from 'radix-ui'
5
+ import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area'
6
6
 
7
- function ScrollArea({
8
- className,
9
- children,
10
- ...props
11
- }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {
7
+ function ScrollArea({ className, children, ...props }: ScrollAreaPrimitive.Root.Props) {
12
8
  return (
13
9
  <ScrollAreaPrimitive.Root
14
10
  data-slot="scroll-area"
@@ -17,7 +13,7 @@ function ScrollArea({
17
13
  >
18
14
  <ScrollAreaPrimitive.Viewport
19
15
  data-slot="scroll-area-viewport"
20
- className="size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 [&>div]:block!"
16
+ className="size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1"
21
17
  >
22
18
  {children}
23
19
  </ScrollAreaPrimitive.Viewport>
@@ -31,9 +27,9 @@ function ScrollBar({
31
27
  className,
32
28
  orientation = 'vertical',
33
29
  ...props
34
- }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {
30
+ }: ScrollAreaPrimitive.Scrollbar.Props) {
35
31
  return (
36
- <ScrollAreaPrimitive.ScrollAreaScrollbar
32
+ <ScrollAreaPrimitive.Scrollbar
37
33
  data-slot="scroll-area-scrollbar"
38
34
  data-orientation={orientation}
39
35
  orientation={orientation}
@@ -43,11 +39,11 @@ function ScrollBar({
43
39
  )}
44
40
  {...props}
45
41
  >
46
- <ScrollAreaPrimitive.ScrollAreaThumb
42
+ <ScrollAreaPrimitive.Thumb
47
43
  data-slot="scroll-area-thumb"
48
- className="relative flex-1 rounded-sm bg-border"
44
+ className="relative flex-1 rounded-full bg-border"
49
45
  />
50
- </ScrollAreaPrimitive.ScrollAreaScrollbar>
46
+ </ScrollAreaPrimitive.Scrollbar>
51
47
  )
52
48
  }
53
49
 
@@ -1,15 +1,13 @@
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 { Select as SelectPrimitive } from '@base-ui/react/select'
5
6
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react'
6
- import { Select as SelectPrimitive } from 'radix-ui'
7
7
 
8
- function Select({ ...props }: React.ComponentProps<typeof SelectPrimitive.Root>) {
9
- return <SelectPrimitive.Root data-slot="select" {...props} />
10
- }
8
+ const Select = SelectPrimitive.Root
11
9
 
12
- function SelectGroup({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Group>) {
10
+ function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {
13
11
  return (
14
12
  <SelectPrimitive.Group
15
13
  data-slot="select-group"
@@ -19,8 +17,14 @@ function SelectGroup({ className, ...props }: React.ComponentProps<typeof Select
19
17
  )
20
18
  }
21
19
 
22
- function SelectValue({ ...props }: React.ComponentProps<typeof SelectPrimitive.Value>) {
23
- return <SelectPrimitive.Value data-slot="select-value" {...props} />
20
+ function SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {
21
+ return (
22
+ <SelectPrimitive.Value
23
+ data-slot="select-value"
24
+ className={cn('flex flex-1 text-left', className)}
25
+ {...props}
26
+ />
27
+ )
24
28
  }
25
29
 
26
30
  function SelectTrigger({
@@ -28,7 +32,7 @@ function SelectTrigger({
28
32
  size = 'default',
29
33
  children,
30
34
  ...props
31
- }: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
35
+ }: SelectPrimitive.Trigger.Props & {
32
36
  size?: 'sm' | 'default'
33
37
  }) {
34
38
  return (
@@ -36,15 +40,15 @@ function SelectTrigger({
36
40
  data-slot="select-trigger"
37
41
  data-size={size}
38
42
  className={cn(
39
- "flex w-fit items-center justify-between gap-1.5 rounded-sm border border-border bg-input px-3 py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
43
+ "flex w-fit items-center justify-between gap-1.5 rounded-4xl border border-input bg-input/30 px-3 py-2 text-sm whitespace-nowrap transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
40
44
  className
41
45
  )}
42
46
  {...props}
43
47
  >
44
48
  {children}
45
- <SelectPrimitive.Icon asChild>
46
- <ChevronDownIcon className="pointer-events-none size-4 text-foreground" />
47
- </SelectPrimitive.Icon>
49
+ <SelectPrimitive.Icon
50
+ render={<ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />}
51
+ />
48
52
  </SelectPrimitive.Trigger>
49
53
  )
50
54
  }
@@ -52,43 +56,48 @@ function SelectTrigger({
52
56
  function SelectContent({
53
57
  className,
54
58
  children,
55
- position = 'item-aligned',
59
+ side = 'bottom',
60
+ sideOffset = 4,
56
61
  align = 'center',
62
+ alignOffset = 0,
63
+ alignItemWithTrigger = true,
57
64
  ...props
58
- }: React.ComponentProps<typeof SelectPrimitive.Content>) {
65
+ }: SelectPrimitive.Popup.Props &
66
+ Pick<
67
+ SelectPrimitive.Positioner.Props,
68
+ 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'
69
+ >) {
59
70
  return (
60
71
  <SelectPrimitive.Portal>
61
- <SelectPrimitive.Content
62
- data-slot="select-content"
63
- data-align-trigger={position === 'item-aligned'}
64
- className={cn(
65
- 'relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) 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',
66
- position === 'popper' &&
67
- 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
68
- className
69
- )}
70
- position={position}
72
+ <SelectPrimitive.Positioner
73
+ side={side}
74
+ sideOffset={sideOffset}
71
75
  align={align}
72
- {...props}
76
+ alignOffset={alignOffset}
77
+ alignItemWithTrigger={alignItemWithTrigger}
78
+ className="isolate z-50"
73
79
  >
74
- <SelectScrollUpButton />
75
- <SelectPrimitive.Viewport
76
- data-position={position}
80
+ <SelectPrimitive.Popup
81
+ data-slot="select-content"
82
+ data-align-trigger={alignItemWithTrigger}
77
83
  className={cn(
78
- 'data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)'
84
+ 'cn-menu-target cn-menu-translucent relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[align-trigger=true]:animate-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',
85
+ className
79
86
  )}
87
+ {...props}
80
88
  >
81
- {children}
82
- </SelectPrimitive.Viewport>
83
- <SelectScrollDownButton />
84
- </SelectPrimitive.Content>
89
+ <SelectScrollUpButton />
90
+ <SelectPrimitive.List>{children}</SelectPrimitive.List>
91
+ <SelectScrollDownButton />
92
+ </SelectPrimitive.Popup>
93
+ </SelectPrimitive.Positioner>
85
94
  </SelectPrimitive.Portal>
86
95
  )
87
96
  }
88
97
 
89
- function SelectLabel({ className, ...props }: React.ComponentProps<typeof SelectPrimitive.Label>) {
98
+ function SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props) {
90
99
  return (
91
- <SelectPrimitive.Label
100
+ <SelectPrimitive.GroupLabel
92
101
  data-slot="select-label"
93
102
  className={cn('px-3 py-2.5 text-xs text-muted-foreground', className)}
94
103
  {...props}
@@ -96,34 +105,31 @@ function SelectLabel({ className, ...props }: React.ComponentProps<typeof Select
96
105
  )
97
106
  }
98
107
 
99
- function SelectItem({
100
- className,
101
- children,
102
- ...props
103
- }: React.ComponentProps<typeof SelectPrimitive.Item>) {
108
+ function SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props) {
104
109
  return (
105
110
  <SelectPrimitive.Item
106
111
  data-slot="select-item"
107
112
  className={cn(
108
- "relative flex w-full cursor-default items-center gap-2.5 rounded-sm py-1 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
113
+ "relative flex w-full 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 not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
109
114
  className
110
115
  )}
111
116
  {...props}
112
117
  >
113
- <span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center">
114
- <SelectPrimitive.ItemIndicator>
115
- <CheckIcon className="pointer-events-none" />
116
- </SelectPrimitive.ItemIndicator>
117
- </span>
118
- <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
118
+ <SelectPrimitive.ItemText className="flex flex-1 shrink-0 gap-2 whitespace-nowrap">
119
+ {children}
120
+ </SelectPrimitive.ItemText>
121
+ <SelectPrimitive.ItemIndicator
122
+ render={
123
+ <span className="pointer-events-none absolute right-2 flex size-4 items-center justify-center" />
124
+ }
125
+ >
126
+ <CheckIcon className="pointer-events-none" />
127
+ </SelectPrimitive.ItemIndicator>
119
128
  </SelectPrimitive.Item>
120
129
  )
121
130
  }
122
131
 
123
- function SelectSeparator({
124
- className,
125
- ...props
126
- }: React.ComponentProps<typeof SelectPrimitive.Separator>) {
132
+ function SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props) {
127
133
  return (
128
134
  <SelectPrimitive.Separator
129
135
  data-slot="select-separator"
@@ -136,36 +142,36 @@ function SelectSeparator({
136
142
  function SelectScrollUpButton({
137
143
  className,
138
144
  ...props
139
- }: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
145
+ }: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {
140
146
  return (
141
- <SelectPrimitive.ScrollUpButton
147
+ <SelectPrimitive.ScrollUpArrow
142
148
  data-slot="select-scroll-up-button"
143
149
  className={cn(
144
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
150
+ "top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
145
151
  className
146
152
  )}
147
153
  {...props}
148
154
  >
149
155
  <ChevronUpIcon />
150
- </SelectPrimitive.ScrollUpButton>
156
+ </SelectPrimitive.ScrollUpArrow>
151
157
  )
152
158
  }
153
159
 
154
160
  function SelectScrollDownButton({
155
161
  className,
156
162
  ...props
157
- }: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
163
+ }: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {
158
164
  return (
159
- <SelectPrimitive.ScrollDownButton
165
+ <SelectPrimitive.ScrollDownArrow
160
166
  data-slot="select-scroll-down-button"
161
167
  className={cn(
162
- "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
168
+ "bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
163
169
  className
164
170
  )}
165
171
  {...props}
166
172
  >
167
173
  <ChevronDownIcon />
168
- </SelectPrimitive.ScrollDownButton>
174
+ </SelectPrimitive.ScrollDownArrow>
169
175
  )
170
176
  }
171
177
 
@@ -1,19 +1,12 @@
1
1
  'use client'
2
2
 
3
- import type * as React from 'react'
4
3
  import { cn } from '@admin/utils/shared/cn'
5
- import { Separator as SeparatorPrimitive } from 'radix-ui'
4
+ import { Separator as SeparatorPrimitive } from '@base-ui/react/separator'
6
5
 
7
- function Separator({
8
- className,
9
- orientation = 'horizontal',
10
- decorative = true,
11
- ...props
12
- }: React.ComponentProps<typeof SeparatorPrimitive.Root>) {
6
+ function Separator({ className, orientation = 'horizontal', ...props }: SeparatorPrimitive.Props) {
13
7
  return (
14
- <SeparatorPrimitive.Root
8
+ <SeparatorPrimitive
15
9
  data-slot="separator"
16
- decorative={decorative}
17
10
  orientation={orientation}
18
11
  className={cn(
19
12
  'shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch',