@btst/stack 2.0.1 → 2.2.0

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 (442) hide show
  1. package/dist/api/index.cjs +9 -1
  2. package/dist/api/index.d.cts +4 -4
  3. package/dist/api/index.d.mts +4 -4
  4. package/dist/api/index.d.ts +4 -4
  5. package/dist/api/index.mjs +9 -1
  6. package/dist/client/index.d.cts +2 -2
  7. package/dist/client/index.d.mts +2 -2
  8. package/dist/client/index.d.ts +2 -2
  9. package/dist/index.d.cts +1 -1
  10. package/dist/index.d.mts +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.cjs +2 -2
  13. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/UI.mjs +2 -2
  14. package/dist/packages/stack/src/plugins/ai-chat/api/getters.cjs +42 -0
  15. package/dist/packages/stack/src/plugins/ai-chat/api/getters.mjs +39 -0
  16. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +5 -0
  17. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +5 -0
  18. package/dist/packages/stack/src/plugins/blog/api/getters.cjs +131 -0
  19. package/dist/packages/stack/src/plugins/blog/api/getters.mjs +127 -0
  20. package/dist/packages/stack/src/plugins/blog/api/plugin.cjs +9 -107
  21. package/dist/packages/stack/src/plugins/blog/api/plugin.mjs +9 -107
  22. package/dist/packages/stack/src/plugins/blog/client/plugin.cjs +1 -1
  23. package/dist/packages/stack/src/plugins/blog/client/plugin.mjs +1 -1
  24. package/dist/packages/stack/src/plugins/cms/api/getters.cjs +146 -0
  25. package/dist/packages/stack/src/plugins/cms/api/getters.mjs +138 -0
  26. package/dist/packages/stack/src/plugins/cms/api/plugin.cjs +560 -622
  27. package/dist/packages/stack/src/plugins/cms/api/plugin.mjs +559 -621
  28. package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +1 -1
  29. package/dist/packages/stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +1 -1
  30. package/dist/packages/stack/src/plugins/cms/client/hooks/cms-hooks.cjs +6 -3
  31. package/dist/packages/stack/src/plugins/cms/client/hooks/cms-hooks.mjs +6 -3
  32. package/dist/packages/stack/src/plugins/form-builder/api/getters.cjs +111 -0
  33. package/dist/packages/stack/src/plugins/form-builder/api/getters.mjs +104 -0
  34. package/dist/packages/stack/src/plugins/form-builder/api/plugin.cjs +16 -88
  35. package/dist/packages/stack/src/plugins/form-builder/api/plugin.mjs +12 -84
  36. package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +1 -1
  37. package/dist/packages/stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +1 -1
  38. package/dist/packages/stack/src/plugins/kanban/api/getters.cjs +84 -0
  39. package/dist/packages/stack/src/plugins/kanban/api/getters.mjs +81 -0
  40. package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +9 -123
  41. package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +9 -123
  42. package/dist/packages/stack/src/plugins/kanban/client/plugin.cjs +1 -1
  43. package/dist/packages/stack/src/plugins/kanban/client/plugin.mjs +1 -1
  44. package/dist/packages/ui/src/components/calendar.cjs +2 -2
  45. package/dist/packages/ui/src/components/calendar.mjs +2 -2
  46. package/dist/packages/ui/src/components/sonner.cjs +34 -0
  47. package/dist/packages/ui/src/components/sonner.mjs +32 -0
  48. package/dist/packages/ui/src/components/ui-builder/components/code-panel.cjs +3 -2
  49. package/dist/packages/ui/src/components/ui-builder/components/code-panel.mjs +3 -2
  50. package/dist/packages/ui/src/components/ui-builder/index.cjs +10 -4
  51. package/dist/packages/ui/src/components/ui-builder/index.mjs +10 -4
  52. package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.cjs +22 -23
  53. package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.mjs +22 -23
  54. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu-portal.cjs +261 -0
  55. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu-portal.mjs +255 -0
  56. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu.cjs +125 -0
  57. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-context-menu.mjs +119 -0
  58. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-menu.cjs +6 -17
  59. package/dist/packages/ui/src/components/ui-builder/internal/components/layer-menu.mjs +7 -18
  60. package/dist/packages/ui/src/components/ui-builder/internal/components/nav.cjs +23 -18
  61. package/dist/packages/ui/src/components/ui-builder/internal/components/nav.mjs +23 -18
  62. package/dist/packages/ui/src/components/ui-builder/internal/components/tree-row-node.cjs +8 -23
  63. package/dist/packages/ui/src/components/ui-builder/internal/components/tree-row-node.mjs +9 -24
  64. package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.cjs +9 -41
  65. package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.mjs +9 -41
  66. package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.cjs +7 -16
  67. package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.mjs +7 -16
  68. package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.cjs +16 -11
  69. package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.mjs +16 -11
  70. package/dist/packages/ui/src/components/ui-builder/internal/utils/templates.cjs +260 -20
  71. package/dist/packages/ui/src/components/ui-builder/internal/utils/templates.mjs +260 -20
  72. package/dist/packages/ui/src/components/ui-builder/internal/variables-panel.cjs +105 -17
  73. package/dist/packages/ui/src/components/ui-builder/internal/variables-panel.mjs +107 -19
  74. package/dist/packages/ui/src/components/ui-builder/layer-renderer.cjs +4 -2
  75. package/dist/packages/ui/src/components/ui-builder/layer-renderer.mjs +4 -2
  76. package/dist/packages/ui/src/hooks/use-keyboard-shortcuts.cjs +3 -1
  77. package/dist/packages/ui/src/hooks/use-keyboard-shortcuts.mjs +3 -1
  78. package/dist/packages/ui/src/lib/ui-builder/hooks/use-layer-actions.cjs +107 -0
  79. package/dist/packages/ui/src/lib/ui-builder/hooks/use-layer-actions.mjs +105 -0
  80. package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.cjs +9 -7
  81. package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.mjs +9 -7
  82. package/dist/packages/ui/src/lib/ui-builder/shortcuts/shortcut-registry.cjs +71 -0
  83. package/dist/packages/ui/src/lib/ui-builder/shortcuts/shortcut-registry.mjs +68 -0
  84. package/dist/packages/ui/src/lib/ui-builder/store/editor-store.cjs +48 -3
  85. package/dist/packages/ui/src/lib/ui-builder/store/editor-store.mjs +48 -3
  86. package/dist/packages/ui/src/lib/ui-builder/store/layer-store.cjs +4 -1
  87. package/dist/packages/ui/src/lib/ui-builder/store/layer-store.mjs +4 -1
  88. package/dist/packages/ui/src/lib/ui-builder/store/schema-utils.cjs +8 -0
  89. package/dist/packages/ui/src/lib/ui-builder/store/schema-utils.mjs +8 -1
  90. package/dist/packages/ui/src/lib/ui-builder/utils/paste-validation.cjs +25 -0
  91. package/dist/packages/ui/src/lib/ui-builder/utils/paste-validation.mjs +23 -0
  92. package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.cjs +42 -3
  93. package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.mjs +42 -3
  94. package/dist/plugins/ai-chat/api/index.cjs +3 -0
  95. package/dist/plugins/ai-chat/api/index.d.cts +27 -4
  96. package/dist/plugins/ai-chat/api/index.d.mts +27 -4
  97. package/dist/plugins/ai-chat/api/index.d.ts +27 -4
  98. package/dist/plugins/ai-chat/api/index.mjs +1 -0
  99. package/dist/plugins/ai-chat/client/hooks/index.d.cts +2 -2
  100. package/dist/plugins/ai-chat/client/hooks/index.d.mts +2 -2
  101. package/dist/plugins/ai-chat/client/hooks/index.d.ts +2 -2
  102. package/dist/plugins/ai-chat/query-keys.d.cts +9 -284
  103. package/dist/plugins/ai-chat/query-keys.d.mts +9 -284
  104. package/dist/plugins/ai-chat/query-keys.d.ts +9 -284
  105. package/dist/plugins/api/index.d.cts +4 -3
  106. package/dist/plugins/api/index.d.mts +4 -3
  107. package/dist/plugins/api/index.d.ts +4 -3
  108. package/dist/plugins/blog/api/index.cjs +4 -0
  109. package/dist/plugins/blog/api/index.d.cts +3 -2
  110. package/dist/plugins/blog/api/index.d.mts +3 -2
  111. package/dist/plugins/blog/api/index.d.ts +3 -2
  112. package/dist/plugins/blog/api/index.mjs +1 -0
  113. package/dist/plugins/blog/client/hooks/index.d.cts +6 -6
  114. package/dist/plugins/blog/client/hooks/index.d.mts +6 -6
  115. package/dist/plugins/blog/client/hooks/index.d.ts +6 -6
  116. package/dist/plugins/blog/client/index.d.cts +1 -1
  117. package/dist/plugins/blog/client/index.d.mts +1 -1
  118. package/dist/plugins/blog/client/index.d.ts +1 -1
  119. package/dist/plugins/blog/query-keys.cjs +7 -4
  120. package/dist/plugins/blog/query-keys.d.cts +81 -27
  121. package/dist/plugins/blog/query-keys.d.mts +81 -27
  122. package/dist/plugins/blog/query-keys.d.ts +81 -27
  123. package/dist/plugins/blog/query-keys.mjs +7 -4
  124. package/dist/plugins/client/index.d.cts +2 -2
  125. package/dist/plugins/client/index.d.mts +2 -2
  126. package/dist/plugins/client/index.d.ts +2 -2
  127. package/dist/plugins/cms/api/index.cjs +4 -0
  128. package/dist/plugins/cms/api/index.d.cts +61 -5
  129. package/dist/plugins/cms/api/index.d.mts +61 -5
  130. package/dist/plugins/cms/api/index.d.ts +61 -5
  131. package/dist/plugins/cms/api/index.mjs +1 -0
  132. package/dist/plugins/cms/client/hooks/index.d.cts +1 -1
  133. package/dist/plugins/cms/client/hooks/index.d.mts +1 -1
  134. package/dist/plugins/cms/client/hooks/index.d.ts +1 -1
  135. package/dist/plugins/cms/query-keys.d.cts +2 -1
  136. package/dist/plugins/cms/query-keys.d.mts +2 -1
  137. package/dist/plugins/cms/query-keys.d.ts +2 -1
  138. package/dist/plugins/form-builder/api/index.cjs +4 -0
  139. package/dist/plugins/form-builder/api/index.d.cts +77 -7
  140. package/dist/plugins/form-builder/api/index.d.mts +77 -7
  141. package/dist/plugins/form-builder/api/index.d.ts +77 -7
  142. package/dist/plugins/form-builder/api/index.mjs +1 -0
  143. package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
  144. package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
  145. package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
  146. package/dist/plugins/form-builder/client/hooks/index.d.cts +1 -1
  147. package/dist/plugins/form-builder/client/hooks/index.d.mts +1 -1
  148. package/dist/plugins/form-builder/client/hooks/index.d.ts +1 -1
  149. package/dist/plugins/form-builder/query-keys.d.cts +2 -1
  150. package/dist/plugins/form-builder/query-keys.d.mts +2 -1
  151. package/dist/plugins/form-builder/query-keys.d.ts +2 -1
  152. package/dist/plugins/kanban/api/index.cjs +3 -0
  153. package/dist/plugins/kanban/api/index.d.cts +49 -52
  154. package/dist/plugins/kanban/api/index.d.mts +49 -52
  155. package/dist/plugins/kanban/api/index.d.ts +49 -52
  156. package/dist/plugins/kanban/api/index.mjs +1 -0
  157. package/dist/plugins/kanban/client/components/index.d.cts +1 -1
  158. package/dist/plugins/kanban/client/components/index.d.mts +1 -1
  159. package/dist/plugins/kanban/client/components/index.d.ts +1 -1
  160. package/dist/plugins/kanban/client/hooks/index.d.cts +1 -1
  161. package/dist/plugins/kanban/client/hooks/index.d.mts +1 -1
  162. package/dist/plugins/kanban/client/hooks/index.d.ts +1 -1
  163. package/dist/plugins/kanban/client/index.d.cts +1 -1
  164. package/dist/plugins/kanban/client/index.d.mts +1 -1
  165. package/dist/plugins/kanban/client/index.d.ts +1 -1
  166. package/dist/plugins/kanban/query-keys.cjs +4 -3
  167. package/dist/plugins/kanban/query-keys.d.cts +2 -1
  168. package/dist/plugins/kanban/query-keys.d.mts +2 -1
  169. package/dist/plugins/kanban/query-keys.d.ts +2 -1
  170. package/dist/plugins/kanban/query-keys.mjs +4 -3
  171. package/dist/plugins/open-api/api/index.d.cts +2 -2
  172. package/dist/plugins/open-api/api/index.d.mts +2 -2
  173. package/dist/plugins/open-api/api/index.d.ts +2 -2
  174. package/dist/plugins/route-docs/client/index.d.cts +1 -1
  175. package/dist/plugins/route-docs/client/index.d.mts +1 -1
  176. package/dist/plugins/route-docs/client/index.d.ts +1 -1
  177. package/dist/plugins/ui-builder/client/components/index.d.cts +1 -1
  178. package/dist/plugins/ui-builder/client/components/index.d.mts +1 -1
  179. package/dist/plugins/ui-builder/client/components/index.d.ts +1 -1
  180. package/dist/plugins/ui-builder/client/hooks/index.d.cts +2 -2
  181. package/dist/plugins/ui-builder/client/hooks/index.d.mts +2 -2
  182. package/dist/plugins/ui-builder/client/hooks/index.d.ts +2 -2
  183. package/dist/plugins/ui-builder/client/index.d.cts +16 -6
  184. package/dist/plugins/ui-builder/client/index.d.mts +16 -6
  185. package/dist/plugins/ui-builder/client/index.d.ts +16 -6
  186. package/dist/plugins/ui-builder/index.d.cts +3 -3
  187. package/dist/plugins/ui-builder/index.d.mts +3 -3
  188. package/dist/plugins/ui-builder/index.d.ts +3 -3
  189. package/dist/shared/{stack.DYCFcnkL.d.mts → stack.6fUOjLs9.d.mts} +1 -1
  190. package/dist/shared/{stack.BoA0xkJv.d.mts → stack.7n9Y_u7N.d.cts} +33 -7
  191. package/dist/shared/{stack.BoA0xkJv.d.cts → stack.7n9Y_u7N.d.mts} +33 -7
  192. package/dist/shared/{stack.BoA0xkJv.d.ts → stack.7n9Y_u7N.d.ts} +33 -7
  193. package/dist/shared/{stack.BdJFrdyt.d.cts → stack.B-YHz18S.d.cts} +2 -2
  194. package/dist/shared/stack.BeSm90va.d.ts +289 -0
  195. package/dist/shared/{stack.kFbDspnF.d.ts → stack.C-Ptrz8s.d.ts} +1 -1
  196. package/dist/shared/{stack.BYysGdHl.d.cts → stack.C-WUPMT6.d.cts} +1 -1
  197. package/dist/shared/{stack.DzH_wcvr.d.cts → stack.CIrIsc-A.d.cts} +2 -2
  198. package/dist/shared/{stack.DzH_wcvr.d.mts → stack.CIrIsc-A.d.mts} +2 -2
  199. package/dist/shared/{stack.DzH_wcvr.d.ts → stack.CIrIsc-A.d.ts} +2 -2
  200. package/dist/shared/stack.CMh_EdxW.d.cts +289 -0
  201. package/dist/shared/{stack.BsXokfNh.d.cts → stack.CXjzTMsb.d.cts} +1 -1
  202. package/dist/shared/{stack.BsXokfNh.d.mts → stack.CXjzTMsb.d.mts} +1 -1
  203. package/dist/shared/{stack.BsXokfNh.d.ts → stack.CXjzTMsb.d.ts} +1 -1
  204. package/dist/shared/{stack.ChVuHi5e.d.mts → stack.D1DMlJp-.d.mts} +2 -2
  205. package/dist/shared/stack.Dg09R0oB.d.mts +289 -0
  206. package/dist/shared/{stack.EhM4pmtN.d.ts → stack.GygI_T3X.d.ts} +2 -2
  207. package/dist/shared/{stack.DKDMI-QO.d.mts → stack.QD1y_7NY.d.cts} +7 -1
  208. package/dist/shared/{stack.DKDMI-QO.d.ts → stack.QD1y_7NY.d.mts} +7 -1
  209. package/dist/shared/{stack.DKDMI-QO.d.cts → stack.QD1y_7NY.d.ts} +7 -1
  210. package/package.json +1 -1
  211. package/src/__tests__/stack-api.test.ts +118 -0
  212. package/src/api/index.ts +15 -1
  213. package/src/plugins/ai-chat/__tests__/getters.test.ts +109 -0
  214. package/src/plugins/ai-chat/api/getters.ts +71 -0
  215. package/src/plugins/ai-chat/api/index.ts +1 -0
  216. package/src/plugins/ai-chat/api/plugin.ts +8 -0
  217. package/src/plugins/api/index.ts +3 -1
  218. package/src/plugins/blog/__tests__/getters.test.ts +540 -0
  219. package/src/plugins/blog/api/getters.ts +243 -0
  220. package/src/plugins/blog/api/index.ts +7 -0
  221. package/src/plugins/blog/api/plugin.ts +13 -141
  222. package/src/plugins/blog/client/plugin.tsx +2 -1
  223. package/src/plugins/blog/query-keys.ts +16 -13
  224. package/src/plugins/cms/__tests__/getters.test.ts +206 -0
  225. package/src/plugins/cms/api/getters.ts +244 -0
  226. package/src/plugins/cms/api/index.ts +5 -0
  227. package/src/plugins/cms/api/plugin.ts +50 -154
  228. package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +1 -1
  229. package/src/plugins/cms/client/hooks/cms-hooks.tsx +3 -0
  230. package/src/plugins/cms/types.ts +1 -1
  231. package/src/plugins/form-builder/__tests__/getters.test.ts +159 -0
  232. package/src/plugins/form-builder/api/getters.ts +203 -0
  233. package/src/plugins/form-builder/api/index.ts +1 -0
  234. package/src/plugins/form-builder/api/plugin.ts +22 -115
  235. package/src/plugins/form-builder/client/components/pages/submissions-page.internal.tsx +1 -1
  236. package/src/plugins/form-builder/types.ts +2 -2
  237. package/src/plugins/kanban/__tests__/getters.test.ts +172 -0
  238. package/src/plugins/kanban/api/getters.ts +149 -0
  239. package/src/plugins/kanban/api/index.ts +1 -0
  240. package/src/plugins/kanban/api/plugin.ts +16 -146
  241. package/src/plugins/kanban/client/plugin.tsx +2 -1
  242. package/src/plugins/kanban/query-keys.ts +8 -5
  243. package/src/types.ts +44 -5
  244. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.cjs +0 -0
  245. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/DayPicker.mjs +0 -0
  246. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.cjs +0 -0
  247. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarDay.mjs +0 -0
  248. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.cjs +0 -0
  249. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarMonth.mjs +0 -0
  250. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.cjs +0 -0
  251. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/CalendarWeek.mjs +0 -0
  252. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.cjs +0 -0
  253. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/classes/DateLib.mjs +0 -0
  254. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.cjs +0 -0
  255. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Button.mjs +0 -0
  256. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.cjs +0 -0
  257. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/CaptionLabel.mjs +0 -0
  258. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.cjs +0 -0
  259. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Chevron.mjs +0 -0
  260. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.cjs +0 -0
  261. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Day.mjs +0 -0
  262. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.cjs +0 -0
  263. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DayButton.mjs +0 -0
  264. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.cjs +0 -0
  265. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Dropdown.mjs +0 -0
  266. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.cjs +0 -0
  267. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/DropdownNav.mjs +0 -0
  268. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.cjs +0 -0
  269. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Footer.mjs +0 -0
  270. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.cjs +0 -0
  271. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Month.mjs +0 -0
  272. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.cjs +0 -0
  273. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthCaption.mjs +0 -0
  274. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.cjs +0 -0
  275. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthGrid.mjs +0 -0
  276. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.cjs +0 -0
  277. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Months.mjs +0 -0
  278. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.cjs +0 -0
  279. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/MonthsDropdown.mjs +0 -0
  280. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.cjs +0 -0
  281. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Nav.mjs +0 -0
  282. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.cjs +0 -0
  283. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/NextMonthButton.mjs +0 -0
  284. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.cjs +0 -0
  285. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Option.mjs +0 -0
  286. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.cjs +0 -0
  287. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/PreviousMonthButton.mjs +0 -0
  288. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.cjs +0 -0
  289. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Root.mjs +0 -0
  290. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.cjs +0 -0
  291. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Select.mjs +0 -0
  292. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.cjs +0 -0
  293. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Week.mjs +0 -0
  294. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.cjs +0 -0
  295. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumber.mjs +0 -0
  296. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.cjs +0 -0
  297. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/WeekNumberHeader.mjs +0 -0
  298. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.cjs +0 -0
  299. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekday.mjs +0 -0
  300. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.cjs +0 -0
  301. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weekdays.mjs +0 -0
  302. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.cjs +0 -0
  303. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/Weeks.mjs +0 -0
  304. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.cjs +0 -0
  305. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/YearsDropdown.mjs +0 -0
  306. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.cjs +0 -0
  307. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/components/custom-components.mjs +0 -0
  308. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.cjs +0 -0
  309. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatCaption.mjs +0 -0
  310. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.cjs +0 -0
  311. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatDay.mjs +0 -0
  312. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.cjs +0 -0
  313. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatMonthDropdown.mjs +0 -0
  314. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.cjs +0 -0
  315. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumber.mjs +0 -0
  316. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.cjs +0 -0
  317. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekNumberHeader.mjs +0 -0
  318. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.cjs +0 -0
  319. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatWeekdayName.mjs +0 -0
  320. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.cjs +0 -0
  321. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/formatYearDropdown.mjs +0 -0
  322. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.cjs +0 -0
  323. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/formatters/index.mjs +0 -0
  324. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.cjs +0 -0
  325. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/calculateFocusTarget.mjs +0 -0
  326. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.cjs +0 -0
  327. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/createGetModifiers.mjs +0 -0
  328. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.cjs +0 -0
  329. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/endOfBroadcastWeek.mjs +0 -0
  330. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.cjs +0 -0
  331. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getBroadcastWeeksInMonth.mjs +0 -0
  332. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.cjs +0 -0
  333. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getClassNamesForModifiers.mjs +0 -0
  334. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.cjs +0 -0
  335. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getComponents.mjs +0 -0
  336. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.cjs +0 -0
  337. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDataAttributes.mjs +0 -0
  338. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.cjs +0 -0
  339. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDates.mjs +0 -0
  340. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.cjs +0 -0
  341. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDays.mjs +0 -0
  342. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.cjs +0 -0
  343. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDefaultClassNames.mjs +0 -0
  344. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.cjs +0 -0
  345. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getDisplayMonths.mjs +0 -0
  346. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.cjs +0 -0
  347. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFocusableDate.mjs +0 -0
  348. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.cjs +0 -0
  349. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getFormatters.mjs +0 -0
  350. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.cjs +0 -0
  351. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getInitialMonth.mjs +0 -0
  352. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.cjs +0 -0
  353. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getLabels.mjs +0 -0
  354. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.cjs +0 -0
  355. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonthOptions.mjs +0 -0
  356. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.cjs +0 -0
  357. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getMonths.mjs +0 -0
  358. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.cjs +0 -0
  359. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNavMonth.mjs +0 -0
  360. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.cjs +0 -0
  361. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextFocus.mjs +0 -0
  362. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.cjs +0 -0
  363. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getNextMonth.mjs +0 -0
  364. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.cjs +0 -0
  365. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getPreviousMonth.mjs +0 -0
  366. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.cjs +0 -0
  367. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getStyleForModifiers.mjs +0 -0
  368. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.cjs +0 -0
  369. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeekdays.mjs +0 -0
  370. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.cjs +0 -0
  371. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getWeeks.mjs +0 -0
  372. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.cjs +0 -0
  373. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/getYearOptions.mjs +0 -0
  374. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.cjs +0 -0
  375. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/startOfBroadcastWeek.mjs +0 -0
  376. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.cjs +0 -0
  377. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/helpers/useControlledValue.mjs +0 -0
  378. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.cjs +0 -0
  379. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/index.mjs +0 -0
  380. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.cjs +0 -0
  381. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelDayButton.mjs +0 -0
  382. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.cjs +0 -0
  383. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGrid.mjs +0 -0
  384. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.cjs +0 -0
  385. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelGridcell.mjs +0 -0
  386. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.cjs +0 -0
  387. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelMonthDropdown.mjs +0 -0
  388. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.cjs +0 -0
  389. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNav.mjs +0 -0
  390. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.cjs +0 -0
  391. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelNext.mjs +0 -0
  392. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.cjs +0 -0
  393. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelPrevious.mjs +0 -0
  394. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.cjs +0 -0
  395. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.mjs +0 -0
  396. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.cjs +0 -0
  397. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.mjs +0 -0
  398. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.cjs +0 -0
  399. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelWeekday.mjs +0 -0
  400. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.cjs +0 -0
  401. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.mjs +0 -0
  402. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.cjs +0 -0
  403. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/locale/en-US.mjs +0 -0
  404. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/noonDateLib.cjs +0 -0
  405. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/noonDateLib.mjs +0 -0
  406. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.cjs +0 -0
  407. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useMulti.mjs +0 -0
  408. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.cjs +0 -0
  409. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useRange.mjs +0 -0
  410. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.cjs +0 -0
  411. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/selection/useSingle.mjs +0 -0
  412. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.cjs +0 -0
  413. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useAnimation.mjs +0 -0
  414. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.cjs +0 -0
  415. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useCalendar.mjs +0 -0
  416. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.cjs +0 -0
  417. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useDayPicker.mjs +0 -0
  418. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.cjs +0 -0
  419. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useFocus.mjs +0 -0
  420. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.cjs +0 -0
  421. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/useSelection.mjs +0 -0
  422. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.cjs +0 -0
  423. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/addToRange.mjs +0 -0
  424. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.cjs +0 -0
  425. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/convertMatchersToTimeZone.mjs +0 -0
  426. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs +0 -0
  427. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/dateMatchModifiers.mjs +0 -0
  428. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.cjs +0 -0
  429. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsDayOfWeek.mjs +0 -0
  430. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.cjs +0 -0
  431. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeContainsModifiers.mjs +0 -0
  432. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.cjs +0 -0
  433. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeIncludesDate.mjs +0 -0
  434. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.cjs +0 -0
  435. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/rangeOverlaps.mjs +0 -0
  436. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.cjs +0 -0
  437. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/toTimeZone.mjs +0 -0
  438. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.cjs +0 -0
  439. package/dist/node_modules/.pnpm/{react-day-picker@9.13.0_react@19.2.0 → react-day-picker@9.13.2_react@19.2.0}/node_modules/react-day-picker/dist/esm/utils/typeguards.mjs +0 -0
  440. package/dist/shared/{stack.CcI4sYJP.d.ts → stack.BkYlUT_8.d.cts} +6 -6
  441. package/dist/shared/{stack.CcI4sYJP.d.cts → stack.BkYlUT_8.d.mts} +6 -6
  442. package/dist/shared/{stack.CcI4sYJP.d.mts → stack.BkYlUT_8.d.ts} +6 -6
