betterstart-cli 0.0.95 → 0.0.97
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/integrations/_shared/actions/object-key.ts +16 -0
- package/dist/assets/adapters/next/integrations/r2/actions/r2.ts +6 -14
- package/dist/assets/adapters/next/integrations/r2/integration.ts +4 -0
- package/dist/assets/adapters/next/integrations/railway-bucket/actions/railway-bucket.ts +7 -15
- package/dist/assets/adapters/next/integrations/railway-bucket/integration.ts +4 -0
- package/dist/assets/adapters/next/integrations/vercel-blob/actions/vercel-blob.ts +2 -10
- package/dist/assets/adapters/next/integrations/vercel-blob/integration.ts +4 -0
- package/dist/assets/adapters/next/templates/init/api/upload-route.ts +37 -13
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-header.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-branding-skeleton.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +8 -8
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/layouts/content-skeleton.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/layouts/sidebar-branding.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table-pagination.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/delete-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/copyable-code-block.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/plain-code-fallback.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/entity-filters-bar.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/entity-metadata.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog-content.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-filters-bar.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-gallery-dialog.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-item.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-pagination.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-preview.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/components/shared/page-header.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/components/shared/search-input.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/components/shared/sort-indicator.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-dialog.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-drag-overlay-item.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-order-item.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-color-highlight.ts +10 -64
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-content-editor-source-mode.tsx +11 -4
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-heading-dropdown-menu.ts +0 -1
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-list-dropdown-menu.ts +0 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/get-audit-logs.ts +5 -10
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/media/create-media.ts +6 -6
- package/dist/assets/adapters/next/templates/init/lib/actions/media/get-media.ts +4 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/media/update-media.ts +5 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/profile/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/upload/index.ts +1 -5
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-deliveries.ts +1 -10
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhooks.ts +1 -10
- package/dist/assets/adapters/next/templates/init/lib/db/core/schema.ts +4 -1
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/runner.ts +1 -1
- package/dist/assets/adapters/next/templates/init/pages/admin-layout.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/auth-gate-rsc.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/pages/forgot-password-form.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/pages/login-form.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-content.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/minimal-account-shell.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/profile/profile-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/reset-password-form.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-columns.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/audit-log/audit-log-detail-row.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-table.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-table.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-endpoint-dialog.tsx +3 -3
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-columns.tsx +6 -6
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-columns.tsx +7 -7
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-table.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-table.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +4 -4
- package/dist/assets/adapters/next/templates/init/pages/users/users-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/users-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/users-table.tsx +5 -5
- package/dist/assets/adapters/next/templates/init/types/table-meta.ts +1 -1
- package/dist/assets/adapters/next/templates/init/utils/date/date.ts +15 -0
- package/dist/assets/adapters/next/templates/init/utils/editor/content-editor.ts +98 -25
- package/dist/assets/adapters/next/templates/init/utils/editor/markdown.ts +5 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/editor-toolbar.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/index.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/main-toolbar-content.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-bubble-menu.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/math-editor-controls.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/mobile-toolbar-content.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/remove-table-part-icon.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/selection-bubble-menu.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/custom/content-editor/slash-command-menu.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +11 -9
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-add-controls.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-bubble-menu.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/removable-image-node/removable-image-node.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +2 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-content.tsx +4 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +3 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +5 -3
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +2 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-main.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-popover.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +1 -2
- package/dist/assets/shared-assets/react-admin/custom/date-picker.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/gallery-field.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +10 -8
- package/dist/assets/shared-assets/react-admin/custom/icons-column-skeleton.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/media-field-empty-state.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/custom/media-field.tsx +7 -7
- package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/placeholder-card.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/placeholder.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/progressive-blur.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/sortable-gallery-item.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/custom/upload-dropzone.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/schema.json +1143 -876
- package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/badge.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/button.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/ui/card.tsx +5 -5
- package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/command.tsx +0 -1
- package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/field.tsx +0 -1
- package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/input.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/pagination.tsx +0 -1
- package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/select.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/table.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +1 -1
- package/dist/{chunk-3CLINNJL.js → chunk-MJWUGEMK.js} +32 -8
- package/dist/chunk-MJWUGEMK.js.map +1 -0
- package/dist/cli.js +8554 -9062
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{template-reader-PVN53GS7.js → template-reader-R2JIWUNK.js} +2 -2
- package/package.json +3 -3
- package/dist/chunk-3CLINNJL.js.map +0 -1
- /package/dist/{template-reader-PVN53GS7.js.map → template-reader-R2JIWUNK.js.map} +0 -0
|
@@ -10,7 +10,7 @@ function Accordion({ className, ...props }: React.ComponentProps<typeof Accordio
|
|
|
10
10
|
<AccordionPrimitive.Root
|
|
11
11
|
data-slot="accordion"
|
|
12
12
|
className={cn(
|
|
13
|
-
'flex w-full flex-col rounded-sm
|
|
13
|
+
'flex w-full flex-col overflow-hidden rounded-sm border border-border bg-card shadow-2xl/1',
|
|
14
14
|
className
|
|
15
15
|
)}
|
|
16
16
|
{...props}
|
|
@@ -49,7 +49,7 @@ function AlertDialogContent({
|
|
|
49
49
|
data-slot="alert-dialog-content"
|
|
50
50
|
data-size={size}
|
|
51
51
|
className={cn(
|
|
52
|
-
'group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-sm bg-muted text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95
|
|
52
|
+
'group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 overflow-hidden rounded-sm bg-muted text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
53
53
|
className
|
|
54
54
|
)}
|
|
55
55
|
{...props}
|
|
@@ -63,7 +63,7 @@ function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>)
|
|
|
63
63
|
<div
|
|
64
64
|
data-slot="alert-dialog-header"
|
|
65
65
|
className={cn(
|
|
66
|
-
'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]
|
|
66
|
+
'grid grid-rows-[auto_1fr] place-items-center gap-1.5 bg-muted px-6 pt-6 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',
|
|
67
67
|
className
|
|
68
68
|
)}
|
|
69
69
|
{...props}
|
|
@@ -75,7 +75,7 @@ function AlertDialogBody({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
75
75
|
return (
|
|
76
76
|
<div
|
|
77
77
|
data-slot="alert-dialog-body"
|
|
78
|
-
className={cn('flex
|
|
78
|
+
className={cn('flex flex-col gap-1 px-6 py-6 shadow-input', className)}
|
|
79
79
|
{...props}
|
|
80
80
|
/>
|
|
81
81
|
)
|
|
@@ -85,7 +85,7 @@ function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>)
|
|
|
85
85
|
return (
|
|
86
86
|
<div
|
|
87
87
|
data-slot="alert-dialog-footer"
|
|
88
|
-
className={cn('grid w-full grid-cols-2 gap-1 px-6 pb-5
|
|
88
|
+
className={cn('grid w-full grid-cols-2 gap-1 bg-muted px-6 pb-5 *:w-full', className)}
|
|
89
89
|
{...props}
|
|
90
90
|
/>
|
|
91
91
|
)
|
|
@@ -10,7 +10,7 @@ const badgeVariants = cva(
|
|
|
10
10
|
variant: {
|
|
11
11
|
default: 'bg-primary text-primary-foreground [a]:hover:bg-primary/80',
|
|
12
12
|
secondary:
|
|
13
|
-
'
|
|
13
|
+
'border border-border bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80',
|
|
14
14
|
destructive:
|
|
15
15
|
'bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20',
|
|
16
16
|
success:
|
|
@@ -4,7 +4,7 @@ import { cva, type VariantProps } from 'class-variance-authority'
|
|
|
4
4
|
import { Slot } from 'radix-ui'
|
|
5
5
|
|
|
6
6
|
const buttonGroupVariants = cva(
|
|
7
|
-
"group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>
|
|
7
|
+
"group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>button]:min-w-0 [&>button]:scale-100! [&>input]:flex-1",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
orientation: {
|
|
@@ -4,21 +4,21 @@ import { Slot } from 'radix-ui'
|
|
|
4
4
|
import * as React from 'react'
|
|
5
5
|
|
|
6
6
|
const buttonVariants = cva(
|
|
7
|
-
"group/button inline-flex shrink-0 items-center justify-center rounded-sm bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:not-aria-[haspopup]:scale-97 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current [&_svg:not([class*='size-'])]:size-3.5
|
|
7
|
+
"group/button inline-flex min-w-0 shrink-0 cursor-pointer items-center justify-center rounded-sm bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:not-aria-[haspopup]:scale-97 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:[stroke-width:1.5] [&_svg]:text-current [&_svg:not([class*='size-'])]:size-3.5",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
|
-
default: '
|
|
11
|
+
default: 'border-primary bg-primary text-primary-foreground hover:bg-primary/80',
|
|
12
12
|
outline:
|
|
13
|
-
'border border-border bg-card hover:bg-secondary hover:text-foreground aria-expanded:bg-secondary aria-expanded:text-foreground
|
|
13
|
+
'border border-border bg-card hover:border-primary/10 hover:bg-secondary hover:text-foreground aria-expanded:bg-secondary aria-expanded:text-foreground',
|
|
14
14
|
secondary:
|
|
15
|
-
'
|
|
15
|
+
'border border-primary/8 bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',
|
|
16
16
|
ghost:
|
|
17
17
|
'hover:bg-secondary hover:text-foreground aria-expanded:bg-secondary aria-expanded:text-foreground dark:hover:bg-secondary/50',
|
|
18
18
|
destructive:
|
|
19
|
-
'border
|
|
19
|
+
'border border-destructive/20 bg-destructive/10 text-destructive hover:bg-destructive/15 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40 [&_svg]:text-destructive',
|
|
20
20
|
warning:
|
|
21
|
-
'border
|
|
21
|
+
'border border-warning/20 bg-warning/10 text-warning hover:bg-warning/15 focus-visible:border-warning/40 focus-visible:ring-warning/15 dark:bg-warning/20 dark:hover:bg-warning/30 dark:focus-visible:ring-warning/40 [&_svg]:text-warning',
|
|
22
22
|
link: 'text-primary underline-offset-4 hover:underline'
|
|
23
23
|
},
|
|
24
24
|
size: {
|
|
@@ -11,7 +11,7 @@ function Card({
|
|
|
11
11
|
data-slot="card"
|
|
12
12
|
data-size={size}
|
|
13
13
|
className={cn(
|
|
14
|
-
'group/card flex flex-col rounded-sm has-[>[data-slot=card-
|
|
14
|
+
'group/card flex flex-col rounded-sm text-sm text-foreground has-[>[data-slot=card-footer]]:border-none has-[>[data-slot=card-header]]:border-none has-[>[data-slot=card-header]]:bg-transparent has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 [&_[data-slot=card]:first-of-type:first-child]:rounded-t-sm [&_[data-slot=card]:last-of-type:last-child]:rounded-b-sm *:[img:first-child]:rounded-t-sm *:[img:last-child]:rounded-b-sm',
|
|
15
15
|
className
|
|
16
16
|
)}
|
|
17
17
|
{...props}
|
|
@@ -24,7 +24,7 @@ function CardHeader({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
24
24
|
<div
|
|
25
25
|
data-slot="card-header"
|
|
26
26
|
className={cn(
|
|
27
|
-
'group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-sm px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]
|
|
27
|
+
'group/card-header @container/card-header -mb-1 grid auto-rows-min items-start gap-1 rounded-t-sm border-x border-t border-border bg-muted px-3 pt-2.5 pb-3 [text-box-trim:trim-both] has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-6',
|
|
28
28
|
className
|
|
29
29
|
)}
|
|
30
30
|
{...props}
|
|
@@ -37,7 +37,7 @@ function CardTitle({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
37
37
|
<div
|
|
38
38
|
data-slot="card-title"
|
|
39
39
|
className={cn(
|
|
40
|
-
'font-heading
|
|
40
|
+
'font-heading text-xs font-medium text-muted-foreground [text-box-trim:trim-both]',
|
|
41
41
|
className
|
|
42
42
|
)}
|
|
43
43
|
{...props}
|
|
@@ -70,7 +70,7 @@ function CardContent({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
70
70
|
<div
|
|
71
71
|
data-slot="card-content"
|
|
72
72
|
className={cn(
|
|
73
|
-
'
|
|
73
|
+
'relative flex flex-col overflow-hidden rounded-sm border border-border bg-card p-8 shadow-input group-has-[>[data-slot=card-footer]]/card:bg-card group-has-[>[data-slot=card-header]]/card:px-5',
|
|
74
74
|
className
|
|
75
75
|
)}
|
|
76
76
|
{...props}
|
|
@@ -83,7 +83,7 @@ function CardFooter({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
83
83
|
<div
|
|
84
84
|
data-slot="card-footer"
|
|
85
85
|
className={cn(
|
|
86
|
-
'flex items-center border border-border bg-muted -
|
|
86
|
+
'-mt-2 flex items-center rounded-b-sm border border-border bg-muted px-4 pt-3.5 pb-2',
|
|
87
87
|
className
|
|
88
88
|
)}
|
|
89
89
|
{...props}
|
|
@@ -10,7 +10,7 @@ function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxP
|
|
|
10
10
|
<CheckboxPrimitive.Root
|
|
11
11
|
data-slot="checkbox"
|
|
12
12
|
className={cn(
|
|
13
|
-
'peer relative flex size-4.5 shrink-0 items-center justify-center rounded-[6px] border border-border transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 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 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
|
|
13
|
+
'peer relative flex size-4.5 shrink-0 items-center justify-center rounded-[6px] border border-border bg-input transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 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 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',
|
|
14
14
|
className
|
|
15
15
|
)}
|
|
16
16
|
{...props}
|
|
@@ -121,7 +121,7 @@ function ComboboxContent({
|
|
|
121
121
|
data-slot="combobox-content"
|
|
122
122
|
data-chips={!!anchor}
|
|
123
123
|
className={cn(
|
|
124
|
-
'group/combobox-content max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[chips=true]:min-w-(--anchor-width) 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-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-9 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-
|
|
124
|
+
'group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) animate-none! overflow-hidden rounded-sm bg-popover/70 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-[chips=true]:min-w-(--anchor-width) 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-[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-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-9 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none **: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',
|
|
125
125
|
className
|
|
126
126
|
)}
|
|
127
127
|
{...props}
|
|
@@ -8,7 +8,6 @@ import {
|
|
|
8
8
|
DialogTitle
|
|
9
9
|
} from '@admin/components/ui/dialog'
|
|
10
10
|
import { InputGroup, InputGroupAddon } from '@admin/components/ui/input-group'
|
|
11
|
-
|
|
12
11
|
import { cn } from '@admin/utils/shared/cn'
|
|
13
12
|
import { Command as CommandPrimitive } from 'cmdk'
|
|
14
13
|
import { CheckIcon, SearchIcon } from 'lucide-react'
|
|
@@ -51,7 +51,7 @@ function ContextMenuContent({
|
|
|
51
51
|
<ContextMenuPrimitive.Content
|
|
52
52
|
data-slot="context-menu-content"
|
|
53
53
|
className={cn(
|
|
54
|
-
'z-50 max-h-(--radix-context-menu-content-available-height) min-w-48 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
|
|
54
|
+
'relative z-50 max-h-(--radix-context-menu-content-available-height) min-w-48 origin-(--radix-context-menu-content-transform-origin) animate-none! overflow-x-hidden overflow-y-auto rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:**:text-accent-foreground! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:focus:bg-foreground/10! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
55
55
|
className
|
|
56
56
|
)}
|
|
57
57
|
{...props}
|
|
@@ -115,7 +115,7 @@ function ContextMenuSubContent({
|
|
|
115
115
|
<ContextMenuPrimitive.SubContent
|
|
116
116
|
data-slot="context-menu-sub-content"
|
|
117
117
|
className={cn(
|
|
118
|
-
'z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-sm border p-1 text-popover-foreground shadow-lg 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
|
|
118
|
+
'relative z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) animate-none! overflow-hidden rounded-sm border bg-popover/70 p-1 text-popover-foreground shadow-lg duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:**:text-accent-foreground! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:focus:bg-foreground/10! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
119
119
|
className
|
|
120
120
|
)}
|
|
121
121
|
{...props}
|
|
@@ -52,7 +52,7 @@ function DialogContent({
|
|
|
52
52
|
<DialogPrimitive.Content
|
|
53
53
|
data-slot="dialog-content"
|
|
54
54
|
className={cn(
|
|
55
|
-
'fixed top-1/2 left-1/2 z-200 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-0 rounded-sm text-sm text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95
|
|
55
|
+
'fixed top-1/2 left-1/2 z-200 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-0 overflow-hidden rounded-sm bg-card text-sm text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none sm:max-w-md data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
56
56
|
className
|
|
57
57
|
)}
|
|
58
58
|
{...props}
|
|
@@ -86,7 +86,7 @@ function DialogBody({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
86
86
|
<div
|
|
87
87
|
data-slot="dialog-body"
|
|
88
88
|
className={cn(
|
|
89
|
-
'flex
|
|
89
|
+
'flex flex-col gap-1 rounded-sm border border-border bg-card p-6 shadow-input',
|
|
90
90
|
className
|
|
91
91
|
)}
|
|
92
92
|
{...props}
|
|
@@ -106,7 +106,7 @@ function DialogFooter({
|
|
|
106
106
|
<div
|
|
107
107
|
data-slot="dialog-footer"
|
|
108
108
|
className={cn(
|
|
109
|
-
'flex flex-col-reverse gap-1 px-6 pt-2
|
|
109
|
+
'flex flex-col-reverse items-center gap-1 bg-muted px-6 pt-2 pb-3 sm:flex-row sm:justify-between',
|
|
110
110
|
className
|
|
111
111
|
)}
|
|
112
112
|
{...props}
|
|
@@ -67,7 +67,7 @@ function DrawerContent({
|
|
|
67
67
|
<DrawerPrimitive.Content
|
|
68
68
|
data-slot="drawer-content"
|
|
69
69
|
className={cn(
|
|
70
|
-
'group/drawer-content fixed z-200 flex h-auto flex-col bg-transparent p-2 text-sm text-popover-foreground before:absolute before:inset-2 before:-z-10 before:rounded-sm before:border before:border-border before:bg-popover data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-md
|
|
70
|
+
'group/drawer-content fixed z-200 flex h-auto flex-col space-y-4 bg-transparent p-2 text-sm text-popover-foreground before:absolute before:inset-2 before:-z-10 before:rounded-sm before:border before:border-border before:bg-popover data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-md',
|
|
71
71
|
className
|
|
72
72
|
)}
|
|
73
73
|
style={{ touchAction: 'auto', userSelect: 'text', ...style }}
|
|
@@ -47,7 +47,7 @@ function DropdownMenuContent({
|
|
|
47
47
|
sideOffset={sideOffset}
|
|
48
48
|
align={align}
|
|
49
49
|
className={cn(
|
|
50
|
-
'z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-35 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm p-1 text-popover-foreground shadow-2xl/10 ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
|
|
50
|
+
'relative z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-35 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl/10 ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! data-[state=closed]:overflow-hidden dark:ring-foreground/10 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
51
51
|
className
|
|
52
52
|
)}
|
|
53
53
|
{...props}
|
|
@@ -144,7 +144,7 @@ function DropdownMenuRadioItem({
|
|
|
144
144
|
data-slot="dropdown-menu-radio-item"
|
|
145
145
|
data-inset={inset}
|
|
146
146
|
className={cn(
|
|
147
|
-
"relative flex cursor-default items-center gap-2.5 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none
|
|
147
|
+
"relative flex cursor-default items-center gap-2.5 rounded-sm py-2 pr-8 pl-3 text-sm outline-hidden select-none hover:bg-secondary focus:bg-secondary focus:text-foreground focus:**:text-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
148
148
|
className
|
|
149
149
|
)}
|
|
150
150
|
{...props}
|
|
@@ -241,7 +241,7 @@ function DropdownMenuSubContent({
|
|
|
241
241
|
<DropdownMenuPrimitive.SubContent
|
|
242
242
|
data-slot="dropdown-menu-sub-content"
|
|
243
243
|
className={cn(
|
|
244
|
-
'z-50 min-w-36 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-sm p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
|
|
244
|
+
'relative z-50 min-w-36 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
245
245
|
className
|
|
246
246
|
)}
|
|
247
247
|
{...props}
|
|
@@ -12,7 +12,7 @@ function InputGroup({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
12
12
|
<div
|
|
13
13
|
data-slot="input-group"
|
|
14
14
|
className={cn(
|
|
15
|
-
'group/input-group
|
|
15
|
+
'group/input-group relative m-0 flex h-10 w-full min-w-0 items-stretch rounded-sm border border-border bg-input p-0 transition-colors outline-none [min-inline-size:0] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-sm has-data-[align=block-start]:rounded-sm has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-sm has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
{...props}
|
|
@@ -102,7 +102,7 @@ function InputGroupInput({ className, ...props }: React.ComponentProps<'input'>)
|
|
|
102
102
|
<Input
|
|
103
103
|
data-slot="input-group-control"
|
|
104
104
|
className={cn(
|
|
105
|
-
'flex-1 rounded-none
|
|
105
|
+
'h-full flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent',
|
|
106
106
|
className
|
|
107
107
|
)}
|
|
108
108
|
{...props}
|
|
@@ -7,7 +7,7 @@ function Input({ className, type, ...props }: React.ComponentProps<'input'>) {
|
|
|
7
7
|
type={type}
|
|
8
8
|
data-slot="input"
|
|
9
9
|
className={cn(
|
|
10
|
-
'h-10 w-full min-w-0 rounded-sm border border-border bg-input px-4 py-1 text-base transition-colors outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40
|
|
10
|
+
'h-10 w-full min-w-0 rounded-sm border border-border bg-input px-4 py-1 text-base shadow-input transition-colors outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground hover:border-primary/13 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',
|
|
11
11
|
className
|
|
12
12
|
)}
|
|
13
13
|
{...props}
|
|
@@ -62,7 +62,7 @@ function MenubarContent({
|
|
|
62
62
|
alignOffset={alignOffset}
|
|
63
63
|
sideOffset={sideOffset}
|
|
64
64
|
className={cn(
|
|
65
|
-
'z-50 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-sm p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
|
|
65
|
+
'relative z-50 min-w-48 origin-(--radix-menubar-content-transform-origin) animate-none! overflow-hidden rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[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',
|
|
66
66
|
className
|
|
67
67
|
)}
|
|
68
68
|
{...props}
|
|
@@ -231,7 +231,7 @@ function MenubarSubContent({
|
|
|
231
231
|
<MenubarPrimitive.SubContent
|
|
232
232
|
data-slot="menubar-sub-content"
|
|
233
233
|
className={cn(
|
|
234
|
-
'z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-sm p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
|
|
234
|
+
'relative z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) animate-none! overflow-hidden rounded-sm bg-popover/70 p-1 text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[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',
|
|
235
235
|
className
|
|
236
236
|
)}
|
|
237
237
|
{...props}
|
|
@@ -17,7 +17,7 @@ function ScrollArea({
|
|
|
17
17
|
>
|
|
18
18
|
<ScrollAreaPrimitive.Viewport
|
|
19
19
|
data-slot="scroll-area-viewport"
|
|
20
|
-
className="size-full rounded-[inherit] transition-[color,box-shadow] outline-none
|
|
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!"
|
|
21
21
|
>
|
|
22
22
|
{children}
|
|
23
23
|
</ScrollAreaPrimitive.Viewport>
|
|
@@ -36,7 +36,7 @@ function SelectTrigger({
|
|
|
36
36
|
data-slot="select-trigger"
|
|
37
37
|
data-size={size}
|
|
38
38
|
className={cn(
|
|
39
|
-
"flex w-fit items-center
|
|
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",
|
|
40
40
|
className
|
|
41
41
|
)}
|
|
42
42
|
{...props}
|
|
@@ -62,7 +62,7 @@ function SelectContent({
|
|
|
62
62
|
data-slot="select-content"
|
|
63
63
|
data-align-trigger={position === 'item-aligned'}
|
|
64
64
|
className={cn(
|
|
65
|
-
'z-50
|
|
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
66
|
position === 'popper' &&
|
|
67
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
68
|
className
|
|
@@ -237,7 +237,7 @@ function Sidebar({
|
|
|
237
237
|
data-slot="sidebar-container"
|
|
238
238
|
data-side={side}
|
|
239
239
|
className={cn(
|
|
240
|
-
'fixed inset-y-0
|
|
240
|
+
'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) border-border/80 transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',
|
|
241
241
|
// Adjust the padding for floating and inset variants.
|
|
242
242
|
variant === 'floating' || variant === 'inset'
|
|
243
243
|
? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
|
|
@@ -381,7 +381,7 @@ function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
381
381
|
<div
|
|
382
382
|
data-slot="sidebar-group"
|
|
383
383
|
data-sidebar="group"
|
|
384
|
-
className={cn('relative flex w-full min-w-0 flex-col p-2
|
|
384
|
+
className={cn('relative flex w-full min-w-0 flex-col gap-1 p-2', className)}
|
|
385
385
|
{...props}
|
|
386
386
|
/>
|
|
387
387
|
)
|
|
@@ -399,7 +399,7 @@ function SidebarGroupLabel({
|
|
|
399
399
|
data-slot="sidebar-group-label"
|
|
400
400
|
data-sidebar="group-label"
|
|
401
401
|
className={cn(
|
|
402
|
-
'
|
|
402
|
+
'mb-1 flex shrink-0 items-center rounded-sm px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
|
|
403
403
|
className
|
|
404
404
|
)}
|
|
405
405
|
{...props}
|
|
@@ -461,7 +461,7 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {
|
|
|
461
461
|
}
|
|
462
462
|
|
|
463
463
|
const sidebarMenuButtonVariants = cva(
|
|
464
|
-
'peer/menu-button group/menu-button
|
|
464
|
+
'peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[6px] px-3 py-2 text-left text-sm font-medium text-sidebar-foreground ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate',
|
|
465
465
|
{
|
|
466
466
|
variants: {
|
|
467
467
|
variant: {
|
|
@@ -23,7 +23,7 @@ function TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {
|
|
|
23
23
|
return (
|
|
24
24
|
<thead
|
|
25
25
|
data-slot="table-header"
|
|
26
|
-
className={cn('[&_tr]:border-b
|
|
26
|
+
className={cn('bg-background [&_tr]:border-b', className)}
|
|
27
27
|
{...props}
|
|
28
28
|
/>
|
|
29
29
|
)
|
|
@@ -21,7 +21,7 @@ function Tabs({
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const tabsListVariants = cva(
|
|
24
|
-
'group/tabs-list inline-flex w-fit items-center justify-center rounded-sm p-[2px] text-muted-foreground group-data-horizontal/tabs:h-10 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-sm data-[variant=line]:rounded-none
|
|
24
|
+
'group/tabs-list inline-flex w-fit items-center justify-center gap-0.5 rounded-sm border border-border p-[2px] text-muted-foreground group-data-horizontal/tabs:h-10 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col group-data-vertical/tabs:rounded-sm data-[variant=line]:rounded-none',
|
|
25
25
|
{
|
|
26
26
|
variants: {
|
|
27
27
|
variant: {
|
|
@@ -56,7 +56,7 @@ function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPr
|
|
|
56
56
|
data-slot="tabs-trigger"
|
|
57
57
|
className={cn(
|
|
58
58
|
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-sm border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-vertical/tabs:px-2.5 group-data-vertical/tabs:py-1.5 hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current [&_svg:not([class*='size-'])]:size-4",
|
|
59
|
-
'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent group-data-[variant=line]/tabs-list:data-active:hover:border-transparent group-data-[variant=line]/tabs-list:data-active:hover:bg-transparent
|
|
59
|
+
'rounded-sm group-data-[variant=line]/tabs-list:bg-transparent hover:border-border hover:bg-secondary/60 group-data-[variant=line]/tabs-list:data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent group-data-[variant=line]/tabs-list:data-active:hover:border-transparent group-data-[variant=line]/tabs-list:data-active:hover:bg-transparent',
|
|
60
60
|
'data-active:border-border data-active:bg-input data-active:text-foreground data-active:hover:border-border data-active:hover:bg-input data-active:hover:text-foreground data-active:aria-expanded:bg-secondary data-active:aria-expanded:text-foreground',
|
|
61
61
|
'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',
|
|
62
62
|
className
|
|
@@ -6,7 +6,7 @@ function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
|
|
|
6
6
|
<textarea
|
|
7
7
|
data-slot="textarea"
|
|
8
8
|
className={cn(
|
|
9
|
-
'flex field-sizing-content min-h-16 w-full resize-none rounded-sm border border-border bg-input px-3 py-3 text-base transition-colors outline-none placeholder:text-muted-foreground 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 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40
|
|
9
|
+
'flex field-sizing-content min-h-16 w-full resize-none rounded-sm border border-border bg-input px-3 py-3 text-base shadow-input transition-colors outline-none placeholder:text-muted-foreground hover:border-primary/13 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 md:text-sm dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',
|
|
10
10
|
className
|
|
11
11
|
)}
|
|
12
12
|
{...props}
|
|
@@ -37,7 +37,7 @@ function TooltipContent({
|
|
|
37
37
|
data-slot="tooltip-content"
|
|
38
38
|
sideOffset={sideOffset}
|
|
39
39
|
className={cn(
|
|
40
|
-
'z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-sm bg-card p-3.5 text-sm text-foreground has-data-[slot=kbd]:pr-1.5 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=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 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
|
|
40
|
+
'material-card z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-sm border border-border bg-card p-3.5 text-sm text-foreground has-data-[slot=kbd]:pr-1.5 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=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 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',
|
|
41
41
|
className
|
|
42
42
|
)}
|
|
43
43
|
{...props}
|
|
@@ -5,22 +5,37 @@ import path2 from "path";
|
|
|
5
5
|
// core-engine/utils/cli-root.ts
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import path from "path";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
var CLI_PACKAGE_NAME = "betterstart-cli";
|
|
10
|
+
function findCliPackage() {
|
|
11
|
+
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
for (; ; ) {
|
|
11
13
|
const pkgPath = path.join(dir, "package.json");
|
|
12
14
|
if (fs.existsSync(pkgPath)) {
|
|
13
15
|
try {
|
|
14
16
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
15
|
-
if (pkg.name ===
|
|
16
|
-
return dir;
|
|
17
|
+
if (pkg.name === CLI_PACKAGE_NAME) {
|
|
18
|
+
return { dir, pkg };
|
|
17
19
|
}
|
|
18
20
|
} catch {
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
|
-
|
|
23
|
+
const parentDir = path.dirname(dir);
|
|
24
|
+
if (parentDir === dir) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
dir = parentDir;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function findCliRoot() {
|
|
31
|
+
const found = findCliPackage();
|
|
32
|
+
if (found) {
|
|
33
|
+
return found.dir;
|
|
22
34
|
}
|
|
23
|
-
return path.resolve(
|
|
35
|
+
return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
36
|
+
}
|
|
37
|
+
function getCurrentCliVersion() {
|
|
38
|
+
return findCliPackage()?.pkg.version ?? "0.0.0";
|
|
24
39
|
}
|
|
25
40
|
function resolveCliAssetPath(...segments) {
|
|
26
41
|
const root = findCliRoot();
|
|
@@ -71,6 +86,12 @@ function singularizeLabel(label) {
|
|
|
71
86
|
words[words.length - 1] = words[words.length - 1].charAt(0).toUpperCase() + words[words.length - 1].slice(1);
|
|
72
87
|
return words.join(" ");
|
|
73
88
|
}
|
|
89
|
+
function singleQuote(value) {
|
|
90
|
+
return `'${value.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
|
|
91
|
+
}
|
|
92
|
+
function escapeTemplateText(value) {
|
|
93
|
+
return value.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
|
|
94
|
+
}
|
|
74
95
|
|
|
75
96
|
// adapters/next/config/namespace.ts
|
|
76
97
|
var DEFAULT_ADMIN_NAMESPACE = "admin";
|
|
@@ -325,6 +346,8 @@ export {
|
|
|
325
346
|
toKebabCase,
|
|
326
347
|
quotePropertyName,
|
|
327
348
|
singularizeLabel,
|
|
349
|
+
singleQuote,
|
|
350
|
+
escapeTemplateText,
|
|
328
351
|
DEFAULT_ADMIN_NAMESPACE,
|
|
329
352
|
validateAdminNamespace,
|
|
330
353
|
validateAdminDashboardPath,
|
|
@@ -333,10 +356,11 @@ export {
|
|
|
333
356
|
deriveMigrationsDir,
|
|
334
357
|
applyAdminNamespaceToPath,
|
|
335
358
|
applyAdminNamespaceToContent,
|
|
359
|
+
getCurrentCliVersion,
|
|
336
360
|
resolveCliAssetPath,
|
|
337
361
|
readTemplate,
|
|
338
362
|
applyNextCacheApiForVersion,
|
|
339
363
|
readNamespacedTemplate,
|
|
340
364
|
namespacedTemplatePath
|
|
341
365
|
};
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
366
|
+
//# sourceMappingURL=chunk-MJWUGEMK.js.map
|