betterstart-cli 0.0.27 → 0.0.29
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/mailchimp/actions/mailchimp.ts +0 -1
- package/dist/assets/adapters/next/integrations/vercel-blob/actions/vercel-blob.ts +39 -0
- package/dist/assets/adapters/next/integrations/vercel-blob/integration.ts +36 -0
- package/dist/assets/adapters/next/plugins/blog/schemas/menus.json +1 -1
- package/dist/assets/adapters/next/plugins/blog/schemas/posts.json +1 -1
- package/dist/assets/adapters/next/templates/init/admin-globals.css +1 -1
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-nav-link.tsx +12 -2
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-settings-sidebar.tsx +75 -0
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-nav-link.tsx +12 -2
- package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar.tsx +2 -8
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +14 -5
- package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table.tsx +111 -112
- package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/dev-mode-types.ts +4 -0
- 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-versions/entity-versions-drawer.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +45 -47
- package/dist/assets/adapters/next/templates/init/components/shared/page-header.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/data/webhook-events.ts +5 -0
- package/dist/assets/adapters/next/templates/init/hooks/use-table-utils.ts +27 -7
- package/dist/assets/adapters/next/templates/init/hooks/use-webhooks.ts +211 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/audit/types.ts +2 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/index.ts +0 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/types.ts +0 -4
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/upsert-form-settings.ts +0 -2
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/create-webhook.ts +55 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/delete-webhook.ts +26 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/dispatch.ts +135 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-deliveries.ts +124 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-secret.ts +28 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhook-subscriptions.ts +32 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/get-webhooks.ts +154 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/index.ts +30 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/internal-get-active-endpoints.ts +20 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/regenerate-webhook-secret.ts +35 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/register.ts +70 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/send-test-webhook.ts +81 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/types.ts +104 -0
- package/dist/assets/adapters/next/templates/init/lib/actions/webhooks/update-webhook.ts +72 -0
- package/dist/assets/adapters/next/templates/init/lib/db/core/schema.ts +71 -2
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/register.ts +2 -0
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/runner.ts +3 -1
- package/dist/assets/adapters/next/templates/init/lib/lifecycle-hooks/types.ts +6 -1
- package/dist/assets/adapters/next/templates/init/pages/auth-gate-rsc.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-content.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/media/media-page-skeleton.tsx +1 -1
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-columns.tsx +150 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-page-content.tsx +137 -0
- package/dist/assets/adapters/next/templates/init/pages/{audit-log → 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 +295 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/edit-form-notifications-dialog.tsx +128 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-content.tsx +111 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page-skeleton.tsx +7 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-page.tsx +14 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/settings-layout.tsx +10 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/delete-webhook-dialog.tsx +82 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-actions.tsx +53 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-enabled-switch.tsx +18 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-endpoint-dialog.tsx +370 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-columns.tsx +258 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-columns.tsx +200 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page-content.tsx +117 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-page.tsx +14 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-table.tsx +253 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-content.tsx +161 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page-skeleton.tsx +7 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-page.tsx +14 -0
- package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-table.tsx +264 -0
- 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 +103 -109
- package/dist/assets/adapters/next/templates/init/types/webhooks.ts +7 -0
- package/dist/assets/adapters/next/templates/init/utils/webhook/signature.ts +13 -0
- package/dist/assets/shared-assets/react-admin/ui/card.tsx +1 -1
- package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +2 -2
- package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +3 -3
- package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +1 -1
- package/dist/cli.js +2191 -1304
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/adapters/next/templates/init/lib/actions/forms/test-form-webhook.ts +0 -40
- package/dist/assets/adapters/next/templates/init/pages/audit-log/audit-log-page-content.tsx +0 -550
- package/dist/assets/adapters/next/templates/init/utils/webhook/webhook.ts +0 -28
- /package/dist/assets/adapters/next/templates/init/pages/{audit-log → settings/audit-log}/audit-log-detail-drawer.tsx +0 -0
- /package/dist/assets/adapters/next/templates/init/pages/{audit-log → settings/audit-log}/audit-log-detail-row.tsx +0 -0
- /package/dist/assets/adapters/next/templates/init/pages/{audit-log → settings/audit-log}/audit-log-page.tsx +0 -0
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
DataGridRow
|
|
11
11
|
} from '@admin/components/shared/data-table/data-grid'
|
|
12
12
|
import { DataTablePagination } from '@admin/components/shared/data-table/data-table-pagination'
|
|
13
|
-
import { Card, CardContent } from '@admin/components/ui/card'
|
|
14
13
|
import { useTableUtils } from '@admin/hooks/use-table-utils'
|
|
15
14
|
import { useUsers } from '@admin/hooks/use-users'
|
|
16
15
|
import type { User } from '@admin/types/auth'
|
|
@@ -139,120 +138,115 @@ export function UsersTable<TValue>({
|
|
|
139
138
|
|
|
140
139
|
return (
|
|
141
140
|
<div className={cn('flex flex-col gap-6 pt-px pb-2 h-full', className)}>
|
|
142
|
-
<
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
>
|
|
172
|
-
{header.isPlaceholder
|
|
173
|
-
? null
|
|
174
|
-
: flexRender(header.column.columnDef.header, header.getContext())}
|
|
175
|
-
{canResizeColumn ? (
|
|
176
|
-
<button
|
|
177
|
-
type="button"
|
|
178
|
-
aria-label={`Resize ${resizeLabel} column`}
|
|
179
|
-
className="group/resize-handle absolute right-0 top-0 z-10 flex h-full w-5 cursor-col-resize touch-none select-none items-center justify-center text-muted-foreground opacity-0 transition-opacity hover:text-foreground focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none group-focus-within/resize-header:opacity-100 data-[column-hovered=true]:opacity-100 data-[resizing=true]:opacity-100"
|
|
180
|
-
data-resize-handle
|
|
181
|
-
data-column-hovered={
|
|
182
|
-
hoveredColumnId === header.column.id ? 'true' : 'false'
|
|
183
|
-
}
|
|
184
|
-
data-resizing={header.column.getIsResizing() ? 'true' : 'false'}
|
|
185
|
-
onDoubleClick={resetColumnSizingToContainer}
|
|
186
|
-
onMouseDown={header.getResizeHandler()}
|
|
187
|
-
onTouchStart={header.getResizeHandler()}
|
|
188
|
-
>
|
|
189
|
-
<GripVertical
|
|
190
|
-
aria-hidden="true"
|
|
191
|
-
className={cn('size-3.5', {
|
|
192
|
-
'text-ring': header.column.getIsResizing()
|
|
193
|
-
})}
|
|
194
|
-
/>
|
|
195
|
-
</button>
|
|
196
|
-
) : null}
|
|
197
|
-
</DataGridHead>
|
|
198
|
-
)
|
|
199
|
-
})}
|
|
200
|
-
</DataGridRow>
|
|
201
|
-
))}
|
|
202
|
-
</DataGridHeader>
|
|
203
|
-
<DataGridBody>
|
|
204
|
-
{isPending ? (
|
|
205
|
-
<DataGridRow>
|
|
206
|
-
<DataGridCell
|
|
207
|
-
className="flex h-24 items-center justify-center text-center px-4"
|
|
208
|
-
style={{ gridColumn: '1 / -1' }}
|
|
141
|
+
<DataGrid
|
|
142
|
+
containerClassName="min-h-0 flex-1"
|
|
143
|
+
containerRef={tableContainerRef}
|
|
144
|
+
gridTemplateColumns={gridTemplateColumns}
|
|
145
|
+
style={{ width: table.getTotalSize() }}
|
|
146
|
+
>
|
|
147
|
+
<DataGridHeader>
|
|
148
|
+
{table.getHeaderGroups().map((headerGroup) => (
|
|
149
|
+
<DataGridRow key={headerGroup.id}>
|
|
150
|
+
{headerGroup.headers.map((header, headerIndex) => {
|
|
151
|
+
const resizeLabel =
|
|
152
|
+
typeof header.column.columnDef.header === 'string'
|
|
153
|
+
? header.column.columnDef.header
|
|
154
|
+
: header.column.id
|
|
155
|
+
const nextHeader = headerGroup.headers[headerIndex + 1]
|
|
156
|
+
const canResizeColumn =
|
|
157
|
+
header.column.getCanResize() && nextHeader?.column.getCanResize() === true
|
|
158
|
+
return (
|
|
159
|
+
<DataGridHead
|
|
160
|
+
key={header.id}
|
|
161
|
+
className="group/resize-header relative overflow-hidden px-4"
|
|
162
|
+
data-column-id={header.column.id}
|
|
163
|
+
onMouseEnter={() => setHoveredColumnId(header.column.id)}
|
|
164
|
+
onMouseLeave={() =>
|
|
165
|
+
setHoveredColumnId((current) =>
|
|
166
|
+
current === header.column.id ? null : current
|
|
167
|
+
)
|
|
168
|
+
}
|
|
209
169
|
>
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
</DataGridRow>
|
|
222
|
-
) : table.getRowModel().rows?.length ? (
|
|
223
|
-
table.getRowModel().rows.map((row) => (
|
|
224
|
-
<DataGridRow key={row.id} className="hover:bg-muted/50">
|
|
225
|
-
{row.getVisibleCells().map((cell) => (
|
|
226
|
-
<DataGridCell
|
|
227
|
-
key={cell.id}
|
|
228
|
-
data-column-id={cell.column.id}
|
|
229
|
-
onMouseEnter={() => setHoveredColumnId(cell.column.id)}
|
|
230
|
-
onMouseLeave={() =>
|
|
231
|
-
setHoveredColumnId((current) =>
|
|
232
|
-
current === cell.column.id ? null : current
|
|
233
|
-
)
|
|
170
|
+
{header.isPlaceholder
|
|
171
|
+
? null
|
|
172
|
+
: flexRender(header.column.columnDef.header, header.getContext())}
|
|
173
|
+
{canResizeColumn ? (
|
|
174
|
+
<button
|
|
175
|
+
type="button"
|
|
176
|
+
aria-label={`Resize ${resizeLabel} column`}
|
|
177
|
+
className="group/resize-handle absolute right-0 top-0 z-10 flex h-full w-5 cursor-col-resize touch-none select-none items-center justify-center text-muted-foreground opacity-0 transition-opacity hover:text-foreground focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none group-focus-within/resize-header:opacity-100 data-[column-hovered=true]:opacity-100 data-[resizing=true]:opacity-100"
|
|
178
|
+
data-resize-handle
|
|
179
|
+
data-column-hovered={
|
|
180
|
+
hoveredColumnId === header.column.id ? 'true' : 'false'
|
|
234
181
|
}
|
|
235
|
-
|
|
182
|
+
data-resizing={header.column.getIsResizing() ? 'true' : 'false'}
|
|
183
|
+
onDoubleClick={resetColumnSizingToContainer}
|
|
184
|
+
onMouseDown={header.getResizeHandler()}
|
|
185
|
+
onTouchStart={header.getResizeHandler()}
|
|
236
186
|
>
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
187
|
+
<GripVertical
|
|
188
|
+
aria-hidden="true"
|
|
189
|
+
className={cn('size-3.5', {
|
|
190
|
+
'text-ring': header.column.getIsResizing()
|
|
191
|
+
})}
|
|
192
|
+
/>
|
|
193
|
+
</button>
|
|
194
|
+
) : null}
|
|
195
|
+
</DataGridHead>
|
|
196
|
+
)
|
|
197
|
+
})}
|
|
198
|
+
</DataGridRow>
|
|
199
|
+
))}
|
|
200
|
+
</DataGridHeader>
|
|
201
|
+
<DataGridBody>
|
|
202
|
+
{isPending ? (
|
|
203
|
+
<DataGridRow>
|
|
204
|
+
<DataGridCell
|
|
205
|
+
className="flex h-24 items-center justify-center text-center px-4"
|
|
206
|
+
style={{ gridColumn: '1 / -1' }}
|
|
207
|
+
>
|
|
208
|
+
<div className="text-muted-foreground">Loading users…</div>
|
|
209
|
+
</DataGridCell>
|
|
210
|
+
</DataGridRow>
|
|
211
|
+
) : error ? (
|
|
212
|
+
<DataGridRow>
|
|
213
|
+
<DataGridCell
|
|
214
|
+
className="flex h-24 items-center justify-center text-center px-4"
|
|
215
|
+
style={{ gridColumn: '1 / -1' }}
|
|
216
|
+
>
|
|
217
|
+
<div className="text-destructive">Error: {error.message}</div>
|
|
218
|
+
</DataGridCell>
|
|
219
|
+
</DataGridRow>
|
|
220
|
+
) : table.getRowModel().rows?.length ? (
|
|
221
|
+
table.getRowModel().rows.map((row) => (
|
|
222
|
+
<DataGridRow key={row.id} className="hover:bg-muted/50">
|
|
223
|
+
{row.getVisibleCells().map((cell) => (
|
|
244
224
|
<DataGridCell
|
|
245
|
-
|
|
246
|
-
|
|
225
|
+
key={cell.id}
|
|
226
|
+
data-column-id={cell.column.id}
|
|
227
|
+
onMouseEnter={() => setHoveredColumnId(cell.column.id)}
|
|
228
|
+
onMouseLeave={() =>
|
|
229
|
+
setHoveredColumnId((current) => (current === cell.column.id ? null : current))
|
|
230
|
+
}
|
|
231
|
+
className="px-4"
|
|
247
232
|
>
|
|
248
|
-
|
|
233
|
+
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
249
234
|
</DataGridCell>
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
235
|
+
))}
|
|
236
|
+
</DataGridRow>
|
|
237
|
+
))
|
|
238
|
+
) : (
|
|
239
|
+
<DataGridRow>
|
|
240
|
+
<DataGridCell
|
|
241
|
+
className="flex h-24 items-center justify-center text-center px-4"
|
|
242
|
+
style={{ gridColumn: '1 / -1' }}
|
|
243
|
+
>
|
|
244
|
+
No users found.
|
|
245
|
+
</DataGridCell>
|
|
246
|
+
</DataGridRow>
|
|
247
|
+
)}
|
|
248
|
+
</DataGridBody>
|
|
249
|
+
</DataGrid>
|
|
256
250
|
|
|
257
251
|
{shouldShowPagination ? (
|
|
258
252
|
<DataTablePagination
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createHmac, randomBytes, randomUUID } from 'node:crypto'
|
|
2
|
+
|
|
3
|
+
export function generateWebhookSecret(): string {
|
|
4
|
+
return `whsec_${randomBytes(32).toString('hex')}`
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function createWebhookEventId(): string {
|
|
8
|
+
return `evt_${randomUUID()}`
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function signWebhookPayload(secret: string, timestamp: string, body: string): string {
|
|
12
|
+
return `sha256=${createHmac('sha256', secret).update(`${timestamp}.${body}`).digest('hex')}`
|
|
13
|
+
}
|
|
@@ -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-
|
|
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] border-x border-t [.border-b]:pb-6 border-border bg-muted pt-2.5 [text-box-trim:trim-both] -mb-1 pb-3',
|
|
28
28
|
className
|
|
29
29
|
)}
|
|
30
30
|
{...props}
|
|
@@ -47,7 +47,7 @@ function DrawerOverlay({
|
|
|
47
47
|
<DrawerPrimitive.Overlay
|
|
48
48
|
data-slot="drawer-overlay"
|
|
49
49
|
className={cn(
|
|
50
|
-
'fixed inset-0 z-
|
|
50
|
+
'fixed inset-0 z-200 bg-black/80 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',
|
|
51
51
|
className
|
|
52
52
|
)}
|
|
53
53
|
{...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-
|
|
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 space-y-4',
|
|
71
71
|
className
|
|
72
72
|
)}
|
|
73
73
|
style={{ touchAction: 'auto', userSelect: 'text', ...style }}
|
|
@@ -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-
|
|
15
|
+
'group/input-group border border-border relative m-0 flex h-10 w-full min-w-0 items-stretch rounded-sm 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}
|
|
@@ -25,8 +25,8 @@ const inputGroupAddonVariants = cva(
|
|
|
25
25
|
{
|
|
26
26
|
variants: {
|
|
27
27
|
align: {
|
|
28
|
-
'inline-start': 'order-first self-stretch has-[>
|
|
29
|
-
'inline-end': 'order-last self-stretch has-[>
|
|
28
|
+
'inline-start': 'order-first self-stretch has-[>kbd]:ml-[-0.15rem]',
|
|
29
|
+
'inline-end': 'order-last self-stretch has-[>kbd]:mr-[-0.15rem]',
|
|
30
30
|
'block-start': 'order-first w-full justify-start px-3 [.border-b]:pb-3',
|
|
31
31
|
'block-end': 'order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-3'
|
|
32
32
|
}
|
|
@@ -470,7 +470,7 @@ const sidebarMenuButtonVariants = cva(
|
|
|
470
470
|
'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'
|
|
471
471
|
},
|
|
472
472
|
size: {
|
|
473
|
-
default: 'h-
|
|
473
|
+
default: 'h-10 text-sm',
|
|
474
474
|
sm: 'h-8 text-xs',
|
|
475
475
|
lg: 'h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!'
|
|
476
476
|
}
|