@btst/stack 1.4.1 → 1.5.1

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 (465) hide show
  1. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/date/index.cjs +85 -0
  2. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/date/index.mjs +83 -0
  3. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/date/mini.cjs +237 -0
  4. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/date/mini.mjs +235 -0
  5. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/tzName/index.cjs +41 -0
  6. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/tzName/index.mjs +39 -0
  7. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/tzOffset/index.cjs +46 -0
  8. package/dist/node_modules/.pnpm/@date-fns_tz@1.4.1/node_modules/@date-fns/tz/tzOffset/index.mjs +44 -0
  9. package/dist/node_modules/.pnpm/@radix-ui_react-checkbox@1.3.3_@types_react-dom@19.2.3_@types_react@19.2.6__@types_reac_c1e3fbdebd5ee34a254141dc5a2dcd28/node_modules/@radix-ui/react-checkbox/dist/index.cjs +296 -0
  10. package/dist/node_modules/.pnpm/@radix-ui_react-checkbox@1.3.3_@types_react-dom@19.2.3_@types_react@19.2.6__@types_reac_c1e3fbdebd5ee34a254141dc5a2dcd28/node_modules/@radix-ui/react-checkbox/dist/index.mjs +271 -0
  11. package/dist/node_modules/.pnpm/@radix-ui_react-popover@1.1.15_@types_react-dom@19.2.3_@types_react@19.2.6__@types_reac_5c5a3ca63b34dfe7d9d23f1e8cee675c/node_modules/@radix-ui/react-popover/dist/index.cjs +325 -0
  12. package/dist/node_modules/.pnpm/@radix-ui_react-popover@1.1.15_@types_react-dom@19.2.3_@types_react@19.2.6__@types_reac_5c5a3ca63b34dfe7d9d23f1e8cee675c/node_modules/@radix-ui/react-popover/dist/index.mjs +299 -0
  13. package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.4_@types_react-dom@19.2.3_@types_react@19.2.6__@types_rea_43b950ce9f6b8d55739cce33fe173a1c/node_modules/@radix-ui/react-primitive/dist/index.cjs +56 -0
  14. package/dist/node_modules/.pnpm/@radix-ui_react-primitive@2.1.4_@types_react-dom@19.2.3_@types_react@19.2.6__@types_rea_43b950ce9f6b8d55739cce33fe173a1c/node_modules/@radix-ui/react-primitive/dist/index.mjs +40 -0
  15. package/dist/node_modules/.pnpm/@radix-ui_react-radio-group@1.3.8_@types_react-dom@19.2.3_@types_react@19.2.6__@types_r_e0d4db654009398ea41c8e459eeae4ee/node_modules/@radix-ui/react-radio-group/dist/index.cjs +304 -0
  16. package/dist/node_modules/.pnpm/@radix-ui_react-radio-group@1.3.8_@types_react-dom@19.2.3_@types_react@19.2.6__@types_r_e0d4db654009398ea41c8e459eeae4ee/node_modules/@radix-ui/react-radio-group/dist/index.mjs +283 -0
  17. package/dist/node_modules/.pnpm/@radix-ui_react-separator@1.1.8_@types_react-dom@19.2.3_@types_react@19.2.6__@types_rea_8aae318b88145540882c32de0262377a/node_modules/@radix-ui/react-separator/dist/index.cjs +47 -0
  18. package/dist/node_modules/.pnpm/@radix-ui_react-separator@1.1.8_@types_react-dom@19.2.3_@types_react@19.2.6__@types_rea_8aae318b88145540882c32de0262377a/node_modules/@radix-ui/react-separator/dist/index.mjs +30 -0
  19. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/DayPicker.cjs +326 -0
  20. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/DayPicker.mjs +320 -0
  21. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/UI.cjs +122 -0
  22. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/UI.mjs +122 -0
  23. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarDay.cjs +35 -0
  24. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarDay.mjs +33 -0
  25. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.cjs +16 -0
  26. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.mjs +14 -0
  27. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.cjs +15 -0
  28. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.mjs +13 -0
  29. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/DateLib.cjs +577 -0
  30. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/classes/DateLib.mjs +573 -0
  31. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Button.cjs +19 -0
  32. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Button.mjs +13 -0
  33. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/CaptionLabel.cjs +19 -0
  34. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/CaptionLabel.mjs +13 -0
  35. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Chevron.cjs +26 -0
  36. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Chevron.mjs +20 -0
  37. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Day.cjs +24 -0
  38. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Day.mjs +18 -0
  39. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/DayButton.cjs +25 -0
  40. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/DayButton.mjs +19 -0
  41. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Dropdown.cjs +27 -0
  42. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Dropdown.mjs +21 -0
  43. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/DropdownNav.cjs +19 -0
  44. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/DropdownNav.mjs +13 -0
  45. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Footer.cjs +19 -0
  46. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Footer.mjs +13 -0
  47. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Month.cjs +21 -0
  48. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Month.mjs +15 -0
  49. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthCaption.cjs +20 -0
  50. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthCaption.mjs +14 -0
  51. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthGrid.cjs +19 -0
  52. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthGrid.mjs +13 -0
  53. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Months.cjs +19 -0
  54. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Months.mjs +13 -0
  55. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.cjs +21 -0
  56. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.mjs +15 -0
  57. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Nav.cjs +37 -0
  58. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Nav.mjs +31 -0
  59. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/NextMonthButton.cjs +21 -0
  60. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/NextMonthButton.mjs +15 -0
  61. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Option.cjs +19 -0
  62. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Option.mjs +13 -0
  63. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.cjs +21 -0
  64. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.mjs +15 -0
  65. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Root.cjs +20 -0
  66. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Root.mjs +14 -0
  67. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Select.cjs +19 -0
  68. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Select.mjs +13 -0
  69. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Week.cjs +20 -0
  70. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Week.mjs +14 -0
  71. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/WeekNumber.cjs +20 -0
  72. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/WeekNumber.mjs +14 -0
  73. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.cjs +19 -0
  74. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.mjs +13 -0
  75. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weekday.cjs +19 -0
  76. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weekday.mjs +13 -0
  77. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weekdays.cjs +20 -0
  78. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weekdays.mjs +14 -0
  79. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weeks.cjs +19 -0
  80. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/Weeks.mjs +13 -0
  81. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/YearsDropdown.cjs +21 -0
  82. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/YearsDropdown.mjs +15 -0
  83. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/custom-components.cjs +57 -0
  84. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/components/custom-components.mjs +26 -0
  85. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatCaption.cjs +29 -0
  86. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatCaption.mjs +26 -0
  87. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatDay.cjs +21 -0
  88. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatDay.mjs +19 -0
  89. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.cjs +20 -0
  90. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.mjs +18 -0
  91. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.cjs +23 -0
  92. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.mjs +21 -0
  93. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.cjs +15 -0
  94. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.mjs +13 -0
  95. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.cjs +21 -0
  96. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.mjs +19 -0
  97. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.cjs +26 -0
  98. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.mjs +23 -0
  99. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/index.cjs +21 -0
  100. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/formatters/index.mjs +7 -0
  101. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.cjs +75 -0
  102. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.mjs +73 -0
  103. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.cjs +97 -0
  104. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.mjs +95 -0
  105. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.cjs +24 -0
  106. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.mjs +22 -0
  107. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.cjs +30 -0
  108. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.mjs +28 -0
  109. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.cjs +35 -0
  110. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.mjs +33 -0
  111. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getComponents.cjs +22 -0
  112. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getComponents.mjs +20 -0
  113. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.cjs +29 -0
  114. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.mjs +27 -0
  115. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDates.cjs +61 -0
  116. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDates.mjs +59 -0
  117. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDays.cjs +21 -0
  118. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDays.mjs +19 -0
  119. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.cjs +35 -0
  120. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.mjs +33 -0
  121. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.cjs +26 -0
  122. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.mjs +24 -0
  123. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.cjs +48 -0
  124. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.mjs +46 -0
  125. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getFormatters.cjs +26 -0
  126. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getFormatters.mjs +24 -0
  127. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.cjs +29 -0
  128. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.mjs +27 -0
  129. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getLabels.cjs +55 -0
  130. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getLabels.mjs +53 -0
  131. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.cjs +35 -0
  132. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.mjs +33 -0
  133. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getMonths.cjs +71 -0
  134. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getMonths.mjs +69 -0
  135. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.cjs +53 -0
  136. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.mjs +51 -0
  137. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.cjs +42 -0
  138. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.mjs +40 -0
  139. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.cjs +38 -0
  140. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.mjs +36 -0
  141. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.cjs +39 -0
  142. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.mjs +37 -0
  143. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.cjs +29 -0
  144. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.mjs +27 -0
  145. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.cjs +28 -0
  146. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.mjs +26 -0
  147. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getWeeks.cjs +16 -0
  148. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getWeeks.mjs +14 -0
  149. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.cjs +38 -0
  150. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.mjs +36 -0
  151. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.cjs +29 -0
  152. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.mjs +27 -0
  153. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.cjs +33 -0
  154. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.mjs +31 -0
  155. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/index.cjs +29 -0
  156. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/index.mjs +11 -0
  157. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelDayButton.cjs +35 -0
  158. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelDayButton.mjs +32 -0
  159. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelGrid.cjs +28 -0
  160. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelGrid.mjs +25 -0
  161. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelGridcell.cjs +24 -0
  162. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelGridcell.mjs +22 -0
  163. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.cjs +16 -0
  164. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.mjs +14 -0
  165. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelNav.cjs +15 -0
  166. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelNav.mjs +13 -0
  167. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelNext.cjs +18 -0
  168. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelNext.mjs +16 -0
  169. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelPrevious.cjs +17 -0
  170. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelPrevious.mjs +15 -0
  171. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.cjs +17 -0
  172. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.mjs +15 -0
  173. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.cjs +16 -0
  174. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.mjs +14 -0
  175. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekday.cjs +20 -0
  176. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelWeekday.mjs +18 -0
  177. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.cjs +16 -0
  178. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.mjs +14 -0
  179. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/locale/en-US.cjs +69 -0
  180. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/locale/en-US.mjs +67 -0
  181. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useMulti.cjs +59 -0
  182. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useMulti.mjs +57 -0
  183. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useRange.cjs +47 -0
  184. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useRange.mjs +45 -0
  185. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useSingle.cjs +46 -0
  186. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/selection/useSingle.mjs +44 -0
  187. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useAnimation.cjs +176 -0
  188. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useAnimation.mjs +174 -0
  189. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useCalendar.cjs +115 -0
  190. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useCalendar.mjs +113 -0
  191. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useDayPicker.cjs +28 -0
  192. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useDayPicker.mjs +25 -0
  193. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useFocus.cjs +58 -0
  194. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useFocus.mjs +56 -0
  195. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useSelection.cjs +33 -0
  196. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/useSelection.mjs +31 -0
  197. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/addToRange.cjs +97 -0
  198. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/addToRange.mjs +95 -0
  199. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.cjs +59 -0
  200. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.mjs +57 -0
  201. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs +64 -0
  202. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.mjs +62 -0
  203. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.cjs +32 -0
  204. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.mjs +30 -0
  205. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.cjs +76 -0
  206. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.mjs +74 -0
  207. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.cjs +37 -0
  208. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.mjs +35 -0
  209. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.cjs +23 -0
  210. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.mjs +21 -0
  211. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/toTimeZone.cjs +18 -0
  212. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/toTimeZone.mjs +16 -0
  213. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/typeguards.cjs +73 -0
  214. package/dist/node_modules/.pnpm/react-day-picker@9.12.0_react@19.2.0/node_modules/react-day-picker/dist/esm/utils/typeguards.mjs +66 -0
  215. package/dist/packages/better-stack/src/plugins/ai-chat/client/components/chat-interface.cjs +7 -0
  216. package/dist/packages/better-stack/src/plugins/ai-chat/client/components/chat-interface.mjs +7 -0
  217. package/dist/packages/better-stack/src/plugins/ai-chat/client/components/chat-sidebar.cjs +131 -124
  218. package/dist/packages/better-stack/src/plugins/ai-chat/client/components/chat-sidebar.mjs +131 -124
  219. package/dist/packages/better-stack/src/plugins/ai-chat/schemas.cjs +23 -23
  220. package/dist/packages/better-stack/src/plugins/blog/api/plugin.cjs +28 -12
  221. package/dist/packages/better-stack/src/plugins/blog/api/plugin.mjs +18 -2
  222. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/form-page-skeleton.cjs +1 -1
  223. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/form-page-skeleton.mjs +1 -1
  224. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/list-page-skeleton.cjs +1 -1
  225. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/list-page-skeleton.mjs +1 -1
  226. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/post-page-skeleton.cjs +1 -1
  227. package/dist/packages/better-stack/src/plugins/blog/client/components/loading/post-page-skeleton.mjs +1 -1
  228. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/edit-post-page.internal.cjs +7 -6
  229. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/edit-post-page.internal.mjs +7 -6
  230. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/home-page.internal.cjs +9 -7
  231. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/home-page.internal.mjs +9 -7
  232. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/new-post-page.internal.cjs +7 -6
  233. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/new-post-page.internal.mjs +7 -6
  234. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +7 -5
  235. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +7 -5
  236. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/tag-page.internal.cjs +5 -3
  237. package/dist/packages/better-stack/src/plugins/blog/client/components/pages/tag-page.internal.mjs +5 -3
  238. package/dist/packages/better-stack/src/plugins/blog/client/components/shared/page-wrapper.cjs +10 -6
  239. package/dist/packages/better-stack/src/plugins/blog/client/components/shared/page-wrapper.mjs +11 -7
  240. package/dist/packages/better-stack/src/plugins/blog/client/plugin.cjs +6 -6
  241. package/dist/packages/better-stack/src/plugins/blog/client/plugin.mjs +6 -6
  242. package/dist/packages/better-stack/src/plugins/blog/schemas.cjs +17 -17
  243. package/dist/packages/better-stack/src/plugins/cms/api/plugin.cjs +457 -0
  244. package/dist/packages/better-stack/src/plugins/cms/api/plugin.mjs +455 -0
  245. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.cjs +299 -0
  246. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.mjs +297 -0
  247. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/file-upload.cjs +118 -0
  248. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/file-upload.mjs +116 -0
  249. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/dashboard-skeleton.cjs +18 -0
  250. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/dashboard-skeleton.mjs +16 -0
  251. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/editor-skeleton.cjs +32 -0
  252. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/editor-skeleton.mjs +30 -0
  253. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/list-skeleton.cjs +32 -0
  254. package/dist/packages/better-stack/src/plugins/cms/client/components/loading/list-skeleton.mjs +30 -0
  255. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/404-page.cjs +20 -0
  256. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/404-page.mjs +18 -0
  257. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.cjs +46 -0
  258. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +100 -0
  259. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +98 -0
  260. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.mjs +44 -0
  261. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.cjs +43 -0
  262. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.internal.cjs +165 -0
  263. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.internal.mjs +163 -0
  264. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-list-page.mjs +41 -0
  265. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.cjs +39 -0
  266. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.internal.cjs +84 -0
  267. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.internal.mjs +82 -0
  268. package/dist/packages/better-stack/src/plugins/cms/client/components/pages/dashboard-page.mjs +37 -0
  269. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/default-error.cjs +17 -0
  270. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/default-error.mjs +15 -0
  271. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/empty-state.cjs +16 -0
  272. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/empty-state.mjs +14 -0
  273. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/page-wrapper.cjs +27 -0
  274. package/dist/packages/better-stack/src/plugins/cms/client/components/shared/page-wrapper.mjs +25 -0
  275. package/dist/packages/better-stack/src/plugins/cms/client/hooks/cms-hooks.cjs +402 -0
  276. package/dist/packages/better-stack/src/plugins/cms/client/hooks/cms-hooks.mjs +390 -0
  277. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-common.cjs +29 -0
  278. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-common.mjs +27 -0
  279. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-dashboard.cjs +13 -0
  280. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-dashboard.mjs +11 -0
  281. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-editor.cjs +12 -0
  282. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-editor.mjs +10 -0
  283. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-list.cjs +18 -0
  284. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-list.mjs +16 -0
  285. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-toasts.cjs +12 -0
  286. package/dist/packages/better-stack/src/plugins/cms/client/localization/cms-toasts.mjs +10 -0
  287. package/dist/packages/better-stack/src/plugins/cms/client/localization/index.cjs +17 -0
  288. package/dist/packages/better-stack/src/plugins/cms/client/localization/index.mjs +15 -0
  289. package/dist/packages/better-stack/src/plugins/cms/client/plugin.cjs +275 -0
  290. package/dist/packages/better-stack/src/plugins/cms/client/plugin.mjs +273 -0
  291. package/dist/packages/better-stack/src/plugins/cms/db.cjs +76 -0
  292. package/dist/packages/better-stack/src/plugins/cms/db.mjs +74 -0
  293. package/dist/packages/better-stack/src/plugins/cms/schemas.cjs +54 -0
  294. package/dist/packages/better-stack/src/plugins/cms/schemas.mjs +49 -0
  295. package/dist/packages/better-stack/src/plugins/cms/utils.cjs +15 -0
  296. package/dist/packages/better-stack/src/plugins/cms/utils.mjs +9 -0
  297. package/dist/packages/ui/src/components/calendar.cjs +205 -0
  298. package/dist/packages/ui/src/components/calendar.mjs +188 -0
  299. package/dist/packages/ui/src/components/checkbox.cjs +34 -0
  300. package/dist/packages/ui/src/components/checkbox.mjs +32 -0
  301. package/dist/packages/ui/src/components/date-picker.cjs +41 -0
  302. package/dist/packages/ui/src/components/date-picker.mjs +39 -0
  303. package/dist/packages/ui/src/components/form.mjs +1 -1
  304. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/components}/page-layout.cjs +2 -1
  305. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/components}/page-layout.mjs +2 -1
  306. package/dist/packages/ui/src/components/page-wrapper.cjs +20 -0
  307. package/dist/packages/ui/src/components/page-wrapper.mjs +18 -0
  308. package/dist/packages/ui/src/components/popover.cjs +41 -0
  309. package/dist/packages/ui/src/components/popover.mjs +37 -0
  310. package/dist/packages/ui/src/components/radio-group.cjs +48 -0
  311. package/dist/packages/ui/src/components/radio-group.mjs +45 -0
  312. package/dist/packages/ui/src/components/separator.cjs +29 -0
  313. package/dist/packages/ui/src/components/separator.mjs +27 -0
  314. package/dist/packages/ui/src/components/table.cjs +89 -0
  315. package/dist/packages/ui/src/components/table.mjs +82 -0
  316. package/dist/packages/ui/src/components/ui/auto-form/common/label.cjs +18 -0
  317. package/dist/packages/ui/src/components/ui/auto-form/common/label.mjs +16 -0
  318. package/dist/packages/ui/src/components/ui/auto-form/common/tooltip.cjs +9 -0
  319. package/dist/packages/ui/src/components/ui/auto-form/common/tooltip.mjs +7 -0
  320. package/dist/packages/ui/src/components/ui/auto-form/config.cjs +42 -0
  321. package/dist/packages/ui/src/components/ui/auto-form/config.mjs +39 -0
  322. package/dist/packages/ui/src/components/ui/auto-form/dependencies.cjs +48 -0
  323. package/dist/packages/ui/src/components/ui/auto-form/dependencies.mjs +46 -0
  324. package/dist/packages/ui/src/components/ui/auto-form/fields/array.cjs +103 -0
  325. package/dist/packages/ui/src/components/ui/auto-form/fields/array.mjs +87 -0
  326. package/dist/packages/ui/src/components/ui/auto-form/fields/checkbox.cjs +38 -0
  327. package/dist/packages/ui/src/components/ui/auto-form/fields/checkbox.mjs +36 -0
  328. package/dist/packages/ui/src/components/ui/auto-form/fields/date.cjs +37 -0
  329. package/dist/packages/ui/src/components/ui/auto-form/fields/date.mjs +35 -0
  330. package/dist/packages/ui/src/components/ui/auto-form/fields/enum.cjs +73 -0
  331. package/dist/packages/ui/src/components/ui/auto-form/fields/enum.mjs +71 -0
  332. package/dist/packages/ui/src/components/ui/auto-form/fields/file.cjs +63 -0
  333. package/dist/packages/ui/src/components/ui/auto-form/fields/file.mjs +61 -0
  334. package/dist/packages/ui/src/components/ui/auto-form/fields/input.cjs +32 -0
  335. package/dist/packages/ui/src/components/ui/auto-form/fields/input.mjs +30 -0
  336. package/dist/packages/ui/src/components/ui/auto-form/fields/number.cjs +31 -0
  337. package/dist/packages/ui/src/components/ui/auto-form/fields/number.mjs +29 -0
  338. package/dist/packages/ui/src/components/ui/auto-form/fields/object.cjs +149 -0
  339. package/dist/packages/ui/src/components/ui/auto-form/fields/object.mjs +133 -0
  340. package/dist/packages/ui/src/components/ui/auto-form/fields/radio-group.cjs +67 -0
  341. package/dist/packages/ui/src/components/ui/auto-form/fields/radio-group.mjs +65 -0
  342. package/dist/packages/ui/src/components/ui/auto-form/fields/switch.cjs +38 -0
  343. package/dist/packages/ui/src/components/ui/auto-form/fields/switch.mjs +36 -0
  344. package/dist/packages/ui/src/components/ui/auto-form/fields/textarea.cjs +31 -0
  345. package/dist/packages/ui/src/components/ui/auto-form/fields/textarea.mjs +29 -0
  346. package/dist/packages/ui/src/components/ui/auto-form/index.cjs +87 -0
  347. package/dist/packages/ui/src/components/ui/auto-form/index.mjs +78 -0
  348. package/dist/packages/ui/src/components/ui/auto-form/types.cjs +11 -0
  349. package/dist/packages/ui/src/components/ui/auto-form/types.mjs +9 -0
  350. package/dist/packages/ui/src/components/ui/auto-form/utils.cjs +179 -0
  351. package/dist/packages/ui/src/components/ui/auto-form/utils.mjs +169 -0
  352. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/hooks}/use-route-lifecycle.cjs +8 -9
  353. package/dist/packages/{better-stack/src/plugins/blog/client/components/shared → ui/src/hooks}/use-route-lifecycle.mjs +1 -2
  354. package/dist/plugins/ai-chat/api/index.d.cts +1 -1
  355. package/dist/plugins/ai-chat/api/index.d.mts +1 -1
  356. package/dist/plugins/ai-chat/api/index.d.ts +1 -1
  357. package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -1
  358. package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -1
  359. package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -1
  360. package/dist/plugins/ai-chat/query-keys.d.cts +56 -250
  361. package/dist/plugins/ai-chat/query-keys.d.mts +56 -250
  362. package/dist/plugins/ai-chat/query-keys.d.ts +56 -250
  363. package/dist/plugins/blog/api/index.d.cts +1 -1
  364. package/dist/plugins/blog/api/index.d.mts +1 -1
  365. package/dist/plugins/blog/api/index.d.ts +1 -1
  366. package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
  367. package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
  368. package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
  369. package/dist/plugins/blog/client/index.d.cts +1 -1
  370. package/dist/plugins/blog/client/index.d.mts +1 -1
  371. package/dist/plugins/blog/client/index.d.ts +1 -1
  372. package/dist/plugins/blog/query-keys.d.cts +103 -363
  373. package/dist/plugins/blog/query-keys.d.mts +103 -363
  374. package/dist/plugins/blog/query-keys.d.ts +103 -363
  375. package/dist/plugins/cms/api/index.cjs +7 -0
  376. package/dist/plugins/cms/api/index.d.cts +101 -0
  377. package/dist/plugins/cms/api/index.d.mts +101 -0
  378. package/dist/plugins/cms/api/index.d.ts +101 -0
  379. package/dist/plugins/cms/api/index.mjs +1 -0
  380. package/dist/plugins/cms/client/components/index.cjs +14 -0
  381. package/dist/plugins/cms/client/components/index.d.cts +20 -0
  382. package/dist/plugins/cms/client/components/index.d.mts +20 -0
  383. package/dist/plugins/cms/client/components/index.d.ts +20 -0
  384. package/dist/plugins/cms/client/components/index.mjs +10 -0
  385. package/dist/plugins/cms/client/hooks/index.cjs +17 -0
  386. package/dist/plugins/cms/client/hooks/index.d.cts +203 -0
  387. package/dist/plugins/cms/client/hooks/index.d.mts +203 -0
  388. package/dist/plugins/cms/client/hooks/index.d.ts +203 -0
  389. package/dist/plugins/cms/client/hooks/index.mjs +1 -0
  390. package/dist/plugins/cms/client/index.cjs +9 -0
  391. package/dist/plugins/cms/client/index.d.cts +409 -0
  392. package/dist/plugins/cms/client/index.d.mts +409 -0
  393. package/dist/plugins/cms/client/index.d.ts +409 -0
  394. package/dist/plugins/cms/client/index.mjs +2 -0
  395. package/dist/plugins/cms/client.css +2 -0
  396. package/dist/plugins/cms/query-keys.cjs +137 -0
  397. package/dist/plugins/cms/query-keys.d.cts +79 -0
  398. package/dist/plugins/cms/query-keys.d.mts +79 -0
  399. package/dist/plugins/cms/query-keys.d.ts +79 -0
  400. package/dist/plugins/cms/query-keys.mjs +135 -0
  401. package/dist/plugins/cms/style.css +19 -0
  402. package/dist/shared/stack.BwkyFwF8.d.cts +135 -0
  403. package/dist/shared/stack.DBqxCs0V.d.mts +135 -0
  404. package/dist/shared/stack.DwnJA87a.d.ts +135 -0
  405. package/dist/shared/stack.NZJogTUn.d.cts +66 -0
  406. package/dist/shared/stack.NZJogTUn.d.mts +66 -0
  407. package/dist/shared/stack.NZJogTUn.d.ts +66 -0
  408. package/package.json +58 -5
  409. package/src/plugins/ai-chat/client/components/chat-interface.tsx +15 -0
  410. package/src/plugins/ai-chat/client/components/chat-sidebar.tsx +4 -1
  411. package/src/plugins/blog/api/plugin.ts +29 -2
  412. package/src/plugins/blog/client/components/loading/form-page-skeleton.tsx +1 -1
  413. package/src/plugins/blog/client/components/loading/list-page-skeleton.tsx +1 -1
  414. package/src/plugins/blog/client/components/loading/post-page-skeleton.tsx +1 -1
  415. package/src/plugins/blog/client/components/pages/edit-post-page.internal.tsx +4 -3
  416. package/src/plugins/blog/client/components/pages/home-page.internal.tsx +4 -2
  417. package/src/plugins/blog/client/components/pages/new-post-page.internal.tsx +4 -3
  418. package/src/plugins/blog/client/components/pages/post-page.internal.tsx +4 -2
  419. package/src/plugins/blog/client/components/pages/tag-page.internal.tsx +4 -2
  420. package/src/plugins/blog/client/components/shared/page-wrapper.tsx +9 -9
  421. package/src/plugins/blog/client/plugin.tsx +10 -9
  422. package/src/plugins/cms/__tests__/schema-roundtrip.test.ts +611 -0
  423. package/src/plugins/cms/api/index.ts +1 -0
  424. package/src/plugins/cms/api/plugin.ts +611 -0
  425. package/src/plugins/cms/client/components/forms/content-form.tsx +477 -0
  426. package/src/plugins/cms/client/components/forms/file-upload.tsx +164 -0
  427. package/src/plugins/cms/client/components/index.tsx +10 -0
  428. package/src/plugins/cms/client/components/loading/dashboard-skeleton.tsx +22 -0
  429. package/src/plugins/cms/client/components/loading/editor-skeleton.tsx +35 -0
  430. package/src/plugins/cms/client/components/loading/index.tsx +3 -0
  431. package/src/plugins/cms/client/components/loading/list-skeleton.tsx +38 -0
  432. package/src/plugins/cms/client/components/pages/404-page.tsx +27 -0
  433. package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +139 -0
  434. package/src/plugins/cms/client/components/pages/content-editor-page.tsx +50 -0
  435. package/src/plugins/cms/client/components/pages/content-list-page.internal.tsx +213 -0
  436. package/src/plugins/cms/client/components/pages/content-list-page.tsx +45 -0
  437. package/src/plugins/cms/client/components/pages/dashboard-page.internal.tsx +111 -0
  438. package/src/plugins/cms/client/components/pages/dashboard-page.tsx +37 -0
  439. package/src/plugins/cms/client/components/shared/default-error.tsx +30 -0
  440. package/src/plugins/cms/client/components/shared/empty-state.tsx +26 -0
  441. package/src/plugins/cms/client/components/shared/page-wrapper.tsx +32 -0
  442. package/src/plugins/cms/client/components/shared/pagination.tsx +72 -0
  443. package/src/plugins/cms/client/hooks/cms-hooks.tsx +724 -0
  444. package/src/plugins/cms/client/hooks/index.tsx +1 -0
  445. package/src/plugins/cms/client/index.ts +13 -0
  446. package/src/plugins/cms/client/localization/cms-common.ts +29 -0
  447. package/src/plugins/cms/client/localization/cms-dashboard.ts +10 -0
  448. package/src/plugins/cms/client/localization/cms-editor.ts +8 -0
  449. package/src/plugins/cms/client/localization/cms-list.ts +14 -0
  450. package/src/plugins/cms/client/localization/cms-toasts.ts +8 -0
  451. package/src/plugins/cms/client/localization/index.ts +15 -0
  452. package/src/plugins/cms/client/overrides.ts +166 -0
  453. package/src/plugins/cms/client/plugin.tsx +494 -0
  454. package/src/plugins/cms/client.css +2 -0
  455. package/src/plugins/cms/db.ts +76 -0
  456. package/src/plugins/cms/query-keys.ts +186 -0
  457. package/src/plugins/cms/schemas.ts +81 -0
  458. package/src/plugins/cms/style.css +19 -0
  459. package/src/plugins/cms/types.ts +220 -0
  460. package/src/plugins/cms/utils.ts +11 -0
  461. package/src/plugins/blog/client/components/shared/page-layout.tsx +0 -23
  462. package/src/plugins/blog/client/components/shared/use-route-lifecycle.tsx +0 -68
  463. package/dist/shared/{stack.CcI4sYJP.d.cts → stack.DLhzx1-D.d.cts} +1 -1
  464. package/dist/shared/{stack.CcI4sYJP.d.mts → stack.DLhzx1-D.d.mts} +1 -1
  465. package/dist/shared/{stack.CcI4sYJP.d.ts → stack.DLhzx1-D.d.ts} +1 -1