@@ -0,0 +1,243 @@
1
+ import type { Adapter } from "@btst/db";
2
+ import type { Post, PostWithPostTag, Tag } from "../types";
3
+
4
+ /**
5
+ * Parameters for filtering/paginating posts.
6
+ * Mirrors the shape of the list API query schema.
7
+ */
8
+ export interface PostListParams {
9
+ slug?: string;
10
+ tagSlug?: string;
11
+ offset?: number;
12
+ limit?: number;
13
+ query?: string;
14
+ published?: boolean;
15
+ }
16
+
17
+ /**
18
+ * Paginated result returned by {@link getAllPosts}.
19
+ */
20
+ export interface PostListResult {
21
+ items: Array<Post & { tags: Tag[] }>;
22
+ total: number;
23
+ limit?: number;
24
+ offset?: number;
25
+ }
26
+
27
+ /**
28
+ * Retrieve all posts matching optional filter criteria.
29
+ * Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
30
+ *
31
+ * @remarks **Security:** Authorization hooks (e.g. `onBeforeListPosts`) are NOT
32
+ * called. The caller is responsible for any access-control checks before
33
+ * invoking this function.
34
+ *
35
+ * @param adapter - The database adapter
36
+ * @param params - Optional filter/pagination parameters (same shape as the list API query)
37
+ */
38
+ export async function getAllPosts(
39
+ adapter: Adapter,
40
+ params?: PostListParams,
41
+ ): Promise<PostListResult> {
42
+ const query = params ?? {};
43
+
44
+ const whereConditions: Array<{
45
+ field: string;
46
+ value: string | number | boolean | string[] | number[] | Date | null;
47
+ operator: "eq" | "in";
48
+ }> = [];
49
+
50
+ // Resolve tagSlug → post IDs up front, then push an `in` condition so the
51
+ // adapter can filter and paginate entirely at the DB level. The previous
52
+ // approach loaded every post into memory and filtered with a JS Set, which
53
+ // scans the whole table on every request.
54
+ if (query.tagSlug) {
55
+ const tag = await adapter.findOne<Tag>({
56
+ model: "tag",
57
+ where: [{ field: "slug", value: query.tagSlug, operator: "eq" as const }],
58
+ });
59
+
60
+ if (!tag) {
61
+ return { items: [], total: 0, limit: query.limit, offset: query.offset };
62
+ }
63
+
64
+ const postTags = await adapter.findMany<{ postId: string; tagId: string }>({
65
+ model: "postTag",
66
+ where: [{ field: "tagId", value: tag.id, operator: "eq" as const }],
67
+ });
68
+
69
+ const taggedPostIds = postTags.map((pt) => pt.postId);
70
+ if (taggedPostIds.length === 0) {
71
+ return { items: [], total: 0, limit: query.limit, offset: query.offset };
72
+ }
73
+
74
+ whereConditions.push({
75
+ field: "id",
76
+ value: taggedPostIds,
77
+ operator: "in" as const,
78
+ });
79
+ }
80
+
81
+ if (query.published !== undefined) {
82
+ whereConditions.push({
83
+ field: "published",
84
+ value: query.published,
85
+ operator: "eq" as const,
86
+ });
87
+ }
88
+
89
+ if (query.slug) {
90
+ whereConditions.push({
91
+ field: "slug",
92
+ value: query.slug,
93
+ operator: "eq" as const,
94
+ });
95
+ }
96
+
97
+ // Full-text search across title/content/excerpt must remain in-memory:
98
+ // the adapter's `contains` operator is case-sensitive and cannot be
99
+ // grouped with AND conditions using OR connectors in all adapter
100
+ // implementations. All other filters above are pushed to DB, so the
101
+ // in-memory pass only scans the already-narrowed result set.
102
+ const needsInMemoryFilter = !!query.query;
103
+
104
+ const dbWhere = whereConditions.length > 0 ? whereConditions : undefined;
105
+
106
+ const dbTotal: number | undefined = !needsInMemoryFilter
107
+ ? await adapter.count({ model: "post", where: dbWhere })
108
+ : undefined;
109
+
110
+ const posts = await adapter.findMany<PostWithPostTag>({
111
+ model: "post",
112
+ limit: !needsInMemoryFilter ? query.limit : undefined,
113
+ offset: !needsInMemoryFilter ? query.offset : undefined,
114
+ where: dbWhere,
115
+ sortBy: { field: "createdAt", direction: "desc" },
116
+ join: { postTag: true },
117
+ });
118
+
119
+ // Collect the unique tag IDs present in this page of posts, then fetch
120
+ // only those tags (not the entire tags table).
121
+ const tagIds = new Set<string>();
122
+ for (const post of posts) {
123
+ if (post.postTag) {
124
+ for (const pt of post.postTag) {
125
+ tagIds.add(pt.tagId);
126
+ }
127
+ }
128
+ }
129
+
130
+ const tags =
131
+ tagIds.size > 0
132
+ ? await adapter.findMany<Tag>({
133
+ model: "tag",
134
+ where: [
135
+ {
136
+ field: "id",
137
+ value: Array.from(tagIds),
138
+ operator: "in" as const,
139
+ },
140
+ ],
141
+ })
142
+ : [];
143
+ const tagMap = new Map<string, Tag>(tags.map((t) => [t.id, t]));
144
+
145
+ let result = posts.map((post) => {
146
+ const postTags = (post.postTag || [])
147
+ .map((pt) => {
148
+ const tag = tagMap.get(pt.tagId);
149
+ return tag ? { ...tag } : undefined;
150
+ })
151
+ .filter((tag): tag is Tag => tag !== undefined);
152
+ const { postTag: _, ...postWithoutJoin } = post;
153
+ return { ...postWithoutJoin, tags: postTags };
154
+ });
155
+
156
+ if (query.query) {
157
+ const searchLower = query.query.toLowerCase();
158
+ result = result.filter(
159
+ (post) =>
160
+ post.title?.toLowerCase().includes(searchLower) ||
161
+ post.content?.toLowerCase().includes(searchLower) ||
162
+ post.excerpt?.toLowerCase().includes(searchLower),
163
+ );
164
+ }
165
+
166
+ if (needsInMemoryFilter) {
167
+ const total = result.length;
168
+ const offset = query.offset ?? 0;
169
+ const limit = query.limit;
170
+ result = result.slice(
171
+ offset,
172
+ limit !== undefined ? offset + limit : undefined,
173
+ );
174
+ return { items: result, total, limit: query.limit, offset: query.offset };
175
+ }
176
+
177
+ return {
178
+ items: result,
179
+ total: dbTotal ?? result.length,
180
+ limit: query.limit,
181
+ offset: query.offset,
182
+ };
183
+ }
184
+
185
+ /**
186
+ * Retrieve a single post by its slug, including associated tags.
187
+ * Returns null if no post is found.
188
+ * Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
189
+ *
190
+ * @remarks **Security:** Authorization hooks are NOT called. The caller is
191
+ * responsible for any access-control checks before invoking this function.
192
+ *
193
+ * @param adapter - The database adapter
194
+ * @param slug - The post slug
195
+ */
196
+ export async function getPostBySlug(
197
+ adapter: Adapter,
198
+ slug: string,
199
+ ): Promise<(Post & { tags: Tag[] }) | null> {
200
+ const posts = await adapter.findMany<PostWithPostTag>({
201
+ model: "post",
202
+ where: [{ field: "slug", value: slug, operator: "eq" as const }],
203
+ limit: 1,
204
+ join: { postTag: true },
205
+ });
206
+
207
+ if (posts.length === 0) return null;
208
+
209
+ const post = posts[0]!;
210
+ const tagIds = (post.postTag || []).map((pt) => pt.tagId);
211
+
212
+ const tags =
213
+ tagIds.length > 0
214
+ ? await adapter.findMany<Tag>({
215
+ model: "tag",
216
+ where: [{ field: "id", value: tagIds, operator: "in" as const }],
217
+ })
218
+ : [];
219
+
220
+ const tagMap = new Map<string, Tag>(tags.map((t) => [t.id, t]));
221
+ const resolvedTags = (post.postTag || [])
222
+ .map((pt) => tagMap.get(pt.tagId))
223
+ .filter((t): t is Tag => t !== undefined);
224
+
225
+ const { postTag: _, ...postWithoutJoin } = post;
226
+ return { ...postWithoutJoin, tags: resolvedTags };
227
+ }
228
+
229
+ /**
230
+ * Retrieve all tags, sorted alphabetically by name.
231
+ * Pure DB function — no hooks, no HTTP context. Safe for SSG and server-side use.
232
+ *
233
+ * @remarks **Security:** Authorization hooks are NOT called. The caller is
234
+ * responsible for any access-control checks before invoking this function.
235
+ *
236
+ * @param adapter - The database adapter
237
+ */
238
+ export async function getAllTags(adapter: Adapter): Promise<Tag[]> {
239
+ return adapter.findMany<Tag>({
240
+ model: "tag",
241
+ sortBy: { field: "name", direction: "asc" },
242
+ });
243
+ }
@@ -1,2 +1,9 @@
1
1
  export * from "./plugin";
