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
package/dist/cli.js CHANGED
@@ -4442,7 +4442,7 @@ function renderFieldJsxChangeHandlerTemplate({
4442
4442
  jsString: jsString2,
4443
4443
  escapeJsx: escapeJsx2
4444
4444
  }) {
4445
- return ` <label htmlFor="${escapeAttribute2}" className="flex items-center gap-2 text-sm font-medium leading-none">
4445
+ return ` <label htmlFor="${escapeAttribute2}" className="flex items-center gap-2 font-medium leading-none">
4446
4446
  <input
4447
4447
  type="radio"
4448
4448
  id="${escapeAttribute2}"
@@ -4515,7 +4515,7 @@ function renderFieldJsxChangeHandlerEscapedJsxTemplate({
4515
4515
  jsString: jsString2,
4516
4516
  escapeJsx: escapeJsx2
4517
4517
  }) {
4518
- return ` <label htmlFor="${escapeAttribute2}" className="flex items-center gap-2 text-sm font-medium leading-none">
4518
+ return ` <label htmlFor="${escapeAttribute2}" className="flex items-center gap-2 font-medium leading-none">
4519
4519
  <input
4520
4520
  type="checkbox"
4521
4521
  id="${escapeAttribute2}"
@@ -4612,7 +4612,7 @@ function renderErrorMessageLineLayoutTemplate({
4612
4612
  pathExpression: pathExpression2
4613
4613
  }) {
4614
4614
  return `${indent}{getFieldErrorMessage(form.formState, watchedValues, revealErrors, ${pathExpression2}) ? (
4615
- ${indent} <p className="text-sm text-destructive">
4615
+ ${indent} <p className="text-destructive">
4616
4616
  ${indent} {getFieldErrorMessage(form.formState, watchedValues, revealErrors, ${pathExpression2})}
4617
4617
  ${indent} </p>
4618
4618
  ${indent}) : null}`;
@@ -4635,15 +4635,16 @@ function fieldContainerClass(height, className = "space-y-2") {
4635
4635
  // adapters/next/generators/form-pipeline/form-component-shared/field-description-line.ts
4636
4636
  function fieldDescriptionLine(name, hint) {
4637
4637
  if (!hint) return "";
4638
- return `<p id="${escapeAttribute(name)}-description" className="text-sm text-muted-foreground">${escapeJsx(hint)}</p>`;
4638
+ return `<p id="${escapeAttribute(name)}-description" className="text-muted-foreground">${escapeJsx(hint)}</p>`;
4639
4639
  }
4640
4640
 
4641
4641
  // adapters/next/generators/form-pipeline/form-component-shared/form-label-line.ts
4642
4642
  function formLabelLine(name, label, requiredStar, className) {
4643
- const classes = className ?? "text-sm font-medium leading-none";
4643
+ const classes = className ?? "font-medium leading-none";
4644
+ const classAttribute = classes ? ` className="${classes}"` : "";
4644
4645
  if (!label)
4645
4646
  return `<label htmlFor="${escapeAttribute(name)}" className="sr-only">${escapeJsx(humanizeName(name))}${requiredStar}</label>`;
4646
- return `<label htmlFor="${escapeAttribute(name)}" className="${classes}">${label}${requiredStar}</label>`;
4647
+ return `<label htmlFor="${escapeAttribute(name)}"${classAttribute}>${label}${requiredStar}</label>`;
4647
4648
  }
4648
4649
 
4649
4650
  // adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/label-with-description-line.ts
@@ -4714,7 +4715,7 @@ ${errorMessageLine2}
4714
4715
 
4715
4716
  // adapters/next/generators/form-pipeline/form-component-shared/input-class.ts
4716
4717
  function inputClass(height) {
4717
- const base = "h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
4718
+ const base = "h-9 w-full rounded border border-input bg-transparent px-3 py-1 shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
4718
4719
  return height === "fill" ? `${base} flex-1` : base;
4719
4720
  }
4720
4721
 
@@ -4754,7 +4755,7 @@ function renderListFieldJsxFieldControllerTemplate({
4754
4755
  name={\`${name}.\${index}.${nfName}\`}
4755
4756
  render={({ field }) => (
4756
4757
  <div className="flex-1 space-y-2">
4757
- <label htmlFor={field.name} className="text-sm font-medium leading-none">${nfLabelRaw}</label>
4758
+ <label htmlFor={field.name} className="font-medium leading-none">${nfLabelRaw}</label>
4758
4759
  <select
4759
4760
  id={field.name}
4760
4761
  value={field.value ?? ''}
@@ -4785,7 +4786,7 @@ function renderListFieldJsxFieldControllerFieldNameTemplate({
4785
4786
  name={\`${name}.\${index}.${nfName}\`}
4786
4787
  render={({ field }) => (
4787
4788
  <div className="flex-1 space-y-2">
4788
- <label htmlFor={field.name} className="text-sm font-medium leading-none">${nfLabelRaw}</label>
4789
+ <label htmlFor={field.name} className="font-medium leading-none">${nfLabelRaw}</label>
4789
4790
  <input
4790
4791
  id={field.name}
4791
4792
  type="number"
@@ -4819,7 +4820,7 @@ function renderListFieldJsxFieldControllerFieldNameFieldTemplate({
4819
4820
  name={\`${name}.\${index}.${nfName}\`}
4820
4821
  render={({ field }) => (
4821
4822
  <div className="flex-1 space-y-2">
4822
- <label htmlFor={field.name} className="text-sm font-medium leading-none">${nfLabelRaw}</label>
4823
+ <label htmlFor={field.name} className="font-medium leading-none">${nfLabelRaw}</label>
4823
4824
  <input
4824
4825
  id={field.name}
4825
4826
  type="text"
@@ -4846,11 +4847,11 @@ function renderListFieldJsxClickHandlerTemplate({
4846
4847
  return ` <div className="space-y-2">
4847
4848
  ${labelWithDescriptionLine2}
4848
4849
  {${name}FieldArray.fields.map((item, index) => (
4849
- <div key={item.id} className="relative rounded-sm border p-4">
4850
+ <div key={item.id} className="relative rounded border p-4">
4850
4851
  <button
4851
4852
  type="button"
4852
4853
  onClick={() => ${name}FieldArray.remove(index)}
4853
- className="absolute right-2 top-2 inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-destructive/10 hover:text-destructive"
4854
+ className="absolute right-2 top-2 inline-flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-destructive/10 hover:text-destructive"
4854
4855
  >
4855
4856
  <Trash2 className="size-4" />
4856
4857
  <span className="sr-only">Remove</span>
@@ -4863,7 +4864,7 @@ ${nestedFieldsJsx}
4863
4864
  <button
4864
4865
  type="button"
4865
4866
  onClick={() => ${name}FieldArray.append({ ${defaultObj} })}
4866
- className="inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50"
4867
+ className="inline-flex h-9 items-center justify-center rounded border border-input bg-background px-4 py-2 font-medium shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50"
4867
4868
  >
4868
4869
  Add ${singularLabel}
4869
4870
  </button>
@@ -5012,7 +5013,7 @@ function generateListFieldJSX(field, name, label, hintJSX, requiredStar) {
5012
5013
  kind: "renderListFieldJsxClickHandlerTemplate",
5013
5014
  props: {
5014
5015
  labelWithDescriptionLine: labelWithDescriptionLine(
5015
- formLabelLine(name, label, requiredStar, "text-sm font-medium leading-none"),
5016
+ formLabelLine(name, label, requiredStar, "font-medium leading-none"),
5016
5017
  hintJSX,
5017
5018
  " "
5018
5019
  ),
@@ -5136,7 +5137,7 @@ function generateNumberFieldJSX(name, label, placeholder, hintJSX, requiredStar,
5136
5137
 
5137
5138
  // adapters/next/generators/form-pipeline/form-component-shared/textarea-class.ts
5138
5139
  function textareaClass(height) {
5139
- const base = "min-h-24 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
5140
+ const base = "min-h-24 w-full rounded border border-input bg-transparent px-3 py-2 shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50";
5140
5141
  return height === "fill" ? `${base} flex-1` : base;
5141
5142
  }
5142
5143
 
@@ -5556,8 +5557,8 @@ ${pFieldArraySetup}${pWatchSetup}
5556
5557
 
5557
5558
  if (submitted) {
5558
5559
  return (
5559
- <div className="rounded-sm border p-6 text-center">
5560
- <h3 className="text-lg font-semibold">Thank you!</h3>
5560
+ <div className="rounded border p-6 text-center">
5561
+ <h3 className="font-semibold">Thank you!</h3>
5561
5562
  <p className="mt-2 text-muted-foreground">${pSuccessMessage}</p>
5562
5563
  </div>
5563
5564
  )
@@ -5566,9 +5567,9 @@ ${pFieldArraySetup}${pWatchSetup}
5566
5567
  return (
5567
5568
  <form onSubmit={(event) => event.preventDefault()} className="space-y-8">
5568
5569
  <div>
5569
- <h3 className="text-lg font-semibold">{STEPS[currentStep].label}</h3>
5570
+ <h3 className="font-semibold">{STEPS[currentStep].label}</h3>
5570
5571
  {'description' in STEPS[currentStep] && STEPS[currentStep].description && (
5571
- <p className="text-sm text-muted-foreground mt-1">{STEPS[currentStep].description}</p>
5572
+ <p className="text-muted-foreground mt-1">{STEPS[currentStep].description}</p>
5572
5573
  )}
5573
5574
  </div>
5574
5575
 
@@ -5577,7 +5578,7 @@ ${pStepContentBlocks}
5577
5578
  </div>
5578
5579
 
5579
5580
  {form.formState.errors.root && (
5580
- <p className="text-sm text-destructive">{form.formState.errors.root.message}</p>
5581
+ <p className="text-destructive">{form.formState.errors.root.message}</p>
5581
5582
  )}
5582
5583
 
5583
5584
  <div className="flex justify-between">
@@ -5585,7 +5586,7 @@ ${pStepContentBlocks}
5585
5586
  type="button"
5586
5587
  onClick={handleBack}
5587
5588
  disabled={currentStep === 0}
5588
- className="inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50"
5589
+ className="inline-flex h-9 items-center justify-center rounded border border-input bg-background px-4 py-2 font-medium shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50"
5589
5590
  >
5590
5591
  <ChevronLeft className="size-4" />
5591
5592
  Back
@@ -5594,7 +5595,7 @@ ${pStepContentBlocks}
5594
5595
  <button
5595
5596
  type="button"
5596
5597
  onClick={handleNext}
5597
- className="inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5598
+ className="inline-flex h-9 items-center justify-center rounded bg-primary px-4 py-2 font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5598
5599
  >
5599
5600
  Next
5600
5601
  <ChevronRight className="ml-2 size-4" />
@@ -5605,7 +5606,7 @@ ${pStepContentBlocks}
5605
5606
  disabled={submitting}
5606
5607
  aria-busy={submitting}
5607
5608
  onClick={() => form.handleSubmit(onSubmit)()}
5608
- className="inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5609
+ className="inline-flex h-9 items-center justify-center rounded bg-primary px-4 py-2 font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5609
5610
  >
5610
5611
  {submitting ? 'Submitting\u2026' : ${pSubmitText}}
5611
5612
  </button>
@@ -5803,8 +5804,8 @@ ${fieldArraySetup}${watchSetup}
5803
5804
 
5804
5805
  if (submitted) {
5805
5806
  return (
5806
- <div className="rounded-sm border p-6 text-center">
5807
- <h3 className="text-lg font-semibold">Thank you!</h3>
5807
+ <div className="rounded border p-6 text-center">
5808
+ <h3 className="font-semibold">Thank you!</h3>
5808
5809
  <p className="mt-2 text-muted-foreground">${successMessage}</p>
5809
5810
  </div>
5810
5811
  )
@@ -5815,14 +5816,14 @@ ${fieldArraySetup}${watchSetup}
5815
5816
  ${fieldJsx}
5816
5817
 
5817
5818
  {form.formState.errors.root && (
5818
- <p className="text-sm text-destructive">{form.formState.errors.root.message}</p>
5819
+ <p className="text-destructive">{form.formState.errors.root.message}</p>
5819
5820
  )}
5820
5821
 
5821
5822
  <button
5822
5823
  type="submit"
5823
5824
  disabled={submitting}
5824
5825
  aria-busy={submitting}
5825
- className="inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5826
+ className="inline-flex h-9 items-center justify-center rounded bg-primary px-4 py-2 font-medium text-primary-foreground shadow-xs transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50"
5826
5827
  >
5827
5828
  {submitting ? 'Submitting\u2026' : ${submitText}}
5828
5829
  </button>
@@ -6520,7 +6521,7 @@ function renderBuildSortableHeaderButtonJsxActionButtonsTemplate({
6520
6521
  return `<Button
6521
6522
  variant="ghost"
6522
6523
  onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
6523
- className="${className} min-w-0 justify-start overflow-hidden px-0! border-none rounded-none bg-transparent! scale-100! group"
6524
+ className="${className} min-w-0 justify-start overflow-hidden px-0! border-none bg-transparent! scale-100! group"
6524
6525
  aria-label={\`Sort by ${escapeTemplateText2}, \${sortLabel}\`}
6525
6526
  aria-sort={sortDirection === 'asc' ? 'ascending' : sortDirection === 'desc' ? 'descending' : 'none'}
6526
6527
  >
@@ -6650,7 +6651,7 @@ function buildColumnSize(size) {
6650
6651
  function renderColumnDefLayoutTemplate({ colAccessorKey }) {
6651
6652
  return `cell: ({ row }) => {
6652
6653
  const email = row.getValue('${colAccessorKey}') as string
6653
- return <div className="text-sm font-medium">{email || '-'}</div>
6654
+ return <div className="font-medium">{email || '-'}</div>
6654
6655
  }`;
6655
6656
  }
6656
6657
  function renderColumnDefDateTemplate({ colAccessorKey }) {
@@ -6965,7 +6966,7 @@ ${deleteTransition}${bulkDeleteHandler}
6965
6966
  actions={
6966
6967
  <div className="flex items-center gap-1">
6967
6968
  <${devModeIntegrateButtonExportName} initialSettings={initialSettings} />${exportButton}
6968
- <Button variant="outline" render={<Link href="${adminRoutePath}/settings/forms" />}>
6969
+ <Button variant="outline" nativeButton={false} render={<Link href="${adminRoutePath}/settings/forms" />}>
6969
6970
  <Settings className="size-3.5" />
6970
6971
  Settings
6971
6972
  </Button>
@@ -7135,8 +7136,8 @@ function generatePage(pascal, kebab) {
7135
7136
  // adapters/next/templates/renderers/generators/form-admin/admin-submission-drawer.ts
7136
7137
  function renderSubmissionDrawerEmailField({ lbl, name }) {
7137
7138
  return ` <div className="space-y-1">
7138
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7139
- <p className="text-sm">
7139
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7140
+ <p>
7140
7141
  {submission.${name} ? (
7141
7142
  <a href={\`mailto:\${submission.${name}}\`} className="text-primary hover:underline">{submission.${name}}</a>
7142
7143
  ) : '-'}
@@ -7148,26 +7149,26 @@ function renderSubmissionDrawerMultilineField({
7148
7149
  name
7149
7150
  }) {
7150
7151
  return ` <div className="space-y-1">
7151
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7152
- <p className="text-sm whitespace-pre-wrap">{submission.${name} || '-'}</p>
7152
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7153
+ <p className="whitespace-pre-wrap">{submission.${name} || '-'}</p>
7153
7154
  </div>`;
7154
7155
  }
7155
7156
  function renderSubmissionDrawerBooleanField({ lbl, name }) {
7156
7157
  return ` <div className="space-y-1">
7157
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7158
- <p className="text-sm">{submission.${name} ? 'Yes' : 'No'}</p>
7158
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7159
+ <p>{submission.${name} ? 'Yes' : 'No'}</p>
7159
7160
  </div>`;
7160
7161
  }
7161
7162
  function renderSubmissionDrawerDateField({ lbl, name }) {
7162
7163
  return ` <div className="space-y-1">
7163
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7164
- <p className="text-sm">{submission.${name} ? new Date(submission.${name}).toLocaleDateString() : '-'}</p>
7164
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7165
+ <p>{submission.${name} ? new Date(submission.${name}).toLocaleDateString() : '-'}</p>
7165
7166
  </div>`;
7166
7167
  }
7167
7168
  function renderSubmissionDrawerUrlField({ lbl, name }) {
7168
7169
  return ` <div className="space-y-1">
7169
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7170
- <p className="text-sm">
7170
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7171
+ <p>
7171
7172
  {submission.${name} ? (
7172
7173
  <a href={submission.${name}} target="_blank" rel="noopener noreferrer" className="text-primary hover:underline break-all">{submission.${name}}</a>
7173
7174
  ) : '-'}
@@ -7176,8 +7177,8 @@ function renderSubmissionDrawerUrlField({ lbl, name }) {
7176
7177
  }
7177
7178
  function renderSubmissionDrawerListField({ lbl, name }) {
7178
7179
  return ` <div className="space-y-1">
7179
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7180
- <div className="text-sm">
7180
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7181
+ <div>
7181
7182
  {Array.isArray(submission.${name}) && submission.${name}.length > 0 ? (
7182
7183
  <ul className="list-inside list-disc space-y-1">
7183
7184
  {submission.${name}.map((item: unknown) => {
@@ -7195,19 +7196,19 @@ function renderSubmissionDrawerListField({ lbl, name }) {
7195
7196
  }
7196
7197
  function renderSubmissionDrawerValueField({ lbl, name }) {
7197
7198
  return ` <div className="space-y-1">
7198
- <p className="text-sm font-medium text-muted-foreground">${lbl}</p>
7199
- <p className="text-sm">{submission.${name} ?? '-'}</p>
7199
+ <p className="font-medium text-muted-foreground">${lbl}</p>
7200
+ <p>{submission.${name} ?? '-'}</p>
7200
7201
  </div>`;
7201
7202
  }
7202
7203
  function renderSubmissionDrawerCustomFieldsSection() {
7203
7204
  return `
7204
7205
  {submission.customFields && Object.keys(submission.customFields).length > 0 && (
7205
7206
  <div className="space-y-3 border-t pt-4">
7206
- <p className="text-sm font-semibold text-muted-foreground">Custom Fields</p>
7207
+ <p className="font-semibold text-muted-foreground">Custom Fields</p>
7207
7208
  {Object.entries(submission.customFields).map(([key, value]) => (
7208
7209
  <div key={key} className="space-y-1">
7209
- <p className="text-sm font-medium capitalize">{key.replace(/([A-Z])/g, ' $1').trim()}</p>
7210
- <p className="text-sm">{value !== null && value !== undefined ? String(value) : '-'}</p>
7210
+ <p className="font-medium capitalize">{key.replace(/([A-Z])/g, ' $1').trim()}</p>
7211
+ <p>{value !== null && value !== undefined ? String(value) : '-'}</p>
7211
7212
  </div>
7212
7213
  ))}
7213
7214
  </div>
@@ -7271,23 +7272,23 @@ export function ${pascal}SubmissionDrawer({
7271
7272
  </DrawerHeader>
7272
7273
  <ScrollArea className="min-h-0 flex-1">
7273
7274
  {isPending ? (
7274
- <div className="p-4 text-sm text-muted-foreground">Loading submission\u2026</div>
7275
+ <div className="p-4 text-muted-foreground">Loading submission\u2026</div>
7275
7276
  ) : error ? (
7276
- <div className="p-4 text-sm text-destructive">
7277
+ <div className="p-4 text-destructive">
7277
7278
  Error loading submission: {error.message}
7278
7279
  </div>
7279
7280
  ) : submission ? (
7280
7281
  <div className="p-4">
7281
- <div className="space-y-4 rounded-sm border border-border bg-card p-4">
7282
+ <div className="space-y-4 rounded border border-border bg-card p-4">
7282
7283
  ${fieldItems}${customFieldsSection}
7283
7284
  <div className="space-y-1 border-t pt-4">
7284
- <p className="text-sm font-medium text-muted-foreground">Submitted At</p>
7285
- <p className="text-sm">{formatDateTime(submission.submittedAt)}</p>
7285
+ <p className="font-medium text-muted-foreground">Submitted At</p>
7286
+ <p>{formatDateTime(submission.submittedAt)}</p>
7286
7287
  </div>
7287
7288
  </div>
7288
7289
  </div>
7289
7290
  ) : submissionId ? (
7290
- <div className="p-4 text-sm text-muted-foreground">Submission not found.</div>
7291
+ <div className="p-4 text-muted-foreground">Submission not found.</div>
7291
7292
  ) : null}
7292
7293
  </ScrollArea>
7293
7294
  </DrawerContent>
@@ -13525,7 +13526,7 @@ function renderColumnDefLayoutTemplate2({
13525
13526
  return `cell: ({ row }) => {
13526
13527
  ${generateAuthorshipValue2}
13527
13528
  return label ? (
13528
- <div className="text-sm font-medium" title={actor?.email}>
13529
+ <div className="font-medium" title={actor?.email}>
13529
13530
  {label}
13530
13531
  </div>
13531
13532
  ) : (
@@ -13586,7 +13587,7 @@ function renderColumnDefLayoutDetailsTemplate2({
13586
13587
  return `cell: ({ row }) => {
13587
13588
  const date = new Date(row.getValue('${columnAccessorKey}'))
13588
13589
  return (
13589
- <div className="text-sm">
13590
+ <div>
13590
13591
  {date.toLocaleDateString('en-US', {
13591
13592
  month: 'short',
13592
13593
  day: 'numeric',
@@ -13601,7 +13602,7 @@ function renderColumnDefLayoutDetailsBranchTemplate({
13601
13602
  }) {
13602
13603
  return `cell: ({ row }) => {
13603
13604
  const email = row.getValue('${columnAccessorKey}') as string
13604
- return <div className="text-sm font-medium">{email}</div>
13605
+ return <div className="font-medium">{email}</div>
13605
13606
  }`;
13606
13607
  }
13607
13608
  function renderColumnDefLayoutDetailsBranchBodyTemplate({
@@ -13610,7 +13611,7 @@ function renderColumnDefLayoutDetailsBranchBodyTemplate({
13610
13611
  return `cell: ({ row }) => {
13611
13612
  const amount = row.getValue('${columnAccessorKey}') as number
13612
13613
  return (
13613
- <div className="text-sm font-medium">
13614
+ <div className="font-medium">
13614
13615
  {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(amount)}
13615
13616
  </div>
13616
13617
  )
@@ -13619,7 +13620,7 @@ function renderColumnDefLayoutDetailsBranchBodyTemplate({
13619
13620
  function renderNumberColumnCell({ columnAccessorKey }) {
13620
13621
  return `cell: ({ row }) => {
13621
13622
  const value = row.getValue('${columnAccessorKey}') as number
13622
- return <div className="text-sm">{value}</div>
13623
+ return <div>{value}</div>
13623
13624
  }`;
13624
13625
  }
13625
13626
  function renderColumnDefRenderDetailsBranchTemplate({
@@ -13645,7 +13646,7 @@ function renderLinkColumnCell({ columnAccessorKey }) {
13645
13646
  href={value}
13646
13647
  target="_blank"
13647
13648
  rel="noopener noreferrer"
13648
- className="text-sm text-blue-600 hover:text-blue-800 hover:underline"
13649
+ className="text-blue-600 hover:text-blue-800 hover:underline"
13649
13650
  title={value}
13650
13651
  >
13651
13652
  {truncateText(value, 50)}
@@ -13868,7 +13869,7 @@ function renderImageElementLayoutTemplate({
13868
13869
  alt={title ? \`${columnHeader} image for \${title}\` : '${columnHeader} image'}
13869
13870
  fill
13870
13871
  sizes="40px"
13871
- className="rounded-sm object-cover"
13872
+ className="rounded object-cover"
13872
13873
  unoptimized
13873
13874
  />
13874
13875
  ) : (
@@ -14148,7 +14149,7 @@ function renderFirstColumnDefLayoutGenerateAuthorshipValueTemplate({
14148
14149
  aria-label="Select row"
14149
14150
  />
14150
14151
  {label ? (
14151
- <span className="text-sm font-medium truncate max-w-table-cell" title={actor?.email}>
14152
+ <span className="font-medium truncate max-w-table-cell" title={actor?.email}>
14152
14153
  {label}
14153
14154
  </span>
14154
14155
  ) : (
@@ -14238,7 +14239,7 @@ function renderFirstColumnDefLayoutDetailsBranchBodyTemplate({
14238
14239
  onCheckedChange={(value) => row.toggleSelected(!!value)}
14239
14240
  aria-label="Select row"
14240
14241
  />
14241
- <div className="text-sm">
14242
+ <div>
14242
14243
  {date.toLocaleDateString('en-US', {
14243
14244
  month: 'short',
14244
14245
  day: 'numeric',
@@ -14259,7 +14260,7 @@ function renderEmailColumnCell({ columnAccessorKey }) {
14259
14260
  onCheckedChange={(value) => row.toggleSelected(!!value)}
14260
14261
  aria-label="Select row"
14261
14262
  />
14262
- <span className="text-sm font-medium truncate max-w-table-cell">{email}</span>
14263
+ <span className="font-medium truncate max-w-table-cell">{email}</span>
14263
14264
  </div>
14264
14265
  )
14265
14266
  }`;
@@ -14274,7 +14275,7 @@ function renderCurrencyColumnCell({ columnAccessorKey }) {
14274
14275
  onCheckedChange={(value) => row.toggleSelected(!!value)}
14275
14276
  aria-label="Select row"
14276
14277
  />
14277
- <div className="text-sm font-medium">
14278
+ <div className="font-medium">
14278
14279
  {new Intl.NumberFormat('en-US', {
14279
14280
  style: 'currency',
14280
14281
  currency: 'USD'
@@ -14294,7 +14295,7 @@ function renderNumberColumnCell2({ columnAccessorKey }) {
14294
14295
  onCheckedChange={(value) => row.toggleSelected(!!value)}
14295
14296
  aria-label="Select row"
14296
14297
  />
14297
- <div className="text-sm">{value}</div>
14298
+ <div>{value}</div>
14298
14299
  </div>
14299
14300
  )
14300
14301
  }`;
@@ -14410,7 +14411,7 @@ function renderFirstColumnDefClickHandlerTemplate({
14410
14411
  href={value}
14411
14412
  target="_blank"
14412
14413
  rel="noopener noreferrer"
14413
- className="text-sm text-blue-600 hover:text-blue-800 hover:underline truncate block max-w-[250px]"
14414
+ className="text-blue-600 hover:text-blue-800 hover:underline truncate block max-w-[250px]"
14414
14415
  title={value}
14415
14416
  onClick={(e) => e.stopPropagation()}
14416
14417
  >
@@ -16248,7 +16249,7 @@ function renderFormTabContentTemplate({
16248
16249
  tName,
16249
16250
  tabFields
16250
16251
  }) {
16251
- return `${indent} <TabsContent value="${tName}" className="space-y-4 pt-4 pb-6 px-4 rounded-sm border bg-card">
16252
+ return `${indent} <TabsContent value="${tName}" className="space-y-4 pt-4 pb-6 px-4 rounded border bg-card">
16252
16253
  ${tabFields}
16253
16254
  ${indent} </TabsContent>`;
16254
16255
  }
@@ -17644,7 +17645,7 @@ function renderNestedField(field, indent, path114, depth) {
17644
17645
  if ((field.type === "group" || field.type === "section") && field.fields?.length) {
17645
17646
  const groupFields = field.fields.map((child) => renderNestedField(child, `${indent} `, [...path114, child.name], depth)).filter(Boolean).join("\n");
17646
17647
  if (!groupFields) return "";
17647
- const heading = nestedLabel && nestedLabel !== field.name ? `${indent}<h3 className="text-base font-medium">${nestedLabel}</h3>
17648
+ const heading = nestedLabel && nestedLabel !== field.name ? `${indent}<h3 className="font-medium">${nestedLabel}</h3>
17648
17649
  ` : "";
17649
17650
  const columns = field.columns || 1;
17650
17651
  return renderNestedFieldRenderer({
@@ -18108,7 +18109,7 @@ function renderGroupField(field, indent, label, context) {
18108
18109
  const columns = field.columns || 1;
18109
18110
  const groupFields = field.fields.map((nf) => generateFieldJSX2(nf, `${indent} `, context)).filter(Boolean).join("\n");
18110
18111
  if (!groupFields) return "";
18111
- const heading = label && label !== field.name ? `${indent}<h3 className="text-lg font-medium">${label}</h3>
18112
+ const heading = label && label !== field.name ? `${indent}<h3 className="font-medium">${label}</h3>
18112
18113
  ` : "";
18113
18114
  return renderGroupFieldLayoutTemplate({
18114
18115
  heading,
@@ -18448,7 +18449,7 @@ ${indent} <ComboboxItem key={option.value} value={option}>
18448
18449
  ${indent} <span className="flex min-w-0 flex-col text-left">
18449
18450
  ${indent} <span className="truncate">{option.label}</span>
18450
18451
  ${indent} {option.secondaryLabel ? (
18451
- ${indent} <span className="truncate text-xs text-muted-foreground">{option.secondaryLabel}</span>
18452
+ ${indent} <span className="truncate text-muted-foreground">{option.secondaryLabel}</span>
18452
18453
  ${indent} ) : null}
18453
18454
  ${indent} </span>
18454
18455
  ${indent} </ComboboxItem>
@@ -18545,7 +18546,7 @@ ${indent} <ComboboxItem key={option.value} value={option}>
18545
18546
  ${indent} <span className="flex min-w-0 flex-col text-left">
18546
18547
  ${indent} <span className="truncate">{option.label}</span>
18547
18548
  ${indent} {option.secondaryLabel ? (
18548
- ${indent} <span className="truncate text-xs text-muted-foreground">{option.secondaryLabel}</span>
18549
+ ${indent} <span className="truncate text-muted-foreground">{option.secondaryLabel}</span>
18549
18550
  ${indent} ) : null}
18550
18551
  ${indent} </span>
18551
18552
  ${indent} </ComboboxItem>
@@ -19186,7 +19187,7 @@ function renderSeparatorFieldLayoutTemplate({
19186
19187
  ${indent} <div className="absolute inset-0 flex items-center">
19187
19188
  ${indent} <Separator className="w-full" />
19188
19189
  ${indent} </div>
19189
- ${indent} <div className="relative flex justify-center text-xs uppercase">
19190
+ ${indent} <div className="relative flex justify-center uppercase">
19190
19191
  ${indent} <span className="bg-background px-2 text-muted-foreground">${fieldLabel}</span>
19191
19192
  ${indent} </div>
19192
19193
  ${indent}</div>`;
@@ -21157,7 +21158,7 @@ function renderPageContentActionButtonsTemplate2({
21157
21158
  schemaName,
21158
21159
  singularizeLabel: singularizeLabel2
21159
21160
  }) {
21160
- return `<Button render={<Link href="${adminRoutePath}/${schemaName}/new" />}>
21161
+ return `<Button nativeButton={false} render={<Link href="${adminRoutePath}/${schemaName}/new" />}>
21161
21162
  Create ${singularizeLabel2}
21162
21163
  </Button>`;
21163
21164
  }
@@ -23203,7 +23204,7 @@ ${fieldArrayHooks}
23203
23204
  descriptionLine,
23204
23205
  fieldsJsx: fieldsJSX,
23205
23206
  groupHintText: group2.hint ? `
23206
- <p className="text-sm text-muted-foreground">${group2.hint}</p>` : ""
23207
+ <p className="text-muted-foreground">${group2.hint}</p>` : ""
23207
23208
  }
23208
23209
  });
23209
23210
  }
@@ -33485,13 +33486,35 @@ function renderAdminThemeBlock() {
33485
33486
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
33486
33487
  --color-sidebar-border: var(--sidebar-border);
33487
33488
  --color-sidebar-ring: var(--sidebar-ring);
33488
- --radius-sm: calc(var(--radius) - 4px);
33489
- --radius-md: calc(var(--radius) - 2px);
33490
- --radius-lg: var(--radius);
33491
- --radius-xl: calc(var(--radius) + 4px);
33489
+ --text-*: initial;
33490
+ --radius-*: initial;
33491
+ --radius: 6px;
33492
33492
  }`;
33493
33493
  }
33494
33494
 
33495
+ // adapters/next/templates/renderers/init/scaffolders/tailwind/base-font-declarations.ts
33496
+ function renderBaseFontDeclarations() {
33497
+ return ` font-size: 14px;
33498
+ line-height: 20px;
33499
+ `;
33500
+ }
33501
+
33502
+ // adapters/next/init/scaffolders/tailwind/apply-base-font.ts
33503
+ function applyBaseFont(content) {
33504
+ const bodyRule = /(?:^|\n)body\s*\{[^}]*\}/.exec(content);
33505
+ if (!bodyRule) {
33506
+ return `${content}
33507
+ body {
33508
+ ${renderBaseFontDeclarations()}}
33509
+ `;
33510
+ }
33511
+ if (/font-size\s*:/.test(bodyRule[0])) {
33512
+ return content;
33513
+ }
33514
+ const closingBrace = bodyRule.index + bodyRule[0].length - 1;
33515
+ return `${content.slice(0, closingBrace)}${renderBaseFontDeclarations()}${content.slice(closingBrace)}`;
33516
+ }
33517
+
33495
33518
  // adapters/next/init/scaffolders/tailwind/get-admin-theme-vars.ts
33496
33519
  function getAdminThemeVars() {
33497
33520
  return renderAdminThemeBlock().split("\n").filter((line) => line.trim().startsWith("--"));
@@ -33501,7 +33524,7 @@ function getAdminThemeVars() {
33501
33524
  function getMissingThemeVars(existingBlock) {
33502
33525
  return getAdminThemeVars().filter((line) => {
33503
33526
  const varName = line.trim().split(":")[0].trim();
33504
- return !existingBlock.includes(varName);
33527
+ return !existingBlock.includes(`${varName}:`);
33505
33528
  }).map((line) => ` ${line.trim()}`);
33506
33529
  }
33507
33530
 
@@ -33562,6 +33585,11 @@ ${renderAdminThemeBlock()}
33562
33585
  `;
33563
33586
  changed = true;
33564
33587
  }
33588
+ const withBaseFont = applyBaseFont(content);
33589
+ if (withBaseFont !== content) {
33590
+ content = withBaseFont;
33591
+ changed = true;
33592
+ }
33565
33593
  if (!content.includes("@utility shadow-input")) {
33566
33594
  content = `${content}
33567
33595
  ${renderAdminShadowInputUtility()}