betterstart-cli 0.0.119 → 0.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/assets/adapters/next/integrations/resend/actions/render-password-reset-email.ts +5 -5
  2. package/dist/assets/adapters/next/templates/init/admin-globals.css +35 -23
  3. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-branding-skeleton.tsx +1 -1
  4. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu-skeleton.tsx +1 -1
  5. package/dist/assets/adapters/next/templates/init/components/layouts/admin-sidebar-user-menu.tsx +3 -3
  6. package/dist/assets/adapters/next/templates/init/components/layouts/content-skeleton.tsx +13 -13
  7. package/dist/assets/adapters/next/templates/init/components/layouts/sidebar-branding.tsx +2 -2
  8. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-body.tsx +1 -1
  9. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-header.tsx +1 -1
  10. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +1 -1
  11. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-table-pagination.tsx +2 -2
  12. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/copyable-code-block.tsx +3 -7
  13. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/lifecycle-hooks-tab.tsx +2 -2
  14. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/plain-code-fallback.tsx +1 -1
  15. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode/snippets-tab.tsx +1 -1
  16. package/dist/assets/adapters/next/templates/init/components/shared/dev-mode-integrate.tsx +2 -2
  17. package/dist/assets/adapters/next/templates/init/components/shared/entity-metadata.tsx +1 -1
  18. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-version-item.tsx +2 -2
  19. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-current-row.tsx +2 -2
  20. package/dist/assets/adapters/next/templates/init/components/shared/entity-versions/entity-versions-drawer.tsx +2 -2
  21. package/dist/assets/adapters/next/templates/init/components/shared/media/edit-media-dialog-content.tsx +2 -2
  22. package/dist/assets/adapters/next/templates/init/components/shared/media/media-delete-drawer.tsx +5 -5
  23. package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-item.tsx +3 -3
  24. package/dist/assets/adapters/next/templates/init/components/shared/media/media-grid-pagination.tsx +2 -2
  25. package/dist/assets/adapters/next/templates/init/components/shared/media/media-preview.tsx +1 -1
  26. package/dist/assets/adapters/next/templates/init/components/shared/media/media-url-importer.tsx +1 -1
  27. package/dist/assets/adapters/next/templates/init/components/shared/page-header.tsx +1 -1
  28. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-drag-overlay-item.tsx +1 -1
  29. package/dist/assets/adapters/next/templates/init/components/shared/sort-order-item.tsx +1 -1
  30. package/dist/assets/adapters/next/templates/init/pages/dashboard-page.tsx +3 -3
  31. package/dist/assets/adapters/next/templates/init/pages/forgot-password-form.tsx +2 -2
  32. package/dist/assets/adapters/next/templates/init/pages/forgot-password-page-skeleton.tsx +8 -8
  33. package/dist/assets/adapters/next/templates/init/pages/login-form.tsx +2 -2
  34. package/dist/assets/adapters/next/templates/init/pages/login-page-skeleton.tsx +8 -8
  35. package/dist/assets/adapters/next/templates/init/pages/minimal-account-shell.tsx +1 -1
  36. package/dist/assets/adapters/next/templates/init/pages/profile/profile-form.tsx +2 -2
  37. package/dist/assets/adapters/next/templates/init/pages/reset-password-form.tsx +3 -6
  38. package/dist/assets/adapters/next/templates/init/pages/reset-password-page-skeleton.tsx +8 -8
  39. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-columns.tsx +4 -4
  40. package/dist/assets/adapters/next/templates/init/pages/settings/audit-log/audit-log-detail-row.tsx +2 -2
  41. package/dist/assets/adapters/next/templates/init/pages/settings/forms/forms-settings-columns.tsx +1 -1
  42. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/delete-webhook-dialog.tsx +1 -1
  43. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhook-endpoint-dialog.tsx +12 -16
  44. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-columns.tsx +9 -9
  45. package/dist/assets/adapters/next/templates/init/pages/settings/webhooks/webhooks-logs-columns.tsx +7 -7
  46. package/dist/assets/adapters/next/templates/init/pages/users/columns.tsx +4 -4
  47. package/dist/assets/adapters/next/templates/init/utils/editor/inline-math-node-view.ts +1 -1
  48. package/dist/assets/adapters/next/templates/init/utils/editor/raw-content-block-node-view.ts +1 -1
  49. package/dist/assets/adapters/next/templates/init/utils/email/render-form-submission-rows.ts +1 -1
  50. package/dist/assets/adapters/next/templates/init/utils/email/render-notification-email.ts +3 -3
  51. package/dist/assets/adapters/next/templates/init/utils/email/render-thank-you-email.ts +3 -3
  52. package/dist/assets/shared-assets/react-admin/custom/content-editor/index.tsx +1 -1
  53. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-bubble-menu.tsx +1 -1
  54. package/dist/assets/shared-assets/react-admin/custom/content-editor/math-editor-controls.tsx +1 -1
  55. package/dist/assets/shared-assets/react-admin/custom/content-editor/remove-table-part-icon.tsx +1 -1
  56. package/dist/assets/shared-assets/react-admin/custom/content-editor/selection-bubble-menu.tsx +2 -2
  57. package/dist/assets/shared-assets/react-admin/custom/content-editor/slash-command-menu.tsx +2 -4
  58. package/dist/assets/shared-assets/react-admin/custom/content-editor/source-mode.tsx +2 -2
  59. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-add-controls.tsx +4 -4
  60. package/dist/assets/shared-assets/react-admin/custom/content-editor/table-bubble-menu.tsx +1 -1
  61. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-node/removable-image-node/removable-image-node.tsx +3 -3
  62. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/highlight-swatch.tsx +2 -2
  63. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover-content.tsx +1 -1
  64. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +1 -1
  65. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/highlight-color-button.tsx +2 -2
  66. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-popover/source-color-highlight-popover.tsx +1 -1
  67. package/dist/assets/shared-assets/react-admin/custom/date-range-picker.tsx +9 -10
  68. package/dist/assets/shared-assets/react-admin/custom/dynamic-list-field.tsx +2 -2
  69. package/dist/assets/shared-assets/react-admin/custom/gallery-field.tsx +4 -4
  70. package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +2 -3
  71. package/dist/assets/shared-assets/react-admin/custom/icons-column-skeleton.tsx +2 -2
  72. package/dist/assets/shared-assets/react-admin/custom/media-field.tsx +3 -3
  73. package/dist/assets/shared-assets/react-admin/custom/nested-object-list-field.tsx +1 -1
  74. package/dist/assets/shared-assets/react-admin/custom/placeholder-card.tsx +2 -2
  75. package/dist/assets/shared-assets/react-admin/custom/placeholder.tsx +3 -3
  76. package/dist/assets/shared-assets/react-admin/custom/sortable-gallery-item.tsx +1 -1
  77. package/dist/assets/shared-assets/react-admin/custom/upload-dropzone.tsx +3 -5
  78. package/dist/assets/shared-assets/react-admin/ui/accordion.tsx +3 -3
  79. package/dist/assets/shared-assets/react-admin/ui/alert-dialog.tsx +4 -4
  80. package/dist/assets/shared-assets/react-admin/ui/alert.tsx +2 -2
  81. package/dist/assets/shared-assets/react-admin/ui/avatar.tsx +5 -5
  82. package/dist/assets/shared-assets/react-admin/ui/badge.tsx +1 -1
  83. package/dist/assets/shared-assets/react-admin/ui/breadcrumb.tsx +1 -1
  84. package/dist/assets/shared-assets/react-admin/ui/button-group.tsx +4 -4
  85. package/dist/assets/shared-assets/react-admin/ui/button.tsx +2 -2
  86. package/dist/assets/shared-assets/react-admin/ui/calendar.tsx +15 -21
  87. package/dist/assets/shared-assets/react-admin/ui/card.tsx +5 -5
  88. package/dist/assets/shared-assets/react-admin/ui/carousel.tsx +2 -2
  89. package/dist/assets/shared-assets/react-admin/ui/chart.tsx +4 -4
  90. package/dist/assets/shared-assets/react-admin/ui/checkbox.tsx +1 -1
  91. package/dist/assets/shared-assets/react-admin/ui/combobox.tsx +6 -6
  92. package/dist/assets/shared-assets/react-admin/ui/context-menu.tsx +7 -7
  93. package/dist/assets/shared-assets/react-admin/ui/dialog.tsx +3 -3
  94. package/dist/assets/shared-assets/react-admin/ui/drawer.tsx +5 -5
  95. package/dist/assets/shared-assets/react-admin/ui/dropdown-menu.tsx +8 -8
  96. package/dist/assets/shared-assets/react-admin/ui/empty.tsx +5 -5
  97. package/dist/assets/shared-assets/react-admin/ui/field.tsx +6 -12
  98. package/dist/assets/shared-assets/react-admin/ui/form.tsx +2 -2
  99. package/dist/assets/shared-assets/react-admin/ui/hover-card.tsx +1 -1
  100. package/dist/assets/shared-assets/react-admin/ui/input-group.tsx +6 -6
  101. package/dist/assets/shared-assets/react-admin/ui/input-otp.tsx +2 -2
  102. package/dist/assets/shared-assets/react-admin/ui/input.tsx +1 -1
  103. package/dist/assets/shared-assets/react-admin/ui/item.tsx +4 -4
  104. package/dist/assets/shared-assets/react-admin/ui/kbd.tsx +1 -1
  105. package/dist/assets/shared-assets/react-admin/ui/label.tsx +1 -1
  106. package/dist/assets/shared-assets/react-admin/ui/menubar.tsx +10 -10
  107. package/dist/assets/shared-assets/react-admin/ui/native-select.tsx +1 -1
  108. package/dist/assets/shared-assets/react-admin/ui/navigation-menu.tsx +5 -5
  109. package/dist/assets/shared-assets/react-admin/ui/popover.tsx +3 -7
  110. package/dist/assets/shared-assets/react-admin/ui/progress.tsx +3 -3
  111. package/dist/assets/shared-assets/react-admin/ui/radio-group.tsx +2 -2
  112. package/dist/assets/shared-assets/react-admin/ui/resizable.tsx +1 -1
  113. package/dist/assets/shared-assets/react-admin/ui/scroll-area.tsx +2 -2
  114. package/dist/assets/shared-assets/react-admin/ui/select.tsx +4 -4
  115. package/dist/assets/shared-assets/react-admin/ui/sheet.tsx +3 -3
  116. package/dist/assets/shared-assets/react-admin/ui/sidebar.tsx +16 -16
  117. package/dist/assets/shared-assets/react-admin/ui/skeleton.tsx +1 -1
  118. package/dist/assets/shared-assets/react-admin/ui/slider.tsx +2 -2
  119. package/dist/assets/shared-assets/react-admin/ui/switch.tsx +2 -2
  120. package/dist/assets/shared-assets/react-admin/ui/table.tsx +2 -6
  121. package/dist/assets/shared-assets/react-admin/ui/tabs.tsx +3 -3
  122. package/dist/assets/shared-assets/react-admin/ui/textarea.tsx +1 -1
  123. package/dist/assets/shared-assets/react-admin/ui/toggle-group.tsx +2 -2
  124. package/dist/assets/shared-assets/react-admin/ui/toggle.tsx +1 -1
  125. package/dist/assets/shared-assets/react-admin/ui/tooltip.tsx +2 -2
  126. package/dist/cli.js +107 -79
  127. package/dist/cli.js.map +1 -1
  128. package/package.json +1 -1