2
+ export {
3
+ getAllPosts,
4
+ getPostBySlug,
5
+ getAllTags,
6
+ type PostListParams,
7
+ type PostListResult,
8
+ } from "./getters";
2
9
  export { createBlogQueryKeys } from "../query-keys";
@@ -6,6 +6,7 @@ import { blogSchema as dbSchema } from "../db";
6
6
  import type { Post, PostWithPostTag, Tag } from "../types";
7
7
  import { slugify } from "../utils";
8
8
  import { createPostSchema, updatePostSchema } from "../schemas";
9
+ import { getAllPosts, getPostBySlug, getAllTags } from "./getters";
9
10
 
10
11
  export const PostListQuerySchema = z.object({
11
12
  slug: z.string().optional(),
@@ -86,12 +87,12 @@ export interface BlogBackendHooks {
86
87
 
87
88
  /**
88
89
  * Called after posts are read successfully
89
- * @param posts - Array of posts that were read
90
+ * @param posts - The list of posts returned by the query
90
91
  * @param filter - Query parameters used for filtering
91
92
  * @param context - Request context
92
93
  */
93
94
  onPostsRead?: (
94
- posts: Post[],
95
+ posts: Array<Post & { tags: Tag[] }>,
95
96
  filter: z.infer<typeof PostListQuerySchema>,
96
97
  context: BlogApiContext,
97
98
  ) => Promise<void> | void;
@@ -168,6 +169,13 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
168
169
 
169
170
  dbPlugin: dbSchema,
170
171
 
172
+ api: (adapter) => ({
173
+ getAllPosts: (params?: Parameters<typeof getAllPosts>[1]) =>
174
+ getAllPosts(adapter, params),
175
+ getPostBySlug: (slug: string) => getPostBySlug(adapter, slug),
176
+ getAllTags: () => getAllTags(adapter),
177
+ }),
178
+
171
179
  routes: (adapter: Adapter) => {
172
180
  const findOrCreateTags = async (
173
181
  tagInputs: Array<
@@ -265,144 +273,10 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
265
273
  }
266
274
  }
267
275
 
268
- let tagFilterPostIds: Set<string> | null = null;
269
-
270
- if (query.tagSlug) {
271
- const tag = await adapter.findOne<Tag>({
272
- model: "tag",
273
- where: [
274
- {
275
- field: "slug",
276
- value: query.tagSlug,
277
- operator: "eq" as const,
278
- },
279
- ],
280
- });
281
-
282
- if (!tag) {
283
- return [];
284
- }
285
-
286
- const postTags = await adapter.findMany<{
287
- postId: string;
288
- tagId: string;
289
- }>({
290
- model: "postTag",
291
- where: [
292
- {
293
- field: "tagId",
294
- value: tag.id,
295
- operator: "eq" as const,
296
- },
297
- ],
298
- });
299
- tagFilterPostIds = new Set(postTags.map((pt) => pt.postId));
300
- if (tagFilterPostIds.size === 0) {
301
- return [];
302
- }
303
- }
304
-
305
- const whereConditions = [];
306
-
307
- if (query.published !== undefined) {
308
- whereConditions.push({
309
- field: "published",
310
- value: query.published,
311
- operator: "eq" as const,
312
- });
313
- }
314
-
315
- if (query.slug) {
316
- whereConditions.push({
317
- field: "slug",
318
- value: query.slug,
319
- operator: "eq" as const,
320
- });
321
- }
322
-
323
- const posts = await adapter.findMany<PostWithPostTag>({
324
- model: "post",
325
- limit:
326
- query.query || query.tagSlug ? undefined : (query.limit ?? 10),
327
- offset:
328
- query.query || query.tagSlug ? undefined : (query.offset ?? 0),
329
- where: whereConditions,
330
- sortBy: {
331
- field: "createdAt",
332
- direction: "desc",
333
- },
334
- join: {
335
- postTag: true,
336
- },
337
- });
338
-
339
- // Collect unique tag IDs from joined postTag data
340
- const tagIds = new Set<string>();
341
- for (const post of posts) {
342
- if (post.postTag) {
343
- for (const pt of post.postTag) {
344
- tagIds.add(pt.tagId);
345
- }
346
- }
347
- }
348
-
349
- // Fetch all tags at once
350
- const tags =
351
- tagIds.size > 0
352
- ? await adapter.findMany<Tag>({
353
- model: "tag",
354
- })
355
- : [];
356
- const tagMap = new Map<string, Tag>();
357
- for (const tag of tags) {
358
- if (tagIds.has(tag.id)) {
359
- tagMap.set(tag.id, tag);
360
- }
361
- }
362
-
363
- // Map tags to posts (spread to avoid circular references)
364
- let result = posts.map((post) => {
365
- const postTags = (post.postTag || [])
366
- .map((pt) => {
367
- const tag = tagMap.get(pt.tagId);
368
- return tag ? { ...tag } : undefined;
369
- })
370
- .filter((tag): tag is Tag => tag !== undefined);
371
- const { postTag: _, ...postWithoutJoin } = post;
372
- return {
373
- ...postWithoutJoin,
374
- tags: postTags,
375
- };
376
- });
377
-
378
- if (tagFilterPostIds) {
379
- result = result.filter((post) => tagFilterPostIds!.has(post.id));
380
- }
381
-
382
- if (query.query) {
383
- const searchLower = query.query.toLowerCase();
384
- result = result.filter((post) => {
385
- const titleMatch = post.title
386
- ?.toLowerCase()
387
- .includes(searchLower);
388
- const contentMatch = post.content
389
- ?.toLowerCase()
390
- .includes(searchLower);
391
- const excerptMatch = post.excerpt
392
- ?.toLowerCase()
393
- .includes(searchLower);
394
- return titleMatch || contentMatch || excerptMatch;
395
- });
396
- }
397
-
398
- if (query.tagSlug || query.query) {
399
- const offset = query.offset ?? 0;
400
- const limit = query.limit ?? 10;
401
- result = result.slice(offset, offset + limit);
402
- }
276
+ const result = await getAllPosts(adapter, query);
403
277
 
404
278
  if (hooks?.onPostsRead) {
405
- await hooks.onPostsRead(result, query, context);
279
+ await hooks.onPostsRead(result.items, query, context);
406
280
  }
407
281
 
408
282
  return result;
@@ -806,9 +680,7 @@ export const blogBackendPlugin = (hooks?: BlogBackendHooks) =>
806
680
  method: "GET",
807
681
  },
808
682
  async () => {
809
- return await adapter.findMany<Tag>({
810
- model: "tag",
811
- });
683
+ return await getAllTags(adapter);
812
684
  },
813
685
  );
814
686
 
@@ -750,7 +750,8 @@ export const blogClientPlugin = (config: BlogClientConfig) =>
750
750
  published: "true",
751
751
  },
