@btst/stack 2.6.2 → 2.8.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 (309) hide show
  1. package/README.md +1 -0
  2. package/dist/api/index.d.cts +2 -2
  3. package/dist/api/index.d.mts +2 -2
  4. package/dist/api/index.d.ts +2 -2
  5. package/dist/client/index.d.cts +2 -2
  6. package/dist/client/index.d.mts +2 -2
  7. package/dist/client/index.d.ts +2 -2
  8. package/dist/components/auto-form/index.d.cts +2 -2
  9. package/dist/components/auto-form/index.d.mts +2 -2
  10. package/dist/components/auto-form/index.d.ts +2 -2
  11. package/dist/components/form-builder/index.d.cts +1 -1
  12. package/dist/components/form-builder/index.d.mts +1 -1
  13. package/dist/components/form-builder/index.d.ts +1 -1
  14. package/dist/components/stepped-auto-form/index.d.cts +1 -1
  15. package/dist/components/stepped-auto-form/index.d.mts +1 -1
  16. package/dist/components/stepped-auto-form/index.d.ts +1 -1
  17. package/dist/index.d.cts +1 -1
  18. package/dist/index.d.mts +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.cjs +13 -0
  21. package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.mjs +11 -0
  22. package/dist/packages/stack/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.cjs +17 -0
  23. package/dist/packages/stack/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.mjs +15 -0
  24. package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +18 -7
  25. package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +18 -7
  26. package/dist/packages/stack/src/plugins/blog/client/components/shared/post-navigation.cjs +48 -52
  27. package/dist/packages/stack/src/plugins/blog/client/components/shared/post-navigation.mjs +49 -53
  28. package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.cjs +34 -37
  29. package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.mjs +35 -38
  30. package/dist/packages/stack/src/plugins/blog/client/hooks/blog-hooks.cjs +4 -21
  31. package/dist/packages/stack/src/plugins/blog/client/hooks/blog-hooks.mjs +4 -21
  32. package/dist/packages/stack/src/plugins/comments/api/getters.cjs +284 -0
  33. package/dist/packages/stack/src/plugins/comments/api/getters.mjs +280 -0
  34. package/dist/packages/stack/src/plugins/comments/api/mutations.cjs +118 -0
  35. package/dist/packages/stack/src/plugins/comments/api/mutations.mjs +112 -0
  36. package/dist/packages/stack/src/plugins/comments/api/plugin.cjs +335 -0
  37. package/dist/packages/stack/src/plugins/comments/api/plugin.mjs +333 -0
  38. package/dist/packages/stack/src/plugins/comments/api/query-key-defs.cjs +60 -0
  39. package/dist/packages/stack/src/plugins/comments/api/query-key-defs.mjs +55 -0
  40. package/dist/packages/stack/src/plugins/comments/api/serializers.cjs +23 -0
  41. package/dist/packages/stack/src/plugins/comments/api/serializers.mjs +21 -0
  42. package/dist/packages/stack/src/plugins/comments/client/components/comment-count.cjs +46 -0
  43. package/dist/packages/stack/src/plugins/comments/client/components/comment-count.mjs +44 -0
  44. package/dist/packages/stack/src/plugins/comments/client/components/comment-form.cjs +86 -0
  45. package/dist/packages/stack/src/plugins/comments/client/components/comment-form.mjs +84 -0
  46. package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.cjs +540 -0
  47. package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.mjs +538 -0
  48. package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.cjs +64 -0
  49. package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.cjs +426 -0
  50. package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.mjs +424 -0
  51. package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.mjs +62 -0
  52. package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.cjs +66 -0
  53. package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.cjs +256 -0
  54. package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.mjs +254 -0
  55. package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.mjs +64 -0
  56. package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.cjs +86 -0
  57. package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.cjs +191 -0
  58. package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.mjs +189 -0
  59. package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.mjs +84 -0
  60. package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.cjs +27 -0
  61. package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.mjs +25 -0
  62. package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.cjs +37 -0
  63. package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.mjs +35 -0
  64. package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.cjs +476 -0
  65. package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.mjs +464 -0
  66. package/dist/packages/stack/src/plugins/comments/client/localization/comments-moderation.cjs +67 -0
  67. package/dist/packages/stack/src/plugins/comments/client/localization/comments-moderation.mjs +65 -0
  68. package/dist/packages/stack/src/plugins/comments/client/localization/comments-my.cjs +27 -0
  69. package/dist/packages/stack/src/plugins/comments/client/localization/comments-my.mjs +25 -0
  70. package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.cjs +30 -0
  71. package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.mjs +28 -0
  72. package/dist/packages/stack/src/plugins/comments/client/localization/index.cjs +13 -0
  73. package/dist/packages/stack/src/plugins/comments/client/localization/index.mjs +11 -0
  74. package/dist/packages/stack/src/plugins/comments/client/plugin.cjs +116 -0
  75. package/dist/packages/stack/src/plugins/comments/client/plugin.mjs +114 -0
  76. package/dist/packages/stack/src/plugins/comments/client/utils.cjs +41 -0
  77. package/dist/packages/stack/src/plugins/comments/client/utils.mjs +37 -0
  78. package/dist/packages/stack/src/plugins/comments/db.cjs +75 -0
  79. package/dist/packages/stack/src/plugins/comments/db.mjs +73 -0
  80. package/dist/packages/stack/src/plugins/comments/schemas.cjs +45 -0
  81. package/dist/packages/stack/src/plugins/comments/schemas.mjs +38 -0
  82. package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +5 -4
  83. package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +5 -4
  84. package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.cjs +0 -1
  85. package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.mjs +0 -1
  86. package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.cjs +39 -22
  87. package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.mjs +40 -23
  88. package/dist/packages/ui/src/components/avatar.mjs +1 -1
  89. package/dist/packages/ui/src/components/pagination-controls.cjs +64 -0
  90. package/dist/packages/ui/src/components/pagination-controls.mjs +62 -0
  91. package/dist/packages/ui/src/components/when-visible.cjs +39 -0
  92. package/dist/packages/ui/src/components/when-visible.mjs +37 -0
  93. package/dist/plugins/ai-chat/api/index.d.cts +4 -6
  94. package/dist/plugins/ai-chat/api/index.d.mts +4 -6
  95. package/dist/plugins/ai-chat/api/index.d.ts +4 -6
  96. package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -3
  97. package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -3
  98. package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -3
  99. package/dist/plugins/ai-chat/query-keys.d.cts +1 -3
  100. package/dist/plugins/ai-chat/query-keys.d.mts +1 -3
  101. package/dist/plugins/ai-chat/query-keys.d.ts +1 -3
  102. package/dist/plugins/api/index.d.cts +3 -3
  103. package/dist/plugins/api/index.d.mts +3 -3
  104. package/dist/plugins/api/index.d.ts +3 -3
  105. package/dist/plugins/blog/api/index.d.cts +3 -3
  106. package/dist/plugins/blog/api/index.d.mts +3 -3
  107. package/dist/plugins/blog/api/index.d.ts +3 -3
  108. package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
  109. package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
  110. package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
  111. package/dist/plugins/blog/client/index.d.cts +25 -3
  112. package/dist/plugins/blog/client/index.d.mts +25 -3
  113. package/dist/plugins/blog/client/index.d.ts +25 -3
  114. package/dist/plugins/blog/query-keys.d.cts +3 -3
  115. package/dist/plugins/blog/query-keys.d.mts +3 -3
  116. package/dist/plugins/blog/query-keys.d.ts +3 -3
  117. package/dist/plugins/client/index.d.cts +2 -2
  118. package/dist/plugins/client/index.d.mts +2 -2
  119. package/dist/plugins/client/index.d.ts +2 -2
  120. package/dist/plugins/cms/api/index.d.cts +1 -1
  121. package/dist/plugins/cms/api/index.d.mts +1 -1
  122. package/dist/plugins/cms/api/index.d.ts +1 -1
  123. package/dist/plugins/cms/client/index.d.cts +1 -1
  124. package/dist/plugins/cms/client/index.d.mts +1 -1
  125. package/dist/plugins/cms/client/index.d.ts +1 -1
  126. package/dist/plugins/cms/query-keys.d.cts +1 -1
  127. package/dist/plugins/cms/query-keys.d.mts +1 -1
  128. package/dist/plugins/cms/query-keys.d.ts +1 -1
  129. package/dist/plugins/comments/api/index.cjs +21 -0
  130. package/dist/plugins/comments/api/index.d.cts +126 -0
  131. package/dist/plugins/comments/api/index.d.mts +126 -0
  132. package/dist/plugins/comments/api/index.d.ts +126 -0
  133. package/dist/plugins/comments/api/index.mjs +5 -0
  134. package/dist/plugins/comments/client/components/index.cjs +15 -0
  135. package/dist/plugins/comments/client/components/index.d.cts +125 -0
  136. package/dist/plugins/comments/client/components/index.d.mts +125 -0
  137. package/dist/plugins/comments/client/components/index.d.ts +125 -0
  138. package/dist/plugins/comments/client/components/index.mjs +5 -0
  139. package/dist/plugins/comments/client/hooks/index.cjs +17 -0
  140. package/dist/plugins/comments/client/hooks/index.d.cts +200 -0
  141. package/dist/plugins/comments/client/hooks/index.d.mts +200 -0
  142. package/dist/plugins/comments/client/hooks/index.d.ts +200 -0
  143. package/dist/plugins/comments/client/hooks/index.mjs +1 -0
  144. package/dist/plugins/comments/client/index.cjs +9 -0
  145. package/dist/plugins/comments/client/index.d.cts +262 -0
  146. package/dist/plugins/comments/client/index.d.mts +262 -0
  147. package/dist/plugins/comments/client/index.d.ts +262 -0
  148. package/dist/plugins/comments/client/index.mjs +2 -0
  149. package/dist/plugins/comments/client.css +2 -0
  150. package/dist/plugins/comments/query-keys.cjs +113 -0
  151. package/dist/plugins/comments/query-keys.d.cts +71 -0
  152. package/dist/plugins/comments/query-keys.d.mts +71 -0
  153. package/dist/plugins/comments/query-keys.d.ts +71 -0
  154. package/dist/plugins/comments/query-keys.mjs +111 -0
  155. package/dist/plugins/comments/style.css +15 -0
  156. package/dist/plugins/form-builder/api/index.d.cts +2 -2
  157. package/dist/plugins/form-builder/api/index.d.mts +2 -2
  158. package/dist/plugins/form-builder/api/index.d.ts +2 -2
  159. package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
  160. package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
  161. package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
  162. package/dist/plugins/form-builder/client/index.d.cts +1 -1
  163. package/dist/plugins/form-builder/client/index.d.mts +1 -1
  164. package/dist/plugins/form-builder/client/index.d.ts +1 -1
  165. package/dist/plugins/form-builder/query-keys.d.cts +1 -1
  166. package/dist/plugins/form-builder/query-keys.d.mts +1 -1
  167. package/dist/plugins/form-builder/query-keys.d.ts +1 -1
  168. package/dist/plugins/kanban/api/index.d.cts +2 -2
  169. package/dist/plugins/kanban/api/index.d.mts +2 -2
  170. package/dist/plugins/kanban/api/index.d.ts +2 -2
  171. package/dist/plugins/kanban/client/hooks/index.d.cts +1 -1
  172. package/dist/plugins/kanban/client/hooks/index.d.mts +1 -1
  173. package/dist/plugins/kanban/client/hooks/index.d.ts +1 -1
  174. package/dist/plugins/kanban/client/index.d.cts +1 -1
  175. package/dist/plugins/kanban/client/index.d.mts +1 -1
  176. package/dist/plugins/kanban/client/index.d.ts +1 -1
  177. package/dist/plugins/kanban/query-keys.d.cts +2 -2
  178. package/dist/plugins/kanban/query-keys.d.mts +2 -2
  179. package/dist/plugins/kanban/query-keys.d.ts +2 -2
  180. package/dist/plugins/open-api/api/index.d.cts +3 -3
  181. package/dist/plugins/open-api/api/index.d.mts +3 -3
  182. package/dist/plugins/open-api/api/index.d.ts +3 -3
  183. package/dist/plugins/route-docs/client/index.d.cts +1 -1
  184. package/dist/plugins/route-docs/client/index.d.mts +1 -1
  185. package/dist/plugins/route-docs/client/index.d.ts +1 -1
  186. package/dist/plugins/ui-builder/client/components/index.d.cts +2 -2
  187. package/dist/plugins/ui-builder/client/components/index.d.mts +2 -2
  188. package/dist/plugins/ui-builder/client/components/index.d.ts +2 -2
  189. package/dist/plugins/ui-builder/client/hooks/index.d.cts +3 -3
  190. package/dist/plugins/ui-builder/client/hooks/index.d.mts +3 -3
  191. package/dist/plugins/ui-builder/client/hooks/index.d.ts +3 -3
  192. package/dist/plugins/ui-builder/client/index.d.cts +3 -3
  193. package/dist/plugins/ui-builder/client/index.d.mts +3 -3
  194. package/dist/plugins/ui-builder/client/index.d.ts +3 -3
  195. package/dist/plugins/ui-builder/index.d.cts +3 -3
  196. package/dist/plugins/ui-builder/index.d.mts +3 -3
  197. package/dist/plugins/ui-builder/index.d.ts +3 -3
  198. package/dist/shared/{stack.B1srlBud.d.mts → stack.BFoBvGML.d.mts} +1 -1
  199. package/dist/shared/{stack.DmpPDPxA.d.cts → stack.BOCvd9HK.d.cts} +1 -1
  200. package/dist/shared/{stack.n1_i1p2B.d.cts → stack.BOokfhZD.d.cts} +170 -110
  201. package/dist/shared/{stack.DXnclTG7.d.ts → stack.BSqJrCTM.d.cts} +120 -59
  202. package/dist/shared/{stack.B58oHdqm.d.mts → stack.BX7MHi0J.d.mts} +90 -45
  203. package/dist/shared/{stack.cfCkioTe.d.mts → stack.BXxrFL9R.d.ts} +120 -59
  204. package/dist/shared/{stack.CSx98K5H.d.cts → stack.BYN8wCV6.d.cts} +87 -58
  205. package/dist/shared/{stack.FVWf2JhZ.d.mts → stack.BgQrdSlo.d.mts} +60 -45
  206. package/dist/shared/{stack.BK9Z2dcL.d.ts → stack.BmMB0LNC.d.ts} +1 -1
  207. package/dist/shared/{stack.j75TpKh2.d.ts → stack.BvCR4-9H.d.ts} +170 -110
  208. package/dist/shared/{stack.FeaWkglm.d.ts → stack.BxFl46lB.d.cts} +24 -1
  209. package/dist/shared/stack.C-b3Sn8j.d.cts +142 -0
  210. package/dist/shared/stack.C-b3Sn8j.d.mts +142 -0
  211. package/dist/shared/stack.C-b3Sn8j.d.ts +142 -0
  212. package/dist/shared/{stack.CFECM0ew.d.cts → stack.C1nXGBr6.d.cts} +1 -1
  213. package/dist/shared/{stack.C9Mg2Q46.d.cts → stack.C9zoS1TN.d.cts} +90 -45
  214. package/dist/shared/stack.CJE9sAjV.d.ts +335 -0
  215. package/dist/shared/{stack.fdi94T4S.d.mts → stack.CPsYC2-Z.d.cts} +7 -7
  216. package/dist/shared/{stack.fdi94T4S.d.ts → stack.CPsYC2-Z.d.mts} +7 -7
  217. package/dist/shared/{stack.fdi94T4S.d.cts → stack.CPsYC2-Z.d.ts} +7 -7
  218. package/dist/shared/{stack.7n9Y_u7N.d.cts → stack.CQnwAN7x.d.cts} +6 -6
  219. package/dist/shared/{stack.7n9Y_u7N.d.mts → stack.CQnwAN7x.d.mts} +6 -6
  220. package/dist/shared/{stack.7n9Y_u7N.d.ts → stack.CQnwAN7x.d.ts} +6 -6
  221. package/dist/shared/{stack.CxaFNQCV.d.mts → stack.CWxAl9K3.d.mts} +170 -110
  222. package/dist/shared/{stack.D-b5zbPm.d.cts → stack.Cbsrl06u.d.cts} +60 -45
  223. package/dist/shared/stack.CmHRdhl8.d.cts +335 -0
  224. package/dist/shared/{stack.BgTmujxW.d.mts → stack.D88yU4FT.d.mts} +87 -58
  225. package/dist/shared/{stack.DVtk5CNw.d.mts → stack.DLPa6Gzm.d.mts} +1 -1
  226. package/dist/shared/{stack.BAT540yW.d.ts → stack.DOZ1EXjM.d.mts} +9 -15
  227. package/dist/shared/{stack.FeaWkglm.d.mts → stack.DRpeDS6X.d.ts} +24 -1
  228. package/dist/shared/{stack.B8vT-Yt4.d.mts → stack.DX-tQ93o.d.cts} +9 -15
  229. package/dist/shared/stack.Dcz6636A.d.mts +335 -0
  230. package/dist/shared/{stack.ASwEoINr.d.ts → stack.DxJ-tHLt.d.ts} +1 -1
  231. package/dist/shared/{stack.DaZM10cp.d.cts → stack.DzOhpIYM.d.mts} +120 -59
  232. package/dist/shared/{stack.CTDVxbrA.d.ts → stack.Fl2Kl_bt.d.ts} +60 -45
  233. package/dist/shared/{stack.FeaWkglm.d.cts → stack.Jb0kQDJC.d.mts} +24 -1
  234. package/dist/shared/stack.Ldfkr5b2.d.cts +112 -0
  235. package/dist/shared/stack.Ldfkr5b2.d.mts +112 -0
  236. package/dist/shared/stack.Ldfkr5b2.d.ts +112 -0
  237. package/dist/shared/{stack.CLQuVdwK.d.ts → stack.RuQ9JCLo.d.ts} +87 -58
  238. package/dist/shared/{stack.BwA7trxA.d.cts → stack.VF6FhyZw.d.ts} +9 -15
  239. package/dist/shared/{stack.sO33ZDhK.d.ts → stack.fQjVhw5a.d.ts} +90 -45
  240. package/package.json +70 -5
  241. package/src/__tests__/plugins.test.tsx +5 -1
  242. package/src/__tests__/stack-api.test.ts +1 -1
  243. package/src/plugins/ai-chat/__tests__/getters.test.ts +1 -1
  244. package/src/plugins/ai-chat/api/getters.ts +1 -1
  245. package/src/plugins/ai-chat/api/plugin.ts +1 -1
  246. package/src/plugins/api/index.ts +5 -1
  247. package/src/plugins/blog/__tests__/getters.test.ts +1 -1
  248. package/src/plugins/blog/api/getters.ts +1 -1
  249. package/src/plugins/blog/api/plugin.ts +1 -1
  250. package/src/plugins/blog/client/components/loading/post-navigation-skeleton.tsx +10 -0
  251. package/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.tsx +18 -0
  252. package/src/plugins/blog/client/components/pages/post-page.internal.tsx +23 -8
  253. package/src/plugins/blog/client/components/shared/post-navigation.tsx +0 -5
  254. package/src/plugins/blog/client/components/shared/recent-posts-carousel.tsx +1 -5
  255. package/src/plugins/blog/client/hooks/blog-hooks.tsx +8 -33
  256. package/src/plugins/blog/client/overrides.ts +26 -1
  257. package/src/plugins/cms/__tests__/getters.test.ts +1 -1
  258. package/src/plugins/cms/api/getters.ts +1 -1
  259. package/src/plugins/cms/api/mutations.ts +1 -1
  260. package/src/plugins/cms/api/plugin.ts +1 -1
  261. package/src/plugins/cms/client/components/shared/pagination.tsx +14 -42
  262. package/src/plugins/comments/api/getters.ts +444 -0
  263. package/src/plugins/comments/api/index.ts +21 -0
  264. package/src/plugins/comments/api/mutations.ts +206 -0
  265. package/src/plugins/comments/api/plugin.ts +628 -0
  266. package/src/plugins/comments/api/query-key-defs.ts +143 -0
  267. package/src/plugins/comments/api/serializers.ts +37 -0
  268. package/src/plugins/comments/client/components/comment-count.tsx +66 -0
  269. package/src/plugins/comments/client/components/comment-form.tsx +112 -0
  270. package/src/plugins/comments/client/components/comment-thread.tsx +799 -0
  271. package/src/plugins/comments/client/components/index.tsx +11 -0
  272. package/src/plugins/comments/client/components/pages/moderation-page.internal.tsx +550 -0
  273. package/src/plugins/comments/client/components/pages/moderation-page.tsx +70 -0
  274. package/src/plugins/comments/client/components/pages/my-comments-page.internal.tsx +367 -0
  275. package/src/plugins/comments/client/components/pages/my-comments-page.tsx +72 -0
  276. package/src/plugins/comments/client/components/pages/resource-comments-page.internal.tsx +225 -0
  277. package/src/plugins/comments/client/components/pages/resource-comments-page.tsx +97 -0
  278. package/src/plugins/comments/client/components/shared/page-wrapper.tsx +32 -0
  279. package/src/plugins/comments/client/components/shared/pagination.tsx +44 -0
  280. package/src/plugins/comments/client/hooks/index.tsx +13 -0
  281. package/src/plugins/comments/client/hooks/use-comments.tsx +717 -0
  282. package/src/plugins/comments/client/index.ts +14 -0
  283. package/src/plugins/comments/client/localization/comments-moderation.ts +75 -0
  284. package/src/plugins/comments/client/localization/comments-my.ts +32 -0
  285. package/src/plugins/comments/client/localization/comments-thread.ts +32 -0
  286. package/src/plugins/comments/client/localization/index.ts +11 -0
  287. package/src/plugins/comments/client/overrides.ts +164 -0
  288. package/src/plugins/comments/client/plugin.tsx +195 -0
  289. package/src/plugins/comments/client/utils.ts +67 -0
  290. package/src/plugins/comments/client.css +2 -0
  291. package/src/plugins/comments/db.ts +77 -0
  292. package/src/plugins/comments/query-keys.ts +189 -0
  293. package/src/plugins/comments/schemas.ts +72 -0
  294. package/src/plugins/comments/style.css +15 -0
  295. package/src/plugins/comments/types.ts +73 -0
  296. package/src/plugins/form-builder/__tests__/getters.test.ts +1 -1
  297. package/src/plugins/form-builder/api/getters.ts +1 -1
  298. package/src/plugins/form-builder/api/plugin.ts +1 -1
  299. package/src/plugins/kanban/__tests__/getters.test.ts +1 -1
  300. package/src/plugins/kanban/api/getters.ts +1 -1
  301. package/src/plugins/kanban/api/mutations.ts +1 -1
  302. package/src/plugins/kanban/api/plugin.ts +6 -5
  303. package/src/plugins/kanban/client/components/forms/task-form.tsx +0 -1
  304. package/src/plugins/kanban/client/components/pages/board-page.internal.tsx +46 -27
  305. package/src/plugins/kanban/client/overrides.ts +27 -1
  306. package/src/types.ts +5 -1
  307. package/dist/shared/{stack.BQmuNl5p.d.mts → stack.BWp0hcm9.d.cts} +3 -3
  308. package/dist/shared/{stack.BQmuNl5p.d.ts → stack.BWp0hcm9.d.mts} +3 -3
  309. package/dist/shared/{stack.BQmuNl5p.d.cts → stack.BWp0hcm9.d.ts} +3 -3