@@ -10,12 +10,12 @@ export function renderPasswordResetEmail(input: PasswordResetEmailInput): string
10
10
  <html>
11
11
  <body style="margin:0;background:#f8fafc;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:#0f172a;">
12
12
  <div style="margin:0 auto;max-width:560px;padding:40px 20px;">
13
- <div style="border-radius:12px;background:#ffffff;padding:32px;border:1px solid #e2e8f0;">
14
- <h1 style="margin:0 0 16px;font-size:24px;line-height:32px;">Reset your password</h1>
15
- <p style="margin:0 0 16px;font-size:16px;line-height:24px;">Hi ${escapedName},</p>
16
- <p style="margin:0 0 24px;font-size:16px;line-height:24px;">Use the button below to reset your BetterStart Admin password.</p>
13
+ <div style="border-radius:6px;background:#ffffff;padding:32px;border:1px solid #e2e8f0;">
14
+ <h1 style="margin:0 0 16px;font-size:14px;line-height:32px;">Reset your password</h1>
15
+ <p style="margin:0 0 16px;font-size:14px;line-height:24px;">Hi ${escapedName},</p>
16
+ <p style="margin:0 0 24px;font-size:14px;line-height:24px;">Use the button below to reset your BetterStart Admin password.</p>
17
17
  <p style="margin:0 0 24px;">