752
752
  });
753
- const page = (res.data ?? []) as unknown as SerializedPost[];
753
+ // The /posts endpoint returns PostListResult { items, total, limit, offset }
754
+ const page = ((res.data as any)?.items ?? []) as SerializedPost[];
754
755
  posts.push(...page);
755
756
  if (page.length < limit) break;
756
757
  offset += limit;
@@ -99,13 +99,14 @@ function createPostsQueries(
99
99
  },
100
100
  headers,
101
101
  });
102
- // Check for errors (better-call returns Error$1<unknown> | Data<Post[]>)
102
+ // Check for errors (better-call returns Error$1<unknown> | Data<PostListResult>)
103
103
  if (isErrorResponse(response)) {
104
104
  const errorResponse = response as { error: unknown };
105
105
  throw toError(errorResponse.error);
106
106
  }
107
- // Type narrowed to Data<Post[]> after error check
108
- return ((response as { data?: unknown }).data ??
107
+ // Extract .items from the paginated response for infinite scroll compatibility
108
+ const dataResponse = response as { data?: { items?: unknown[] } };
109
+ return (dataResponse.data?.items ??
109
110
  []) as unknown as SerializedPost[];
110
111
  } catch (error) {
111
112
  // Re-throw errors so React Query can catch them
@@ -126,14 +127,14 @@ function createPostsQueries(
126
127
  query: { slug, limit: 1 },
127
128
  headers,
128
129
  });
