betterstart-cli 0.0.13 → 0.0.14
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/plugins/blog/schemas/menus.json +51 -11
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar.tsx +7 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/sidebar-branding.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +107 -0
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx +58 -45
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +3 -3
- 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/entity-filters-bar.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog-content.tsx +2 -2
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/sort-indicator.tsx +7 -3
- package/dist/assets/adapters/next/templates/init/data/navigation.ts +2 -0
- package/dist/assets/adapters/next/templates/init/hooks/content-editor/use-table-button.ts +85 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/get-audit-logs.ts +41 -16
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/index.ts +2 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/types.ts +5 -0
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/runner.ts +2 -1
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/types.ts +2 -1
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-detail-drawer.tsx +51 -43
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-detail-row.tsx +2 -4
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-page-content.tsx +465 -179
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-page-skeleton.tsx +3 -15
- package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/forgot-password-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/login-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/reset-password-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/users/users-page-content.tsx +83 -2
- package/dist/assets/adapters/next/templates/init/pages/users/users-table.tsx +126 -78
- package/dist/assets/adapters/next/templates/init/utils/editor/tiptap.ts +7 -8
- package/dist/assets/adapters/next/templates/init/utils/form/list-field.ts +17 -0
- package/dist/assets/adapters/next/templates/init/utils/user/user.ts +70 -0
- 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/selection-bubble-menu.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +0 -2
- package/dist/assets/shared-assets/react-admin/custom/content-editor/table-button.tsx +17 -65
- package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/link-popover/link-control-popover.tsx +3 -8
- 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/date-range-picker.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/custom/dynamic-list-field.tsx +20 -8
- package/dist/assets/shared-assets/react-admin/custom/gallery-field.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/media-gallery-field.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +211 -0
- 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/sortable-gallery-item.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/schema.json +136 -0
- package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/alert.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/card.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/chart.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/command.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +6 -6
- package/dist/assets/shared-assets/react-admin/ui/empty.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/field.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/form.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/item.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +7 -7
- package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +4 -4
- package/dist/assets/shared-assets/react-admin/ui/popover.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/resizable.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 +3 -3
- package/dist/assets/shared-assets/react-admin/ui/skeleton.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/cli.js +2688 -1644
- package/dist/cli.js.map +1 -1
- package/package.json +10 -2
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-filters.tsx +0 -152
|
@@ -3,7 +3,7 @@ import { cva, type VariantProps } from 'class-variance-authority'
|
|
|
3
3
|
import type * as React from 'react'
|
|
4
4
|
|
|
5
5
|
const alertVariants = cva(
|
|
6
|
-
"group/alert relative grid w-full gap-0.5 rounded-
|
|
6
|
+
"group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-foreground *:[svg:not([class*='size-'])]:size-4",
|
|
7
7
|
{
|
|
8
8
|
variants: {
|
|
9
9
|
variant: {
|
|
@@ -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-
|
|
14
|
+
'group/card flex flex-col rounded-lg has-[>[data-slot=card-header]]:bg-transparent has-[>[data-slot=card-header]]:border-none has-[>[data-slot=card-footer]]:border-none text-sm text-foreground has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-sm *:[img:last-child]:rounded-b-sm [&_[data-slot=card]:last-of-type:last-child]:rounded-b-sm [&_[data-slot=card]:first-of-type:first-child]:rounded-t-sm',
|
|
15
15
|
className
|
|
16
16
|
)}
|
|
17
17
|
{...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
|
-
'group-has-[>[data-slot=card-header]]/card:px-5 rounded-
|
|
73
|
+
'group-has-[>[data-slot=card-header]]/card:px-5 rounded-lg border border-border bg-card group-has-[>[data-slot=card-footer]]/card:bg-card p-8 flex flex-col overflow-hidden shadow-input relative',
|
|
74
74
|
className
|
|
75
75
|
)}
|
|
76
76
|
{...props}
|
|
@@ -163,7 +163,7 @@ function ChartTooltipContent({
|
|
|
163
163
|
return (
|
|
164
164
|
<div
|
|
165
165
|
className={cn(
|
|
166
|
-
'grid min-w-32 items-start gap-1.5 rounded-
|
|
166
|
+
'grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl',
|
|
167
167
|
className
|
|
168
168
|
)}
|
|
169
169
|
>
|
|
@@ -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 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 bg-input',
|
|
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-
|
|
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-lg 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-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 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
125
125
|
className
|
|
126
126
|
)}
|
|
127
127
|
{...props}
|
|
@@ -157,7 +157,7 @@ function ComboboxItem({
|
|
|
157
157
|
ref={ref}
|
|
158
158
|
data-slot="combobox-item"
|
|
159
159
|
className={cn(
|
|
160
|
-
"relative flex w-full cursor-default items-center gap-2.5 rounded-
|
|
160
|
+
"relative flex w-full cursor-default items-center gap-2.5 rounded-lg py-2 pr-8 pl-3 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
161
161
|
className
|
|
162
162
|
)}
|
|
163
163
|
{...props}
|
|
@@ -143,7 +143,7 @@ function CommandItem({
|
|
|
143
143
|
<CommandPrimitive.Item
|
|
144
144
|
data-slot="command-item"
|
|
145
145
|
className={cn(
|
|
146
|
-
"group/command-item relative flex cursor-default items-center gap-2 rounded-
|
|
146
|
+
"group/command-item relative flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-muted data-[selected=true]:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&[data-selected=true]_svg]:text-foreground",
|
|
147
147
|
className
|
|
148
148
|
)}
|
|
149
149
|
{...props}
|
|
@@ -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-
|
|
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-lg 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 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 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
55
55
|
className
|
|
56
56
|
)}
|
|
57
57
|
{...props}
|
|
@@ -75,7 +75,7 @@ function ContextMenuItem({
|
|
|
75
75
|
data-inset={inset}
|
|
76
76
|
data-variant={variant}
|
|
77
77
|
className={cn(
|
|
78
|
-
"group/context-menu-item relative flex cursor-default items-center gap-2.5 rounded-
|
|
78
|
+
"group/context-menu-item relative flex cursor-default items-center gap-2.5 rounded-lg px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-foreground data-[variant=destructive]:*:[svg]:text-foreground",
|
|
79
79
|
className
|
|
80
80
|
)}
|
|
81
81
|
{...props}
|
|
@@ -96,7 +96,7 @@ function ContextMenuSubTrigger({
|
|
|
96
96
|
data-slot="context-menu-sub-trigger"
|
|
97
97
|
data-inset={inset}
|
|
98
98
|
className={cn(
|
|
99
|
-
"flex cursor-default items-center rounded-
|
|
99
|
+
"flex cursor-default items-center rounded-lg px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
100
100
|
className
|
|
101
101
|
)}
|
|
102
102
|
{...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-
|
|
118
|
+
'z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg 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 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 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
119
119
|
className
|
|
120
120
|
)}
|
|
121
121
|
{...props}
|
|
@@ -137,7 +137,7 @@ function ContextMenuCheckboxItem({
|
|
|
137
137
|
data-slot="context-menu-checkbox-item"
|
|
138
138
|
data-inset={inset}
|
|
139
139
|
className={cn(
|
|
140
|
-
"relative flex cursor-default items-center gap-2 rounded-
|
|
140
|
+
"relative flex cursor-default items-center gap-2 rounded-lg py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
141
141
|
className
|
|
142
142
|
)}
|
|
143
143
|
checked={checked}
|
|
@@ -166,7 +166,7 @@ function ContextMenuRadioItem({
|
|
|
166
166
|
data-slot="context-menu-radio-item"
|
|
167
167
|
data-inset={inset}
|
|
168
168
|
className={cn(
|
|
169
|
-
"relative flex cursor-default items-center gap-2 rounded-
|
|
169
|
+
"relative flex cursor-default items-center gap-2 rounded-lg py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
170
170
|
className
|
|
171
171
|
)}
|
|
172
172
|
{...props}
|
|
@@ -51,7 +51,7 @@ function DrawerContent({
|
|
|
51
51
|
<DrawerPrimitive.Content
|
|
52
52
|
data-slot="drawer-content"
|
|
53
53
|
className={cn(
|
|
54
|
-
'group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-
|
|
54
|
+
'group/drawer-content fixed z-50 flex h-auto flex-col bg-transparent p-2 text-sm text-popover-foreground before:absolute before:inset-2 before:-z-10 before:rounded-4xl 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 space-y-4',
|
|
55
55
|
className
|
|
56
56
|
)}
|
|
57
57
|
style={{ touchAction: 'auto', userSelect: 'text', ...style }}
|
|
@@ -68,7 +68,7 @@ function DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
68
68
|
<div
|
|
69
69
|
data-slot="drawer-header"
|
|
70
70
|
className={cn(
|
|
71
|
-
'flex flex-col
|
|
71
|
+
'flex flex-col px-6 pt-6 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:text-left',
|
|
72
72
|
className
|
|
73
73
|
)}
|
|
74
74
|
{...props}
|
|
@@ -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) w-(--radix-dropdown-menu-trigger-width) min-w-35 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-
|
|
50
|
+
'z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-35 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg 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 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 relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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!',
|
|
51
51
|
className
|
|
52
52
|
)}
|
|
53
53
|
{...props}
|
|
@@ -84,7 +84,7 @@ function DropdownMenuItem({
|
|
|
84
84
|
data-inset={inset}
|
|
85
85
|
data-variant={variant}
|
|
86
86
|
className={cn(
|
|
87
|
-
"group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-
|
|
87
|
+
"group/dropdown-menu-item relative flex cursor-default items-center gap-2.5 rounded-lg px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",
|
|
88
88
|
className
|
|
89
89
|
)}
|
|
90
90
|
{...props}
|
|
@@ -106,7 +106,7 @@ function DropdownMenuCheckboxItem({
|
|
|
106
106
|
data-slot="dropdown-menu-checkbox-item"
|
|
107
107
|
data-inset={inset}
|
|
108
108
|
className={cn(
|
|
109
|
-
"relative flex cursor-default items-center gap-2.5 rounded-
|
|
109
|
+
"relative flex cursor-default items-center gap-2.5 rounded-lg py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
110
110
|
className
|
|
111
111
|
)}
|
|
112
112
|
checked={checked}
|
|
@@ -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-
|
|
147
|
+
"relative flex cursor-default items-center gap-2.5 rounded-lg py-2 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-secondary hover: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}
|
|
@@ -222,7 +222,7 @@ function DropdownMenuSubTrigger({
|
|
|
222
222
|
data-slot="dropdown-menu-sub-trigger"
|
|
223
223
|
data-inset={inset}
|
|
224
224
|
className={cn(
|
|
225
|
-
"flex cursor-default items-center gap-2 rounded-
|
|
225
|
+
"flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-hidden select-none focus:bg-secondary focus:text-foreground not-data-[variant=destructive]:focus:**:text-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
226
226
|
className
|
|
227
227
|
)}
|
|
228
228
|
{...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-
|
|
244
|
+
'z-50 min-w-36 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-lg 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 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 relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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!',
|
|
245
245
|
className
|
|
246
246
|
)}
|
|
247
247
|
{...props}
|
|
@@ -6,7 +6,7 @@ function Empty({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
6
6
|
<div
|
|
7
7
|
data-slot="empty"
|
|
8
8
|
className={cn(
|
|
9
|
-
'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-
|
|
9
|
+
'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance',
|
|
10
10
|
className
|
|
11
11
|
)}
|
|
12
12
|
{...props}
|
|
@@ -30,7 +30,7 @@ const emptyMediaVariants = cva(
|
|
|
30
30
|
variants: {
|
|
31
31
|
variant: {
|
|
32
32
|
default: 'bg-transparent',
|
|
33
|
-
icon: "flex size-10 shrink-0 items-center justify-center rounded-
|
|
33
|
+
icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
defaultVariants: {
|
|
@@ -99,7 +99,7 @@ function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>)
|
|
|
99
99
|
<Label
|
|
100
100
|
data-slot="field-label"
|
|
101
101
|
className={cn(
|
|
102
|
-
'group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-
|
|
102
|
+
'group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-lg has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10',
|
|
103
103
|
'has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col',
|
|
104
104
|
className
|
|
105
105
|
)}
|
|
@@ -129,7 +129,7 @@ const FormDescription = React.forwardRef<
|
|
|
129
129
|
<p
|
|
130
130
|
ref={ref}
|
|
131
131
|
id={formDescriptionId}
|
|
132
|
-
className={cn('text-[0.8rem] text-muted-foreground
|
|
132
|
+
className={cn('text-[0.8rem] text-muted-foreground', className)}
|
|
133
133
|
{...props}
|
|
134
134
|
/>
|
|
135
135
|
)
|
|
@@ -25,7 +25,7 @@ function HoverCardContent({
|
|
|
25
25
|
align={align}
|
|
26
26
|
sideOffset={sideOffset}
|
|
27
27
|
className={cn(
|
|
28
|
-
'z-50 w-72 origin-(--radix-hover-card-content-transform-origin) rounded-
|
|
28
|
+
'z-50 w-72 origin-(--radix-hover-card-content-transform-origin) rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
29
29
|
className
|
|
30
30
|
)}
|
|
31
31
|
{...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 border border-border relative m-0 flex h-11 w-full min-w-0 items-stretch rounded-4xl 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-
|
|
15
|
+
'group/input-group border border-border relative m-0 flex h-11 w-full min-w-0 items-stretch rounded-4xl 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-lg has-data-[align=block-start]:rounded-lg 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-lg 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}
|
|
@@ -29,7 +29,7 @@ function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Sepa
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const itemVariants = cva(
|
|
32
|
-
'group/item flex w-full flex-wrap items-center rounded-
|
|
32
|
+
'group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted',
|
|
33
33
|
{
|
|
34
34
|
variants: {
|
|
35
35
|
variant: {
|
|
@@ -77,7 +77,7 @@ const itemMediaVariants = cva(
|
|
|
77
77
|
default: 'bg-transparent',
|
|
78
78
|
icon: "[&_svg:not([class*='size-'])]:size-4",
|
|
79
79
|
image:
|
|
80
|
-
'size-10 overflow-hidden rounded-
|
|
80
|
+
'size-10 overflow-hidden rounded-lg group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-md [&_img]:size-full [&_img]:object-cover'
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
defaultVariants: {
|
|
@@ -39,7 +39,7 @@ function MenubarTrigger({
|
|
|
39
39
|
<MenubarPrimitive.Trigger
|
|
40
40
|
data-slot="menubar-trigger"
|
|
41
41
|
className={cn(
|
|
42
|
-
'flex items-center rounded-
|
|
42
|
+
'flex items-center rounded-lg px-2 py-0.75 text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted',
|
|
43
43
|
className
|
|
44
44
|
)}
|
|
45
45
|
{...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-
|
|
65
|
+
'z-50 min-w-48 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg 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 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
66
66
|
className
|
|
67
67
|
)}
|
|
68
68
|
{...props}
|
|
@@ -86,7 +86,7 @@ function MenubarItem({
|
|
|
86
86
|
data-inset={inset}
|
|
87
87
|
data-variant={variant}
|
|
88
88
|
className={cn(
|
|
89
|
-
"group/menubar-item relative flex cursor-default items-center gap-2.5 rounded-
|
|
89
|
+
"group/menubar-item relative flex cursor-default items-center gap-2.5 rounded-lg px-3 py-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-9.5 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-foreground!",
|
|
90
90
|
className
|
|
91
91
|
)}
|
|
92
92
|
{...props}
|
|
@@ -108,7 +108,7 @@ function MenubarCheckboxItem({
|
|
|
108
108
|
data-slot="menubar-checkbox-item"
|
|
109
109
|
data-inset={inset}
|
|
110
110
|
className={cn(
|
|
111
|
-
'relative flex cursor-default items-center gap-2.5 rounded-
|
|
111
|
+
'relative flex cursor-default items-center gap-2.5 rounded-lg py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0',
|
|
112
112
|
className
|
|
113
113
|
)}
|
|
114
114
|
checked={checked}
|
|
@@ -137,7 +137,7 @@ function MenubarRadioItem({
|
|
|
137
137
|
data-slot="menubar-radio-item"
|
|
138
138
|
data-inset={inset}
|
|
139
139
|
className={cn(
|
|
140
|
-
"relative flex cursor-default items-center gap-2.5 rounded-
|
|
140
|
+
"relative flex cursor-default items-center gap-2.5 rounded-lg py-2 pr-3 pl-9.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-9.5 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
141
141
|
className
|
|
142
142
|
)}
|
|
143
143
|
{...props}
|
|
@@ -212,7 +212,7 @@ function MenubarSubTrigger({
|
|
|
212
212
|
data-slot="menubar-sub-trigger"
|
|
213
213
|
data-inset={inset}
|
|
214
214
|
className={cn(
|
|
215
|
-
"flex cursor-default items-center gap-2 rounded-
|
|
215
|
+
"flex cursor-default items-center gap-2 rounded-lg px-3 py-2 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-9.5 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4",
|
|
216
216
|
className
|
|
217
217
|
)}
|
|
218
218
|
{...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-
|
|
234
|
+
'z-50 min-w-32 origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-lg 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 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 animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
235
235
|
className
|
|
236
236
|
)}
|
|
237
237
|
{...props}
|
|
@@ -55,7 +55,7 @@ function NavigationMenuItem({
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
const navigationMenuTriggerStyle = cva(
|
|
58
|
-
'group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-
|
|
58
|
+
'group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-4.5 py-2.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted'
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
function NavigationMenuTrigger({
|
|
@@ -86,7 +86,7 @@ function NavigationMenuContent({
|
|
|
86
86
|
<NavigationMenuPrimitive.Content
|
|
87
87
|
data-slot="navigation-menu-content"
|
|
88
88
|
className={cn(
|
|
89
|
-
'top-0 left-0 isolate z-50 w-full p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-
|
|
89
|
+
'top-0 left-0 isolate z-50 w-full p-2.5 pr-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/5 group-data-[viewport=false]/navigation-menu:duration-300 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none md:absolute md:w-auto group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95',
|
|
90
90
|
className
|
|
91
91
|
)}
|
|
92
92
|
{...props}
|
|
@@ -103,7 +103,7 @@ function NavigationMenuViewport({
|
|
|
103
103
|
<NavigationMenuPrimitive.Viewport
|
|
104
104
|
data-slot="navigation-menu-viewport"
|
|
105
105
|
className={cn(
|
|
106
|
-
'origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-
|
|
106
|
+
'origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-lg bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 md:w-(--radix-navigation-menu-viewport-width) data-open:animate-in data-open:zoom-in-90 data-closed:animate-out data-closed:zoom-out-90',
|
|
107
107
|
className
|
|
108
108
|
)}
|
|
109
109
|
{...props}
|
|
@@ -120,7 +120,7 @@ function NavigationMenuLink({
|
|
|
120
120
|
<NavigationMenuPrimitive.Link
|
|
121
121
|
data-slot="navigation-menu-link"
|
|
122
122
|
className={cn(
|
|
123
|
-
"flex items-center gap-1.5 rounded-
|
|
123
|
+
"flex items-center gap-1.5 rounded-lg p-3 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-lg data-[active=true]:bg-muted/50 data-[active=true]:hover:bg-muted data-[active=true]:focus:bg-muted [&_svg:not([class*='size-'])]:size-4",
|
|
124
124
|
className
|
|
125
125
|
)}
|
|
126
126
|
{...props}
|
|
@@ -25,7 +25,7 @@ function PopoverContent({
|
|
|
25
25
|
align={align}
|
|
26
26
|
sideOffset={sideOffset}
|
|
27
27
|
className={cn(
|
|
28
|
-
'z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-
|
|
28
|
+
'z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-lg bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',
|
|
29
29
|
className
|
|
30
30
|
)}
|
|
31
31
|
{...props}
|
|
@@ -33,7 +33,7 @@ function ResizableHandle({
|
|
|
33
33
|
)}
|
|
34
34
|
{...props}
|
|
35
35
|
>
|
|
36
|
-
{withHandle && <div className="z-10 flex h-6 w-1 shrink-0 rounded-
|
|
36
|
+
{withHandle && <div className="z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border" />}
|
|
37
37
|
</ResizablePrimitive.Separator>
|
|
38
38
|
)
|
|
39
39
|
}
|
|
@@ -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 p-1 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-
|
|
65
|
+
'z-50 p-1 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg 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 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 relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **: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]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!',
|
|
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
|
|
@@ -105,7 +105,7 @@ function SelectItem({
|
|
|
105
105
|
<SelectPrimitive.Item
|
|
106
106
|
data-slot="select-item"
|
|
107
107
|
className={cn(
|
|
108
|
-
"relative flex w-full cursor-default items-center gap-2.5 rounded-
|
|
108
|
+
"relative flex w-full cursor-default items-center gap-2.5 rounded-lg py-1 pr-8 pl-3 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
109
109
|
className
|
|
110
110
|
)}
|
|
111
111
|
{...props}
|
|
@@ -310,7 +310,7 @@ function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {
|
|
|
310
310
|
<main
|
|
311
311
|
data-slot="sidebar-inset"
|
|
312
312
|
className={cn(
|
|
313
|
-
'relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-
|
|
313
|
+
'relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-lg md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
|
|
314
314
|
className
|
|
315
315
|
)}
|
|
316
316
|
{...props}
|
|
@@ -368,7 +368,7 @@ function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
368
368
|
data-slot="sidebar-content"
|
|
369
369
|
data-sidebar="content"
|
|
370
370
|
className={cn(
|
|
371
|
-
'no-scrollbar flex min-h-0 flex-1 flex-col gap-
|
|
371
|
+
'no-scrollbar flex min-h-0 flex-1 flex-col gap-4 overflow-auto [--radius:var(--radius-xl)] group-data-[collapsible=icon]:overflow-hidden',
|
|
372
372
|
className
|
|
373
373
|
)}
|
|
374
374
|
{...props}
|
|
@@ -399,7 +399,7 @@ function SidebarGroupLabel({
|
|
|
399
399
|
data-slot="sidebar-group-label"
|
|
400
400
|
data-sidebar="group-label"
|
|
401
401
|
className={cn(
|
|
402
|
-
'flex
|
|
402
|
+
'flex mb-1 shrink-0 items-center rounded-full 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}
|
|
@@ -4,7 +4,7 @@ function Skeleton({ className, ...props }: React.ComponentProps<'div'>) {
|
|
|
4
4
|
return (
|
|
5
5
|
<div
|
|
6
6
|
data-slot="skeleton"
|
|
7
|
-
className={cn('animate-pulse rounded-
|
|
7
|
+
className={cn('animate-pulse rounded-lg bg-secondary', className)}
|
|
8
8
|
{...props}
|
|
9
9
|
/>
|
|
10
10
|
)
|
|
@@ -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-4xl 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-
|
|
24
|
+
'group/tabs-list inline-flex w-fit items-center justify-center rounded-4xl 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-lg data-[variant=line]:rounded-none border border-border gap-0.5',
|
|
25
25
|
{
|
|
26
26
|
variants: {
|
|
27
27
|
variant: {
|
|
@@ -55,7 +55,7 @@ function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPr
|
|
|
55
55
|
<TabsPrimitive.Trigger
|
|
56
56
|
data-slot="tabs-trigger"
|
|
57
57
|
className={cn(
|
|
58
|
-
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-
|
|
58
|
+
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-lg 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
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 hover:bg-secondary/60 hover:border-border rounded-full',
|
|
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',
|
|
@@ -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-
|
|
9
|
+
'flex field-sizing-content min-h-16 w-full resize-none rounded-lg 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 hover:border-primary/13 shadow-input',
|
|
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-
|
|
40
|
+
'z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-lg 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-4xl 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 border border-border material-card',
|
|
41
41
|
className
|
|
42
42
|
)}
|
|
43
43
|
{...props}
|