18
- <a href="${escapedUrl}" style="display:inline-block;border-radius:8px;background:#0f172a;color:#ffffff;padding:12px 18px;text-decoration:none;font-weight:600;">Reset password</a>
18
+ <a href="${escapedUrl}" style="display:inline-block;border-radius:6px;background:#0f172a;color:#ffffff;padding:12px 18px;text-decoration:none;font-weight:600;">Reset password</a>
19
19
  </p>
20
20
  <p style="margin:0;color:#64748b;font-size:14px;line-height:20px;">If you did not request this email, you can safely ignore it.</p>
21
21
  </div>
@@ -44,13 +44,9 @@
44
44
  --color-popover: var(--popover);
45
45
  --color-card-foreground: var(--card-foreground);
46
46
  --color-card: var(--card);
47
- --radius-sm: calc(var(--radius) - 4px);
48
- --radius-md: calc(var(--radius) - 2px);
49
- --radius-lg: var(--radius);
50
- --radius-xl: calc(var(--radius) + 4px);
51
- --radius-2xl: calc(var(--radius) + 8px);
52
- --radius-3xl: calc(var(--radius) + 12px);
53
- --radius-4xl: calc(var(--radius) + 16px);
47
+ --text-*: initial;
48
+ --radius-*: initial;
49
+ --radius: 6px;
54
50
  --font-heading: var(--font-sans);
55
51
  --shadow-sm: var(--shadow-small);
56
52
  --shadow-md: var(--shadow-medium);
@@ -224,7 +220,7 @@
224
220
  --chart-3: var(--ds-teal-700);
225
221
  --chart-4: var(--ds-amber-700);
226
222
  --chart-5: var(--ds-pink-700);
227
- --radius: 0.625rem;
223
+ --radius: 6px;
228
224
  --shadow-background-border: 0 0 0 1px var(--background);
229
225
  --shadow-border-base: 0 0 0 1px var(--ds-gray-alpha-400);
230
226
  --shadow-border-inset: inset 0 0 0 1px var(--ds-gray-alpha-400);
@@ -296,6 +292,8 @@
296
292
 
297
293
  body {
298
294
  @apply bg-background text-foreground;
295
+ font-size: 14px;
296
+ line-height: 20px;
299
297
  }
300
298
 
301
299
  .admin-root {
@@ -364,7 +362,8 @@
364
362
  --tw-prose-invert-pre-bg: var(--muted);
365
363
  --tw-prose-invert-th-borders: var(--border);
366
364
  --tw-prose-invert-td-borders: var(--border);
367
- @apply caret-foreground text-foreground text-[0.9375rem] leading-[1.65] outline-none whitespace-pre-wrap;
365
+ @apply caret-foreground text-foreground leading-[1.65] outline-none whitespace-pre-wrap;
366
+ font-size: 0.9375rem;
368
367
  }
369
368
 
