@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.
- package/README.md +1 -0
- package/dist/api/index.d.cts +2 -2
- package/dist/api/index.d.mts +2 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/client/index.d.cts +2 -2
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/components/auto-form/index.d.cts +2 -2
- package/dist/components/auto-form/index.d.mts +2 -2
- package/dist/components/auto-form/index.d.ts +2 -2
- package/dist/components/form-builder/index.d.cts +1 -1
- package/dist/components/form-builder/index.d.mts +1 -1
- package/dist/components/form-builder/index.d.ts +1 -1
- package/dist/components/stepped-auto-form/index.d.cts +1 -1
- package/dist/components/stepped-auto-form/index.d.mts +1 -1
- package/dist/components/stepped-auto-form/index.d.ts +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.cjs +13 -0
- package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.mjs +11 -0
- package/dist/packages/stack/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.cjs +17 -0
- package/dist/packages/stack/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.mjs +15 -0
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +18 -7
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +18 -7
- package/dist/packages/stack/src/plugins/blog/client/components/shared/post-navigation.cjs +48 -52
- package/dist/packages/stack/src/plugins/blog/client/components/shared/post-navigation.mjs +49 -53
- package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.cjs +34 -37
- package/dist/packages/stack/src/plugins/blog/client/components/shared/recent-posts-carousel.mjs +35 -38
- package/dist/packages/stack/src/plugins/blog/client/hooks/blog-hooks.cjs +4 -21
- package/dist/packages/stack/src/plugins/blog/client/hooks/blog-hooks.mjs +4 -21
- package/dist/packages/stack/src/plugins/comments/api/getters.cjs +284 -0
- package/dist/packages/stack/src/plugins/comments/api/getters.mjs +280 -0
- package/dist/packages/stack/src/plugins/comments/api/mutations.cjs +118 -0
- package/dist/packages/stack/src/plugins/comments/api/mutations.mjs +112 -0
- package/dist/packages/stack/src/plugins/comments/api/plugin.cjs +335 -0
- package/dist/packages/stack/src/plugins/comments/api/plugin.mjs +333 -0
- package/dist/packages/stack/src/plugins/comments/api/query-key-defs.cjs +60 -0
- package/dist/packages/stack/src/plugins/comments/api/query-key-defs.mjs +55 -0
- package/dist/packages/stack/src/plugins/comments/api/serializers.cjs +23 -0
- package/dist/packages/stack/src/plugins/comments/api/serializers.mjs +21 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-count.cjs +46 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-count.mjs +44 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-form.cjs +86 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-form.mjs +84 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.cjs +540 -0
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.mjs +538 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.cjs +64 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.cjs +426 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.internal.mjs +424 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/moderation-page.mjs +62 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.cjs +66 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.cjs +256 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.internal.mjs +254 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/my-comments-page.mjs +64 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.cjs +86 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.cjs +191 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.internal.mjs +189 -0
- package/dist/packages/stack/src/plugins/comments/client/components/pages/resource-comments-page.mjs +84 -0
- package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.cjs +27 -0
- package/dist/packages/stack/src/plugins/comments/client/components/shared/page-wrapper.mjs +25 -0
- package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.cjs +37 -0
- package/dist/packages/stack/src/plugins/comments/client/components/shared/pagination.mjs +35 -0
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.cjs +476 -0
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.mjs +464 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-moderation.cjs +67 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-moderation.mjs +65 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-my.cjs +27 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-my.mjs +25 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.cjs +30 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/comments-thread.mjs +28 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/index.cjs +13 -0
- package/dist/packages/stack/src/plugins/comments/client/localization/index.mjs +11 -0
- package/dist/packages/stack/src/plugins/comments/client/plugin.cjs +116 -0
- package/dist/packages/stack/src/plugins/comments/client/plugin.mjs +114 -0
- package/dist/packages/stack/src/plugins/comments/client/utils.cjs +41 -0
- package/dist/packages/stack/src/plugins/comments/client/utils.mjs +37 -0
- package/dist/packages/stack/src/plugins/comments/db.cjs +75 -0
- package/dist/packages/stack/src/plugins/comments/db.mjs +73 -0
- package/dist/packages/stack/src/plugins/comments/schemas.cjs +45 -0
- package/dist/packages/stack/src/plugins/comments/schemas.mjs +38 -0
- package/dist/packages/stack/src/plugins/kanban/api/plugin.cjs +5 -4
- package/dist/packages/stack/src/plugins/kanban/api/plugin.mjs +5 -4
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.cjs +0 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/forms/task-form.mjs +0 -1
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.cjs +39 -22
- package/dist/packages/stack/src/plugins/kanban/client/components/pages/board-page.internal.mjs +40 -23
- package/dist/packages/ui/src/components/avatar.mjs +1 -1
- package/dist/packages/ui/src/components/pagination-controls.cjs +64 -0
- package/dist/packages/ui/src/components/pagination-controls.mjs +62 -0
- package/dist/packages/ui/src/components/when-visible.cjs +39 -0
- package/dist/packages/ui/src/components/when-visible.mjs +37 -0
- package/dist/plugins/ai-chat/api/index.d.cts +4 -6
- package/dist/plugins/ai-chat/api/index.d.mts +4 -6
- package/dist/plugins/ai-chat/api/index.d.ts +4 -6
- package/dist/plugins/ai-chat/client/hooks/index.d.cts +1 -3
- package/dist/plugins/ai-chat/client/hooks/index.d.mts +1 -3
- package/dist/plugins/ai-chat/client/hooks/index.d.ts +1 -3
- package/dist/plugins/ai-chat/query-keys.d.cts +1 -3
- package/dist/plugins/ai-chat/query-keys.d.mts +1 -3
- package/dist/plugins/ai-chat/query-keys.d.ts +1 -3
- package/dist/plugins/api/index.d.cts +3 -3
- package/dist/plugins/api/index.d.mts +3 -3
- package/dist/plugins/api/index.d.ts +3 -3
- package/dist/plugins/blog/api/index.d.cts +3 -3
- package/dist/plugins/blog/api/index.d.mts +3 -3
- package/dist/plugins/blog/api/index.d.ts +3 -3
- package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
- package/dist/plugins/blog/client/index.d.cts +25 -3
- package/dist/plugins/blog/client/index.d.mts +25 -3
- package/dist/plugins/blog/client/index.d.ts +25 -3
- package/dist/plugins/blog/query-keys.d.cts +3 -3
- package/dist/plugins/blog/query-keys.d.mts +3 -3
- package/dist/plugins/blog/query-keys.d.ts +3 -3
- package/dist/plugins/client/index.d.cts +2 -2
- package/dist/plugins/client/index.d.mts +2 -2
- package/dist/plugins/client/index.d.ts +2 -2
- package/dist/plugins/cms/api/index.d.cts +1 -1
- package/dist/plugins/cms/api/index.d.mts +1 -1
- package/dist/plugins/cms/api/index.d.ts +1 -1
- package/dist/plugins/cms/client/index.d.cts +1 -1
- package/dist/plugins/cms/client/index.d.mts +1 -1
- package/dist/plugins/cms/client/index.d.ts +1 -1
- package/dist/plugins/cms/query-keys.d.cts +1 -1
- package/dist/plugins/cms/query-keys.d.mts +1 -1
- package/dist/plugins/cms/query-keys.d.ts +1 -1
- package/dist/plugins/comments/api/index.cjs +21 -0
- package/dist/plugins/comments/api/index.d.cts +126 -0
- package/dist/plugins/comments/api/index.d.mts +126 -0
- package/dist/plugins/comments/api/index.d.ts +126 -0
- package/dist/plugins/comments/api/index.mjs +5 -0
- package/dist/plugins/comments/client/components/index.cjs +15 -0
- package/dist/plugins/comments/client/components/index.d.cts +125 -0
- package/dist/plugins/comments/client/components/index.d.mts +125 -0
- package/dist/plugins/comments/client/components/index.d.ts +125 -0
- package/dist/plugins/comments/client/components/index.mjs +5 -0
- package/dist/plugins/comments/client/hooks/index.cjs +17 -0
- package/dist/plugins/comments/client/hooks/index.d.cts +200 -0
- package/dist/plugins/comments/client/hooks/index.d.mts +200 -0
- package/dist/plugins/comments/client/hooks/index.d.ts +200 -0
- package/dist/plugins/comments/client/hooks/index.mjs +1 -0
- package/dist/plugins/comments/client/index.cjs +9 -0
- package/dist/plugins/comments/client/index.d.cts +262 -0
- package/dist/plugins/comments/client/index.d.mts +262 -0
- package/dist/plugins/comments/client/index.d.ts +262 -0
- package/dist/plugins/comments/client/index.mjs +2 -0
- package/dist/plugins/comments/client.css +2 -0
- package/dist/plugins/comments/query-keys.cjs +113 -0
- package/dist/plugins/comments/query-keys.d.cts +71 -0
- package/dist/plugins/comments/query-keys.d.mts +71 -0
- package/dist/plugins/comments/query-keys.d.ts +71 -0
- package/dist/plugins/comments/query-keys.mjs +111 -0
- package/dist/plugins/comments/style.css +15 -0
- package/dist/plugins/form-builder/api/index.d.cts +2 -2
- package/dist/plugins/form-builder/api/index.d.mts +2 -2
- package/dist/plugins/form-builder/api/index.d.ts +2 -2
- package/dist/plugins/form-builder/client/components/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/components/index.d.ts +1 -1
- package/dist/plugins/form-builder/client/index.d.cts +1 -1
- package/dist/plugins/form-builder/client/index.d.mts +1 -1
- package/dist/plugins/form-builder/client/index.d.ts +1 -1
- package/dist/plugins/form-builder/query-keys.d.cts +1 -1
- package/dist/plugins/form-builder/query-keys.d.mts +1 -1
- package/dist/plugins/form-builder/query-keys.d.ts +1 -1
- package/dist/plugins/kanban/api/index.d.cts +2 -2
- package/dist/plugins/kanban/api/index.d.mts +2 -2
- package/dist/plugins/kanban/api/index.d.ts +2 -2
- package/dist/plugins/kanban/client/hooks/index.d.cts +1 -1
- package/dist/plugins/kanban/client/hooks/index.d.mts +1 -1
- package/dist/plugins/kanban/client/hooks/index.d.ts +1 -1
- package/dist/plugins/kanban/client/index.d.cts +1 -1
- package/dist/plugins/kanban/client/index.d.mts +1 -1
- package/dist/plugins/kanban/client/index.d.ts +1 -1
- package/dist/plugins/kanban/query-keys.d.cts +2 -2
- package/dist/plugins/kanban/query-keys.d.mts +2 -2
- package/dist/plugins/kanban/query-keys.d.ts +2 -2
- package/dist/plugins/open-api/api/index.d.cts +3 -3
- package/dist/plugins/open-api/api/index.d.mts +3 -3
- package/dist/plugins/open-api/api/index.d.ts +3 -3
- package/dist/plugins/route-docs/client/index.d.cts +1 -1
- package/dist/plugins/route-docs/client/index.d.mts +1 -1
- package/dist/plugins/route-docs/client/index.d.ts +1 -1
- package/dist/plugins/ui-builder/client/components/index.d.cts +2 -2
- package/dist/plugins/ui-builder/client/components/index.d.mts +2 -2
- package/dist/plugins/ui-builder/client/components/index.d.ts +2 -2
- package/dist/plugins/ui-builder/client/hooks/index.d.cts +3 -3
- package/dist/plugins/ui-builder/client/hooks/index.d.mts +3 -3
- package/dist/plugins/ui-builder/client/hooks/index.d.ts +3 -3
- package/dist/plugins/ui-builder/client/index.d.cts +3 -3
- package/dist/plugins/ui-builder/client/index.d.mts +3 -3
- package/dist/plugins/ui-builder/client/index.d.ts +3 -3
- package/dist/plugins/ui-builder/index.d.cts +3 -3
- package/dist/plugins/ui-builder/index.d.mts +3 -3
- package/dist/plugins/ui-builder/index.d.ts +3 -3
- package/dist/shared/{stack.B1srlBud.d.mts → stack.BFoBvGML.d.mts} +1 -1
- package/dist/shared/{stack.DmpPDPxA.d.cts → stack.BOCvd9HK.d.cts} +1 -1
- package/dist/shared/{stack.n1_i1p2B.d.cts → stack.BOokfhZD.d.cts} +170 -110
- package/dist/shared/{stack.DXnclTG7.d.ts → stack.BSqJrCTM.d.cts} +120 -59
- package/dist/shared/{stack.B58oHdqm.d.mts → stack.BX7MHi0J.d.mts} +90 -45
- package/dist/shared/{stack.cfCkioTe.d.mts → stack.BXxrFL9R.d.ts} +120 -59
- package/dist/shared/{stack.CSx98K5H.d.cts → stack.BYN8wCV6.d.cts} +87 -58
- package/dist/shared/{stack.FVWf2JhZ.d.mts → stack.BgQrdSlo.d.mts} +60 -45
- package/dist/shared/{stack.BK9Z2dcL.d.ts → stack.BmMB0LNC.d.ts} +1 -1
- package/dist/shared/{stack.j75TpKh2.d.ts → stack.BvCR4-9H.d.ts} +170 -110
- package/dist/shared/{stack.FeaWkglm.d.ts → stack.BxFl46lB.d.cts} +24 -1
- package/dist/shared/stack.C-b3Sn8j.d.cts +142 -0
- package/dist/shared/stack.C-b3Sn8j.d.mts +142 -0
- package/dist/shared/stack.C-b3Sn8j.d.ts +142 -0
- package/dist/shared/{stack.CFECM0ew.d.cts → stack.C1nXGBr6.d.cts} +1 -1
- package/dist/shared/{stack.C9Mg2Q46.d.cts → stack.C9zoS1TN.d.cts} +90 -45
- package/dist/shared/stack.CJE9sAjV.d.ts +335 -0
- package/dist/shared/{stack.fdi94T4S.d.mts → stack.CPsYC2-Z.d.cts} +7 -7
- package/dist/shared/{stack.fdi94T4S.d.ts → stack.CPsYC2-Z.d.mts} +7 -7
- package/dist/shared/{stack.fdi94T4S.d.cts → stack.CPsYC2-Z.d.ts} +7 -7
- package/dist/shared/{stack.7n9Y_u7N.d.cts → stack.CQnwAN7x.d.cts} +6 -6
- package/dist/shared/{stack.7n9Y_u7N.d.mts → stack.CQnwAN7x.d.mts} +6 -6
- package/dist/shared/{stack.7n9Y_u7N.d.ts → stack.CQnwAN7x.d.ts} +6 -6
- package/dist/shared/{stack.CxaFNQCV.d.mts → stack.CWxAl9K3.d.mts} +170 -110
- package/dist/shared/{stack.D-b5zbPm.d.cts → stack.Cbsrl06u.d.cts} +60 -45
- package/dist/shared/stack.CmHRdhl8.d.cts +335 -0
- package/dist/shared/{stack.BgTmujxW.d.mts → stack.D88yU4FT.d.mts} +87 -58
- package/dist/shared/{stack.DVtk5CNw.d.mts → stack.DLPa6Gzm.d.mts} +1 -1
- package/dist/shared/{stack.BAT540yW.d.ts → stack.DOZ1EXjM.d.mts} +9 -15
- package/dist/shared/{stack.FeaWkglm.d.mts → stack.DRpeDS6X.d.ts} +24 -1
- package/dist/shared/{stack.B8vT-Yt4.d.mts → stack.DX-tQ93o.d.cts} +9 -15
- package/dist/shared/stack.Dcz6636A.d.mts +335 -0
- package/dist/shared/{stack.ASwEoINr.d.ts → stack.DxJ-tHLt.d.ts} +1 -1
- package/dist/shared/{stack.DaZM10cp.d.cts → stack.DzOhpIYM.d.mts} +120 -59
- package/dist/shared/{stack.CTDVxbrA.d.ts → stack.Fl2Kl_bt.d.ts} +60 -45
- package/dist/shared/{stack.FeaWkglm.d.cts → stack.Jb0kQDJC.d.mts} +24 -1
- package/dist/shared/stack.Ldfkr5b2.d.cts +112 -0
- package/dist/shared/stack.Ldfkr5b2.d.mts +112 -0
- package/dist/shared/stack.Ldfkr5b2.d.ts +112 -0
- package/dist/shared/{stack.CLQuVdwK.d.ts → stack.RuQ9JCLo.d.ts} +87 -58
- package/dist/shared/{stack.BwA7trxA.d.cts → stack.VF6FhyZw.d.ts} +9 -15
- package/dist/shared/{stack.sO33ZDhK.d.ts → stack.fQjVhw5a.d.ts} +90 -45
- package/package.json +70 -5
- package/src/__tests__/plugins.test.tsx +5 -1
- package/src/__tests__/stack-api.test.ts +1 -1
- package/src/plugins/ai-chat/__tests__/getters.test.ts +1 -1
- package/src/plugins/ai-chat/api/getters.ts +1 -1
- package/src/plugins/ai-chat/api/plugin.ts +1 -1
- package/src/plugins/api/index.ts +5 -1
- package/src/plugins/blog/__tests__/getters.test.ts +1 -1
- package/src/plugins/blog/api/getters.ts +1 -1
- package/src/plugins/blog/api/plugin.ts +1 -1
- package/src/plugins/blog/client/components/loading/post-navigation-skeleton.tsx +10 -0
- package/src/plugins/blog/client/components/loading/recent-posts-carousel-skeleton.tsx +18 -0
- package/src/plugins/blog/client/components/pages/post-page.internal.tsx +23 -8
- package/src/plugins/blog/client/components/shared/post-navigation.tsx +0 -5
- package/src/plugins/blog/client/components/shared/recent-posts-carousel.tsx +1 -5
- package/src/plugins/blog/client/hooks/blog-hooks.tsx +8 -33
- package/src/plugins/blog/client/overrides.ts +26 -1
- package/src/plugins/cms/__tests__/getters.test.ts +1 -1
- package/src/plugins/cms/api/getters.ts +1 -1
- package/src/plugins/cms/api/mutations.ts +1 -1
- package/src/plugins/cms/api/plugin.ts +1 -1
- package/src/plugins/cms/client/components/shared/pagination.tsx +14 -42
- package/src/plugins/comments/api/getters.ts +444 -0
- package/src/plugins/comments/api/index.ts +21 -0
- package/src/plugins/comments/api/mutations.ts +206 -0
- package/src/plugins/comments/api/plugin.ts +628 -0
- package/src/plugins/comments/api/query-key-defs.ts +143 -0
- package/src/plugins/comments/api/serializers.ts +37 -0
- package/src/plugins/comments/client/components/comment-count.tsx +66 -0
- package/src/plugins/comments/client/components/comment-form.tsx +112 -0
- package/src/plugins/comments/client/components/comment-thread.tsx +799 -0
- package/src/plugins/comments/client/components/index.tsx +11 -0
- package/src/plugins/comments/client/components/pages/moderation-page.internal.tsx +550 -0
- package/src/plugins/comments/client/components/pages/moderation-page.tsx +70 -0
- package/src/plugins/comments/client/components/pages/my-comments-page.internal.tsx +367 -0
- package/src/plugins/comments/client/components/pages/my-comments-page.tsx +72 -0
- package/src/plugins/comments/client/components/pages/resource-comments-page.internal.tsx +225 -0
- package/src/plugins/comments/client/components/pages/resource-comments-page.tsx +97 -0
- package/src/plugins/comments/client/components/shared/page-wrapper.tsx +32 -0
- package/src/plugins/comments/client/components/shared/pagination.tsx +44 -0
- package/src/plugins/comments/client/hooks/index.tsx +13 -0
- package/src/plugins/comments/client/hooks/use-comments.tsx +717 -0
- package/src/plugins/comments/client/index.ts +14 -0
- package/src/plugins/comments/client/localization/comments-moderation.ts +75 -0
- package/src/plugins/comments/client/localization/comments-my.ts +32 -0
- package/src/plugins/comments/client/localization/comments-thread.ts +32 -0
- package/src/plugins/comments/client/localization/index.ts +11 -0
- package/src/plugins/comments/client/overrides.ts +164 -0
- package/src/plugins/comments/client/plugin.tsx +195 -0
- package/src/plugins/comments/client/utils.ts +67 -0
- package/src/plugins/comments/client.css +2 -0
- package/src/plugins/comments/db.ts +77 -0
- package/src/plugins/comments/query-keys.ts +189 -0
- package/src/plugins/comments/schemas.ts +72 -0
- package/src/plugins/comments/style.css +15 -0
- package/src/plugins/comments/types.ts +73 -0
- package/src/plugins/form-builder/__tests__/getters.test.ts +1 -1
- package/src/plugins/form-builder/api/getters.ts +1 -1
- package/src/plugins/form-builder/api/plugin.ts +1 -1
- package/src/plugins/kanban/__tests__/getters.test.ts +1 -1
- package/src/plugins/kanban/api/getters.ts +1 -1
- package/src/plugins/kanban/api/mutations.ts +1 -1
- package/src/plugins/kanban/api/plugin.ts +6 -5
- package/src/plugins/kanban/client/components/forms/task-form.tsx +0 -1
- package/src/plugins/kanban/client/components/pages/board-page.internal.tsx +46 -27
- package/src/plugins/kanban/client/overrides.ts +27 -1
- package/src/types.ts +5 -1
- package/dist/shared/{stack.BQmuNl5p.d.mts → stack.BWp0hcm9.d.cts} +3 -3
- package/dist/shared/{stack.BQmuNl5p.d.ts → stack.BWp0hcm9.d.mts} +3 -3
- package/dist/shared/{stack.BQmuNl5p.d.cts → stack.BWp0hcm9.d.ts} +3 -3
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
|
-
import
|
|
3
|
-
import { Adapter } from '@btst/db';
|
|
2
|
+
import { DBAdapter } from '@btst/db';
|
|
4
3
|
import { B as BoardWithColumns, P as Priority, T as Task, d as Board, e as Column, C as ColumnWithTasks } from './stack.DJaKVY7v.js';
|
|
5
4
|
import { z } from 'zod';
|
|
5
|
+
import * as better_call from 'better-call';
|
|
6
6
|
import { QueryClient } from '@tanstack/react-query';
|
|
7
7
|
|
|
8
8
|
declare const createBoardSchema: z.ZodObject<{
|
|
9
9
|
description: z.ZodOptional<z.ZodString>;
|
|
10
10
|
name: z.ZodString;
|
|
11
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
12
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
11
13
|
slug: z.ZodOptional<z.ZodString>;
|
|
12
14
|
ownerId: z.ZodOptional<z.ZodString>;
|
|
13
15
|
organizationId: z.ZodOptional<z.ZodString>;
|
|
14
|
-
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
15
|
-
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
16
16
|
}, z.core.$strip>;
|
|
17
17
|
declare const updateBoardSchema: z.ZodObject<{
|
|
18
18
|
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
@@ -28,8 +28,8 @@ declare const createColumnSchema: z.ZodObject<{
|
|
|
28
28
|
title: z.ZodString;
|
|
29
29
|
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
30
30
|
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
31
|
-
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
32
31
|
boardId: z.ZodString;
|
|
32
|
+
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
33
33
|
}, z.core.$strip>;
|
|
34
34
|
declare const updateColumnSchema: z.ZodObject<{
|
|
35
35
|
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
@@ -98,7 +98,7 @@ interface BoardListResult {
|
|
|
98
98
|
* @param adapter - The database adapter
|
|
99
99
|
* @param params - Optional filter/pagination parameters (same shape as the list API query)
|
|
100
100
|
*/
|
|
101
|
-
declare function getAllBoards(adapter:
|
|
101
|
+
declare function getAllBoards(adapter: DBAdapter, params?: z.infer<typeof BoardListQuerySchema>): Promise<BoardListResult>;
|
|
102
102
|
/**
|
|
103
103
|
* Retrieve a single board by its ID, with all columns and tasks.
|
|
104
104
|
* Returns null if the board is not found.
|
|
@@ -107,7 +107,7 @@ declare function getAllBoards(adapter: Adapter, params?: z.infer<typeof BoardLis
|
|
|
107
107
|
* @param adapter - The database adapter
|
|
108
108
|
* @param id - The board ID
|
|
109
109
|
*/
|
|
110
|
-
declare function getBoardById(adapter:
|
|
110
|
+
declare function getBoardById(adapter: DBAdapter, id: string): Promise<BoardWithColumns | null>;
|
|
111
111
|
|
|
112
112
|
/**
|
|
113
113
|
* Input for creating a new Kanban task.
|
|
@@ -130,7 +130,7 @@ interface CreateKanbanTaskInput {
|
|
|
130
130
|
* @param adapter - The database adapter
|
|
131
131
|
* @param input - Task creation input
|
|
132
132
|
*/
|
|
133
|
-
declare function createKanbanTask(adapter:
|
|
133
|
+
declare function createKanbanTask(adapter: DBAdapter, input: CreateKanbanTaskInput): Promise<Task>;
|
|
134
134
|
/**
|
|
135
135
|
* Find a board by slug, or create it with the given name and custom column titles.
|
|
136
136
|
*
|
|
@@ -148,7 +148,7 @@ declare function createKanbanTask(adapter: Adapter, input: CreateKanbanTaskInput
|
|
|
148
148
|
* @param name - Display name for the board (used only on creation)
|
|
149
149
|
* @param columnTitles - Ordered list of column names to create (used only on creation)
|
|
150
150
|
*/
|
|
151
|
-
declare function findOrCreateKanbanBoard(adapter:
|
|
151
|
+
declare function findOrCreateKanbanBoard(adapter: DBAdapter, slug: string, name: string, columnTitles: string[]): Promise<Board>;
|
|
152
152
|
/**
|
|
153
153
|
* Retrieve all columns for a given board, sorted by order.
|
|
154
154
|
* Co-located with mutations because it is primarily used alongside
|
|
@@ -159,7 +159,7 @@ declare function findOrCreateKanbanBoard(adapter: Adapter, slug: string, name: s
|
|
|
159
159
|
* @param adapter - The database adapter
|
|
160
160
|
* @param boardId - The board ID
|
|
161
161
|
*/
|
|
162
|
-
declare function getKanbanColumnsByBoardId(adapter:
|
|
162
|
+
declare function getKanbanColumnsByBoardId(adapter: DBAdapter, boardId: string): Promise<Column[]>;
|
|
163
163
|
|
|
164
164
|
/**
|
|
165
165
|
* Route keys for the Kanban plugin — matches the keys returned by
|
|
@@ -306,30 +306,45 @@ interface KanbanBackendHooks {
|
|
|
306
306
|
* @param hooks - Optional configuration hooks for customizing plugin behavior
|
|
307
307
|
*/
|
|
308
308
|
declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_plugins_api.BackendPlugin<{
|
|
309
|
-
readonly listBoards: better_call.StrictEndpoint<"/boards", {
|
|
309
|
+
readonly listBoards: better_call.StrictEndpoint<"/boards", {} & {
|
|
310
310
|
method: "GET";
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
311
|
+
} & {
|
|
312
|
+
query: better_call.StandardSchemaV1<{
|
|
313
|
+
slug?: string | undefined;
|
|
314
|
+
ownerId?: string | undefined;
|
|
315
|
+
organizationId?: string | undefined;
|
|
316
|
+
offset?: unknown;
|
|
317
|
+
limit?: unknown;
|
|
318
|
+
}, {
|
|
319
|
+
slug?: string | undefined;
|
|
320
|
+
ownerId?: string | undefined;
|
|
321
|
+
organizationId?: string | undefined;
|
|
322
|
+
offset?: unknown;
|
|
323
|
+
limit?: unknown;
|
|
324
|
+
}>;
|
|
318
325
|
}, BoardListResult>;
|
|
319
|
-
readonly getBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
326
|
+
readonly getBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
|
|
320
327
|
method: "GET";
|
|
321
328
|
}, BoardWithColumns>;
|
|
322
|
-
readonly createBoard: better_call.StrictEndpoint<"/boards", {
|
|
329
|
+
readonly createBoard: better_call.StrictEndpoint<"/boards", {} & {
|
|
323
330
|
method: "POST";
|
|
324
|
-
body:
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
},
|
|
331
|
+
body: better_call.StandardSchemaV1<{
|
|
332
|
+
name: string;
|
|
333
|
+
description?: string | undefined;
|
|
334
|
+
createdAt?: unknown;
|
|
335
|
+
updatedAt?: unknown;
|
|
336
|
+
slug?: string | undefined;
|
|
337
|
+
ownerId?: string | undefined;
|
|
338
|
+
organizationId?: string | undefined;
|
|
339
|
+
}, {
|
|
340
|
+
name: string;
|
|
341
|
+
description?: string | undefined;
|
|
342
|
+
createdAt?: unknown;
|
|
343
|
+
updatedAt?: unknown;
|
|
344
|
+
slug?: string | undefined;
|
|
345
|
+
ownerId?: string | undefined;
|
|
346
|
+
organizationId?: string | undefined;
|
|
347
|
+
}>;
|
|
333
348
|
}, {
|
|
334
349
|
columns: ColumnWithTasks[];
|
|
335
350
|
id: string;
|
|
@@ -341,116 +356,161 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
|
|
|
341
356
|
createdAt: Date;
|
|
342
357
|
updatedAt: Date;
|
|
343
358
|
}>;
|
|
344
|
-
readonly updateBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
359
|
+
readonly updateBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
|
|
345
360
|
method: "PUT";
|
|
346
|
-
body:
|
|
347
|
-
description
|
|
348
|
-
name
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
},
|
|
361
|
+
body: better_call.StandardSchemaV1<{
|
|
362
|
+
description?: string | undefined;
|
|
363
|
+
name?: string | undefined;
|
|
364
|
+
createdAt?: unknown;
|
|
365
|
+
updatedAt?: unknown;
|
|
366
|
+
slug?: string | undefined;
|
|
367
|
+
ownerId?: string | undefined;
|
|
368
|
+
organizationId?: string | undefined;
|
|
369
|
+
}, {
|
|
370
|
+
description?: string | undefined;
|
|
371
|
+
name?: string | undefined;
|
|
372
|
+
createdAt?: unknown;
|
|
373
|
+
updatedAt?: unknown;
|
|
374
|
+
slug?: string | undefined;
|
|
375
|
+
ownerId?: string | undefined;
|
|
376
|
+
organizationId?: string | undefined;
|
|
377
|
+
}>;
|
|
355
378
|
}, Board>;
|
|
356
|
-
readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
379
|
+
readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {} & {
|
|
357
380
|
method: "DELETE";
|
|
381
|
+
body: better_call.StandardSchemaV1<unknown, unknown>;
|
|
358
382
|
}, {
|
|
359
383
|
success: boolean;
|
|
360
384
|
}>;
|
|
361
|
-
readonly createColumn: better_call.StrictEndpoint<"/columns", {
|
|
385
|
+
readonly createColumn: better_call.StrictEndpoint<"/columns", {} & {
|
|
362
386
|
method: "POST";
|
|
363
|
-
body:
|
|
364
|
-
title:
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
},
|
|
387
|
+
body: better_call.StandardSchemaV1<{
|
|
388
|
+
title: string;
|
|
389
|
+
boardId: string;
|
|
390
|
+
createdAt?: unknown;
|
|
391
|
+
updatedAt?: unknown;
|
|
392
|
+
order?: number | undefined;
|
|
393
|
+
}, {
|
|
394
|
+
title: string;
|
|
395
|
+
boardId: string;
|
|
396
|
+
createdAt?: unknown;
|
|
397
|
+
updatedAt?: unknown;
|
|
398
|
+
order?: number | undefined;
|
|
399
|
+
}>;
|
|
370
400
|
}, Column>;
|
|
371
|
-
readonly updateColumn: better_call.StrictEndpoint<"/columns/:id", {
|
|
401
|
+
readonly updateColumn: better_call.StrictEndpoint<"/columns/:id", {} & {
|
|
372
402
|
method: "PUT";
|
|
373
|
-
body:
|
|
374
|
-
title
|
|
375
|
-
createdAt
|
|
376
|
-
updatedAt
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
},
|
|
403
|
+
body: better_call.StandardSchemaV1<{
|
|
404
|
+
title?: string | undefined;
|
|
405
|
+
createdAt?: unknown;
|
|
406
|
+
updatedAt?: unknown;
|
|
407
|
+
boardId?: string | undefined;
|
|
408
|
+
order?: number | undefined;
|
|
409
|
+
}, {
|
|
410
|
+
title?: string | undefined;
|
|
411
|
+
createdAt?: unknown;
|
|
412
|
+
updatedAt?: unknown;
|
|
413
|
+
boardId?: string | undefined;
|
|
414
|
+
order?: number | undefined;
|
|
415
|
+
}>;
|
|
380
416
|
}, Column>;
|
|
381
|
-
readonly deleteColumn: better_call.StrictEndpoint<"/columns/:id", {
|
|
417
|
+
readonly deleteColumn: better_call.StrictEndpoint<"/columns/:id", {} & {
|
|
382
418
|
method: "DELETE";
|
|
419
|
+
body: better_call.StandardSchemaV1<unknown, unknown>;
|
|
383
420
|
}, {
|
|
384
421
|
success: boolean;
|
|
385
422
|
}>;
|
|
386
|
-
readonly reorderColumns: better_call.StrictEndpoint<"/columns/reorder", {
|
|
423
|
+
readonly reorderColumns: better_call.StrictEndpoint<"/columns/reorder", {} & {
|
|
387
424
|
method: "POST";
|
|
388
|
-
body:
|
|
389
|
-
boardId:
|
|
390
|
-
columnIds:
|
|
391
|
-
},
|
|
425
|
+
body: better_call.StandardSchemaV1<{
|
|
426
|
+
boardId: string;
|
|
427
|
+
columnIds: string[];
|
|
428
|
+
}, {
|
|
429
|
+
boardId: string;
|
|
430
|
+
columnIds: string[];
|
|
431
|
+
}>;
|
|
392
432
|
}, {
|
|
393
433
|
success: boolean;
|
|
394
434
|
}>;
|
|
395
|
-
readonly createTask: better_call.StrictEndpoint<"/tasks", {
|
|
435
|
+
readonly createTask: better_call.StrictEndpoint<"/tasks", {} & {
|
|
396
436
|
method: "POST";
|
|
397
|
-
body:
|
|
398
|
-
title:
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
columnId:
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
437
|
+
body: better_call.StandardSchemaV1<{
|
|
438
|
+
title: string;
|
|
439
|
+
columnId: string;
|
|
440
|
+
description?: string | undefined;
|
|
441
|
+
createdAt?: unknown;
|
|
442
|
+
updatedAt?: unknown;
|
|
443
|
+
order?: number | undefined;
|
|
444
|
+
completedAt?: unknown;
|
|
445
|
+
priority?: "LOW" | "MEDIUM" | "HIGH" | "URGENT" | undefined;
|
|
446
|
+
assigneeId?: string | null | undefined;
|
|
447
|
+
isArchived?: boolean | undefined;
|
|
448
|
+
}, {
|
|
449
|
+
title: string;
|
|
450
|
+
columnId: string;
|
|
451
|
+
description?: string | undefined;
|
|
452
|
+
createdAt?: unknown;
|
|
453
|
+
updatedAt?: unknown;
|
|
454
|
+
order?: number | undefined;
|
|
455
|
+
completedAt?: unknown;
|
|
456
|
+
priority?: "LOW" | "MEDIUM" | "HIGH" | "URGENT" | undefined;
|
|
457
|
+
assigneeId?: string | null | undefined;
|
|
458
|
+
isArchived?: boolean | undefined;
|
|
459
|
+
}>;
|
|
414
460
|
}, Task>;
|
|
415
|
-
readonly updateTask: better_call.StrictEndpoint<"/tasks/:id", {
|
|
461
|
+
readonly updateTask: better_call.StrictEndpoint<"/tasks/:id", {} & {
|
|
416
462
|
method: "PUT";
|
|
417
|
-
body:
|
|
418
|
-
title
|
|
419
|
-
description
|
|
420
|
-
createdAt
|
|
421
|
-
updatedAt
|
|
422
|
-
order
|
|
423
|
-
completedAt
|
|
424
|
-
priority
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
463
|
+
body: better_call.StandardSchemaV1<{
|
|
464
|
+
title?: string | undefined;
|
|
465
|
+
description?: string | undefined;
|
|
466
|
+
createdAt?: unknown;
|
|
467
|
+
updatedAt?: unknown;
|
|
468
|
+
order?: number | undefined;
|
|
469
|
+
completedAt?: unknown;
|
|
470
|
+
priority?: "LOW" | "MEDIUM" | "HIGH" | "URGENT" | undefined;
|
|
471
|
+
columnId?: string | undefined;
|
|
472
|
+
assigneeId?: string | null | undefined;
|
|
473
|
+
isArchived?: boolean | undefined;
|
|
474
|
+
}, {
|
|
475
|
+
title?: string | undefined;
|
|
476
|
+
description?: string | undefined;
|
|
477
|
+
createdAt?: unknown;
|
|
478
|
+
updatedAt?: unknown;
|
|
479
|
+
order?: number | undefined;
|
|
480
|
+
completedAt?: unknown;
|
|
481
|
+
priority?: "LOW" | "MEDIUM" | "HIGH" | "URGENT" | undefined;
|
|
482
|
+
columnId?: string | undefined;
|
|
483
|
+
assigneeId?: string | null | undefined;
|
|
484
|
+
isArchived?: boolean | undefined;
|
|
485
|
+
}>;
|
|
434
486
|
}, Task>;
|
|
435
|
-
readonly deleteTask: better_call.StrictEndpoint<"/tasks/:id", {
|
|
487
|
+
readonly deleteTask: better_call.StrictEndpoint<"/tasks/:id", {} & {
|
|
436
488
|
method: "DELETE";
|
|
489
|
+
body: better_call.StandardSchemaV1<unknown, unknown>;
|
|
437
490
|
}, {
|
|
438
491
|
success: boolean;
|
|
439
492
|
}>;
|
|
440
|
-
readonly moveTask: better_call.StrictEndpoint<"/tasks/move", {
|
|
493
|
+
readonly moveTask: better_call.StrictEndpoint<"/tasks/move", {} & {
|
|
441
494
|
method: "POST";
|
|
442
|
-
body:
|
|
443
|
-
taskId:
|
|
444
|
-
targetColumnId:
|
|
445
|
-
targetOrder:
|
|
446
|
-
},
|
|
495
|
+
body: better_call.StandardSchemaV1<{
|
|
496
|
+
taskId: string;
|
|
497
|
+
targetColumnId: string;
|
|
498
|
+
targetOrder: number;
|
|
499
|
+
}, {
|
|
500
|
+
taskId: string;
|
|
501
|
+
targetColumnId: string;
|
|
502
|
+
targetOrder: number;
|
|
503
|
+
}>;
|
|
447
504
|
}, Task>;
|
|
448
|
-
readonly reorderTasks: better_call.StrictEndpoint<"/tasks/reorder", {
|
|
505
|
+
readonly reorderTasks: better_call.StrictEndpoint<"/tasks/reorder", {} & {
|
|
449
506
|
method: "POST";
|
|
450
|
-
body:
|
|
451
|
-
columnId:
|
|
452
|
-
taskIds:
|
|
453
|
-
},
|
|
507
|
+
body: better_call.StandardSchemaV1<{
|
|
508
|
+
columnId: string;
|
|
509
|
+
taskIds: string[];
|
|
510
|
+
}, {
|
|
511
|
+
columnId: string;
|
|
512
|
+
taskIds: string[];
|
|
513
|
+
}>;
|
|
454
514
|
}, {
|
|
455
515
|
success: boolean;
|
|
456
516
|
}>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { b as SerializedTask } from './stack.DJaKVY7v.cjs';
|
|
2
3
|
|
|
3
4
|
interface KanbanCommonLocalization {
|
|
4
5
|
backToBoards: string;
|
|
@@ -185,6 +186,28 @@ interface KanbanPluginOverrides {
|
|
|
185
186
|
* @param context - Route context
|
|
186
187
|
*/
|
|
187
188
|
onBeforeNewBoardPageRendered?: (context: RouteContext) => boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Optional slot rendered at the bottom of the task detail dialog.
|
|
191
|
+
* Use this to inject a comment thread or any custom content without
|
|
192
|
+
* coupling the kanban plugin to the comments plugin.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```tsx
|
|
196
|
+
* kanban: {
|
|
197
|
+
* taskDetailBottomSlot: (task) => (
|
|
198
|
+
* <CommentThread
|
|
199
|
+
* resourceId={task.id}
|
|
200
|
+
* resourceType="kanban-task"
|
|
201
|
+
* apiBaseURL={apiBaseURL}
|
|
202
|
+
* apiBasePath="/api/data"
|
|
203
|
+
* currentUserId={session?.userId}
|
|
204
|
+
* loginHref="/login"
|
|
205
|
+
* />
|
|
206
|
+
* ),
|
|
207
|
+
* }
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
taskDetailBottomSlot?: (task: SerializedTask) => ReactNode;
|
|
188
211
|
}
|
|
189
212
|
|
|
190
213
|
export type { KanbanPluginOverrides as K, KanbanUser as a };
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment status values
|
|
3
|
+
*/
|
|
4
|
+
type CommentStatus = "pending" | "approved" | "spam";
|
|
5
|
+
/**
|
|
6
|
+
* A comment record as stored in the database
|
|
7
|
+
*/
|
|
8
|
+
type Comment = {
|
|
9
|
+
id: string;
|
|
10
|
+
resourceId: string;
|
|
11
|
+
resourceType: string;
|
|
12
|
+
parentId: string | null;
|
|
13
|
+
authorId: string;
|
|
14
|
+
body: string;
|
|
15
|
+
status: CommentStatus;
|
|
16
|
+
likes: number;
|
|
17
|
+
editedAt?: Date;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
updatedAt: Date;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A comment enriched with server-resolved author info and like status.
|
|
23
|
+
* All dates are ISO strings (safe for serialisation over HTTP / React Query cache).
|
|
24
|
+
*/
|
|
25
|
+
interface SerializedComment {
|
|
26
|
+
id: string;
|
|
27
|
+
resourceId: string;
|
|
28
|
+
resourceType: string;
|
|
29
|
+
parentId: string | null;
|
|
30
|
+
authorId: string;
|
|
31
|
+
/** Resolved from resolveUser(authorId). Falls back to "[deleted]" when user cannot be found. */
|
|
32
|
+
resolvedAuthorName: string;
|
|
33
|
+
/** Resolved avatar URL or null */
|
|
34
|
+
resolvedAvatarUrl: string | null;
|
|
35
|
+
body: string;
|
|
36
|
+
status: CommentStatus;
|
|
37
|
+
/** Denormalized counter — updated atomically on toggleLike */
|
|
38
|
+
likes: number;
|
|
39
|
+
/** True when the currentUserId query param matches an existing commentLike row */
|
|
40
|
+
isLikedByCurrentUser: boolean;
|
|
41
|
+
/** ISO string set when the comment body was edited; null for unedited comments */
|
|
42
|
+
editedAt: string | null;
|
|
43
|
+
createdAt: string;
|
|
44
|
+
updatedAt: string;
|
|
45
|
+
/**
|
|
46
|
+
* Number of direct replies visible to the requesting user.
|
|
47
|
+
* Includes approved replies plus any pending replies authored by `currentUserId`.
|
|
48
|
+
* Always 0 for reply comments (non-null parentId).
|
|
49
|
+
*/
|
|
50
|
+
replyCount: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Paginated list result for comments
|
|
54
|
+
*/
|
|
55
|
+
interface CommentListResult {
|
|
56
|
+
items: SerializedComment[];
|
|
57
|
+
total: number;
|
|
58
|
+
limit: number;
|
|
59
|
+
offset: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Internal query key constants for the Comments plugin.
|
|
64
|
+
* Shared between query-keys.ts (HTTP path) and any SSG/direct DB path
|
|
65
|
+
* to prevent key drift between loaders and prefetch calls.
|
|
66
|
+
*/
|
|
67
|
+
interface CommentsListDiscriminator {
|
|
68
|
+
resourceId: string | undefined;
|
|
69
|
+
resourceType: string | undefined;
|
|
70
|
+
parentId: string | null | undefined;
|
|
71
|
+
status: string | undefined;
|
|
72
|
+
currentUserId: string | undefined;
|
|
73
|
+
authorId: string | undefined;
|
|
74
|
+
sort: string | undefined;
|
|
75
|
+
limit: number;
|
|
76
|
+
offset: number;
|
|
77
|
+
}
|
|
78
|
+
interface CommentCountDiscriminator {
|
|
79
|
+
resourceId: string;
|
|
80
|
+
resourceType: string;
|
|
81
|
+
status: string | undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Discriminator for the infinite thread query (top-level comments only).
|
|
85
|
+
* Intentionally excludes `offset` — pages are driven by `pageParam`, not the key.
|
|
86
|
+
*/
|
|
87
|
+
interface CommentsThreadDiscriminator {
|
|
88
|
+
resourceId: string | undefined;
|
|
89
|
+
resourceType: string | undefined;
|
|
90
|
+
parentId: string | null | undefined;
|
|
91
|
+
status: string | undefined;
|
|
92
|
+
currentUserId: string | undefined;
|
|
93
|
+
limit: number;
|
|
94
|
+
}
|
|
95
|
+
/** Full query key builders — use with queryClient.setQueryData() */
|
|
96
|
+
declare const COMMENTS_QUERY_KEYS: {
|
|
97
|
+
/**
|
|
98
|
+
* Key for comments list query.
|
|
99
|
+
* Full key: ["comments", "list", { resourceId, resourceType, parentId, status, currentUserId, limit, offset }]
|
|
100
|
+
*/
|
|
101
|
+
commentsList: (params?: {
|
|
102
|
+
resourceId?: string;
|
|
103
|
+
resourceType?: string;
|
|
104
|
+
parentId?: string | null;
|
|
105
|
+
status?: string;
|
|
106
|
+
currentUserId?: string;
|
|
107
|
+
authorId?: string;
|
|
108
|
+
sort?: string;
|
|
109
|
+
limit?: number;
|
|
110
|
+
offset?: number;
|
|
111
|
+
}) => readonly ["comments", "list", CommentsListDiscriminator];
|
|
112
|
+
/**
|
|
113
|
+
* Key for a single comment detail query.
|
|
114
|
+
* Full key: ["comments", "detail", id]
|
|
115
|
+
*/
|
|
116
|
+
commentDetail: (id: string) => readonly ["comments", "detail", string];
|
|
117
|
+
/**
|
|
118
|
+
* Key for comment count query.
|
|
119
|
+
* Full key: ["comments", "count", { resourceId, resourceType, status }]
|
|
120
|
+
*/
|
|
121
|
+
commentCount: (params: {
|
|
122
|
+
resourceId: string;
|
|
123
|
+
resourceType: string;
|
|
124
|
+
status?: string;
|
|
125
|
+
}) => readonly ["comments", "count", CommentCountDiscriminator];
|
|
126
|
+
/**
|
|
127
|
+
* Key for the infinite thread query (top-level comments, load-more).
|
|
128
|
+
* Full key: ["commentsThread", "list", { resourceId, resourceType, parentId, status, currentUserId, limit }]
|
|
129
|
+
* Offset is excluded — it is driven by `pageParam`, not baked into the key.
|
|
130
|
+
*/
|
|
131
|
+
commentsThread: (params?: {
|
|
132
|
+
resourceId?: string;
|
|
133
|
+
resourceType?: string;
|
|
134
|
+
parentId?: string | null;
|
|
135
|
+
status?: string;
|
|
136
|
+
currentUserId?: string;
|
|
137
|
+
limit?: number;
|
|
138
|
+
}) => readonly ["commentsThread", "list", CommentsThreadDiscriminator];
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export { COMMENTS_QUERY_KEYS as e };
|
|
142
|
+
export type { CommentListResult as C, SerializedComment as S, CommentsThreadDiscriminator as a, CommentsListDiscriminator as b, CommentCountDiscriminator as c, Comment as d };
|