@btst/stack 1.5.0 → 1.5.2

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 (325) hide show
  1. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.cjs +14 -2
  2. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.mjs +14 -2
  3. package/dist/node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.0/node_modules/react-day-picker/dist/esm/noonDateLib.cjs +162 -0
  4. package/dist/node_modules/.pnpm/react-day-picker@9.13.0_react@19.2.0/node_modules/react-day-picker/dist/esm/noonDateLib.mjs +160 -0
  5. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.cjs +12 -8
  6. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.mjs +12 -8
  7. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/edit-post-page.internal.cjs +7 -6
  8. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/edit-post-page.internal.mjs +7 -6
  9. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/home-page.internal.cjs +9 -7
  10. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/home-page.internal.mjs +9 -7
  11. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/new-post-page.internal.cjs +7 -6
  12. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/new-post-page.internal.mjs +7 -6
  13. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +7 -5
  14. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +7 -5
  15. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/tag-page.internal.cjs +5 -3
  16. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/tag-page.internal.mjs +5 -3
  17. package/dist/packages/better-stack/src/plugins/blog/client/plugin.cjs +6 -6
  18. package/dist/packages/better-stack/src/plugins/blog/client/plugin.mjs +6 -6
  19. package/dist/packages/better-stack/src/plugins/cms/api/plugin.cjs +33 -4
  20. package/dist/packages/better-stack/src/plugins/cms/api/plugin.mjs +33 -4
  21. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.cjs +26 -141
  22. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.mjs +24 -139
  23. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/file-upload.cjs +2 -2
  24. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/file-upload.mjs +2 -2
  25. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +19 -2
  26. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +19 -2
  27. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.internal.cjs +19 -6
  28. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.internal.mjs +19 -6
  29. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.internal.cjs +18 -2
  30. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.internal.mjs +18 -2
  31. package/dist/packages/better-stack/src/plugins/cms/client/plugin.cjs +112 -22
  32. package/dist/packages/better-stack/src/plugins/cms/client/plugin.mjs +112 -22
  33. package/dist/packages/better-stack/src/plugins/cms/db.cjs +4 -0
  34. package/dist/packages/better-stack/src/plugins/cms/db.mjs +4 -0
  35. package/dist/packages/better-stack/src/plugins/cms/schemas.cjs +0 -1
  36. package/dist/packages/better-stack/src/plugins/cms/schemas.mjs +0 -1
  37. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/common/label.cjs +2 -2
  38. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/common/label.mjs +2 -2
  39. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/config.cjs +0 -2
  40. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/config.mjs +0 -2
  41. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/array.cjs +15 -29
  42. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/array.mjs +16 -16
  43. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/checkbox.cjs +2 -2
  44. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/checkbox.mjs +2 -2
  45. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/date.cjs +29 -5
  46. package/dist/packages/ui/src/components/auto-form/fields/date.mjs +59 -0
  47. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/enum.cjs +2 -2
  48. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/enum.mjs +2 -2
  49. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/input.cjs +2 -2
  50. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/input.mjs +2 -2
  51. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/number.cjs +2 -2
  52. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/number.mjs +2 -2
  53. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/object.cjs +7 -4
  54. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/object.mjs +8 -5
  55. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/radio-group.cjs +2 -2
  56. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/radio-group.mjs +2 -2
  57. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/switch.cjs +2 -2
  58. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/switch.mjs +2 -2
  59. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/textarea.cjs +2 -2
  60. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/fields/textarea.mjs +2 -2
  61. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/index.cjs +3 -3
  62. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/index.mjs +3 -3
  63. package/dist/packages/ui/src/components/auto-form/utils.cjs +306 -0
  64. package/dist/packages/ui/src/components/auto-form/utils.mjs +294 -0
  65. package/dist/packages/ui/src/components/calendar.cjs +2 -2
  66. package/dist/packages/ui/src/components/calendar.mjs +2 -2
  67. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/hooks}/use-route-lifecycle.cjs +8 -9
  68. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/hooks}/use-route-lifecycle.mjs +1 -2
  69. package/dist/plugins/blog/api/index.d.cts +1 -1
  70. package/dist/plugins/blog/api/index.d.mts +1 -1
  71. package/dist/plugins/blog/api/index.d.ts +1 -1
  72. package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
  73. package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
  74. package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
  75. package/dist/plugins/blog/client/index.d.cts +1 -1
  76. package/dist/plugins/blog/client/index.d.mts +1 -1
  77. package/dist/plugins/blog/client/index.d.ts +1 -1
  78. package/dist/plugins/blog/query-keys.d.cts +2 -2
  79. package/dist/plugins/blog/query-keys.d.mts +2 -2
  80. package/dist/plugins/blog/query-keys.d.ts +2 -2
  81. package/dist/plugins/cms/api/index.d.cts +2 -4
  82. package/dist/plugins/cms/api/index.d.mts +2 -4
  83. package/dist/plugins/cms/api/index.d.ts +2 -4
  84. package/dist/plugins/cms/client/hooks/index.d.cts +1 -4
  85. package/dist/plugins/cms/client/hooks/index.d.mts +1 -4
  86. package/dist/plugins/cms/client/hooks/index.d.ts +1 -4
  87. package/dist/plugins/cms/client/index.d.cts +178 -5
  88. package/dist/plugins/cms/client/index.d.mts +178 -5
  89. package/dist/plugins/cms/client/index.d.ts +178 -5
  90. package/dist/plugins/cms/query-keys.d.cts +1 -4
  91. package/dist/plugins/cms/query-keys.d.mts +1 -4
  92. package/dist/plugins/cms/query-keys.d.ts +1 -4
  93. package/dist/shared/{stack.DwnJA87a.d.ts → stack.L-UFwz2G.d.cts} +14 -14
  94. package/dist/shared/{stack.BwkyFwF8.d.cts → stack.L-UFwz2G.d.mts} +14 -14
  95. package/dist/shared/{stack.DBqxCs0V.d.mts → stack.L-UFwz2G.d.ts} +14 -14
  96. package/package.json +1 -1
  97. package/src/plugins/blog/client/components/pages/edit-post-page.internal.tsx +4 -3
  98. package/src/plugins/blog/client/components/pages/home-page.internal.tsx +4 -2
  99. package/src/plugins/blog/client/components/pages/new-post-page.internal.tsx +4 -3
  100. package/src/plugins/blog/client/components/pages/post-page.internal.tsx +4 -2
  101. package/src/plugins/blog/client/components/pages/tag-page.internal.tsx +4 -2
  102. package/src/plugins/blog/client/plugin.tsx +10 -9
  103. package/src/plugins/cms/__tests__/schema-roundtrip.test.ts +195 -0
  104. package/src/plugins/cms/api/plugin.ts +65 -4
  105. package/src/plugins/cms/client/components/forms/content-form.tsx +50 -234
  106. package/src/plugins/cms/client/components/forms/file-upload.tsx +3 -3
  107. package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +21 -3
  108. package/src/plugins/cms/client/components/pages/content-list-page.internal.tsx +21 -6
  109. package/src/plugins/cms/client/components/pages/dashboard-page.internal.tsx +20 -3
  110. package/src/plugins/cms/client/index.ts +2 -2
  111. package/src/plugins/cms/client/overrides.ts +1 -1
  112. package/src/plugins/cms/client/plugin.tsx +236 -25
  113. package/src/plugins/cms/db.ts +4 -0
  114. package/src/plugins/cms/schemas.ts +1 -1
  115. package/src/plugins/cms/types.ts +14 -17
  116. package/dist/packages/ui/src/components/ui/auto-form/fields/date.mjs +0 -35
  117. package/dist/packages/ui/src/components/ui/auto-form/fields/file.cjs +0 -63
  118. package/dist/packages/ui/src/components/ui/auto-form/fields/file.mjs +0 -61
  119. package/dist/packages/ui/src/components/ui/auto-form/utils.cjs +0 -179
  120. package/dist/packages/ui/src/components/ui/auto-form/utils.mjs +0 -169
  121. package/dist/shared/stack.NZJogTUn.d.cts +0 -66
  122. package/dist/shared/stack.NZJogTUn.d.mts +0 -66
  123. package/dist/shared/stack.NZJogTUn.d.ts +0 -66
  124. package/src/plugins/blog/client/components/shared/use-route-lifecycle.tsx +0 -68
  125. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.cjs +0 -0
  126. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.mjs +0 -0
  127. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.cjs +0 -0
  128. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.mjs +0 -0
  129. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.cjs +0 -0
  130. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.mjs +0 -0
  131. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.cjs +0 -0
  132. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.mjs +0 -0
  133. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.cjs +0 -0
  134. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.mjs +0 -0
  135. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.cjs +0 -0
  136. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.mjs +0 -0
  137. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.cjs +0 -0
  138. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.mjs +0 -0
  139. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.cjs +0 -0
  140. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.mjs +0 -0
  141. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.cjs +0 -0
  142. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.mjs +0 -0
  143. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.cjs +0 -0
  144. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.mjs +0 -0
  145. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.cjs +0 -0
  146. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.mjs +0 -0
  147. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.cjs +0 -0
  148. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.mjs +0 -0
  149. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.cjs +0 -0
  150. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.mjs +0 -0
  151. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.cjs +0 -0
  152. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.mjs +0 -0
  153. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.cjs +0 -0
  154. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.mjs +0 -0
  155. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.cjs +0 -0
  156. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.mjs +0 -0
  157. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.cjs +0 -0
  158. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.mjs +0 -0
  159. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.cjs +0 -0
  160. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.mjs +0 -0
  161. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.cjs +0 -0
  162. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.mjs +0 -0
  163. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.cjs +0 -0
  164. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.mjs +0 -0
  165. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.cjs +0 -0
  166. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.mjs +0 -0
  167. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.cjs +0 -0
  168. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.mjs +0 -0
  169. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.cjs +0 -0
  170. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.mjs +0 -0
  171. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.cjs +0 -0
  172. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.mjs +0 -0
  173. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.cjs +0 -0
  174. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.mjs +0 -0
  175. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.cjs +0 -0
  176. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.mjs +0 -0
  177. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.cjs +0 -0
  178. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.mjs +0 -0
  179. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.cjs +0 -0
  180. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.mjs +0 -0
  181. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.cjs +0 -0
  182. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.mjs +0 -0
  183. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.cjs +0 -0
  184. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.mjs +0 -0
  185. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.cjs +0 -0
  186. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.mjs +0 -0
  187. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.cjs +0 -0
  188. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.mjs +0 -0
  189. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.cjs +0 -0
  190. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.mjs +0 -0
  191. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.cjs +0 -0
  192. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.mjs +0 -0
  193. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.cjs +0 -0
  194. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.mjs +0 -0
  195. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.cjs +0 -0
  196. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.mjs +0 -0
  197. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.cjs +0 -0
  198. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.mjs +0 -0
  199. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.cjs +0 -0
  200. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.mjs +0 -0
  201. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.cjs +0 -0
  202. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.mjs +0 -0
  203. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.cjs +0 -0
  204. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.mjs +0 -0
  205. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.cjs +0 -0
  206. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.mjs +0 -0
  207. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.cjs +0 -0
  208. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.mjs +0 -0
  209. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.cjs +0 -0
  210. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.mjs +0 -0
  211. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.cjs +0 -0
  212. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.mjs +0 -0
  213. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.cjs +0 -0
  214. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.mjs +0 -0
  215. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.cjs +0 -0
  216. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.mjs +0 -0
  217. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.cjs +0 -0
  218. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.mjs +0 -0
  219. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.cjs +0 -0
  220. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.mjs +0 -0
  221. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.cjs +0 -0
  222. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.mjs +0 -0
  223. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.cjs +0 -0
  224. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.mjs +0 -0
  225. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.cjs +0 -0
  226. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.mjs +0 -0
  227. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.cjs +0 -0
  228. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.mjs +0 -0
  229. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.cjs +0 -0
  230. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.mjs +0 -0
  231. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.cjs +0 -0
  232. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.mjs +0 -0
  233. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.cjs +0 -0
  234. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.mjs +0 -0
  235. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.cjs +0 -0
  236. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.mjs +0 -0
  237. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.cjs +0 -0
  238. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.mjs +0 -0
  239. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.cjs +0 -0
  240. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.mjs +0 -0
  241. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.cjs +0 -0
  242. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.mjs +0 -0
  243. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.cjs +0 -0
  244. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.mjs +0 -0
  245. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.cjs +0 -0
  246. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.mjs +0 -0
  247. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.cjs +0 -0
  248. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.mjs +0 -0
  249. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.cjs +0 -0
  250. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.mjs +0 -0
  251. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.cjs +0 -0
  252. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.mjs +0 -0
  253. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.cjs +0 -0
  254. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.mjs +0 -0
  255. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.cjs +0 -0
  256. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.mjs +0 -0
  257. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.cjs +0 -0
  258. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.mjs +0 -0
  259. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.cjs +0 -0
  260. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.mjs +0 -0
  261. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.cjs +0 -0
  262. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.mjs +0 -0
  263. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.cjs +0 -0
  264. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.mjs +0 -0
  265. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.cjs +0 -0
  266. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.mjs +0 -0
  267. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.cjs +0 -0
  268. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.mjs +0 -0
  269. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.cjs +0 -0
  270. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.mjs +0 -0
  271. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.cjs +0 -0
  272. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.mjs +0 -0
  273. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.cjs +0 -0
  274. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.mjs +0 -0
  275. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.cjs +0 -0
  276. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.mjs +0 -0
  277. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.cjs +0 -0
  278. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.mjs +0 -0
  279. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.cjs +0 -0
  280. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.mjs +0 -0
  281. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.cjs +0 -0
  282. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.mjs +0 -0
  283. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.cjs +0 -0
  284. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.mjs +0 -0
  285. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.cjs +0 -0
  286. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.mjs +0 -0
  287. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.cjs +0 -0
  288. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.mjs +0 -0
  289. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.cjs +0 -0
  290. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.mjs +0 -0
  291. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.cjs +0 -0
  292. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.mjs +0 -0
  293. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.cjs +0 -0
  294. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.mjs +0 -0
  295. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.cjs +0 -0
  296. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.mjs +0 -0
  297. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.cjs +0 -0
  298. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.mjs +0 -0
  299. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.cjs +0 -0
  300. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.mjs +0 -0
  301. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.cjs +0 -0
  302. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.mjs +0 -0
  303. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs +0 -0
  304. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.mjs +0 -0
  305. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.cjs +0 -0
  306. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.mjs +0 -0
  307. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.cjs +0 -0
  308. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.mjs +0 -0
  309. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.cjs +0 -0
  310. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.mjs +0 -0
  311. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.cjs +0 -0
  312. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.mjs +0 -0
  313. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.cjs +0 -0
  314. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.mjs +0 -0
  315. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.cjs +0 -0
  316. package/dist/node_modules/.pnpm/{react-day-picker@9.12.0_react@19.2.0 → react-day-picker@9.13.0_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.mjs +0 -0
  317. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/common/tooltip.cjs +0 -0
  318. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/common/tooltip.mjs +0 -0
  319. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/dependencies.cjs +0 -0
  320. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/dependencies.mjs +0 -0
  321. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/types.cjs +0 -0
  322. package/dist/packages/ui/src/components/{ui/auto-form → auto-form}/types.mjs +0 -0
  323. package/dist/shared/{stack.CcI4sYJP.d.cts → stack.DLhzx1-D.d.cts} +1 -1
  324. package/dist/shared/{stack.CcI4sYJP.d.mts → stack.DLhzx1-D.d.mts} +1 -1
  325. package/dist/shared/{stack.CcI4sYJP.d.ts → stack.DLhzx1-D.d.ts} +1 -1
@@ -1,11 +1,8 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { createApiClient } from '@btst/stack/plugins/client';
3
- import { S as SerializedContentType, P as PaginatedContentItems, a as SerializedContentItemWithType } from '../../shared/stack.DBqxCs0V.mjs';
3
+ import { S as SerializedContentType, P as PaginatedContentItems, a as SerializedContentItemWithType } from '../../shared/stack.L-UFwz2G.mjs';
4
4
  import { CMSApiRouter } from './api/index.mjs';
5
5
  import 'zod';
6
- import '../../shared/stack.NZJogTUn.mjs';
7
- import 'react-hook-form';
8
- import 'react/jsx-runtime';
9
6
  import '@btst/stack/plugins/api';
10
7
  import 'better-call';
11
8
 
@@ -1,11 +1,8 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { createApiClient } from '@btst/stack/plugins/client';
3
- import { S as SerializedContentType, P as PaginatedContentItems, a as SerializedContentItemWithType } from '../../shared/stack.DwnJA87a.js';
3
+ import { S as SerializedContentType, P as PaginatedContentItems, a as SerializedContentItemWithType } from '../../shared/stack.L-UFwz2G.js';
4
4
  import { CMSApiRouter } from './api/index.js';
5
5
  import 'zod';
6
- import '../../shared/stack.NZJogTUn.js';
7
- import 'react-hook-form';
8
- import 'react/jsx-runtime';
9
6
  import '@btst/stack/plugins/api';
10
7
  import 'better-call';
11
8
 
@@ -1,8 +1,16 @@
1
1
  import { z } from 'zod';
2
- import { A as AutoFormFieldType } from './stack.NZJogTUn.js';
3
2
 
4
3
  /**
5
- * Configuration for a content type defined by the developer
4
+ * Configuration for a content type defined by the developer.
5
+ *
6
+ * Field types are now specified directly in the Zod schema via .meta():
7
+ * @example
8
+ * ```typescript
9
+ * const ProductSchema = z.object({
10
+ * description: z.string().meta({ fieldType: "textarea" }),
11
+ * image: z.string().optional().meta({ fieldType: "file" }),
12
+ * });
13
+ * ```
6
14
  */
7
15
  interface ContentTypeConfig {
8
16
  /** Display name for the content type (e.g., "Product", "Testimonial") */
@@ -11,18 +19,8 @@ interface ContentTypeConfig {
11
19
  slug: string;
12
20
  /** Optional description shown in the admin UI */
13
21
  description?: string;
14
- /** Zod schema defining the content type's fields */
22
+ /** Zod schema defining the content type's fields. Use .meta({ fieldType: "..." }) for field type overrides. */
15
23
  schema: z.ZodObject<z.ZodRawShape>;
16
- /**
17
- * Optional field configuration for AutoForm customization.
18
- *
19
- * fieldType can be:
20
- * - A built-in AutoForm type: "checkbox", "date", "select", "radio", "switch", "textarea", "number", "file", "fallback"
21
- * - A custom type name that maps to a component provided via `fieldComponents` in overrides
22
- */
23
- fieldConfig?: Record<string, {
24
- fieldType?: AutoFormFieldType | (string & {});
25
- }>;
26
24
  }
27
25
  /**
28
26
  * Content type stored in the database
@@ -37,8 +35,10 @@ type ContentType = {
37
35
  description?: string;
38
36
  /** JSON Schema representation of the Zod schema (stringified) */
39
37
  jsonSchema: string;
40
- /** Optional field configuration JSON (stringified) */
38
+ /** @deprecated Legacy field config - now embedded in jsonSchema. Kept for backwards compat. */
41
39
  fieldConfig?: string;
40
+ /** AutoForm schema version. 1 = legacy (separate fieldConfig), 2 = unified (fieldType in jsonSchema) */
41
+ autoFormVersion?: number;
42
42
  createdAt: Date;
43
43
  updatedAt: Date;
44
44
  };
@@ -1,8 +1,16 @@
1
1
  import { z } from 'zod';
2
- import { A as AutoFormFieldType } from './stack.NZJogTUn.cjs';
3
2
 
4
3
  /**
5
- * Configuration for a content type defined by the developer
4
+ * Configuration for a content type defined by the developer.
5
+ *
6
+ * Field types are now specified directly in the Zod schema via .meta():
7
+ * @example
8
+ * ```typescript
9
+ * const ProductSchema = z.object({
10
+ * description: z.string().meta({ fieldType: "textarea" }),
11
+ * image: z.string().optional().meta({ fieldType: "file" }),
12
+ * });
13
+ * ```
6
14
  */
7
15
  interface ContentTypeConfig {
8
16
  /** Display name for the content type (e.g., "Product", "Testimonial") */
@@ -11,18 +19,8 @@ interface ContentTypeConfig {
11
19
  slug: string;
12
20
  /** Optional description shown in the admin UI */
13
21
  description?: string;
14
- /** Zod schema defining the content type's fields */
22
+ /** Zod schema defining the content type's fields. Use .meta({ fieldType: "..." }) for field type overrides. */
15
23
  schema: z.ZodObject<z.ZodRawShape>;
16
- /**
17
- * Optional field configuration for AutoForm customization.
18
- *
19
- * fieldType can be:
20
- * - A built-in AutoForm type: "checkbox", "date", "select", "radio", "switch", "textarea", "number", "file", "fallback"
21
- * - A custom type name that maps to a component provided via `fieldComponents` in overrides
22
- */
23
- fieldConfig?: Record<string, {
24
- fieldType?: AutoFormFieldType | (string & {});
25
- }>;
26
24
  }
27
25
  /**
28
26
  * Content type stored in the database
@@ -37,8 +35,10 @@ type ContentType = {
37
35
  description?: string;
38
36
  /** JSON Schema representation of the Zod schema (stringified) */
39
37
  jsonSchema: string;
40
- /** Optional field configuration JSON (stringified) */
38
+ /** @deprecated Legacy field config - now embedded in jsonSchema. Kept for backwards compat. */
41
39
  fieldConfig?: string;
40
+ /** AutoForm schema version. 1 = legacy (separate fieldConfig), 2 = unified (fieldType in jsonSchema) */
41
+ autoFormVersion?: number;
42
42
  createdAt: Date;
43
43
  updatedAt: Date;
44
44
  };
@@ -1,8 +1,16 @@
1
1
  import { z } from 'zod';
2
- import { A as AutoFormFieldType } from './stack.NZJogTUn.mjs';
3
2
 
4
3
  /**
5
- * Configuration for a content type defined by the developer
4
+ * Configuration for a content type defined by the developer.
5
+ *
6
+ * Field types are now specified directly in the Zod schema via .meta():
7
+ * @example
8
+ * ```typescript
9
+ * const ProductSchema = z.object({
10
+ * description: z.string().meta({ fieldType: "textarea" }),
11
+ * image: z.string().optional().meta({ fieldType: "file" }),
12
+ * });
13
+ * ```
6
14
  */
7
15
  interface ContentTypeConfig {
8
16
  /** Display name for the content type (e.g., "Product", "Testimonial") */
@@ -11,18 +19,8 @@ interface ContentTypeConfig {
11
19
  slug: string;
12
20
  /** Optional description shown in the admin UI */
13
21
  description?: string;
14
- /** Zod schema defining the content type's fields */
22
+ /** Zod schema defining the content type's fields. Use .meta({ fieldType: "..." }) for field type overrides. */
15
23
  schema: z.ZodObject<z.ZodRawShape>;
16
- /**
17
- * Optional field configuration for AutoForm customization.
18
- *
19
- * fieldType can be:
20
- * - A built-in AutoForm type: "checkbox", "date", "select", "radio", "switch", "textarea", "number", "file", "fallback"
21
- * - A custom type name that maps to a component provided via `fieldComponents` in overrides
22
- */
23
- fieldConfig?: Record<string, {
24
- fieldType?: AutoFormFieldType | (string & {});
25
- }>;
26
24
  }
27
25
  /**
28
26
  * Content type stored in the database
@@ -37,8 +35,10 @@ type ContentType = {
37
35
  description?: string;
38
36
  /** JSON Schema representation of the Zod schema (stringified) */
39
37
  jsonSchema: string;
40
- /** Optional field configuration JSON (stringified) */
38
+ /** @deprecated Legacy field config - now embedded in jsonSchema. Kept for backwards compat. */
41
39
  fieldConfig?: string;
40
+ /** AutoForm schema version. 1 = legacy (separate fieldConfig), 2 = unified (fieldType in jsonSchema) */
41
+ autoFormVersion?: number;
42
42
  createdAt: Date;
43
43
  updatedAt: Date;
44
44
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@btst/stack",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "A composable, plugin-based library for building full-stack applications.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -6,18 +6,18 @@ import { PageHeader } from "../shared/page-header";
6
6
  import { PageWrapper } from "../shared/page-wrapper";
7
7
  import { BLOG_LOCALIZATION } from "../../localization";
8
8
  import type { BlogPluginOverrides } from "../../overrides";
9
- import { useRouteLifecycle } from "../shared/use-route-lifecycle";
9
+ import { useRouteLifecycle } from "@workspace/ui/hooks/use-route-lifecycle";
10
10
 
11
11
  // Internal component with actual page content
12
12
  export function EditPostPage({ slug }: { slug: string }) {
13
- const { localization } = usePluginOverrides<
13
+ const overrides = usePluginOverrides<
14
14
  BlogPluginOverrides,
15
15
  Partial<BlogPluginOverrides>
16
16
  >("blog", {
17
17
  localization: BLOG_LOCALIZATION,
18
18
  });
19
+ const { localization, navigate } = overrides;
19
20
  const basePath = useBasePath();
20
- const { navigate } = usePluginOverrides<BlogPluginOverrides>("blog");
21
21
 
22
22
  // Call lifecycle hooks
23
23
  useRouteLifecycle({
@@ -27,6 +27,7 @@ export function EditPostPage({ slug }: { slug: string }) {
27
27
  params: { slug },
28
28
  isSSR: typeof window === "undefined",
29
29
  },
30
+ overrides,
30
31
  beforeRenderHook: (overrides, context) => {
31
32
  if (overrides.onBeforeEditPostPageRendered) {
32
33
  return overrides.onBeforeEditPostPageRendered(slug, context);
@@ -9,16 +9,17 @@ import { useSuspensePosts } from "../../hooks/blog-hooks";
9
9
  import { BLOG_LOCALIZATION } from "../../localization";
10
10
  import { usePluginOverrides } from "@btst/stack/context";
11
11
  import type { BlogPluginOverrides } from "../../overrides";
12
- import { useRouteLifecycle } from "../shared/use-route-lifecycle";
12
+ import { useRouteLifecycle } from "@workspace/ui/hooks/use-route-lifecycle";
13
13
 
14
14
  // Internal component with actual page content
15
15
  export function HomePage({ published }: { published: boolean }) {
16
- const { localization } = usePluginOverrides<
16
+ const overrides = usePluginOverrides<
17
17
  BlogPluginOverrides,
18
18
  Partial<BlogPluginOverrides>
19
19
  >("blog", {
20
20
  localization: BLOG_LOCALIZATION,
21
21
  });
22
+ const { localization } = overrides;
22
23
 
23
24
  // Call lifecycle hooks
24
25
  useRouteLifecycle({
@@ -28,6 +29,7 @@ export function HomePage({ published }: { published: boolean }) {
28
29
  isSSR: typeof window === "undefined",
29
30
  published,
30
31
  },
32
+ overrides,
31
33
  beforeRenderHook: (overrides, context) => {
32
34
  if (published && overrides.onBeforePostsPageRendered) {
33
35
  return overrides.onBeforePostsPageRendered(context);
@@ -6,17 +6,17 @@ import { PageHeader } from "../shared/page-header";
6
6
  import { PageWrapper } from "../shared/page-wrapper";
7
7
  import type { BlogPluginOverrides } from "../../overrides";
8
8
  import { BLOG_LOCALIZATION } from "../../localization";
9
- import { useRouteLifecycle } from "../shared/use-route-lifecycle";
9
+ import { useRouteLifecycle } from "@workspace/ui/hooks/use-route-lifecycle";
10
10
 
11
11
  // Internal component with actual page content
12
12
  export function NewPostPage() {
13
- const { localization } = usePluginOverrides<
13
+ const overrides = usePluginOverrides<
14
14
  BlogPluginOverrides,
15
15
  Partial<BlogPluginOverrides>
16
16
  >("blog", {
17
17
  localization: BLOG_LOCALIZATION,
18
18
  });
19
- const { navigate } = usePluginOverrides<BlogPluginOverrides>("blog");
19
+ const { localization, navigate } = overrides;
20
20
  const basePath = useBasePath();
21
21
 
22
22
  // Call lifecycle hooks
@@ -26,6 +26,7 @@ export function NewPostPage() {
26
26
  path: "/blog/new",
27
27
  isSSR: typeof window === "undefined",
28
28
  },
29
+ overrides,
29
30
  beforeRenderHook: (overrides, context) => {
30
31
  if (overrides.onBeforeNewPostPageRendered) {
31
32
  return overrides.onBeforeNewPostPageRendered(context);
@@ -17,19 +17,20 @@ import { BLOG_LOCALIZATION } from "../../localization";
17
17
  import { PostNavigation } from "../shared/post-navigation";
18
18
  import { RecentPostsCarousel } from "../shared/recent-posts-carousel";
19
19
  import { Badge } from "@workspace/ui/components/badge";
20
- import { useRouteLifecycle } from "../shared/use-route-lifecycle";
20
+ import { useRouteLifecycle } from "@workspace/ui/hooks/use-route-lifecycle";
21
21
  import { OnThisPage, OnThisPageSelect } from "../shared/on-this-page";
22
22
  import type { SerializedPost } from "../../../types";
23
23
 
24
24
  // Internal component with actual page content
25
25
  export function PostPage({ slug }: { slug: string }) {
26
- const { Image, localization } = usePluginOverrides<
26
+ const overrides = usePluginOverrides<
27
27
  BlogPluginOverrides,
28
28
  Partial<BlogPluginOverrides>
29
29
  >("blog", {
30
30
  Image: DefaultImage,
31
31
  localization: BLOG_LOCALIZATION,
32
32
  });
33
+ const { Image, localization } = overrides;
33
34
 
34
35
  // Call lifecycle hooks
35
36
  useRouteLifecycle({
@@ -39,6 +40,7 @@ export function PostPage({ slug }: { slug: string }) {
39
40
  params: { slug },
40
41
  isSSR: typeof window === "undefined",
41
42
  },
43
+ overrides,
42
44
  beforeRenderHook: (overrides, context) => {
43
45
  if (overrides.onBeforePostPageRendered) {
44
46
  return overrides.onBeforePostPageRendered(slug, context);
@@ -10,16 +10,17 @@ import { BLOG_LOCALIZATION } from "../../localization";
10
10
  import { usePluginOverrides } from "@btst/stack/context";
11
11
  import type { BlogPluginOverrides } from "../../overrides";
12
12
  import { useTags } from "../../hooks/blog-hooks";
13
- import { useRouteLifecycle } from "../shared/use-route-lifecycle";
13
+ import { useRouteLifecycle } from "@workspace/ui/hooks/use-route-lifecycle";
14
14
 
15
15
  // Internal component with actual page content
16
16
  export function TagPage({ tagSlug }: { tagSlug: string }) {
17
- const { localization } = usePluginOverrides<
17
+ const overrides = usePluginOverrides<
18
18
  BlogPluginOverrides,
19
19
  Partial<BlogPluginOverrides>
20
20
  >("blog", {
21
21
  localization: BLOG_LOCALIZATION,
22
22
  });
23
+ const { localization } = overrides;
23
24
 
24
25
  // Call lifecycle hooks
25
26
  useRouteLifecycle({
@@ -29,6 +30,7 @@ export function TagPage({ tagSlug }: { tagSlug: string }) {
29
30
  params: { tagSlug },
30
31
  isSSR: typeof window === "undefined",
31
32
  },
33
+ overrides,
32
34
  });
33
35
 
34
36
  const { tags } = useTags();
@@ -386,15 +386,16 @@ function createTagLoader(tagSlug: string, config: BlogClientConfig) {
386
386
  const tagsQuery = queries.tags.list();
387
387
  await queryClient.prefetchQuery(tagsQuery);
388
388
 
389
- if (hooks?.onLoadError) {
390
- const queryState = queryClient.getQueryState(listQuery.queryKey);
391
- if (queryState?.error) {
392
- const error =
393
- queryState.error instanceof Error
394
- ? queryState.error
395
- : new Error(String(queryState.error));
396
- await hooks.onLoadError(error, context);
397
- }
389
+ // Check if there was an error in either query
390
+ const listState = queryClient.getQueryState(listQuery.queryKey);
391
+ const tagsState = queryClient.getQueryState(tagsQuery.queryKey);
392
+ const queryError = listState?.error || tagsState?.error;
393
+ if (queryError && hooks?.onLoadError) {
394
+ const error =
395
+ queryError instanceof Error
396
+ ? queryError
397
+ : new Error(String(queryError));
398
+ await hooks.onLoadError(error, context);
398
399
  }
399
400
  } catch (error) {
400
401
  if (hooks?.onLoadError) {
@@ -338,6 +338,201 @@ describe("Zod to JSON Schema roundtrip", () => {
338
338
  });
339
339
  });
340
340
 
341
+ describe("Unified schema format with fieldType in .meta()", () => {
342
+ it("preserves fieldType in JSON Schema properties", () => {
343
+ const schema = z.object({
344
+ description: z.string().meta({
345
+ description: "Full description",
346
+ fieldType: "textarea",
347
+ }),
348
+ image: z.string().optional().meta({
349
+ description: "Image URL",
350
+ fieldType: "file",
351
+ }),
352
+ });
353
+
354
+ const jsonSchema = z.toJSONSchema(schema) as {
355
+ properties?: Record<
356
+ string,
357
+ { description?: string; fieldType?: string }
358
+ >;
359
+ };
360
+
361
+ // fieldType should be preserved in JSON Schema properties
362
+ expect(jsonSchema.properties?.description?.fieldType).toBe("textarea");
363
+ expect(jsonSchema.properties?.image?.fieldType).toBe("file");
364
+ });
365
+
366
+ it("preserves placeholder in JSON Schema properties", () => {
367
+ const schema = z.object({
368
+ name: z.string().meta({
369
+ placeholder: "Enter product name...",
370
+ }),
371
+ });
372
+
373
+ const jsonSchema = z.toJSONSchema(schema) as {
374
+ properties?: Record<string, { placeholder?: string }>;
375
+ };
376
+
377
+ expect(jsonSchema.properties?.name?.placeholder).toBe(
378
+ "Enter product name...",
379
+ );
380
+ });
381
+
382
+ it("simulates unified schema storage and retrieval", () => {
383
+ // This test simulates the new CMS flow with unified schema:
384
+ // 1. Developer defines schema with fieldType in .meta()
385
+ // 2. Backend converts to JSON Schema and stores (fieldType embedded)
386
+ // 3. Client reads JSON Schema and extracts fieldType for AutoForm
387
+
388
+ // Step 1: Developer defines schema with fieldType in .meta()
389
+ const ProductSchema = z.object({
390
+ name: z.string().min(1).meta({
391
+ description: "Product name",
392
+ placeholder: "Enter name...",
393
+ }),
394
+ description: z.string().meta({
395
+ description: "Full description",
396
+ fieldType: "textarea",
397
+ }),
398
+ image: z.string().optional().meta({
399
+ description: "Product image",
400
+ fieldType: "file",
401
+ }),
402
+ price: z.number().min(0).meta({
403
+ placeholder: "0.00",
404
+ }),
405
+ });
406
+
407
+ // Step 2: Convert to JSON Schema (stored in DB as version 2)
408
+ const jsonSchema = z.toJSONSchema(ProductSchema);
409
+ const dbStoredString = JSON.stringify(jsonSchema);
410
+
411
+ // Step 3: Client fetches and extracts fieldTypes
412
+ const fetchedSchema = JSON.parse(dbStoredString) as {
413
+ properties?: Record<
414
+ string,
415
+ { description?: string; placeholder?: string; fieldType?: string }
416
+ >;
417
+ };
418
+
419
+ // Verify fieldTypes are preserved
420
+ expect(fetchedSchema.properties?.description?.fieldType).toBe("textarea");
421
+ expect(fetchedSchema.properties?.image?.fieldType).toBe("file");
422
+
423
+ // Verify other meta properties are preserved
424
+ expect(fetchedSchema.properties?.name?.description).toBe("Product name");
425
+ expect(fetchedSchema.properties?.name?.placeholder).toBe("Enter name...");
426
+ expect(fetchedSchema.properties?.price?.placeholder).toBe("0.00");
427
+ });
428
+ });
429
+
430
+ describe("Legacy schema migration", () => {
431
+ /**
432
+ * Simulates the migrateToUnifiedSchema function from api/plugin.ts
433
+ */
434
+ function migrateToUnifiedSchema(
435
+ jsonSchemaStr: string,
436
+ fieldConfigStr: string | null | undefined,
437
+ ): string {
438
+ if (!fieldConfigStr) {
439
+ return jsonSchemaStr;
440
+ }
441
+
442
+ try {
443
+ const jsonSchema = JSON.parse(jsonSchemaStr);
444
+ const fieldConfig = JSON.parse(fieldConfigStr);
445
+
446
+ if (!jsonSchema.properties || typeof fieldConfig !== "object") {
447
+ return jsonSchemaStr;
448
+ }
449
+
450
+ // Merge fieldType from fieldConfig into each property
451
+ for (const [key, config] of Object.entries(fieldConfig)) {
452
+ if (
453
+ jsonSchema.properties[key] &&
454
+ typeof config === "object" &&
455
+ config !== null &&
456
+ "fieldType" in config
457
+ ) {
458
+ jsonSchema.properties[key].fieldType = (
459
+ config as { fieldType: string }
460
+ ).fieldType;
461
+ }
462
+ }
463
+
464
+ return JSON.stringify(jsonSchema);
465
+ } catch {
466
+ return jsonSchemaStr;
467
+ }
468
+ }
469
+
470
+ it("merges legacy fieldConfig into JSON Schema", () => {
471
+ // Legacy format: separate jsonSchema and fieldConfig
472
+ const legacyJsonSchema = JSON.stringify({
473
+ type: "object",
474
+ properties: {
475
+ name: { type: "string", description: "Product name" },
476
+ description: { type: "string" },
477
+ image: { type: "string" },
478
+ },
479
+ required: ["name", "description"],
480
+ });
481
+
482
+ const legacyFieldConfig = JSON.stringify({
483
+ description: { fieldType: "textarea" },
484
+ image: { fieldType: "file" },
485
+ });
486
+
487
+ // Migrate
488
+ const migratedStr = migrateToUnifiedSchema(
489
+ legacyJsonSchema,
490
+ legacyFieldConfig,
491
+ );
492
+ const migrated = JSON.parse(migratedStr);
493
+
494
+ // Verify fieldTypes are now embedded
495
+ expect(migrated.properties.description.fieldType).toBe("textarea");
496
+ expect(migrated.properties.image.fieldType).toBe("file");
497
+
498
+ // Verify other properties are preserved
499
+ expect(migrated.properties.name.description).toBe("Product name");
500
+ expect(migrated.required).toEqual(["name", "description"]);
501
+ });
502
+
503
+ it("handles null fieldConfig", () => {
504
+ const jsonSchema = JSON.stringify({
505
+ type: "object",
506
+ properties: {
507
+ name: { type: "string" },
508
+ },
509
+ });
510
+
511
+ const result = migrateToUnifiedSchema(jsonSchema, null);
512
+ expect(result).toBe(jsonSchema);
513
+ });
514
+
515
+ it("handles undefined fieldConfig", () => {
516
+ const jsonSchema = JSON.stringify({
517
+ type: "object",
518
+ properties: {
519
+ name: { type: "string" },
520
+ },
521
+ });
522
+
523
+ const result = migrateToUnifiedSchema(jsonSchema, undefined);
524
+ expect(result).toBe(jsonSchema);
525
+ });
526
+
527
+ it("handles invalid JSON gracefully", () => {
528
+ const jsonSchema = "invalid json";
529
+ const fieldConfig = "also invalid";
530
+
531
+ const result = migrateToUnifiedSchema(jsonSchema, fieldConfig);
532
+ expect(result).toBe(jsonSchema); // Returns original on error
533
+ });
534
+ });
535
+
341
536
  describe("AutoForm schema generation and data shape", () => {
342
537
  /**
343
538
  * Helper function to convert JSON Schema to Zod with coercion for AutoForm
@@ -16,12 +16,66 @@ import type {
16
16
  import { listContentQuerySchema } from "../schemas";
17
17
  import { slugify } from "../utils";
18
18
 
19
+ /**
20
+ * Migrate a legacy JSON Schema (version 1) to unified format (version 2)
21
+ * by merging fieldConfig values into the JSON Schema properties
22
+ */
23
+ function migrateToUnifiedSchema(
24
+ jsonSchemaStr: string,
25
+ fieldConfigStr: string | null | undefined,
26
+ ): string {
27
+ if (!fieldConfigStr) {
28
+ return jsonSchemaStr;
29
+ }
30
+
31
+ try {
32
+ const jsonSchema = JSON.parse(jsonSchemaStr);
33
+ const fieldConfig = JSON.parse(fieldConfigStr);
34
+
35
+ if (!jsonSchema.properties || typeof fieldConfig !== "object") {
36
+ return jsonSchemaStr;
37
+ }
38
+
39
+ // Merge fieldType from fieldConfig into each property
40
+ for (const [key, config] of Object.entries(fieldConfig)) {
41
+ if (
42
+ jsonSchema.properties[key] &&
43
+ typeof config === "object" &&
44
+ config !== null &&
45
+ "fieldType" in config
46
+ ) {
47
+ jsonSchema.properties[key].fieldType = (
48
+ config as { fieldType: string }
49
+ ).fieldType;
50
+ }
51
+ }
52
+
53
+ return JSON.stringify(jsonSchema);
54
+ } catch {
55
+ // If parsing fails, return original
56
+ return jsonSchemaStr;
57
+ }
58
+ }
59
+
19
60
  /**
20
61
  * Serialize a ContentType for API response (convert dates to strings)
62
+ * Also applies lazy migration for legacy schemas (version 1 → 2)
21
63
  */
22
64
  function serializeContentType(ct: ContentType): SerializedContentType {
65
+ // Check if this is a legacy schema that needs migration
66
+ const needsMigration = !ct.autoFormVersion || ct.autoFormVersion < 2;
67
+
68
+ // Apply lazy migration: merge fieldConfig into jsonSchema on read
69
+ const migratedJsonSchema = needsMigration
70
+ ? migrateToUnifiedSchema(ct.jsonSchema, ct.fieldConfig)
71
+ : ct.jsonSchema;
72
+
23
73
  return {
24
- ...ct,
74
+ id: ct.id,
75
+ name: ct.name,
76
+ slug: ct.slug,
77
+ description: ct.description,
78
+ jsonSchema: migratedJsonSchema,
25
79
  createdAt: ct.createdAt.toISOString(),
26
80
  updatedAt: ct.updatedAt.toISOString(),
27
81
  };
@@ -57,6 +111,11 @@ function serializeContentItemWithType(
57
111
  * Sync content types from config to database
58
112
  * Creates or updates content types based on the developer's Zod schemas
59
113
  *
114
+ * Always writes version 2 format:
115
+ * - fieldType is embedded in jsonSchema via .meta()
116
+ * - fieldConfig is set to null (no longer used)
117
+ * - autoFormVersion is set to 2
118
+ *
60
119
  * Handles race conditions from multiple instances by catching unique constraint
61
120
  * errors and verifying the record exists (another instance created it first).
62
121
  */
@@ -65,8 +124,8 @@ async function syncContentTypes(
65
124
  config: CMSBackendConfig,
66
125
  ): Promise<void> {
67
126
  for (const ct of config.contentTypes) {
127
+ // Convert Zod schema to JSON Schema - fieldType is now embedded via .meta()
68
128
  const jsonSchema = JSON.stringify(z.toJSONSchema(ct.schema));
69
- const fieldConfig = ct.fieldConfig ? JSON.stringify(ct.fieldConfig) : null;
70
129
 
71
130
  const existing = await adapter.findOne<ContentType>({
72
131
  model: "contentType",
@@ -81,7 +140,8 @@ async function syncContentTypes(
81
140
  name: ct.name,
82
141
  description: ct.description ?? null,
83
142
  jsonSchema,
84
- fieldConfig,
143
+ fieldConfig: null, // No longer used in version 2
144
+ autoFormVersion: 2,
85
145
  updatedAt: new Date(),
86
146
  },
87
147
  });
@@ -94,7 +154,8 @@ async function syncContentTypes(
94
154
  slug: ct.slug,
95
155
  description: ct.description ?? null,
96
156
  jsonSchema,
97
- fieldConfig,
157
+ fieldConfig: null, // No longer used in version 2
158
+ autoFormVersion: 2,
98
159
  createdAt: new Date(),
99
160
  updatedAt: new Date(),
100
161
  },