370
369
  .admin-root .content-editor-prose > :first-child {
@@ -390,25 +389,29 @@
390
389
  .admin-root
391
390
  .content-editor-prose
392
391
  :where(h1):not(:where([class~="not-prose"] *)) {
393
- @apply mt-7 text-[1.75rem] leading-[1.18];
392
+ @apply mt-7 leading-[1.18];
393
+ font-size: 1.75rem;
394
394
  }
395
395
 
396
396
  .admin-root
397
397
  .content-editor-prose
398
398
  :where(h2):not(:where([class~="not-prose"] *)) {
399
- @apply mt-6 text-[1.375rem] leading-tight;
399
+ @apply mt-6 leading-tight;
400
+ font-size: 1.375rem;
400
401
  }
401
402
 
402
403
  .admin-root
403
404
  .content-editor-prose
404
405
  :where(h3):not(:where([class~="not-prose"] *)) {
405
- @apply mt-5 text-lg leading-[1.3];
406
+ @apply mt-5 leading-[1.3];
407
+ font-size: 1.125rem;
406
408
  }
407
409
 
408
410
  .admin-root
409
411
  .content-editor-prose
410
412
  :where(h4):not(:where([class~="not-prose"] *)) {
411
- @apply mt-[1.125rem] text-base leading-[1.35];
413
+ @apply mt-[1.125rem] leading-[1.35];
414
+ font-size: 1rem;
412
415
  }
413
416
 
414
417
  .admin-root
@@ -475,7 +478,8 @@
475
478
  .admin-root
476
479
  .content-editor-prose
477
480
  :where(code):not(:where(pre code, [class~="not-prose"] *)) {
478
- @apply rounded-sm border border-border bg-muted px-[0.3em] py-[0.1em] text-[0.875em] font-medium leading-[1.4];
481
+ @apply rounded border border-border bg-muted px-[0.3em] py-[0.1em] font-medium leading-[1.4];
482
+ font-size: 0.875em;
479
483
  }
480
484
 
481
485
  .admin-root
@@ -490,16 +494,23 @@
490
494
  .admin-root
491
495
  .content-editor-prose
492
496
  :where(pre):not(:where([class~="not-prose"] *)) {
493
- @apply my-4 rounded-md border border-border px-4 py-3.5 text-[0.875em] leading-[1.6];
497
+ @apply my-4 rounded border border-border px-4 py-3.5 leading-[1.6];
498
+ font-size: 0.875em;
494
499
  }
495
500
 
496
501
  .admin-root
497
502
  .content-editor-prose
498
503
  :where(pre code):not(:where([class~="not-prose"] *)) {
499
- @apply border-0 bg-transparent p-0;
504
+ @apply rounded border-0 bg-transparent p-0;
500
505
  font-size: inherit;
501
506
  }
502
507
 
508
+ .admin-root
509
+ .content-editor-prose
510
+ :where(kbd):not(:where([class~="not-prose"] *)) {
511
+ @apply rounded;
512
+ }
513
+
503
514
  .admin-root .content-editor-prose > * {
504
515
  @apply relative;
505
516
  }
@@ -517,7 +528,7 @@
517
528
  .admin-root
518
529
  .content-editor-prose
519
530
  .ProseMirror-selectednode:not(img):not(pre):not(.react-renderer) {
520
- @apply rounded-sm bg-primary/12;
531
+ @apply rounded bg-primary/12;
521
532
  }
522
533
 
523
534
  .admin-root .content-editor-prose.ProseMirror-hideselection {
@@ -592,7 +603,8 @@
592
603
  .admin-root
593
604
  .content-editor-prose
594
605
  :where(table):not(:where([class~="not-prose"] *)) {
595
- @apply my-4 w-full table-fixed border-collapse text-sm;
606
+ @apply my-4 w-full table-fixed border-collapse;
607
+ font-size: 0.875rem;
596
608
  }
597
609
 
598
610
  .admin-root .content-editor-prose .tableWrapper table {
@@ -699,13 +711,13 @@
699
711
  @utility material-md {
700
712
  background-color: var(--card);
701
713
  box-shadow: var(--shadow-border-medium);
702
- border-radius: 8px;
714
+ border-radius: 6px;
703
715
  }
704
716
 
705
717
  @utility material-lg {
706
718
  background-color: var(--card);
707
719
  box-shadow: var(--shadow-border-large);
708
- border-radius: 12px;
720
+ border-radius: 6px;
709
721
  }
710
722
 
711
723
  @utility material-tooltip {
@@ -717,17 +729,17 @@
717
729
  @utility material-menu {
718
730
  background-color: var(--card);
719
731
  box-shadow: var(--shadow-menu);
720
- border-radius: 8px;
732
+ border-radius: 6px;
721
733
  }
722
734
 
723
735
  @utility material-modal {
724
736
  background-color: var(--card);
725
737
  box-shadow: var(--shadow-modal);
726
- border-radius: 12px;
738
+ border-radius: 6px;
727
739
  }
728
740
 
729
741
  @utility material-fullscreen {
730
742
  background-color: var(--card);
731
743
  box-shadow: var(--shadow-fullscreen);
732
- border-radius: 16px;
744
+ border-radius: 6px;
733
745
  }
@@ -3,7 +3,7 @@ import { Skeleton } from '@admin/components/ui/skeleton'
3
3
  export function BrandingSkeleton() {
4
4
  return (
5
5
  <div className="flex h-full w-full items-center gap-2">
6
- <Skeleton className="size-8 shrink-0 rounded-sm" />
6
+ <Skeleton className="size-8 shrink-0 rounded" />
7
7
  <Skeleton className="h-4 w-24 group-data-[collapsible=icon]:hidden" />
8
8
  </div>
9
9
  )
@@ -6,7 +6,7 @@ export function UserMenuSkeleton() {
6
6
  <SidebarMenu className="h-full gap-0">
7
7
  <SidebarMenuItem className="h-full">
8
8
  <div className="flex h-full w-full items-center gap-2 px-3">
9
- <Skeleton className="size-8 shrink-0 rounded-sm" />
9
+ <Skeleton className="size-8 shrink-0 rounded" />
10
10
  <Skeleton className="h-4 w-20 group-data-[collapsible=icon]:hidden" />
11
11
  </div>
12
12
  </SidebarMenuItem>
@@ -32,7 +32,7 @@ export async function SidebarUserMenu() {
32
32
  >
33
33
  <Avatar className="size-8 shrink-0">
34
34
  <AvatarImage src={user.image ?? undefined} />
35
- <AvatarFallback className="text-xs font-semibold group-hover:bg-white">
35
+ <AvatarFallback className="font-semibold group-hover:bg-white">
36
36
  {user.name?.charAt(0) ?? user.email?.charAt(0) ?? '?'}
37
37
  </AvatarFallback>
38
38
  </Avatar>
@@ -44,7 +44,7 @@ export async function SidebarUserMenu() {
44
44
  <span
45
45
  className={cn(
46
46
  buttonVariants({ variant: 'outline', size: 'icon' }),
47
- 'size-7 rounded-sm group-hover:bg-white'
47
+ 'size-7 rounded group-hover:bg-white'
48
48
  )}
49
49
  >
50
50
  <Ellipsis strokeWidth={2} className="size-4" />
@@ -67,7 +67,7 @@ export async function SidebarUserMenu() {
67
67
  <div className="flex items-center gap-2">
68
68
  <div className="flex flex-col">
69
69
  <p className="truncate font-medium">{user.name}</p>
70
- <p className="truncate text-sm font-normal text-muted-foreground [text-box-trim:trim-start]">
70
+ <p className="truncate font-normal text-muted-foreground [text-box-trim:trim-start]">
71
71
  {user.email}
72
72
  </p>
73
73
  </div>
@@ -7,35 +7,35 @@ export function ContentSkeleton() {
7
7
  <div className="relative w-full max-w-xl" aria-hidden="true">
8
8
  <Card size="sm" className="absolute top-1 left-1/2 h-24 w-[72%] -translate-x-1/2 rotate-3">
9
9
  <CardContent className="flex h-full items-start gap-3 p-3">
10
- <Skeleton className="size-8 shrink-0 rounded-md" />
10
+ <Skeleton className="size-8 shrink-0 rounded" />
11
11
  <div className="flex min-w-0 flex-1 flex-col gap-2 pt-1">
12
- <Skeleton className="h-4 w-full rounded-md" />
13
- <Skeleton className="h-3 w-[78%] rounded-md" />
12
+ <Skeleton className="h-4 w-full rounded" />
13
+ <Skeleton className="h-3 w-[78%] rounded" />
14
14
  </div>
15
- <Skeleton className="h-6 w-14 shrink-0 rounded-md" />
15
+ <Skeleton className="h-6 w-14 shrink-0 rounded" />
16
16
  </CardContent>
17
17
  </Card>
18
18
 
19
19
  <Card size="sm" className="absolute top-10 right-2 h-36 w-[50%] rotate-6">
20
20
  <CardContent className="flex h-full flex-col gap-4 p-4">
21
- <Skeleton className="ml-auto h-6 w-14 rounded-md" />
21
+ <Skeleton className="ml-auto h-6 w-14 rounded" />
22
22
  <div className="flex flex-col gap-3 pt-2">
23
- <Skeleton className="h-4 w-full rounded-md" />
24
- <Skeleton className="h-4 w-[88%] rounded-md" />
23
+ <Skeleton className="h-4 w-full rounded" />
24
+ <Skeleton className="h-4 w-[88%] rounded" />
25
25
  </div>
26
- <Skeleton className="mt-auto h-4 w-[78%] rounded-md" />
26
+ <Skeleton className="mt-auto h-4 w-[78%] rounded" />
27
27
  </CardContent>
28
28
  </Card>
29
29
 
30
30
  <Card size="sm" className="absolute top-12 left-0 h-36 w-[78%] -rotate-2">
31
31
  <CardContent className="flex h-full gap-4 p-4">
32
- <Skeleton className="h-full w-[27%] shrink-0 rounded-md" />
32
+ <Skeleton className="h-full w-[27%] shrink-0 rounded" />
33
33
  <div className="flex min-w-0 flex-1 flex-col gap-3">
34
- <Skeleton className="h-8 w-full rounded-md" />
35
- <Skeleton className="h-9 w-[94%] rounded-md" />
36
- <Skeleton className="h-3 w-[70%] rounded-md" />
34
+ <Skeleton className="h-8 w-full rounded" />
35
+ <Skeleton className="h-9 w-[94%] rounded" />
36
+ <Skeleton className="h-3 w-[70%] rounded" />
37
37
  </div>
38
- <Skeleton className="h-6 w-14 shrink-0 rounded-md" />
38
+ <Skeleton className="h-6 w-14 shrink-0 rounded" />
39
39
  </CardContent>
40
40
  </Card>
41
41
  </div>
@@ -28,12 +28,12 @@ export function SidebarBranding({ initialData }: SidebarBrandingProps) {
28
28
  <Link href="/admin" className="flex w-full items-center gap-2">
29
29
  <Avatar className="size-8">
30
30
  <AvatarImage src={dashboardLogo} />
31
- <AvatarFallback className="text-sm font-semibold text-foreground">
31
+ <AvatarFallback className="font-semibold text-foreground">
32
32
  {dashboardName.charAt(0)}
33
33
  </AvatarFallback>
34
34
  </Avatar>
35
35
  <div className="flex w-full items-center gap-1 text-foreground group-data-[collapsible=icon]:hidden">
36
- <span className="line-clamp-1 text-sm font-medium">{dashboardName}</span>
36
+ <span className="line-clamp-1 font-medium">{dashboardName}</span>
37
37
  </div>
38
38
  </Link>
39
39
  </div>
@@ -9,7 +9,7 @@ function DataGridBody({ className, ...props }: React.ComponentProps<'div'>) {
9
9
  role="rowgroup"
10
10
  data-slot="data-grid-body"
11
11
  className={cn(
12
- "relative col-span-full grid grid-cols-subgrid overflow-hidden rounded-sm bg-card shadow-input after:pointer-events-none after:absolute after:inset-0 after:rounded-sm after:border after:border-border after:content-['']",
12
+ "relative col-span-full grid grid-cols-subgrid overflow-hidden rounded bg-card shadow-input after:pointer-events-none after:absolute after:inset-0 after:rounded after:border after:border-border after:content-['']",
13
13
  className
14
14
  )}
15
15
  {...props}
@@ -9,7 +9,7 @@ function DataGridHeader({ className, ...props }: React.ComponentProps<'div'>) {
9
9
  role="rowgroup"
10
10
  data-slot="data-grid-header"
11
11
  className={cn(
12
- "relative col-span-full -mb-1 grid grid-cols-subgrid rounded-t-sm bg-muted pb-1 after:pointer-events-none after:absolute after:inset-0 after:rounded-t-sm after:border-x after:border-t after:border-border after:content-['']",
12
+ "relative col-span-full -mb-1 grid grid-cols-subgrid rounded-t bg-muted pb-1 after:pointer-events-none after:absolute after:inset-0 after:rounded-t after:border-x after:border-t after:border-border after:content-['']",
13
13
  className
14
14
  )}
15
15
  {...props}
@@ -26,7 +26,7 @@ function DataGrid({
26
26
  <div
27
27
  role="table"
28
28
  data-slot="data-grid"
29
- className={cn('grid min-w-full text-sm', className)}
29
+ className={cn('grid min-w-full', className)}
30
30
  style={{ ...style, gridTemplateColumns }}
31
31
  {...props}
32
32
  />
@@ -99,7 +99,7 @@ export function DataTablePagination<TData>(props: DataTablePaginationProps<TData
99
99
  <ProgressiveBlur position="bottom" height="53px" />
100
100
  <div className="pointer-events-auto flex h-(--admin-shell-bottom-bar-height) items-center justify-between border-t border-border bg-background px-4 py-2 [--admin-shell-bottom-bar-height:53px]">
101
101
  <div className="flex items-center gap-2">
102
- <span className="text-sm text-muted-foreground">Rows per page</span>
102
+ <span className="text-muted-foreground">Rows per page</span>
103
103
  <Select
104
104
  value={pageSize === -1 ? 'all' : String(pageSize)}
105
105
  onValueChange={handlePageSizeChange}
@@ -124,7 +124,7 @@ export function DataTablePagination<TData>(props: DataTablePaginationProps<TData
124
124
  >
125
125
  Previous
126
126
  </Button>
127
- <div className="text-sm text-muted-foreground">
127
+ <div className="text-muted-foreground">
128
128
  Page {resolvedPageIndex + 1} of {resolvedPageCount}
129
129
  </div>
130
130
  <Button
@@ -37,12 +37,10 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
37
37
  <Tabs value={activeTab.id} onValueChange={setActiveTabId} className="min-h-0 flex-1 gap-0">
38
38
  <CardHeader className="flex items-center justify-between gap-2 border-b border-border bg-background pt-[5px]! pr-1 pb-2! pl-3.5!">
39
39
  <div className="flex min-w-0 flex-1 items-center gap-2">
40
- <span className="min-w-0 truncate text-sm font-medium text-muted-foreground">
41
- {label}
42
- </span>
40
+ <span className="min-w-0 truncate font-medium text-muted-foreground">{label}</span>
43
41
  <TabsList className="h-fit! shrink-0">
44
42
  {codeTabs.map((tab) => (
45
- <TabsTrigger key={tab.id} value={tab.id} className="h-7 px-3 text-xs">
43
+ <TabsTrigger key={tab.id} value={tab.id} className="h-7 px-3">
46
44
  {tab.label}
47
45
  </TabsTrigger>
48
46
  ))}
@@ -74,9 +72,7 @@ export function CopyableCodeBlock({ label, code, language, tabs }: CopyableCodeB
74
72
  ) : (
75
73
  <>
76
74
  <CardHeader className="flex items-center justify-between gap-2 border-b border-border bg-background pt-[5px]! pr-1 pb-2! pl-3.5!">
77
- <span className="min-w-0 truncate text-sm font-medium text-muted-foreground">
78
- {label}
79
- </span>
75
+ <span className="min-w-0 truncate font-medium text-muted-foreground">{label}</span>
80
76
  <Button
81
77
  type="button"
82
78
  variant="ghost"
@@ -43,14 +43,14 @@ export function LifecycleHooksTab({ lifecycleHooks }: LifecycleHooksTabProps) {
43
43
 
44
44
  if (!firstHook) {
45
45
  return (
46
- <div className="flex min-h-80 items-center justify-center rounded-sm border border-dashed border-border px-6 text-center text-sm text-muted-foreground">
46
+ <div className="flex min-h-80 items-center justify-center rounded border border-dashed border-border px-6 text-center text-muted-foreground">
47
47
  Lifecycle hook examples are generated for entity and form schemas.
48
48
  </div>
49
49
  )
50
50
  }
51
51
 
52
52
  return (
53
- <Accordion defaultValue={[firstHook.id]} className="min-h-0 shrink-0 rounded-sm">
53
+ <Accordion defaultValue={[firstHook.id]} className="min-h-0 shrink-0 rounded">
54
54
  {lifecycleHooks.map((hook) => {
55
55
  const HookIcon = LIFECYCLE_HOOK_ICONS[hook.icon]
56
56
  const phaseLabel = LIFECYCLE_HOOK_PHASE_LABELS[hook.phase]
@@ -4,7 +4,7 @@ interface PlainCodeFallbackProps {
4
4
 
5
5
  export function PlainCodeFallback({ code }: PlainCodeFallbackProps) {
6
6
  return (
7
- <pre className="min-h-full overflow-x-auto p-3 font-mono text-xs leading-5 whitespace-pre text-foreground">
7
+ <pre className="min-h-full overflow-x-auto p-3 font-mono text-[12px] leading-5 whitespace-pre text-foreground">
8
8
  {code}
9
9
  </pre>
10
10
  )
@@ -47,7 +47,7 @@ export function SnippetsTab({ snippets }: SnippetsTabProps) {
47
47
  }
48
48
 
49
49
  return (
50
- <Accordion defaultValue={[firstSnippet.id]} className="min-h-0 shrink-0 rounded-sm">
50
+ <Accordion defaultValue={[firstSnippet.id]} className="min-h-0 shrink-0 rounded">
51
51
  {snippets.map((snippet) => {
52
52
  const SnippetIcon = SNIPPET_ICONS[snippet.icon]
53
53
  const snippetKindLabel = SNIPPET_KIND_LABELS[snippet.kind]
@@ -81,13 +81,13 @@ export function DevModeIntegrateButton({
81
81
  </TabsContent>
82
82
  </Tabs>
83
83
  ) : isPending ? (
84
- <div className="flex min-h-80 items-center justify-center px-6 text-sm text-muted-foreground">
84
+ <div className="flex min-h-80 items-center justify-center px-6 text-muted-foreground">
85
85
  Loading integration details…
86
86
  </div>
87
87
  ) : loadError ? (
88
88
  <div
89
89
  role="alert"
90
- className="flex min-h-80 items-center justify-center px-6 text-sm text-destructive"
90
+ className="flex min-h-80 items-center justify-center px-6 text-destructive"
91
91
  >
92
92
  {loadError}
93
93
  </div>
@@ -47,7 +47,7 @@ export function EntityMetadata({
47
47
  typeof data.published === 'boolean' ? (data.published ? 'Published' : 'Draft') : null
48
48
 
49
49
  return (
50
- <div className="flex w-full flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground">
50
+ <div className="flex w-full flex-wrap items-center justify-between gap-3 text-muted-foreground">
51
51
  <div className="flex flex-wrap items-center gap-3">
52
52
  <div className="flex items-center gap-1">
53
53
  <span>ID</span>
@@ -24,7 +24,7 @@ export function EntityVersionItem({
24
24
  const authorLabel = author?.name || author?.email || 'System'
25
25
 
26
26
  return (
27
- <div className="flex items-center justify-between gap-3 rounded-sm border border-border px-3 py-3 shadow-input">
27
+ <div className="flex items-center justify-between gap-3 rounded border border-border px-3 py-3 shadow-input">
28
28
  <div className="flex min-w-0 items-center gap-3">
29
29
  <Avatar size="sm">
30
30
  {author?.image ? <AvatarImage src={author.image} alt={authorLabel} /> : null}
@@ -36,7 +36,7 @@ export function EntityVersionItem({
36
36
  <Badge variant="secondary">v{version.version}</Badge>
37
37
  </div>
38
38
  <Tooltip>
39
- <TooltipTrigger render={<p className="w-fit text-xs text-muted-foreground" />}>
39
+ <TooltipTrigger render={<p className="w-fit text-muted-foreground" />}>
40
40
  Saved {formatDistanceToNow(createdDate, { addSuffix: true })}
41
41
  </TooltipTrigger>
42
42
  <TooltipContent>{format(createdDate, 'PPpp')}</TooltipContent>
@@ -22,7 +22,7 @@ export function EntityVersionsCurrentRow({ updatedAt, author }: EntityVersionsCu
22
22
  const authorLabel = author?.name || author?.email || 'System'
23
23
 
24
24
  return (
25
- <div className="flex items-center justify-between gap-3 rounded-sm border border-border bg-card px-3 py-3 shadow-input">
25
+ <div className="flex items-center justify-between gap-3 rounded border border-border bg-card px-3 py-3 shadow-input">
26
26
  <div className="flex min-w-0 items-center gap-3">
27
27
  <Avatar size="sm">
28
28
  {author?.image ? <AvatarImage src={author.image} alt={authorLabel} /> : null}
@@ -34,7 +34,7 @@ export function EntityVersionsCurrentRow({ updatedAt, author }: EntityVersionsCu
34
34
  <Badge variant="outline">Current</Badge>
35
35
  </div>
36
36
  <Tooltip>
37
- <TooltipTrigger render={<p className="w-fit text-xs text-muted-foreground" />}>
37
+ <TooltipTrigger render={<p className="w-fit text-muted-foreground" />}>
38
38
  Edited {formatDistanceToNow(updatedDate, { addSuffix: true })}
39
39
  </TooltipTrigger>
40
40
  <TooltipContent>{format(updatedDate, 'PPpp')}</TooltipContent>
@@ -54,12 +54,12 @@ export function EntityVersionsDrawer({
54
54
  <div className="flex flex-col gap-1 px-6">
55
55
  <EntityVersionsCurrentRow updatedAt={currentUpdatedAt} author={currentAuthor} />
56
56
  {isPending ? (
57
- <p className="rounded-sm border border-dashed border-border px-3 py-6 text-center text-sm text-muted-foreground">
57
+ <p className="rounded border border-dashed border-border px-3 py-6 text-center text-muted-foreground">
58
58
  Loading versions…
59
59
  </p>
60
60
  ) : null}
61
61
  {!isPending && versions.length === 0 ? (
62
- <p className="rounded-sm border border-dashed border-border px-3 py-6 text-center text-sm text-muted-foreground">
62
+ <p className="rounded border border-dashed border-border px-3 py-6 text-center text-muted-foreground">
63
63
  No previous versions yet.
64
64
  </p>
65
65
  ) : null}
@@ -94,7 +94,7 @@ export function EditMediaDialogContent({
94
94
  <DrawerContent className="h-full w-full overflow-hidden">
95
95
  <div
96
96
  ref={handleDrawerContainerRef}
97
- className="pointer-events-none absolute inset-3 z-20 overflow-hidden rounded-sm"
97
+ className="pointer-events-none absolute inset-3 z-20 overflow-hidden rounded"
98
98
  />
99
99
  <div className="relative z-10 flex min-h-0 flex-1 flex-col gap-3 overflow-hidden">
100
100
  <DrawerHeader>
@@ -109,7 +109,7 @@ export function EditMediaDialogContent({
109
109
  >
110
110
  <Card>
111
111
  <CardContent className="p-0">
112
- <div className="relative aspect-video overflow-hidden rounded-sm bg-background">
112
+ <div className="relative aspect-video overflow-hidden rounded bg-background">
113
113
  <MediaPreview media={media} showMetadata />
114
114
  </div>
115
115
  </CardContent>
@@ -111,18 +111,18 @@ export function MediaDeleteDrawer({
111
111
  </DrawerTrigger>
112
112
  <DrawerContent className="pointer-events-auto max-h-[calc(100%-1rem)] overflow-hidden p-3 outline-none">
113
113
  <div
114
- className="overflow-hidden rounded-sm border border-border bg-popover text-sm text-popover-foreground shadow-2xl transition-[height] duration-200 ease-out"
114
+ className="overflow-hidden rounded border border-border bg-popover text-popover-foreground shadow-2xl transition-[height] duration-200 ease-out"
115
115
  style={contentHeight ? { height: contentHeight } : undefined}
116
116
  >
117
117
  <div ref={contentRef} className="max-h-[calc(100vh-8rem)] overflow-y-auto px-4 pt-4 pb-4">
118
- <div aria-hidden="true" className="mx-auto mb-5 h-1.5 w-20 rounded-sm bg-muted" />
119
- <div className="mb-3 flex size-10 items-center justify-center rounded-sm bg-destructive/10 text-foreground">
118
+ <div aria-hidden="true" className="mx-auto mb-5 h-1.5 w-20 rounded bg-muted" />
119
+ <div className="mb-3 flex size-10 items-center justify-center rounded bg-destructive/10 text-foreground">
120
120
  <TriangleAlert className="size-5" />
121
121
  </div>
122
- <DrawerTitle className="font-heading text-base font-medium text-foreground">
122
+ <DrawerTitle className="font-heading font-medium text-foreground">
123
123
  Delete this media?
124
124
  </DrawerTitle>
125
- <DrawerDescription className="mt-1 text-sm text-muted-foreground">
125
+ <DrawerDescription className="mt-1 text-muted-foreground">
126
126
  This deletes {media.filename} from the media library. The stored file is not deleted.
127
127
  </DrawerDescription>
128
128
  <div className="mt-5 grid grid-cols-2 gap-2">
@@ -34,7 +34,7 @@ export const MediaGridItem = React.memo(function MediaGridItem({
34
34
  'border-highlight': selected
35
35
  })}
36
36
  >
37
- <div className="flex aspect-square size-full overflow-hidden rounded-sm border border-border bg-background">
37
+ <div className="flex aspect-square size-full overflow-hidden rounded border border-border bg-background">
38
38
  <MediaPreview media={item} isFilled />
39
39
  </div>
40
40
 
@@ -42,7 +42,7 @@ export const MediaGridItem = React.memo(function MediaGridItem({
42
42
  <Checkbox
43
43
  aria-label={selected ? `Deselect ${item.filename}` : `Select ${item.filename}`}
44
44
  tabIndex={-1}
45
- className={cn('absolute top-3 right-3 z-10 rounded-sm bg-card', {
45
+ className={cn('absolute top-3 right-3 z-10 rounded bg-card', {
46
46
  'ring ring-white': selected
47
47
  })}
48
48
  checked={selected}
@@ -52,7 +52,7 @@ export const MediaGridItem = React.memo(function MediaGridItem({
52
52
  </CardContent>
53
53
  <CardFooter>
54
54
  <span
55
- className={cn('w-full truncate text-sm text-muted-foreground', {
55
+ className={cn('w-full truncate text-muted-foreground', {
56
56
  'group-hover:text-foreground': Boolean(onClick)
57
57
  })}
58
58
  >
@@ -79,7 +79,7 @@ export function MediaGridPagination({
79
79
  >
80
80
  {!isMinimal && (
81
81
  <div className="flex items-center gap-2">
82
- <span className="text-sm text-muted-foreground">{perPage}</span>
82
+ <span className="text-muted-foreground">{perPage}</span>
83
83
  <Select value={pageSizeValue} onValueChange={handlePageSizeChange}>
84
84
  <SelectTrigger className="h-8 w-25">
85
85
  <SelectValue>{pageSize}</SelectValue>
@@ -101,7 +101,7 @@ export function MediaGridPagination({
101
101
  </Button>
102
102
 
103
103
  {!isMinimal && (
104
- <div className="text-sm text-muted-foreground">
104
+ <div className="text-muted-foreground">
105
105
  Page {page} of {pageCount}
106
106
  </div>
107
107
  )}
@@ -37,7 +37,7 @@ export function MediaPreview({ media, isFilled = false, showMetadata = false }:
37
37
  />
38
38
 
39
39
  {showMetadata && (
40
- <div className="pointer-events-none absolute inset-x-0 bottom-0 z-10 flex w-full items-center justify-between gap-4 bg-[linear-gradient(to_top,color-mix(in_oklab,var(--primary)_86%,transparent)_0%,color-mix(in_oklab,var(--primary)_52%,transparent)_48%,transparent_100%)] px-3 py-2 text-left text-xs font-medium text-white">
40
+ <div className="pointer-events-none absolute inset-x-0 bottom-0 z-10 flex w-full items-center justify-between gap-4 bg-[linear-gradient(to_top,color-mix(in_oklab,var(--primary)_86%,transparent)_0%,color-mix(in_oklab,var(--primary)_52%,transparent)_48%,transparent_100%)] px-3 py-2 text-left font-medium text-white">
41
41
  <p className="truncate">{media.filename}</p>
42
42
  <p className="shrink-0">
43
43
  {media.contentType} &middot; {(media.size / 1024).toFixed(1)} KB
@@ -142,7 +142,7 @@ export function MediaUrlImporter({ onImportFromUrl, accept, className }: MediaUr
142
142
  </Form>
143
143
 
144
144
  <div className="flex w-full flex-col items-center text-center">
145
- <p className="text-sm text-muted-foreground">{urlHelpText}</p>
145
+ <p className="text-muted-foreground">{urlHelpText}</p>
146
146
  </div>
147
147
  </div>
148
148
  </CardContent>
@@ -32,7 +32,7 @@ export function PageHeader({
32
32
  )}
33
33
  </div>
34
34
  <div className="flex min-w-0 items-center justify-center gap-2">
35
- <h2 className="truncate text-sm font-medium tracking-tight">{title}</h2>
35
+ <h2 className="truncate font-medium tracking-tight">{title}</h2>
36
36
  </div>
37
37
  <div className="flex w-full min-w-0 items-center justify-end gap-2">
38
38
  {children}
@@ -9,7 +9,7 @@ export function DragOverlayItem({ label }: { label: string }) {
9
9
  className="w-full shrink-0 cursor-grabbing touch-none justify-start gap-2 px-2 font-normal"
10
10
  >
11
11
  <GripVertical strokeWidth={1} />
12
- <span className="min-w-0 truncate text-sm">{label}</span>
12
+ <span className="min-w-0 truncate">{label}</span>
13
13
  </Button>
14
14
  )
15
15
  }