@@ -0,0 +1,191 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const jsxRuntime = require('react/jsx-runtime');
5
+ const useComments = require('../../hooks/use-comments.cjs');
6
+ const commentThread = require('../comment-thread.cjs');
7
+ const button = require('../../../../../../../ui/src/components/button.cjs');
8
+ const badge = require('../../../../../../../ui/src/components/badge.cjs');
9
+ const avatar = require('../../../../../../../ui/src/components/avatar.cjs');
10
+ const LucideIcons = require('lucide-react');
11
+ const dateFns = require('date-fns');
12
+ const sonner = require('sonner');
13
+ const index = require('../../localization/index.cjs');
14
+ const utils = require('../../utils.cjs');
15
+
16
+ function ResourceCommentsPage({
17
+ resourceId,
18
+ resourceType,
19
+ apiBaseURL,
20
+ apiBasePath,
21
+ headers,
22
+ currentUserId,
23
+ loginHref,
24
+ localization: localizationProp
25
+ }) {
26
+ const loc = { ...index.COMMENTS_LOCALIZATION, ...localizationProp };
27
+ const config = { apiBaseURL, apiBasePath, headers };
28
+ const {
29
+ comments: pendingComments,
30
+ total: pendingTotal,
31
+ refetch
32
+ } = useComments.useSuspenseComments(config, {
33
+ resourceId,
34
+ resourceType,
35
+ status: "pending"
36
+ });
37
+ const updateStatus = useComments.useUpdateCommentStatus(config);
38
+ const deleteMutation = useComments.useDeleteComment(config);
39
+ const handleApprove = async (id) => {
40
+ try {
41
+ await updateStatus.mutateAsync({ id, status: "approved" });
42
+ sonner.toast.success(loc.COMMENTS_RESOURCE_TOAST_APPROVED);
43
+ refetch();
44
+ } catch {
45
+ sonner.toast.error(loc.COMMENTS_RESOURCE_TOAST_APPROVE_ERROR);
46
+ }
47
+ };
48
+ const handleSpam = async (id) => {
49
+ try {
50
+ await updateStatus.mutateAsync({ id, status: "spam" });
51
+ sonner.toast.success(loc.COMMENTS_RESOURCE_TOAST_SPAM);
52
+ refetch();
53
+ } catch {
54
+ sonner.toast.error(loc.COMMENTS_RESOURCE_TOAST_SPAM_ERROR);
55
+ }
56
+ };
57
+ const handleDelete = async (id) => {
58
+ if (!window.confirm(loc.COMMENTS_RESOURCE_DELETE_CONFIRM)) return;
59
+ try {
60
+ await deleteMutation.mutateAsync(id);
61
+ sonner.toast.success(loc.COMMENTS_RESOURCE_TOAST_DELETED);
62
+ refetch();
63
+ } catch {
64
+ sonner.toast.error(loc.COMMENTS_RESOURCE_TOAST_DELETE_ERROR);
65
+ }
66
+ };
67
+ return /* @__PURE__ */ jsxRuntime.jsxs(
68
+ "div",
69
+ {
70
+ className: "w-full max-w-3xl space-y-8",
71
+ "data-testid": "resource-comments-page",
72
+ children: [
73
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
74
+ /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold", children: loc.COMMENTS_RESOURCE_TITLE }),
75
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-muted-foreground text-sm mt-1", children: [
76
+ resourceType,
77
+ "/",
78
+ resourceId
79
+ ] })
80
+ ] }),
81
+ pendingTotal > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
82
+ /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "text-base font-semibold flex items-center gap-2", children: [
83
+ loc.COMMENTS_RESOURCE_PENDING_SECTION,
84
+ /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { variant: "secondary", children: pendingTotal })
85
+ ] }),
86
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "divide-y divide-border rounded-lg border", children: pendingComments.map((comment) => /* @__PURE__ */ jsxRuntime.jsx(
87
+ PendingCommentRow,
88
+ {
89
+ comment,
90
+ loc,
91
+ onApprove: () => handleApprove(comment.id),
92
+ onSpam: () => handleSpam(comment.id),
93
+ onDelete: () => handleDelete(comment.id),
94
+ isUpdating: updateStatus.isPending,
95
+ isDeleting: deleteMutation.isPending
96
+ },
97
+ comment.id
98
+ )) })
99
+ ] }),
100
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
101
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-base font-semibold mb-4", children: loc.COMMENTS_RESOURCE_THREAD_SECTION }),
102
+ /* @__PURE__ */ jsxRuntime.jsx(
103
+ commentThread.CommentThread,
104
+ {
105
+ resourceId,
106
+ resourceType,
107
+ apiBaseURL,
108
+ apiBasePath,
109
+ headers,
110
+ currentUserId,
111
+ loginHref,
112
+ localization: loc
113
+ }
114
+ )
115
+ ] })
116
+ ]
117
+ }
118
+ );
119
+ }
120
+ function PendingCommentRow({
121
+ comment,
122
+ loc,
123
+ onApprove,
124
+ onSpam,
125
+ onDelete,
126
+ isUpdating,
127
+ isDeleting
128
+ }) {
129
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3 p-4", "data-testid": "pending-comment-row", children: [
130
+ /* @__PURE__ */ jsxRuntime.jsxs(avatar.Avatar, { className: "h-8 w-8 shrink-0 mt-0.5", children: [
131
+ comment.resolvedAvatarUrl && /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarImage, { src: comment.resolvedAvatarUrl }),
132
+ /* @__PURE__ */ jsxRuntime.jsx(avatar.AvatarFallback, { className: "text-xs", children: utils.getInitials(comment.resolvedAuthorName) })
133
+ ] }),
134
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
135
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
136
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: comment.resolvedAuthorName }),
137
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: dateFns.formatDistanceToNow(new Date(comment.createdAt), {
138
+ addSuffix: true
139
+ }) })
140
+ ] }),
141
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm whitespace-pre-wrap break-words", children: comment.body }),
142
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-1 mt-2", children: [
143
+ /* @__PURE__ */ jsxRuntime.jsxs(
144
+ button.Button,
145
+ {
146
+ size: "sm",
147
+ variant: "outline",
148
+ className: "h-7 text-xs text-green-600 border-green-200 hover:bg-green-50",
149
+ onClick: onApprove,
150
+ disabled: isUpdating,
151
+ "data-testid": "approve-button",
152
+ children: [
153
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.CheckCircle, { className: "h-3.5 w-3.5 mr-1" }),
154
+ loc.COMMENTS_RESOURCE_ACTION_APPROVE
155
+ ]
156
+ }
157
+ ),
158
+ /* @__PURE__ */ jsxRuntime.jsxs(
159
+ button.Button,
160
+ {
161
+ size: "sm",
162
+ variant: "outline",
163
+ className: "h-7 text-xs text-orange-500 border-orange-200 hover:bg-orange-50",
164
+ onClick: onSpam,
165
+ disabled: isUpdating,
166
+ children: [
167
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ShieldOff, { className: "h-3.5 w-3.5 mr-1" }),
168
+ loc.COMMENTS_RESOURCE_ACTION_SPAM
169
+ ]
170
+ }
171
+ ),
172
+ /* @__PURE__ */ jsxRuntime.jsxs(
173
+ button.Button,
174
+ {
175
+ size: "sm",
176
+ variant: "outline",
177
+ className: "h-7 text-xs text-destructive border-destructive/30 hover:bg-destructive/5",
178
+ onClick: onDelete,
179
+ disabled: isDeleting,
180
+ children: [
181
+ /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Trash2, { className: "h-3.5 w-3.5 mr-1" }),
182
+ loc.COMMENTS_RESOURCE_ACTION_DELETE
183
+ ]
184
+ }
185
+ )
186
+ ] })
187
+ ] })
188
+ ] });
189
+ }
190
+
191
+ exports.ResourceCommentsPage = ResourceCommentsPage;
@@ -0,0 +1,189 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useSuspenseComments, useUpdateCommentStatus, useDeleteComment } from '../../hooks/use-comments.mjs';
4
+ import { CommentThread } from '../comment-thread.mjs';
5
+ import { Button } from '../../../../../../../ui/src/components/button.mjs';
6
+ import { Badge } from '../../../../../../../ui/src/components/badge.mjs';
7
+ import { Avatar, AvatarImage, AvatarFallback } from '../../../../../../../ui/src/components/avatar.mjs';
8
+ import { CheckCircle, ShieldOff, Trash2 } from 'lucide-react';
9
+ import { formatDistanceToNow } from 'date-fns';
10
+ import { toast } from 'sonner';
11
+ import { COMMENTS_LOCALIZATION } from '../../localization/index.mjs';
12
+ import { getInitials } from '../../utils.mjs';
13
+
14
+ function ResourceCommentsPage({
15
+ resourceId,
16
+ resourceType,
17
+ apiBaseURL,
18
+ apiBasePath,
19
+ headers,
20
+ currentUserId,
21
+ loginHref,
22
+ localization: localizationProp
23
+ }) {
24
+ const loc = { ...COMMENTS_LOCALIZATION, ...localizationProp };
25
+ const config = { apiBaseURL, apiBasePath, headers };
26
+ const {
27
+ comments: pendingComments,
28
+ total: pendingTotal,
29
+ refetch
30
+ } = useSuspenseComments(config, {
31
+ resourceId,
32
+ resourceType,
33
+ status: "pending"
34
+ });
35
+ const updateStatus = useUpdateCommentStatus(config);
36
+ const deleteMutation = useDeleteComment(config);
37
+ const handleApprove = async (id) => {
38
+ try {
39
+ await updateStatus.mutateAsync({ id, status: "approved" });
40
+ toast.success(loc.COMMENTS_RESOURCE_TOAST_APPROVED);
41
+ refetch();
42
+ } catch {
43
+ toast.error(loc.COMMENTS_RESOURCE_TOAST_APPROVE_ERROR);
44
+ }
45
+ };
46
+ const handleSpam = async (id) => {
47
+ try {
48
+ await updateStatus.mutateAsync({ id, status: "spam" });
49
+ toast.success(loc.COMMENTS_RESOURCE_TOAST_SPAM);
50
+ refetch();
51
+ } catch {
52
+ toast.error(loc.COMMENTS_RESOURCE_TOAST_SPAM_ERROR);
53
+ }
54
+ };
55
+ const handleDelete = async (id) => {
56
+ if (!window.confirm(loc.COMMENTS_RESOURCE_DELETE_CONFIRM)) return;
57
+ try {
58
+ await deleteMutation.mutateAsync(id);
59
+ toast.success(loc.COMMENTS_RESOURCE_TOAST_DELETED);
60
+ refetch();
61
+ } catch {
62
+ toast.error(loc.COMMENTS_RESOURCE_TOAST_DELETE_ERROR);
63
+ }
64
+ };
65
+ return /* @__PURE__ */ jsxs(
66
+ "div",
67
+ {
68
+ className: "w-full max-w-3xl space-y-8",
69
+ "data-testid": "resource-comments-page",
70
+ children: [
71
+ /* @__PURE__ */ jsxs("div", { children: [
72
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold", children: loc.COMMENTS_RESOURCE_TITLE }),
73
+ /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground text-sm mt-1", children: [
74
+ resourceType,
75
+ "/",
76
+ resourceId
77
+ ] })
78
+ ] }),
79
+ pendingTotal > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
80
+ /* @__PURE__ */ jsxs("h2", { className: "text-base font-semibold flex items-center gap-2", children: [
81
+ loc.COMMENTS_RESOURCE_PENDING_SECTION,
82
+ /* @__PURE__ */ jsx(Badge, { variant: "secondary", children: pendingTotal })
83
+ ] }),
84
+ /* @__PURE__ */ jsx("div", { className: "divide-y divide-border rounded-lg border", children: pendingComments.map((comment) => /* @__PURE__ */ jsx(
85
+ PendingCommentRow,
86
+ {
87
+ comment,
88
+ loc,
89
+ onApprove: () => handleApprove(comment.id),
90
+ onSpam: () => handleSpam(comment.id),
91
+ onDelete: () => handleDelete(comment.id),
92
+ isUpdating: updateStatus.isPending,
93
+ isDeleting: deleteMutation.isPending
94
+ },
95
+ comment.id
96
+ )) })
97
+ ] }),
98
+ /* @__PURE__ */ jsxs("div", { children: [
99
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold mb-4", children: loc.COMMENTS_RESOURCE_THREAD_SECTION }),
100
+ /* @__PURE__ */ jsx(
101
+ CommentThread,
102
+ {
103
+ resourceId,
104
+ resourceType,
105
+ apiBaseURL,
106
+ apiBasePath,
107
+ headers,
108
+ currentUserId,
109
+ loginHref,
110
+ localization: loc
111
+ }
112
+ )
113
+ ] })
114
+ ]
115
+ }
116
+ );
117
+ }
118
+ function PendingCommentRow({
119
+ comment,
120
+ loc,
121
+ onApprove,
122
+ onSpam,
123
+ onDelete,
124
+ isUpdating,
125
+ isDeleting
126
+ }) {
127
+ return /* @__PURE__ */ jsxs("div", { className: "flex gap-3 p-4", "data-testid": "pending-comment-row", children: [
128
+ /* @__PURE__ */ jsxs(Avatar, { className: "h-8 w-8 shrink-0 mt-0.5", children: [
129
+ comment.resolvedAvatarUrl && /* @__PURE__ */ jsx(AvatarImage, { src: comment.resolvedAvatarUrl }),
130
+ /* @__PURE__ */ jsx(AvatarFallback, { className: "text-xs", children: getInitials(comment.resolvedAuthorName) })
131
+ ] }),
132
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
133
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
134
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: comment.resolvedAuthorName }),
135
+ /* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: formatDistanceToNow(new Date(comment.createdAt), {
136
+ addSuffix: true
137
+ }) })
138
+ ] }),
139
+ /* @__PURE__ */ jsx("p", { className: "text-sm whitespace-pre-wrap break-words", children: comment.body }),
140
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1 mt-2", children: [
141
+ /* @__PURE__ */ jsxs(
142
+ Button,
143
+ {
144
+ size: "sm",
145
+ variant: "outline",
146
+ className: "h-7 text-xs text-green-600 border-green-200 hover:bg-green-50",
147
+ onClick: onApprove,
148
+ disabled: isUpdating,
149
+ "data-testid": "approve-button",
150
+ children: [
151
+ /* @__PURE__ */ jsx(CheckCircle, { className: "h-3.5 w-3.5 mr-1" }),
152
+ loc.COMMENTS_RESOURCE_ACTION_APPROVE
153
+ ]
154
+ }
155
+ ),
156
+ /* @__PURE__ */ jsxs(
157
+ Button,
158
+ {
159
+ size: "sm",
160
+ variant: "outline",
161
+ className: "h-7 text-xs text-orange-500 border-orange-200 hover:bg-orange-50",
162
+ onClick: onSpam,
163
+ disabled: isUpdating,
164
+ children: [
165
+ /* @__PURE__ */ jsx(ShieldOff, { className: "h-3.5 w-3.5 mr-1" }),
166
+ loc.COMMENTS_RESOURCE_ACTION_SPAM
167
+ ]
168
+ }
169
+ ),
170
+ /* @__PURE__ */ jsxs(
171
+ Button,
172
+ {
173
+ size: "sm",
174
+ variant: "outline",
175
+ className: "h-7 text-xs text-destructive border-destructive/30 hover:bg-destructive/5",
176
+ onClick: onDelete,
177
+ disabled: isDeleting,
178
+ children: [
179
+ /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5 mr-1" }),
180
+ loc.COMMENTS_RESOURCE_ACTION_DELETE
181
+ ]
182
+ }
183
+ )
184
+ ] })
185
+ ] })
186
+ ] });
187
+ }
188
+
189
+ export { ResourceCommentsPage };
@@ -0,0 +1,84 @@
1
+ "use client";
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { lazy } from 'react';
4
+ import { ComposedRoute } from '@btst/stack/client/components';
5
+ import { usePluginOverrides } from '@btst/stack/context';
6
+ import { COMMENTS_LOCALIZATION } from '../../localization/index.mjs';
7
+ import { useRouteLifecycle } from '../../../../../../../ui/src/hooks/use-route-lifecycle.mjs';
8
+ import { PageWrapper } from '../shared/page-wrapper.mjs';
9
+ import { useResolvedCurrentUserId } from '../../utils.mjs';
10
+
11
+ const ResourceCommentsPageInternal = lazy(
12
+ () => import('./resource-comments-page.internal.mjs').then((m) => ({
13
+ default: m.ResourceCommentsPage
14
+ }))
15
+ );
16
+ function ResourceCommentsSkeleton() {
17
+ return /* @__PURE__ */ jsxs("div", { className: "w-full max-w-3xl mx-auto space-y-4 animate-pulse", children: [
18
+ /* @__PURE__ */ jsx("div", { className: "h-8 w-48 rounded bg-muted" }),
19
+ /* @__PURE__ */ jsx("div", { className: "h-4 w-64 rounded bg-muted" }),
20
+ /* @__PURE__ */ jsx("div", { className: "rounded-lg border h-32 bg-muted" })
21
+ ] });
22
+ }
23
+ function ResourceCommentsPageComponent({
24
+ resourceId,
25
+ resourceType
26
+ }) {
27
+ return /* @__PURE__ */ jsx(
28
+ ComposedRoute,
29
+ {
30
+ path: `/comments/${resourceType}/${resourceId}`,
31
+ PageComponent: () => /* @__PURE__ */ jsx(
32
+ ResourceCommentsPageWrapper,
33
+ {
34
+ resourceId,
35
+ resourceType
36
+ }
37
+ ),
38
+ LoadingComponent: ResourceCommentsSkeleton,
39
+ onError: (error) => console.error("[btst/comments] Resource comments error:", error)
40
+ }
41
+ );
42
+ }
43
+ function ResourceCommentsPageWrapper({
44
+ resourceId,
45
+ resourceType
46
+ }) {
47
+ const overrides = usePluginOverrides("comments");
48
+ const loc = { ...COMMENTS_LOCALIZATION, ...overrides.localization };
49
+ const resolvedUserId = useResolvedCurrentUserId(overrides.currentUserId);
50
+ useRouteLifecycle({
51
+ routeName: "resourceComments",
52
+ context: {
53
+ path: `/comments/${resourceType}/${resourceId}`,
54
+ params: { resourceId, resourceType },
55
+ isSSR: typeof window === "undefined"
56
+ },
57
+ overrides,
58
+ beforeRenderHook: (o, context) => {
59
+ if (o.onBeforeResourceCommentsRendered) {
60
+ return o.onBeforeResourceCommentsRendered(
61
+ resourceType,
62
+ resourceId,
63
+ context
64
+ );
65
+ }
66
+ return true;
67
+ }
68
+ });
69
+ return /* @__PURE__ */ jsx(PageWrapper, { children: /* @__PURE__ */ jsx(
70
+ ResourceCommentsPageInternal,
71
+ {
72
+ resourceId,
73
+ resourceType,
74
+ apiBaseURL: overrides.apiBaseURL,
75
+ apiBasePath: overrides.apiBasePath,
76
+ headers: overrides.headers,
77
+ currentUserId: resolvedUserId,
78
+ loginHref: overrides.loginHref,
79
+ localization: loc
80
+ }
81
+ ) });
82
+ }
83
+
84
+ export { ResourceCommentsPageComponent };
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const jsxRuntime = require('react/jsx-runtime');
5
+ const context = require('@btst/stack/context');
6
+ const pageWrapper = require('../../../../../../../ui/src/components/page-wrapper.cjs');
7
+
8
+ function PageWrapper({
9
+ children,
10
+ className,
11
+ testId
12
+ }) {
13
+ const { showAttribution } = context.usePluginOverrides("comments", {
14
+ showAttribution: true
15
+ });
16
+ return /* @__PURE__ */ jsxRuntime.jsx(
17
+ pageWrapper.PageWrapper,
18
+ {
19
+ className,
20
+ testId,
21
+ showAttribution,
22
+ children
23
+ }
24
+ );
25
+ }
26
+
27
+ exports.PageWrapper = PageWrapper;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { usePluginOverrides } from '@btst/stack/context';
4
+ import { PageWrapper as PageWrapper$1 } from '../../../../../../../ui/src/components/page-wrapper.mjs';
5
+
6
+ function PageWrapper({
7
+ children,
8
+ className,
9
+ testId
10
+ }) {
11
+ const { showAttribution } = usePluginOverrides("comments", {
12
+ showAttribution: true
13
+ });
14
+ return /* @__PURE__ */ jsx(
15
+ PageWrapper$1,
16
+ {
17
+ className,
18
+ testId,
19
+ showAttribution,
20
+ children
21
+ }
22
+ );
23
+ }
24
+
25
+ export { PageWrapper };
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ const jsxRuntime = require('react/jsx-runtime');
5
+ const context = require('@btst/stack/context');
6
+ const index = require('../../localization/index.cjs');
7
+ const paginationControls = require('../../../../../../../ui/src/components/pagination-controls.cjs');
8
+
9
+ function Pagination({
10
+ currentPage,
11
+ totalPages,
12
+ onPageChange,
13
+ total,
14
+ limit,
15
+ offset
16
+ }) {
17
+ const { localization: customLocalization } = context.usePluginOverrides("comments");
18
+ const localization = { ...index.COMMENTS_LOCALIZATION, ...customLocalization };
19
+ return /* @__PURE__ */ jsxRuntime.jsx(
20
+ paginationControls.PaginationControls,
21
+ {
22
+ currentPage,
23
+ totalPages,
24
+ onPageChange,
25
+ total,
26
+ limit,
27
+ offset,
28
+ labels: {
29
+ previous: localization.COMMENTS_MODERATION_PAGINATION_PREVIOUS,
30
+ next: localization.COMMENTS_MODERATION_PAGINATION_NEXT,
31
+ showing: localization.COMMENTS_MODERATION_PAGINATION_SHOWING
32
+ }
33
+ }
34
+ );
35
+ }
36
+
37
+ exports.Pagination = Pagination;
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { usePluginOverrides } from '@btst/stack/context';
4
+ import { COMMENTS_LOCALIZATION } from '../../localization/index.mjs';
5
+ import { PaginationControls } from '../../../../../../../ui/src/components/pagination-controls.mjs';
6
+
7
+ function Pagination({
8
+ currentPage,
9
+ totalPages,
10
+ onPageChange,
11
+ total,
12
+ limit,
13
+ offset
14
+ }) {
15
+ const { localization: customLocalization } = usePluginOverrides("comments");
16
+ const localization = { ...COMMENTS_LOCALIZATION, ...customLocalization };
17
+ return /* @__PURE__ */ jsx(
18
+ PaginationControls,
19
+ {
20
+ currentPage,
21
+ totalPages,
22
+ onPageChange,
23
+ total,
24
+ limit,
25
+ offset,
26
+ labels: {
27
+ previous: localization.COMMENTS_MODERATION_PAGINATION_PREVIOUS,
28
+ next: localization.COMMENTS_MODERATION_PAGINATION_NEXT,
29
+ showing: localization.COMMENTS_MODERATION_PAGINATION_SHOWING
30
+ }
31
+ }
32
+ );
33
+ }
34
+
35
+ export { Pagination };