@@ -0,0 +1,135 @@
1
+ import { z } from 'zod';
2
+ import { A as AutoFormFieldType } from './stack.NZJogTUn.js';
3
+
4
+ /**
5
+ * Configuration for a content type defined by the developer
6
+ */
7
+ interface ContentTypeConfig {
8
+ /** Display name for the content type (e.g., "Product", "Testimonial") */
9
+ name: string;
10
+ /** URL-friendly slug (e.g., "product", "testimonial") */
11
+ slug: string;
12
+ /** Optional description shown in the admin UI */
13
+ description?: string;
14
+ /** Zod schema defining the content type's fields */
15
+ 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
+ }
27
+ /**
28
+ * Content type stored in the database
29
+ */
30
+ type ContentType = {
31
+ id: string;
32
+ /** Display name */
33
+ name: string;
34
+ /** URL-friendly slug - unique identifier */
35
+ slug: string;
36
+ /** Optional description */
37
+ description?: string;
38
+ /** JSON Schema representation of the Zod schema (stringified) */
39
+ jsonSchema: string;
40
+ /** Optional field configuration JSON (stringified) */
41
+ fieldConfig?: string;
42
+ createdAt: Date;
43
+ updatedAt: Date;
44
+ };
45
+ /**
46
+ * Content item stored in the database
47
+ */
48
+ type ContentItem = {
49
+ id: string;
50
+ /** Reference to the content type */
51
+ contentTypeId: string;
52
+ /** URL-friendly slug - unique within content type */
53
+ slug: string;
54
+ /** JSON data matching the content type's schema (stringified) */
55
+ data: string;
56
+ /** Optional author ID for tracking who created/modified */
57
+ authorId?: string;
58
+ createdAt: Date;
59
+ updatedAt: Date;
60
+ };
61
+ /**
62
+ * Serialized content type for API responses (dates as strings)
63
+ */
64
+ interface SerializedContentType extends Omit<ContentType, "createdAt" | "updatedAt"> {
65
+ createdAt: string;
66
+ updatedAt: string;
67
+ }
68
+ /**
69
+ * Serialized content item for API responses (dates as strings)
70
+ */
71
+ interface SerializedContentItem extends Omit<ContentItem, "createdAt" | "updatedAt"> {
72
+ createdAt: string;
73
+ updatedAt: string;
74
+ }
75
+ /**
76
+ * Serialized content item with parsed data and joined content type
77
+ * @template TData - The type of the parsed data (defaults to Record<string, unknown>)
78
+ */
79
+ interface SerializedContentItemWithType<TData = Record<string, unknown>> extends SerializedContentItem {
80
+ /** Parsed data object (JSON.parse of data field) */
81
+ parsedData: TData;
82
+ /** Joined content type */
83
+ contentType?: SerializedContentType;
84
+ }
85
+ /**
86
+ * Paginated list response for content items
87
+ * @template TData - The type of the parsed data (defaults to Record<string, unknown>)
88
+ */
89
+ interface PaginatedContentItems<TData = Record<string, unknown>> {
90
+ items: SerializedContentItemWithType<TData>[];
91
+ total: number;
92
+ limit: number;
93
+ offset: number;
94
+ }
95
+ /**
96
+ * Context passed to CMS backend hooks
97
+ */
98
+ interface CMSHookContext {
99
+ /** Content type slug */
100
+ typeSlug: string;
101
+ /** User ID if authenticated */
102
+ userId?: string;
103
+ /** Request headers */
104
+ headers?: Headers;
105
+ }
106
+ /**
107
+ * Hooks for customizing CMS backend behavior
108
+ */
109
+ interface CMSBackendHooks {
110
+ /** Called before creating a content item */
111
+ onBeforeCreate?: (data: Record<string, unknown>, context: CMSHookContext) => Promise<Record<string, unknown> | false> | Record<string, unknown> | false;
112
+ /** Called after creating a content item */
113
+ onAfterCreate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
114
+ /** Called before updating a content item */
115
+ onBeforeUpdate?: (id: string, data: Record<string, unknown>, context: CMSHookContext) => Promise<Record<string, unknown> | false> | Record<string, unknown> | false;
116
+ /** Called after updating a content item */
117
+ onAfterUpdate?: (item: SerializedContentItem, context: CMSHookContext) => Promise<void> | void;
118
+ /** Called before deleting a content item */
119
+ onBeforeDelete?: (id: string, context: CMSHookContext) => Promise<boolean> | boolean;
120
+ /** Called after deleting a content item */
121
+ onAfterDelete?: (id: string, context: CMSHookContext) => Promise<void> | void;
122
+ /** Called on any CMS error */
123
+ onError?: (error: Error, operation: "create" | "update" | "delete" | "list" | "get", context: CMSHookContext) => Promise<void> | void;
124
+ }
125
+ /**
126
+ * Configuration for the CMS backend plugin
127
+ */
128
+ interface CMSBackendConfig {
129
+ /** Content types defined by the developer */
130
+ contentTypes: ContentTypeConfig[];
131
+ /** Optional hooks for customizing behavior */
132
+ hooks?: CMSBackendHooks;
133
+ }
134
+
135
+ export type { CMSBackendConfig as C, PaginatedContentItems as P, SerializedContentType as S, SerializedContentItemWithType as a };
@@ -0,0 +1,66 @@
1
+ import { ControllerRenderProps, FieldValues } from 'react-hook-form';
2
+ import * as zod from 'zod';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+
5
+ declare function AutoFormCheckbox({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
6
+
7
+ declare function AutoFormDate({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
8
+
9
+ declare function AutoFormEnum({ label, isRequired, field, fieldConfigItem, zodItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
10
+
11
+ declare function AutoFormFile({ label, isRequired, fieldConfigItem, fieldProps, field, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
12
+
13
+ declare function AutoFormInput({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
14
+
15
+ declare function AutoFormNumber({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
16
+
17
+ declare function AutoFormRadioGroup({ label, isRequired, field, zodItem, fieldProps, fieldConfigItem, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
18
+
19
+ declare function AutoFormSwitch({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
20
+
21
+ declare function AutoFormTextarea({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
22
+
23
+ declare const INPUT_COMPONENTS: {
24
+ checkbox: typeof AutoFormCheckbox;
25
+ date: typeof AutoFormDate;
26
+ select: typeof AutoFormEnum;
27
+ radio: typeof AutoFormRadioGroup;
28
+ switch: typeof AutoFormSwitch;
29
+ textarea: typeof AutoFormTextarea;
30
+ number: typeof AutoFormNumber;
31
+ file: typeof AutoFormFile;
32
+ fallback: typeof AutoFormInput;
33
+ };
34
+
35
+ /**
36
+ * Available field types for AutoForm fieldConfig.
37
+ * These map to the input components in ./config.ts
38
+ */
39
+ type AutoFormFieldType = keyof typeof INPUT_COMPONENTS;
40
+ type FieldConfigItem = {
41
+ description?: React.ReactNode;
42
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement> & React.TextareaHTMLAttributes<HTMLTextAreaElement> & {
43
+ showLabel?: boolean;
44
+ };
45
+ label?: string;
46
+ fieldType?: keyof typeof INPUT_COMPONENTS | React.FC<AutoFormInputComponentProps>;
47
+ renderParent?: (props: {
48
+ children: React.ReactNode;
49
+ }) => React.ReactElement | null;
50
+ order?: number;
51
+ };
52
+ /**
53
+ * A FormInput component can handle a specific Zod type (e.g. "ZodBoolean")
54
+ */
55
+ type AutoFormInputComponentProps = {
56
+ zodInputProps: React.InputHTMLAttributes<HTMLInputElement>;
57
+ field: ControllerRenderProps<FieldValues, any>;
58
+ fieldConfigItem: FieldConfigItem;
59
+ label: string;
60
+ isRequired: boolean;
61
+ fieldProps: any;
62
+ zodItem: zod.ZodType;
63
+ className?: string;
64
+ };
65
+
66
+ export type { AutoFormFieldType as A, AutoFormInputComponentProps as a };
@@ -0,0 +1,66 @@
1
+ import { ControllerRenderProps, FieldValues } from 'react-hook-form';
2
+ import * as zod from 'zod';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+
5
+ declare function AutoFormCheckbox({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
6
+
7
+ declare function AutoFormDate({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
8
+
9
+ declare function AutoFormEnum({ label, isRequired, field, fieldConfigItem, zodItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
10
+
11
+ declare function AutoFormFile({ label, isRequired, fieldConfigItem, fieldProps, field, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
12
+
13
+ declare function AutoFormInput({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
14
+
15
+ declare function AutoFormNumber({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
16
+
17
+ declare function AutoFormRadioGroup({ label, isRequired, field, zodItem, fieldProps, fieldConfigItem, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
18
+
19
+ declare function AutoFormSwitch({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
20
+
21
+ declare function AutoFormTextarea({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
22
+
23
+ declare const INPUT_COMPONENTS: {
24
+ checkbox: typeof AutoFormCheckbox;
25
+ date: typeof AutoFormDate;
26
+ select: typeof AutoFormEnum;
27
+ radio: typeof AutoFormRadioGroup;
28
+ switch: typeof AutoFormSwitch;
29
+ textarea: typeof AutoFormTextarea;
30
+ number: typeof AutoFormNumber;
31
+ file: typeof AutoFormFile;
32
+ fallback: typeof AutoFormInput;
33
+ };
34
+
35
+ /**
36
+ * Available field types for AutoForm fieldConfig.
37
+ * These map to the input components in ./config.ts
38
+ */
39
+ type AutoFormFieldType = keyof typeof INPUT_COMPONENTS;
40
+ type FieldConfigItem = {
41
+ description?: React.ReactNode;
42
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement> & React.TextareaHTMLAttributes<HTMLTextAreaElement> & {
43
+ showLabel?: boolean;
44
+ };
45
+ label?: string;
46
+ fieldType?: keyof typeof INPUT_COMPONENTS | React.FC<AutoFormInputComponentProps>;
47
+ renderParent?: (props: {
48
+ children: React.ReactNode;
49
+ }) => React.ReactElement | null;
50
+ order?: number;
51
+ };
52
+ /**
53
+ * A FormInput component can handle a specific Zod type (e.g. "ZodBoolean")
54
+ */
55
+ type AutoFormInputComponentProps = {
56
+ zodInputProps: React.InputHTMLAttributes<HTMLInputElement>;
57
+ field: ControllerRenderProps<FieldValues, any>;
58
+ fieldConfigItem: FieldConfigItem;
59
+ label: string;
60
+ isRequired: boolean;
61
+ fieldProps: any;
62
+ zodItem: zod.ZodType;
63
+ className?: string;
64
+ };
65
+
66
+ export type { AutoFormFieldType as A, AutoFormInputComponentProps as a };
@@ -0,0 +1,66 @@
1
+ import { ControllerRenderProps, FieldValues } from 'react-hook-form';
2
+ import * as zod from 'zod';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+
5
+ declare function AutoFormCheckbox({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
6
+
7
+ declare function AutoFormDate({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
8
+
9
+ declare function AutoFormEnum({ label, isRequired, field, fieldConfigItem, zodItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
10
+
11
+ declare function AutoFormFile({ label, isRequired, fieldConfigItem, fieldProps, field, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
12
+
13
+ declare function AutoFormInput({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
14
+
15
+ declare function AutoFormNumber({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
16
+
17
+ declare function AutoFormRadioGroup({ label, isRequired, field, zodItem, fieldProps, fieldConfigItem, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
18
+
19
+ declare function AutoFormSwitch({ label, isRequired, field, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
20
+
21
+ declare function AutoFormTextarea({ label, isRequired, fieldConfigItem, fieldProps, }: AutoFormInputComponentProps): react_jsx_runtime.JSX.Element;
22
+
23
+ declare const INPUT_COMPONENTS: {
24
+ checkbox: typeof AutoFormCheckbox;
25
+ date: typeof AutoFormDate;
26
+ select: typeof AutoFormEnum;
27
+ radio: typeof AutoFormRadioGroup;
28
+ switch: typeof AutoFormSwitch;
29
+ textarea: typeof AutoFormTextarea;
30
+ number: typeof AutoFormNumber;
31
+ file: typeof AutoFormFile;
32
+ fallback: typeof AutoFormInput;
33
+ };
34
+
35
+ /**
36
+ * Available field types for AutoForm fieldConfig.
37
+ * These map to the input components in ./config.ts
38
+ */
39
+ type AutoFormFieldType = keyof typeof INPUT_COMPONENTS;
40
+ type FieldConfigItem = {
41
+ description?: React.ReactNode;
42
+ inputProps?: React.InputHTMLAttributes<HTMLInputElement> & React.TextareaHTMLAttributes<HTMLTextAreaElement> & {
43
+ showLabel?: boolean;
44
+ };
45
+ label?: string;
46
+ fieldType?: keyof typeof INPUT_COMPONENTS | React.FC<AutoFormInputComponentProps>;
47
+ renderParent?: (props: {
48
+ children: React.ReactNode;
49
+ }) => React.ReactElement | null;
50
+ order?: number;
51
+ };
52
+ /**
53
+ * A FormInput component can handle a specific Zod type (e.g. "ZodBoolean")
54
+ */
55
+ type AutoFormInputComponentProps = {
56
+ zodInputProps: React.InputHTMLAttributes<HTMLInputElement>;
57
+ field: ControllerRenderProps<FieldValues, any>;
58
+ fieldConfigItem: FieldConfigItem;
59
+ label: string;
60
+ isRequired: boolean;
61
+ fieldProps: any;
62
+ zodItem: zod.ZodType;
63
+ className?: string;
64
+ };
65
+
66
+ export type { AutoFormFieldType as A, AutoFormInputComponentProps as a };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@btst/stack",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "A composable, plugin-based library for building full-stack applications.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -165,6 +165,47 @@
165
165
  },
166
166
  "./plugins/ai-chat/css": "./dist/plugins/ai-chat/style.css",
167
167
  "./plugins/blog/css": "./dist/plugins/blog/style.css",
168
+ "./plugins/cms/api": {
169
+ "import": {
170
+ "types": "./dist/plugins/cms/api/index.d.ts",
171
+ "default": "./dist/plugins/cms/api/index.mjs"
172
+ },
173
+ "require": {
174
+ "types": "./dist/plugins/cms/api/index.d.cts",
175
+ "default": "./dist/plugins/cms/api/index.cjs"
176
+ }
177
+ },
178
+ "./plugins/cms/client": {
179
+ "import": {
180
+ "types": "./dist/plugins/cms/client/index.d.ts",
181
+ "default": "./dist/plugins/cms/client/index.mjs"
182
+ },
183
+ "require": {
184
+ "types": "./dist/plugins/cms/client/index.d.cts",
185
+ "default": "./dist/plugins/cms/client/index.cjs"
186
+ }
187
+ },
188
+ "./plugins/cms/client/components": {
189
+ "import": {
190
+ "types": "./dist/plugins/cms/client/components/index.d.ts",
191
+ "default": "./dist/plugins/cms/client/components/index.mjs"
192
+ },
193
+ "require": {
194
+ "types": "./dist/plugins/cms/client/components/index.d.cts",
195
+ "default": "./dist/plugins/cms/client/components/index.cjs"
196
+ }
197
+ },
198
+ "./plugins/cms/client/hooks": {
199
+ "import": {
200
+ "types": "./dist/plugins/cms/client/hooks/index.d.ts",
201
+ "default": "./dist/plugins/cms/client/hooks/index.mjs"
202
+ },
203
+ "require": {
204
+ "types": "./dist/plugins/cms/client/hooks/index.d.cts",
205
+ "default": "./dist/plugins/cms/client/hooks/index.cjs"
206
+ }
207
+ },
208
+ "./plugins/cms/css": "./dist/plugins/cms/style.css",
168
209
  "./dist/*": "./dist/*",
169
210
  "./ui/css": "./dist/ui/components.css",
170
211
  "./package.json": "./package.json"
@@ -206,6 +247,18 @@
206
247
  ],
207
248
  "plugins/ai-chat/client/hooks": [
208
249
  "./dist/plugins/ai-chat/client/hooks/index.d.ts"
250
+ ],
251
+ "plugins/cms/api": [
252
+ "./dist/plugins/cms/api/index.d.ts"
253
+ ],
254
+ "plugins/cms/client": [
255
+ "./dist/plugins/cms/client/index.d.ts"
256
+ ],
257
+ "plugins/cms/client/components": [
258
+ "./dist/plugins/cms/client/components/index.d.ts"
259
+ ],
260
+ "plugins/cms/client/hooks": [
261
+ "./dist/plugins/cms/client/hooks/index.d.ts"
209
262
  ]
210
263
  }
211
264
  },
@@ -227,7 +280,7 @@
227
280
  "@radix-ui/react-switch": ">=1.1.0",
228
281
  "@tanstack/react-query": "^5.0.0",
229
282
  "ai": ">=5.0.0",
230
- "better-call": ">=1.0.0",
283
+ "better-call": ">=1.1.5",
231
284
  "class-variance-authority": ">=0.7.0",
232
285
  "clsx": ">=2.1.0",
233
286
  "cmdk": ">=1.1.0",
@@ -249,7 +302,7 @@
249
302
  "sonner": ">=2.0.0",
250
303
  "tailwind-merge": ">=2.6.0",
251
304
  "tailwindcss": ">=3.0.0",
252
- "zod": ">=3.24.0"
305
+ "zod": ">=4.2.0"
253
306
  },
254
307
  "devDependencies": {
255
308
  "@ai-sdk/react": "^2.0.94",
@@ -259,7 +312,7 @@
259
312
  "@types/slug": "^5.0.9",
260
313
  "@workspace/ui": "workspace:*",
261
314
  "ai": "^5.0.94",
262
- "better-call": "1.0.19",
315
+ "better-call": "catalog:",
263
316
  "react": "^19.1.1",
264
317
  "react-dom": "^19.1.1",
265
318
  "react-error-boundary": "^4.1.2",
@@ -268,7 +321,7 @@
268
321
  "typescript": "catalog:",
269
322
  "unbuild": "catalog:",
270
323
  "vitest": "catalog:",
271
- "vue": "^3.5.18"
324
+ "zod": "^4.2.0"
272
325
  },
273
326
  "files": [
274
327
  "dist",
@@ -85,6 +85,8 @@ export function ChatInterface({
85
85
  setCurrentConversationId(id);
86
86
  isFirstMessageSentRef.current = false;
87
87
  hasNavigatedRef.current = false;
88
+ // Reset edit flag on navigation
89
+ isEditInProgressRef.current = false;
88
90
  }
89
91
  }, [id, isPublicMode]);
90
92
 
@@ -112,6 +114,9 @@ export function ChatInterface({
112
114
  // Ref to track edit operation with messages to use
113
115
  const editMessagesRef = useRef<UIMessage[] | null>(null);
114
116
 
117
+ // Flag to prevent load conversation effect from overwriting messages during edit
118
+ const isEditInProgressRef = useRef(false);
119
+
115
120
  // Track if we've finished initializing messages
116
121
  // This prevents onMessagesChange from firing with an empty array before initialMessages are loaded
117
122
  // Without this guard, the effect would fire on mount with [], overwriting any saved messages
@@ -212,6 +217,10 @@ export function ChatInterface({
212
217
 
213
218
  // Load existing conversation messages when navigating to a conversation
214
219
  useEffect(() => {
220
+ // Don't overwrite messages if an edit is in progress
221
+ if (isEditInProgressRef.current) {
222
+ return;
223
+ }
215
224
  if (
216
225
  conversation?.messages &&
217
226
  conversation.messages.length > 0 &&
@@ -354,6 +363,9 @@ export function ChatInterface({
354
363
  if (pendingEdit && messages.length === pendingEdit.expectedLength) {
355
364
  const textToSend = pendingEdit.text;
356
365
  setPendingEdit(null);
366
+ // Clear edit in progress flag - the new message will now be sent
367
+ // and we want subsequent effects to work normally
368
+ isEditInProgressRef.current = false;
357
369
  sendMessage({ text: textToSend });
358
370
  }
359
371
  }, [messages.length, pendingEdit, sendMessage]);
@@ -371,6 +383,9 @@ export function ChatInterface({
371
383
  // Truncate to BEFORE the edited message (remove it and all subsequent)
372
384
  const truncatedMessages = messages.slice(0, messageIndex);
373
385
 
386
+ // Mark edit in progress to prevent load conversation effect from overwriting
387
+ isEditInProgressRef.current = true;
388
+
374
389
  // Store the truncated messages in the ref for the transport to use
375
390
  editMessagesRef.current = truncatedMessages;
376
391
 
@@ -146,7 +146,10 @@ export function ChatSidebar({
146
146
  };
147
147
 
148
148
  return (
149
- <div className={cn("flex flex-col h-full bg-muted/30 border-r", className)}>
149
+ <div
150
+ data-testid="chat-sidebar"
151
+ className={cn("flex flex-col h-full bg-muted/30 border-r", className)}
152
+ >
150
153
  {/* Header */}
151
154
  <div className="p-4 border-b">
152
155
  <Button
@@ -442,11 +442,22 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
442
442
  const { tags, ...postData } = ctx.body;
443
443
  const tagNames = tags || [];
444
444
 
445
+ // Always slugify to ensure URL-safe slug, whether provided or generated from title
446
+ const slug = slugify(postData.slug || postData.title);
447
+
448
+ // Validate that slugification produced a non-empty result
449
+ if (!slug) {
450
+ throw ctx.error(400, {
451
+ message:
452
+ "Invalid slug: must contain at least one alphanumeric character",
453
+ });
454
+ }
455
+
445
456
  const newPost = await adapter.create<Post>({
446
457
  model: "post",
447
458
  data: {
448
459
  ...postData,
449
- slug: postData.slug ? postData.slug : slugify(postData.title),
460
+ slug,
450
461
  tags: [],
451
462
  createdAt: new Date(),
452
463
  updatedAt: new Date(),
@@ -513,9 +524,25 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
513
524
  }
514
525
  }
515
526
 
516
- const { tags, ...postData } = ctx.body;
527
+ const { tags, slug: rawSlug, ...restPostData } = ctx.body;
517
528
  const tagNames = tags || [];
518
529
 
530
+ // Sanitize slug if provided to ensure it's URL-safe
531
+ const slugified = rawSlug ? slugify(rawSlug) : undefined;
532
+
533
+ // Validate that slugification produced a non-empty result (if slug was provided)
534
+ if (rawSlug && !slugified) {
535
+ throw ctx.error(400, {
536
+ message:
537
+ "Invalid slug: must contain at least one alphanumeric character",
538
+ });
539
+ }
540
+
541
+ const postData = {
542
+ ...restPostData,
543
+ ...(slugified ? { slug: slugified } : {}),
544
+ };
545
+
519
546
  const updated = await adapter.transaction(async (tx) => {
520
547
  const existingPostTags = await tx.findMany<{
521
548
  postId: string;
@@ -1,5 +1,5 @@
1
1
  import { PageHeaderSkeleton } from "./page-header-skeleton";
2
- import { PageLayout } from "../shared/page-layout";
2
+ import { PageLayout } from "@workspace/ui/components/page-layout";
3
3
  import { Skeleton } from "@workspace/ui/components/skeleton";
4
4
 
5
5
  export function FormPageSkeleton() {
@@ -1,5 +1,5 @@
1
1
  import { PageHeaderSkeleton } from "./page-header-skeleton";
2
- import { PageLayout } from "../shared/page-layout";
2
+ import { PageLayout } from "@workspace/ui/components/page-layout";
3
3
  import { PostCardSkeleton } from "./post-card-skeleton";
4
4
  import { Skeleton } from "@workspace/ui/components/skeleton";
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { PageHeaderSkeleton } from "./page-header-skeleton";
2
- import { PageLayout } from "../shared/page-layout";
2
+ import { PageLayout } from "@workspace/ui/components/page-layout";
3
3
  import { Skeleton } from "@workspace/ui/components/skeleton";
4
4
 
5
5
  export function PostPageSkeleton() {
@@ -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);