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
@@ -108,9 +108,7 @@ export function CreateUserDialog() {
108
108
 
109
109
  return (
110
110
  <Dialog open={open} onOpenChange={handleOpenChange}>
111
- <DialogTrigger asChild>
112
- <Button>Create User</Button>
113
- </DialogTrigger>
111
+ <DialogTrigger render={<Button />}>Create User</DialogTrigger>
114
112
  <DialogContent className="sm:max-w-135">
115
113
  <Form {...form}>
116
114
  <form onSubmit={form.handleSubmit((values) => mutation.mutate(values))}>
@@ -104,11 +104,17 @@ export function DeleteUserDialog({ userId, userName, isCurrentUser }: DeleteUser
104
104
 
105
105
  return (
106
106
  <AlertDialog open={open} onOpenChange={handleOpenChange}>
107
- <AlertDialogTrigger asChild>
108
- <DropdownMenuItem variant="destructive" onSelect={(event) => event.preventDefault()}>
109
- <Trash className="size-4" />
110
- Delete user
111
- </DropdownMenuItem>
107
+ <AlertDialogTrigger
108
+ render={
109
+ <DropdownMenuItem
110
+ variant="destructive"
111
+ closeOnClick={false}
112
+ onClick={(event) => event.preventDefault()}
113
+ />
114
+ }
115
+ >
116
+ <Trash className="size-4" />
117
+ Delete user
112
118
  </AlertDialogTrigger>
113
119
  <AlertDialogContent>
114
120
  <Form {...form}>
@@ -56,7 +56,7 @@ export function EditRoleDialog({ userId, currentRole, userName, children }: Edit
56
56
 
57
57
  return (
58
58
  <Dialog open={open} onOpenChange={setOpen}>
59
- <DialogTrigger asChild>{children}</DialogTrigger>
59
+ <DialogTrigger render={children as React.ReactElement} />
60
60
  <DialogContent className="sm:max-w-87.5">
61
61
  <DialogHeader>
62
62
  <DialogTitle>Edit Role</DialogTitle>
@@ -36,17 +36,19 @@ export function MathPopoverButton({
36
36
 
37
37
  return (
38
38
  <Popover open={isOpen} onOpenChange={setIsOpen}>
39
- <PopoverTrigger asChild>
40
- <MathButton
41
- {...buttonProps}
42
- text={text}
43
- disabled={disabled || !canInsert}
44
- aria-label="Insert math"
45
- title="Math"
46
- onPointerDown={(event) => event.preventDefault()}
47
- onClick={() => setIsOpen((current) => !current)}
48
- />
49
- </PopoverTrigger>
39
+ <PopoverTrigger
40
+ render={
41
+ <MathButton
42
+ {...buttonProps}
43
+ text={text}
44
+ disabled={disabled || !canInsert}
45
+ aria-label="Insert math"
46
+ title="Math"
47
+ onPointerDown={(event) => event.preventDefault()}
48
+ onClick={() => setIsOpen((current) => !current)}
49
+ />
50
+ }
51
+ />
50
52
  <PopoverContent align="start" className="w-auto gap-0 p-0">
51
53
  <MathEditorControls
52
54
  disabled={disabled || !canInsert}
@@ -29,20 +29,22 @@ export function SourceModeDropdownButton({
29
29
 
30
30
  return (
31
31
  <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
32
- <DropdownMenuTrigger asChild>
33
- <Button
34
- type="button"
35
- variant="ghost"
36
- size="icon-sm"
37
- className="w-auto px-2"
38
- aria-label={ariaLabel ?? label}
39
- title={label}
40
- onPointerDown={(event) => event.preventDefault()}
41
- onClick={() => setIsOpen((current) => !current)}
42
- >
43
- <Icon />
44
- <ChevronDownIcon className="tiptap-button-dropdown-small" />
45
- </Button>
32
+ <DropdownMenuTrigger
33
+ render={
34
+ <Button
35
+ type="button"
36
+ variant="ghost"
37
+ size="icon-sm"
38
+ className="w-auto px-2"
39
+ aria-label={ariaLabel ?? label}
40
+ title={label}
41
+ onPointerDown={(event) => event.preventDefault()}
42
+ onClick={() => setIsOpen((current) => !current)}
43
+ />
44
+ }
45
+ >
46
+ <Icon />
47
+ <ChevronDownIcon className="tiptap-button-dropdown-small" />
46
48
  </DropdownMenuTrigger>
47
49
  <DropdownMenuContent align="start" className="w-auto min-w-40">
48
50
  <DropdownMenuGroup>{children}</DropdownMenuGroup>
@@ -173,7 +173,7 @@ export function SourceMode({
173
173
  disabled={disabled}
174
174
  aria-label={option.label}
175
175
  title={option.label}
176
- onSelect={() => applyHeading(option.level)}
176
+ onClick={() => applyHeading(option.level)}
177
177
  >
178
178
  <Icon />
179
179
  <span className="tiptap-button-text">{option.label}</span>
@@ -191,7 +191,7 @@ export function SourceMode({
191
191
  disabled={disabled}
192
192
  aria-label={option.label}
193
193
  title={option.label}
194
- onSelect={() => applyList(option.type)}
194
+ onClick={() => applyList(option.type)}
195
195
  >
196
196
  <Icon />
197
197
  <span className="tiptap-button-text">{option.label}</span>
@@ -19,18 +19,20 @@ export function TableButton({ disabled, editor, onInsertTable }: TableButtonProp
19
19
 
20
20
  return (
21
21
  <Popover open={tableButton.isOpen} onOpenChange={tableButton.setIsOpen}>
22
- <PopoverTrigger asChild>
23
- <Button
24
- type="button"
25
- variant="ghost"
26
- size="sm"
27
- disabled={tableButton.isDisabled}
28
- aria-label="Insert table"
29
- title="Table"
30
- >
31
- <TableIcon />
32
- <span className="tiptap-button-text">Table</span>
33
- </Button>
22
+ <PopoverTrigger
23
+ render={
24
+ <Button
25
+ type="button"
26
+ variant="ghost"
27
+ size="sm"
28
+ disabled={tableButton.isDisabled}
29
+ aria-label="Insert table"
30
+ title="Table"
31
+ />
32
+ }
33
+ >
34
+ <TableIcon />
35
+ <span className="tiptap-button-text">Table</span>
34
36
  </PopoverTrigger>
35
37
  <PopoverContent align="start" className="w-72 p-4">
36
38
  <div className="flex flex-col gap-3" onKeyDownCapture={tableButton.handleKeyDown}>
@@ -69,20 +69,22 @@ export function ColorHighlightPopover({
69
69
 
70
70
  return (
71
71
  <Popover open={isOpen} onOpenChange={handleOpenChange}>
72
- <PopoverTrigger asChild>
73
- <ColorHighlightPopoverButton
74
- disabled={disabled || !canColorHighlight}
75
- data-active-state={isActive ? 'on' : 'off'}
76
- data-disabled={disabled || !canColorHighlight}
77
- aria-pressed={isActive}
78
- aria-label={label}
79
- title={label}
80
- tooltip={tooltip}
81
- {...props}
82
- ref={ref}
83
- >
84
- <Icon />
85
- </ColorHighlightPopoverButton>
72
+ <PopoverTrigger
73
+ render={
74
+ <ColorHighlightPopoverButton
75
+ disabled={disabled || !canColorHighlight}
76
+ data-active-state={isActive ? 'on' : 'off'}
77
+ data-disabled={disabled || !canColorHighlight}
78
+ aria-pressed={isActive}
79
+ aria-label={label}
80
+ title={label}
81
+ tooltip={tooltip}
82
+ {...props}
83
+ ref={ref}
84
+ />
85
+ }
86
+ >
87
+ <Icon />
86
88
  </PopoverTrigger>
87
89
  <PopoverContent
88
90
  aria-label="Highlight colors"
@@ -31,19 +31,21 @@ export function SourceColorHighlightPopover({
31
31
 
32
32
  return (
33
33
  <Popover open={isOpen} onOpenChange={setIsOpen}>
34
- <PopoverTrigger asChild>
35
- <ColorHighlightPopoverButton
36
- disabled={disabled}
37
- data-active-state="off"
38
- data-disabled={disabled}
39
- aria-pressed={false}
40
- aria-label="Highlight"
41
- title="Highlight"
42
- tooltip={tooltip}
43
- {...props}
44
- >
45
- <HighlighterIcon />
46
- </ColorHighlightPopoverButton>
34
+ <PopoverTrigger
35
+ render={
36
+ <ColorHighlightPopoverButton
37
+ disabled={disabled}
38
+ data-active-state="off"
39
+ data-disabled={disabled}
40
+ aria-pressed={false}
41
+ aria-label="Highlight"
42
+ title="Highlight"
43
+ tooltip={tooltip}
44
+ {...props}
45
+ />
46
+ }
47
+ >
48
+ <HighlighterIcon />
47
49
  </PopoverTrigger>
48
50
  <PopoverContent
49
51
  aria-label="Highlight colors"
@@ -27,7 +27,7 @@ export function HeadingDropdownMenuItem({
27
27
  disabled={!canToggle}
28
28
  aria-label={label}
29
29
  title={label}
30
- onSelect={() => handleToggle()}
30
+ onClick={() => handleToggle()}
31
31
  >
32
32
  <Icon />
33
33
  <span className="tiptap-button-text">{label}</span>
@@ -61,35 +61,37 @@ export function HeadingDropdownMenu({
61
61
 
62
62
  return (
63
63
  <DropdownMenu modal={false} open={isOpen} onOpenChange={handleOpenChange}>
64
- <DropdownMenuTrigger asChild>
65
- <Button
66
- type="button"
67
- variant="ghost"
68
- data-active-state={isActive ? 'on' : 'off'}
69
- role="button"
70
- tabIndex={-1}
71
- disabled={!canToggle}
72
- data-disabled={!canToggle}
73
- aria-label="Format text as heading"
74
- aria-pressed={isActive}
75
- title={getControlTooltipTitle(tooltip, 'Heading')}
76
- size="icon-sm"
77
- className="w-auto px-2"
78
- {...buttonProps}
79
- ref={ref}
80
- onPointerDown={(event) => event.preventDefault()}
81
- onClick={() => handleOpenChange(!isOpen)}
82
- >
83
- {children ? (
84
- children
85
- ) : (
86
- <>
87
- <Icon />
88
- <ChevronDownIcon className="tiptap-button-dropdown-small" />
89
- </>
90
- )}
91
- </Button>
92
- </DropdownMenuTrigger>
64
+ <DropdownMenuTrigger
65
+ render={
66
+ <Button
67
+ type="button"
68
+ variant="ghost"
69
+ data-active-state={isActive ? 'on' : 'off'}
70
+ role="button"
71
+ tabIndex={-1}
72
+ disabled={!canToggle}
73
+ data-disabled={!canToggle}
74
+ aria-label="Format text as heading"
75
+ aria-pressed={isActive}
76
+ title={getControlTooltipTitle(tooltip, 'Heading')}
77
+ size="icon-sm"
78
+ className="w-auto px-2"
79
+ {...buttonProps}
80
+ ref={ref}
81
+ onPointerDown={(event) => event.preventDefault()}
82
+ onClick={() => handleOpenChange(!isOpen)}
83
+ >
84
+ {children ? (
85
+ children
86
+ ) : (
87
+ <>
88
+ <Icon />
89
+ <ChevronDownIcon className="tiptap-button-dropdown-small" />
90
+ </>
91
+ )}
92
+ </Button>
93
+ }
94
+ ></DropdownMenuTrigger>
93
95
 
94
96
  <DropdownMenuContent
95
97
  align="start"
@@ -62,19 +62,21 @@ export function LinkControlPopover({
62
62
 
63
63
  return (
64
64
  <Popover open={isOpen} onOpenChange={handleOnOpenChange}>
65
- <PopoverTrigger asChild>
66
- <LinkButton
67
- {...buttonProps}
68
- disabled={isDisabled}
69
- data-active-state={isActive ? 'on' : 'off'}
70
- data-disabled={isDisabled}
71
- aria-label={label}
72
- aria-pressed={isActive}
73
- onClick={handleClick}
74
- ref={ref}
75
- >
76
- {children ?? <LinkIcon />}
77
- </LinkButton>
65
+ <PopoverTrigger
66
+ render={
67
+ <LinkButton
68
+ {...buttonProps}
69
+ disabled={isDisabled}
70
+ data-active-state={isActive ? 'on' : 'off'}
71
+ data-disabled={isDisabled}
72
+ aria-label={label}
73
+ aria-pressed={isActive}
74
+ onClick={handleClick}
75
+ ref={ref}
76
+ />
77
+ }
78
+ >
79
+ {children ?? <LinkIcon />}
78
80
  </PopoverTrigger>
79
81
 
80
82
  <PopoverContent className="w-auto max-w-[calc(100vw-2rem)]">
@@ -36,7 +36,7 @@ export function ListDropdownMenuItem({
36
36
  disabled={!canToggle}
37
37
  aria-label={itemLabel}
38
38
  title={itemLabel}
39
- onSelect={() => handleToggle()}
39
+ onClick={() => handleToggle()}
40
40
  >
41
41
  <Icon />
42
42
  <span className="tiptap-button-text">{label}</span>
@@ -59,26 +59,28 @@ export function ListDropdownMenu({
59
59
 
60
60
  return (
61
61
  <DropdownMenu modal={false} open={isOpen} onOpenChange={handleOnOpenChange}>
62
- <DropdownMenuTrigger asChild>
63
- <Button
64
- type="button"
65
- variant="ghost"
66
- data-active-state={isActive ? 'on' : 'off'}
67
- role="button"
68
- tabIndex={-1}
69
- disabled={!canToggle}
70
- data-disabled={!canToggle}
71
- aria-label="List options"
72
- title={getControlTooltipTitle(tooltip, 'List')}
73
- size="icon-sm"
74
- className="w-auto px-2"
75
- {...props}
76
- onPointerDown={(event) => event.preventDefault()}
77
- onClick={() => handleOnOpenChange(!isOpen)}
78
- >
79
- <Icon />
80
- <ChevronDownIcon className="tiptap-button-dropdown-small" />
81
- </Button>
62
+ <DropdownMenuTrigger
63
+ render={
64
+ <Button
65
+ type="button"
66
+ variant="ghost"
67
+ data-active-state={isActive ? 'on' : 'off'}
68
+ role="button"
69
+ tabIndex={-1}
70
+ disabled={!canToggle}
71
+ data-disabled={!canToggle}
72
+ aria-label="List options"
73
+ title={getControlTooltipTitle(tooltip, 'List')}
74
+ size="icon-sm"
75
+ className="w-auto px-2"
76
+ {...props}
77
+ onPointerDown={(event) => event.preventDefault()}
78
+ onClick={() => handleOnOpenChange(!isOpen)}
79
+ />
80
+ }
81
+ >
82
+ <Icon />
83
+ <ChevronDownIcon className="tiptap-button-dropdown-small" />
82
84
  </DropdownMenuTrigger>
83
85
 
84
86
  <DropdownMenuContent
@@ -32,20 +32,22 @@ export function DatePicker({
32
32
 
33
33
  return (
34
34
  <Popover open={open} onOpenChange={setOpen}>
35
- <PopoverTrigger asChild>
36
- <Button
37
- variant="outline"
38
- size="lg"
39
- className={cn(
40
- 'w-full justify-start pl-3! text-left font-normal',
41
- { 'text-muted-foreground': !date },
42
- className
43
- )}
44
- disabled={disabled}
45
- >
46
- <CalendarIcon className="size-4" />
47
- {date ? format(date, 'PPP') : <span>{placeholder}</span>}
48
- </Button>
35
+ <PopoverTrigger
36
+ render={
37
+ <Button
38
+ variant="outline"
39
+ size="lg"
40
+ className={cn(
41
+ 'w-full justify-start pl-3! text-left font-normal',
42
+ { 'text-muted-foreground': !date },
43
+ className
44
+ )}
45
+ disabled={disabled}
46
+ />
47
+ }
48
+ >
49
+ <CalendarIcon className="size-4" />
50
+ {date ? format(date, 'PPP') : <span>{placeholder}</span>}
49
51
  </PopoverTrigger>
50
52
  <PopoverContent className="w-auto overflow-hidden p-0" align="start">
51
53
  <Calendar
@@ -130,12 +130,14 @@ export function DateRangePicker({
130
130
  }
131
131
  }}
132
132
  >
133
- <PopoverTrigger asChild>
134
- <Button variant="outline" className={cn('w-[206px]', className)} disabled={disabled}>
135
- <CalendarIcon />
136
- <span className="min-w-0 flex-1 truncate text-left tabular-nums">{triggerLabel}</span>
137
- <ChevronDown />
138
- </Button>
133
+ <PopoverTrigger
134
+ render={
135
+ <Button variant="outline" className={cn('w-[206px]', className)} disabled={disabled} />
136
+ }
137
+ >
138
+ <CalendarIcon />
139
+ <span className="min-w-0 flex-1 truncate text-left tabular-nums">{triggerLabel}</span>
140
+ <ChevronDown />
139
141
  </PopoverTrigger>
140
142
  <PopoverContent className="w-[282px] gap-0 overflow-hidden rounded-sm p-0" align="start">
141
143
  <Calendar
@@ -346,16 +346,17 @@ const IconPicker = React.forwardRef<React.ComponentRef<typeof PopoverTrigger>, I
346
346
  }, [isPopoverVisible, virtualizer])
347
347
 
348
348
  const selectedIconName = (value || selectedIcon) as IconName | undefined
349
+ const trigger = React.isValidElement(children) ? (
350
+ children
351
+ ) : (
352
+ <Button variant="outline" size="lg">
353
+ {selectedIconName ? <DynamicIcon name={selectedIconName} /> : triggerPlaceholder}
354
+ </Button>
355
+ )
349
356
 
350
357
  return (
351
358
  <Popover open={open ?? isOpen} onOpenChange={handleOpenChange} modal={modal}>
352
- <PopoverTrigger ref={ref} asChild {...props}>
353
- {children || (
354
- <Button variant="outline" size="lg">
355
- {selectedIconName ? <DynamicIcon name={selectedIconName} /> : triggerPlaceholder}
356
- </Button>
357
- )}
358
- </PopoverTrigger>
359
+ <PopoverTrigger ref={ref} render={trigger} {...props} />
359
360
  <PopoverContent className="w-64 p-2">
360
361
  {searchable && (
361
362
  <Input placeholder={searchPlaceholder} onChange={handleSearchChange} className="mb-2" />
@@ -170,10 +170,8 @@ export function NestedObjectListField({
170
170
 
171
171
  <CardContent className="p-0!">
172
172
  <Accordion
173
- type="single"
174
- collapsible
175
- value={expanded}
176
- onValueChange={handleExpandedChange}
173
+ value={expanded ? [expanded] : []}
174
+ onValueChange={(nextValue) => handleExpandedChange(nextValue[0] ?? '')}
177
175
  className="border-none"
178
176
  >
179
177
  {items.map((_, index) => (
@@ -1,47 +1,34 @@
1
- 'use client'
2
-
3
- import type * as React from 'react'
4
1
  import { cn } from '@admin/utils/shared/cn'
2
+ import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'
5
3
  import { ChevronDownIcon, ChevronUpIcon } from 'lucide-react'
6
- import { Accordion as AccordionPrimitive } from 'radix-ui'
7
4
 
8
- function Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {
5
+ function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {
9
6
  return (
10
7
  <AccordionPrimitive.Root
11
8
  data-slot="accordion"
12
- className={cn(
13
- 'flex w-full flex-col overflow-hidden rounded-sm border border-border bg-card shadow-2xl/1',
14
- className
15
- )}
9
+ className={cn('flex w-full flex-col overflow-hidden rounded-2xl border', className)}
16
10
  {...props}
17
11
  />
18
12
  )
19
13
  }
20
14
 
21
- function AccordionItem({
22
- className,
23
- ...props
24
- }: React.ComponentProps<typeof AccordionPrimitive.Item>) {
15
+ function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {
25
16
  return (
26
17
  <AccordionPrimitive.Item
27
18
  data-slot="accordion-item"
28
- className={cn('not-last:border-b data-open:bg-background', className)}
19
+ className={cn('not-last:border-b data-open:bg-muted/50', className)}
29
20
  {...props}
30
21
  />
31
22
  )
32
23
  }
33
24
 
34
- function AccordionTrigger({
35
- className,
36
- children,
37
- ...props
38
- }: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {
25
+ function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props) {
39
26
  return (
40
27
  <AccordionPrimitive.Header className="flex">
41
28
  <AccordionPrimitive.Trigger
42
29
  data-slot="accordion-trigger"
43
30
  className={cn(
44
- 'group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-foreground',
31
+ 'group/accordion-trigger relative flex flex-1 items-start justify-between gap-6 border border-transparent p-4 text-left text-sm font-medium transition-all outline-none hover:underline aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',
45
32
  className
46
33
  )}
47
34
  {...props}
@@ -60,26 +47,22 @@ function AccordionTrigger({
60
47
  )
61
48
  }
62
49
 
63
- function AccordionContent({
64
- className,
65
- children,
66
- ...props
67
- }: React.ComponentProps<typeof AccordionPrimitive.Content>) {
50
+ function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props) {
68
51
  return (
69
- <AccordionPrimitive.Content
52
+ <AccordionPrimitive.Panel
70
53
  data-slot="accordion-content"
71
54
  className="overflow-hidden px-4 text-sm data-open:animate-accordion-down data-closed:animate-accordion-up"
72
55
  {...props}
73
56
  >
74
57
  <div
75
58
  className={cn(
76
- 'h-auto pt-0 pb-4 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',
59
+ 'h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',
77
60
  className
78
61
  )}
79
62
  >
80
63
  {children}
81
64
  </div>
82
- </AccordionPrimitive.Content>
65
+ </AccordionPrimitive.Panel>
83
66
  )
84
67
  }
85
68