129
- // Check for errors (better-call returns Error$1<unknown> | Data<Post[]>)
130
+ // Check for errors (better-call returns Error$1<unknown> | Data<PostListResult>)
130
131
  if (isErrorResponse(response)) {
131
132
  const errorResponse = response as { error: unknown };
132
133
  throw toError(errorResponse.error);
133
134
  }
134
- // Type narrowed to Data<Post[]> after error check
135
- const dataResponse = response as { data?: unknown[] };
136
- return (dataResponse.data?.[0] ??
135
+ // Type narrowed to Data<PostListResult> after error check — access .items[0]
136
+ const dataResponse = response as { data?: { items?: unknown[] } };
137
+ return (dataResponse.data?.items?.[0] ??
137
138
  null) as unknown as SerializedPost | null;
138
139
  } catch (error) {
139
140
  // Re-throw errors so React Query can catch them
@@ -181,13 +182,14 @@ function createPostsQueries(
181
182
  },
182
183
  headers,
183
184
  });
184
- // Check for errors (better-call returns Error$1<unknown> | Data<Post[]>)
185
+ // Check for errors (better-call returns Error$1<unknown> | Data<PostListResult>)
185
186
  if (isErrorResponse(response)) {
186
187
  const errorResponse = response as { error: unknown };
187
188
  throw toError(errorResponse.error);
188
189
  }
