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.
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-nav-link.tsx +10 -8
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-nav-link-skeleton.tsx +1 -5
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +54 -48
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sign-out.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-body.tsx +20 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-cell.tsx +20 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-head.tsx +21 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-header.tsx +20 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-row.tsx +22 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +7 -81
- package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +3 -5
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +5 -7
- package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +9 -10
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +2 -4
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-restore-dialog.tsx +2 -4
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +2 -4
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-drawer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-dialog.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +52 -53
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +3 -5
- package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-drawer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/form-notifications-drawer.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-actions.tsx +20 -20
- package/dist/assets/adapters/next/templates/init/pages/users/change-password-dialog.tsx +7 -5
- package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +3 -5
- package/dist/assets/adapters/next/templates/init/pages/users/create-user-dialog.tsx +1 -3
- package/dist/assets/adapters/next/templates/init/pages/users/delete-user-dialog.tsx +11 -5
- package/dist/assets/adapters/next/templates/init/pages/users/edit-role-dialog.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-popover-button.tsx +13 -11
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx +16 -14
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +14 -12
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +4 -11
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-shortcut-badge.tsx +15 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +4 -11
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-shortcut-badge.tsx +15 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +6 -42
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-shortcut-badge.tsx +15 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/highlight-swatch.tsx +34 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +16 -14
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +15 -13
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu-item.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +31 -29
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +15 -13
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu-item.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +22 -20
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +5 -14
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-shortcut-badge.tsx +18 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/history-shortcut-badge.tsx +18 -0
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +5 -14
- package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +16 -14
- package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +8 -6
- package/dist/assets/shared-assets/react-admin/custom/icon-picker/memoized-icon.tsx +10 -0
- package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +9 -10
- package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +2 -4
- package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +11 -28
- package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +30 -47
- package/dist/assets/shared-assets/react-admin/ui/alert.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/aspect-ratio.tsx +18 -5
- package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +10 -13
- package/dist/assets/shared-assets/react-admin/ui/badge.tsx +21 -20
- package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +20 -19
- package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +25 -24
- package/dist/assets/shared-assets/react-admin/ui/button.tsx +22 -31
- package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +9 -6
- package/dist/assets/shared-assets/react-admin/ui/card.tsx +6 -16
- package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +20 -17
- package/dist/assets/shared-assets/react-admin/ui/chart.tsx +19 -16
- package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +3 -4
- package/dist/assets/shared-assets/react-admin/ui/collapsible.tsx +6 -10
- package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +10 -36
- package/dist/assets/shared-assets/react-admin/ui/command.tsx +7 -6
- package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +77 -79
- package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +29 -54
- package/dist/assets/shared-assets/react-admin/ui/direction.tsx +1 -18
- package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +121 -49
- package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +117 -131
- package/dist/assets/shared-assets/react-admin/ui/empty.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/field.tsx +20 -30
- package/dist/assets/shared-assets/react-admin/ui/form.tsx +27 -31
- package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +26 -18
- package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +25 -12
- package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/input.tsx +4 -3
- package/dist/assets/shared-assets/react-admin/ui/item.tsx +26 -19
- package/dist/assets/shared-assets/react-admin/ui/label.tsx +18 -14
- package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +80 -73
- package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +40 -39
- package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +18 -11
- package/dist/assets/shared-assets/react-admin/ui/popover.tsx +31 -30
- package/dist/assets/shared-assets/react-admin/ui/progress.tsx +51 -16
- package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +11 -17
- package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +9 -13
- package/dist/assets/shared-assets/react-admin/ui/select.tsx +66 -60
- package/dist/assets/shared-assets/react-admin/ui/separator.tsx +3 -10
- package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +22 -27
- package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +144 -126
- package/dist/assets/shared-assets/react-admin/ui/skeleton.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/slider.tsx +27 -29
- package/dist/assets/shared-assets/react-admin/ui/sonner.tsx +8 -3
- package/dist/assets/shared-assets/react-admin/ui/spinner.tsx +4 -3
- package/dist/assets/shared-assets/react-admin/ui/switch.tsx +4 -5
- package/dist/assets/shared-assets/react-admin/ui/table.tsx +8 -21
- package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +11 -16
- package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +12 -11
- package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +4 -5
- package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +29 -27
- package/dist/cli.js +145 -111
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx
CHANGED
|
@@ -4,10 +4,16 @@ import * as React from 'react'
|
|
|
4
4
|
import type { AdminMedia } from '@admin/types'
|
|
5
5
|
import { deleteMedia } from '@admin/actions/media'
|
|
6
6
|
import { Button } from '@admin/components/ui/button'
|
|
7
|
+
import {
|
|
8
|
+
Drawer,
|
|
9
|
+
DrawerContent,
|
|
10
|
+
DrawerDescription,
|
|
11
|
+
DrawerTitle,
|
|
12
|
+
DrawerTrigger
|
|
13
|
+
} from '@admin/components/ui/drawer'
|
|
7
14
|
import { Spinner } from '@admin/components/ui/spinner'
|
|
8
15
|
import { Trash2, TriangleAlert } from 'lucide-react'
|
|
9
16
|
import { toast } from 'sonner'
|
|
10
|
-
import { Drawer as DrawerPrimitive } from 'vaul'
|
|
11
17
|
|
|
12
18
|
interface MediaDeleteDrawerProps {
|
|
13
19
|
media: AdminMedia
|
|
@@ -90,63 +96,56 @@ export function MediaDeleteDrawer({
|
|
|
90
96
|
}
|
|
91
97
|
|
|
92
98
|
return (
|
|
93
|
-
<
|
|
99
|
+
<Drawer
|
|
94
100
|
container={container}
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
swipeDirection="down"
|
|
102
|
+
disablePointerDismissal={isPending}
|
|
97
103
|
open={open}
|
|
98
104
|
onOpenChange={handleOpenChange}
|
|
99
105
|
>
|
|
100
|
-
<
|
|
101
|
-
<Button variant="destructive" disabled={disabled || isPending || !container}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
</
|
|
106
|
-
<
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<div
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
>
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
<
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
disabled={isPending}
|
|
140
|
-
aria-busy={isPending}
|
|
141
|
-
>
|
|
142
|
-
{isPending && <Spinner />}
|
|
143
|
-
{isPending ? 'Deleting…' : 'Delete media'}
|
|
144
|
-
</Button>
|
|
145
|
-
</div>
|
|
106
|
+
<DrawerTrigger
|
|
107
|
+
render={<Button variant="destructive" disabled={disabled || isPending || !container} />}
|
|
108
|
+
>
|
|
109
|
+
<Trash2 />
|
|
110
|
+
Delete media
|
|
111
|
+
</DrawerTrigger>
|
|
112
|
+
<DrawerContent className="pointer-events-auto max-h-[calc(100%-1rem)] overflow-hidden p-3 outline-none">
|
|
113
|
+
<div
|
|
114
|
+
className="overflow-hidden rounded-sm border border-border bg-popover text-sm text-popover-foreground shadow-2xl transition-[height] duration-200 ease-out"
|
|
115
|
+
style={contentHeight ? { height: contentHeight } : undefined}
|
|
116
|
+
>
|
|
117
|
+
<div ref={contentRef} className="max-h-[calc(100vh-8rem)] overflow-y-auto px-4 pt-4 pb-4">
|
|
118
|
+
<div aria-hidden="true" className="mx-auto mb-5 h-1.5 w-20 rounded-sm bg-muted" />
|
|
119
|
+
<div className="mb-3 flex size-10 items-center justify-center rounded-sm bg-destructive/10 text-foreground">
|
|
120
|
+
<TriangleAlert className="size-5" />
|
|
121
|
+
</div>
|
|
122
|
+
<DrawerTitle className="font-heading text-base font-medium text-foreground">
|
|
123
|
+
Delete this media?
|
|
124
|
+
</DrawerTitle>
|
|
125
|
+
<DrawerDescription className="mt-1 text-sm text-muted-foreground">
|
|
126
|
+
This deletes {media.filename} from the media library. The stored file is not deleted.
|
|
127
|
+
</DrawerDescription>
|
|
128
|
+
<div className="mt-5 grid grid-cols-2 gap-2">
|
|
129
|
+
<Button
|
|
130
|
+
variant="secondary"
|
|
131
|
+
onClick={() => handleOpenChange(false)}
|
|
132
|
+
disabled={isPending}
|
|
133
|
+
>
|
|
134
|
+
Cancel
|
|
135
|
+
</Button>
|
|
136
|
+
<Button
|
|
137
|
+
variant="destructive"
|
|
138
|
+
onClick={() => void handleDelete()}
|
|
139
|
+
disabled={isPending}
|
|
140
|
+
aria-busy={isPending}
|
|
141
|
+
>
|
|
142
|
+
{isPending && <Spinner />}
|
|
143
|
+
{isPending ? 'Deleting…' : 'Delete media'}
|
|
144
|
+
</Button>
|
|
146
145
|
</div>
|
|
147
146
|
</div>
|
|
148
|
-
</
|
|
149
|
-
</
|
|
150
|
-
</
|
|
147
|
+
</div>
|
|
148
|
+
</DrawerContent>
|
|
149
|
+
</Drawer>
|
|
151
150
|
)
|
|
152
151
|
}
|
|
@@ -187,10 +187,10 @@ export function SortOrderDialog({
|
|
|
187
187
|
onDragCancel={handleDragCancel}
|
|
188
188
|
>
|
|
189
189
|
<Drawer
|
|
190
|
-
|
|
190
|
+
swipeDirection="right"
|
|
191
191
|
open={open}
|
|
192
192
|
onOpenChange={onOpenChange}
|
|
193
|
-
|
|
193
|
+
onOpenChangeComplete={handleDrawerAnimationEnd}
|
|
194
194
|
>
|
|
195
195
|
<DrawerContent className="h-full w-full overflow-hidden">
|
|
196
196
|
<div className="relative z-10 flex min-h-0 flex-1 flex-col gap-3 overflow-hidden">
|
|
@@ -231,9 +231,7 @@ export function SortOrderDialog({
|
|
|
231
231
|
{isSaving && <Spinner />}
|
|
232
232
|
{isSaving ? 'Saving…' : 'Save'}
|
|
233
233
|
</Button>
|
|
234
|
-
<DrawerClose
|
|
235
|
-
<Button variant="outline">Close</Button>
|
|
236
|
-
</DrawerClose>
|
|
234
|
+
<DrawerClose render={<Button variant="outline" />}>Close</DrawerClose>
|
|
237
235
|
</DrawerFooter>
|
|
238
236
|
</div>
|
|
239
237
|
</DrawerContent>
|
|
@@ -51,7 +51,7 @@ export default function DashboardPage() {
|
|
|
51
51
|
</p>
|
|
52
52
|
</div>
|
|
53
53
|
<div className="flex w-full flex-col">
|
|
54
|
-
<Accordion
|
|
54
|
+
<Accordion defaultValue={['item-1']}>
|
|
55
55
|
<AccordionItem value="item-1">
|
|
56
56
|
<AccordionTrigger>
|
|
57
57
|
<div className="flex items-center gap-3">
|
|
@@ -36,7 +36,7 @@ function formatMetadata(metadata: Record<string, unknown> | null): string {
|
|
|
36
36
|
|
|
37
37
|
export function AuditLogDetailDrawer({ auditLog, open, onOpenChange }: AuditLogDetailDrawerProps) {
|
|
38
38
|
return (
|
|
39
|
-
<Drawer
|
|
39
|
+
<Drawer swipeDirection="right" open={open} onOpenChange={onOpenChange} modal>
|
|
40
40
|
<DrawerContent className="h-full sm:max-w-xl">
|
|
41
41
|
<DrawerHeader>
|
|
42
42
|
<DrawerTitle>Audit Event</DrawerTitle>
|
package/dist/assets/adapters/next/templates/init/pages/settings/forms/form-notifications-drawer.tsx
CHANGED
|
@@ -82,7 +82,7 @@ export function FormNotificationsDrawer({
|
|
|
82
82
|
const isPending = mutation.isPending
|
|
83
83
|
|
|
84
84
|
return (
|
|
85
|
-
<Drawer
|
|
85
|
+
<Drawer swipeDirection="right" open={open} onOpenChange={onOpenChange} modal>
|
|
86
86
|
<DrawerContent className="h-full sm:max-w-xl">
|
|
87
87
|
<Form {...form}>
|
|
88
88
|
<form
|
|
@@ -128,10 +128,10 @@ export function FormNotificationsDrawer({
|
|
|
128
128
|
</ScrollArea>
|
|
129
129
|
|
|
130
130
|
<DrawerFooter className="flex-row justify-end">
|
|
131
|
-
<DrawerClose
|
|
132
|
-
<Button type="button" variant="outline" size="lg" disabled={isPending}
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
<DrawerClose
|
|
132
|
+
render={<Button type="button" variant="outline" size="lg" disabled={isPending} />}
|
|
133
|
+
>
|
|
134
|
+
Cancel
|
|
135
135
|
</DrawerClose>
|
|
136
136
|
<Button
|
|
137
137
|
type="submit"
|
package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-actions.tsx
CHANGED
|
@@ -23,33 +23,33 @@ export function WebhookActions({ webhook, onEdit, onDelete }: WebhookActionsProp
|
|
|
23
23
|
|
|
24
24
|
return (
|
|
25
25
|
<DropdownMenu>
|
|
26
|
-
<DropdownMenuTrigger
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
26
|
+
<DropdownMenuTrigger
|
|
27
|
+
render={
|
|
28
|
+
<Button
|
|
29
|
+
variant="ghost"
|
|
30
|
+
className="size-8 p-0"
|
|
31
|
+
aria-label={`Open webhook actions for ${webhook.name}`}
|
|
32
|
+
>
|
|
33
|
+
<span className="sr-only">Open webhook actions</span>
|
|
34
|
+
{sendTest.isPending ? (
|
|
35
|
+
<Spinner className="size-4" />
|
|
36
|
+
) : (
|
|
37
|
+
<MoreHorizontal className="size-4" />
|
|
38
|
+
)}
|
|
39
|
+
</Button>
|
|
40
|
+
}
|
|
41
|
+
/>
|
|
40
42
|
<DropdownMenuContent align="end">
|
|
41
43
|
<DropdownMenuItem
|
|
44
|
+
closeOnClick={false}
|
|
42
45
|
disabled={sendTest.isPending}
|
|
43
46
|
aria-busy={sendTest.isPending}
|
|
44
|
-
|
|
45
|
-
event.preventDefault()
|
|
46
|
-
sendTest.mutate(webhook.id)
|
|
47
|
-
}}
|
|
47
|
+
onClick={() => sendTest.mutate(webhook.id)}
|
|
48
48
|
>
|
|
49
49
|
{sendTest.isPending ? 'Testing…' : 'Test'}
|
|
50
50
|
</DropdownMenuItem>
|
|
51
|
-
<DropdownMenuItem
|
|
52
|
-
<DropdownMenuItem variant="destructive"
|
|
51
|
+
<DropdownMenuItem onClick={() => onEdit(webhook)}>Edit</DropdownMenuItem>
|
|
52
|
+
<DropdownMenuItem variant="destructive" onClick={() => onDelete(webhook)}>
|
|
53
53
|
Delete
|
|
54
54
|
</DropdownMenuItem>
|
|
55
55
|
</DropdownMenuContent>
|
|
@@ -134,11 +134,13 @@ export function ChangePasswordDialog({
|
|
|
134
134
|
|
|
135
135
|
return (
|
|
136
136
|
<Dialog open={open} onOpenChange={handleOpenChange}>
|
|
137
|
-
<DialogTrigger
|
|
138
|
-
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
<DialogTrigger
|
|
138
|
+
render={
|
|
139
|
+
<DropdownMenuItem closeOnClick={false} onClick={(event) => event.preventDefault()} />
|
|
140
|
+
}
|
|
141
|
+
>
|
|
142
|
+
<KeySquare className="size-4" />
|
|
143
|
+
Change password
|
|
142
144
|
</DialogTrigger>
|
|
143
145
|
<DialogContent className="sm:max-w-135">
|
|
144
146
|
<Form {...form}>
|
|
@@ -148,11 +148,9 @@ export const columns: ColumnDef<User>[] = [
|
|
|
148
148
|
return (
|
|
149
149
|
<div className="flex justify-end">
|
|
150
150
|
<DropdownMenu>
|
|
151
|
-
<DropdownMenuTrigger
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
<MoreHorizontal className="size-4" />
|
|
155
|
-
</Button>
|
|
151
|
+
<DropdownMenuTrigger render={<Button variant="ghost" className="size-8 p-0" />}>
|
|
152
|
+
<span className="sr-only">Open menu</span>
|
|
153
|
+
<MoreHorizontal className="size-4" />
|
|
156
154
|
</DropdownMenuTrigger>
|
|
157
155
|
<DropdownMenuContent align="end">
|
|
158
156
|
{!isCurrentUser ? (
|
|
@@ -108,9 +108,7 @@ export function CreateUserDialog() {
|
|
|
108
108
|
|
|
109
109
|
return (
|
|
110
110
|
<Dialog open={open} onOpenChange={handleOpenChange}>
|
|
111
|
-
<DialogTrigger
|
|
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
|
|
108
|
-
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
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
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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}
|
package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode-dropdown-button.tsx
CHANGED
|
@@ -29,20 +29,22 @@ export function SourceModeDropdownButton({
|
|
|
29
29
|
|
|
30
30
|
return (
|
|
31
31
|
<DropdownMenu open={isOpen} onOpenChange={setIsOpen}>
|
|
32
|
-
<DropdownMenuTrigger
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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}>
|
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ControlAvailability, ControlShortcut, ControlTooltip } from '../control-options'
|
|
4
4
|
import type { UseBlockquoteConfig } from '@admin/hooks/content-editor/use-blockquote'
|
|
5
|
-
import { Badge } from '@admin/components/ui/badge'
|
|
6
5
|
import { Button } from '@admin/components/ui/button'
|
|
7
|
-
import {
|
|
6
|
+
import { useBlockquote } from '@admin/hooks/content-editor/use-blockquote'
|
|
8
7
|
import { useTiptapEditor } from '@admin/hooks/content-editor/use-tiptap-editor'
|
|
9
|
-
import { parseShortcutKeys } from '@admin/utils/editor/parse-shortcut-keys'
|
|
10
8
|
import { useCallback } from 'react'
|
|
11
9
|
import {
|
|
12
10
|
getControlTooltipTitle,
|
|
13
11
|
shouldHideUnavailableControl,
|
|
14
12
|
shouldShowControlShortcut
|
|
15
13
|
} from '../control-options'
|
|
14
|
+
import { BlockquoteShortcutBadge } from './blockquote-shortcut-badge'
|
|
16
15
|
|
|
17
16
|
type EditorButtonProps = React.ComponentProps<typeof Button> & {
|
|
18
17
|
tooltip?: ControlTooltip
|
|
19
18
|
}
|
|
20
19
|
|
|
20
|
+
export { BlockquoteShortcutBadge } from './blockquote-shortcut-badge'
|
|
21
|
+
|
|
21
22
|
export interface BlockquoteButtonProps
|
|
22
23
|
extends Omit<EditorButtonProps, 'type'>, Omit<UseBlockquoteConfig, 'hideWhenUnavailable'> {
|
|
23
24
|
availability?: ControlAvailability
|
|
@@ -25,14 +26,6 @@ export interface BlockquoteButtonProps
|
|
|
25
26
|
shortcut?: ControlShortcut
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
export function BlockquoteShortcutBadge({
|
|
29
|
-
shortcutKeys = BLOCKQUOTE_SHORTCUT_KEY
|
|
30
|
-
}: {
|
|
31
|
-
shortcutKeys?: string
|
|
32
|
-
}) {
|
|
33
|
-
return <Badge>{parseShortcutKeys({ shortcutKeys })}</Badge>
|
|
34
|
-
}
|
|
35
|
-
|
|
36
29
|
export function BlockquoteButton({
|
|
37
30
|
editor: providedEditor,
|
|
38
31
|
availability,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { Badge } from '@admin/components/ui/badge'
|
|
4
|
+
import { BLOCKQUOTE_SHORTCUT_KEY } from '@admin/hooks/content-editor/use-blockquote'
|
|
5
|
+
import { parseShortcutKeys } from '@admin/utils/editor/parse-shortcut-keys'
|
|
6
|
+
|
|
7
|
+
function BlockquoteShortcutBadge({
|
|
8
|
+
shortcutKeys = BLOCKQUOTE_SHORTCUT_KEY
|
|
9
|
+
}: {
|
|
10
|
+
shortcutKeys?: string
|
|
11
|
+
}) {
|
|
12
|
+
return <Badge>{parseShortcutKeys({ shortcutKeys })}</Badge>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { BlockquoteShortcutBadge }
|
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ControlAvailability, ControlShortcut, ControlTooltip } from '../control-options'
|
|
4
4
|
import type { UseCodeBlockConfig } from '@admin/hooks/content-editor/use-code-block'
|
|
5
|
-
import { Badge } from '@admin/components/ui/badge'
|
|
6
5
|
import { Button } from '@admin/components/ui/button'
|
|
7
|
-
import {
|
|
6
|
+
import { useCodeBlock } from '@admin/hooks/content-editor/use-code-block'
|
|
8
7
|
import { useTiptapEditor } from '@admin/hooks/content-editor/use-tiptap-editor'
|
|
9
|
-
import { parseShortcutKeys } from '@admin/utils/editor/parse-shortcut-keys'
|
|
10
8
|
import { useCallback } from 'react'
|
|
11
9
|
import {
|
|
12
10
|
getControlTooltipTitle,
|
|
13
11
|
shouldHideUnavailableControl,
|
|
14
12
|
shouldShowControlShortcut
|
|
15
13
|
} from '../control-options'
|
|
14
|
+
import { CodeBlockShortcutBadge } from './code-block-shortcut-badge'
|
|
16
15
|
|
|
17
16
|
type EditorButtonProps = React.ComponentProps<typeof Button> & {
|
|
18
17
|
tooltip?: ControlTooltip
|
|
19
18
|
}
|
|
20
19
|
|
|
20
|
+
export { CodeBlockShortcutBadge } from './code-block-shortcut-badge'
|
|
21
|
+
|
|
21
22
|
export interface CodeBlockButtonProps
|
|
22
23
|
extends Omit<EditorButtonProps, 'type'>, Omit<UseCodeBlockConfig, 'hideWhenUnavailable'> {
|
|
23
24
|
availability?: ControlAvailability
|
|
@@ -25,14 +26,6 @@ export interface CodeBlockButtonProps
|
|
|
25
26
|
shortcut?: ControlShortcut
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
export function CodeBlockShortcutBadge({
|
|
29
|
-
shortcutKeys = CODE_BLOCK_SHORTCUT_KEY
|
|
30
|
-
}: {
|
|
31
|
-
shortcutKeys?: string
|
|
32
|
-
}) {
|
|
33
|
-
return <Badge>{parseShortcutKeys({ shortcutKeys })}</Badge>
|
|
34
|
-
}
|
|
35
|
-
|
|
36
29
|
export function CodeBlockButton({
|
|
37
30
|
editor: providedEditor,
|
|
38
31
|
availability,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { Badge } from '@admin/components/ui/badge'
|
|
4
|
+
import { CODE_BLOCK_SHORTCUT_KEY } from '@admin/hooks/content-editor/use-code-block'
|
|
5
|
+
import { parseShortcutKeys } from '@admin/utils/editor/parse-shortcut-keys'
|
|
6
|
+
|
|
7
|
+
function CodeBlockShortcutBadge({
|
|
8
|
+
shortcutKeys = CODE_BLOCK_SHORTCUT_KEY
|
|
9
|
+
}: {
|
|
10
|
+
shortcutKeys?: string
|
|
11
|
+
}) {
|
|
12
|
+
return <Badge>{parseShortcutKeys({ shortcutKeys })}</Badge>
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { CodeBlockShortcutBadge }
|