189
- // Type narrowed to Data<Post[]> after error check
190
- let posts = ((response as { data?: unknown }).data ??
190
+ // Extract .items from the paginated response
191
+ const recentResponse = response as { data?: { items?: unknown[] } };
192
+ let posts = (recentResponse.data?.items ??
191
193
  []) as unknown as SerializedPost[];
192
194
 
193
195
  // Exclude current post if specified
@@ -228,13 +230,14 @@ function createDraftsQueries(
228
230
  },
229
231
  headers,
230
232
  });
231
- // Check for errors (better-call returns Error$1<unknown> | Data<Post[]>)
233
+ // Check for errors (better-call returns Error$1<unknown> | Data<PostListResult>)
232
234
  if (isErrorResponse(response)) {
233
235
  const errorResponse = response as { error: unknown };
234
236
  throw toError(errorResponse.error);
235
237
  }
236
- // Type narrowed to Data<Post[]> after error check
237
- return ((response as { data?: unknown }).data ??
238
+ // Extract .items from the paginated response for infinite scroll compatibility
239
+ const draftsResponse = response as { data?: { items?: unknown[] } };
240
+ return (draftsResponse.data?.items ??
238
241
  []) as unknown as SerializedPost[];
239
242
  } catch (error) {
240
243
  // Re-throw errors so React Query can catch them