@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
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ Enable the features you need and keep building your product.
|
|
|
40
40
|
| **OpenAPI** | Auto-generated API documentation with interactive Scalar UI |
|
|
41
41
|
| **Route Docs** | Auto-generated client route documentation with interactive navigation |
|
|
42
42
|
| **Better Auth UI** | Beautiful shadcn/ui authentication components for better-auth |
|
|
43
|
+
| **Comments** | Commenting system with moderation, likes, and nested replies |
|
|
43
44
|
|
|
44
45
|
Each plugin ships **frontend + backend together**:
|
|
45
46
|
routes, APIs, database models, React components, SSR, and SEO — already wired.
|
package/dist/api/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.
|
|
2
|
-
export { B as BackendPlugin, S as StackContext } from '../shared/stack.
|
|
1
|
+
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.CQnwAN7x.cjs';
|
|
2
|
+
export { B as BackendPlugin, S as StackContext } from '../shared/stack.CQnwAN7x.cjs';
|
|
3
3
|
export { toNodeHandler } from 'better-call/node';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
package/dist/api/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.
|
|
2
|
-
export { B as BackendPlugin, S as StackContext } from '../shared/stack.
|
|
1
|
+
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.CQnwAN7x.mjs';
|
|
2
|
+
export { B as BackendPlugin, S as StackContext } from '../shared/stack.CQnwAN7x.mjs';
|
|
3
3
|
export { toNodeHandler } from 'better-call/node';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.
|
|
2
|
-
export { B as BackendPlugin, S as StackContext } from '../shared/stack.
|
|
1
|
+
import { g as PrefixedPluginRoutes, h as BackendLibConfig, i as BackendLib, j as PluginApis } from '../shared/stack.CQnwAN7x.js';
|
|
2
|
+
export { B as BackendPlugin, S as StackContext } from '../shared/stack.CQnwAN7x.js';
|
|
3
3
|
export { toNodeHandler } from 'better-call/node';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
package/dist/client/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.
|
|
2
|
-
export { b as ClientStackContext } from '../shared/stack.
|
|
1
|
+
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.CQnwAN7x.cjs';
|
|
2
|
+
export { b as ClientStackContext } from '../shared/stack.CQnwAN7x.cjs';
|
|
3
3
|
import '@btst/yar';
|
|
4
4
|
import '@btst/db';
|
|
5
5
|
import 'better-call';
|
package/dist/client/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.
|
|
2
|
-
export { b as ClientStackContext } from '../shared/stack.
|
|
1
|
+
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.CQnwAN7x.mjs';
|
|
2
|
+
export { b as ClientStackContext } from '../shared/stack.CQnwAN7x.mjs';
|
|
3
3
|
import '@btst/yar';
|
|
4
4
|
import '@btst/db';
|
|
5
5
|
import 'better-call';
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.
|
|
2
|
-
export { b as ClientStackContext } from '../shared/stack.
|
|
1
|
+
import { c as Sitemap, C as ClientPlugin, d as PluginRoutes, e as ClientLibConfig, f as ClientLib } from '../shared/stack.CQnwAN7x.js';
|
|
2
|
+
export { b as ClientStackContext } from '../shared/stack.CQnwAN7x.js';
|
|
3
3
|
import '@btst/yar';
|
|
4
4
|
import '@btst/db';
|
|
5
5
|
import 'better-call';
|
|
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { UseFormReturn, FormState } from 'react-hook-form';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { a as FieldConfig, D as Dependency } from '../../shared/stack.
|
|
6
|
-
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig, D as Dependency } from '../../shared/stack.CPsYC2-Z.cjs';
|
|
6
|
+
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.CPsYC2-Z.cjs';
|
|
7
7
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.cjs';
|
|
8
8
|
|
|
9
9
|
declare function AutoFormSubmit({ children, className, disabled, }: {
|
|
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { UseFormReturn, FormState } from 'react-hook-form';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { a as FieldConfig, D as Dependency } from '../../shared/stack.
|
|
6
|
-
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig, D as Dependency } from '../../shared/stack.CPsYC2-Z.mjs';
|
|
6
|
+
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.CPsYC2-Z.mjs';
|
|
7
7
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.mjs';
|
|
8
8
|
|
|
9
9
|
declare function AutoFormSubmit({ children, className, disabled, }: {
|
|
@@ -2,8 +2,8 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { UseFormReturn, FormState } from 'react-hook-form';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { a as FieldConfig, D as Dependency } from '../../shared/stack.
|
|
6
|
-
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig, D as Dependency } from '../../shared/stack.CPsYC2-Z.js';
|
|
6
|
+
export { A as AutoFormInputComponentProps, b as DependencyType, F as FieldConfigItem } from '../../shared/stack.CPsYC2-Z.js';
|
|
7
7
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.js';
|
|
8
8
|
|
|
9
9
|
declare function AutoFormSubmit({ children, className, disabled, }: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.
|
|
3
|
+
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.CPsYC2-Z.cjs';
|
|
4
4
|
import 'react-hook-form';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.
|
|
3
|
+
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.CPsYC2-Z.mjs';
|
|
4
4
|
import 'react-hook-form';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.
|
|
3
|
+
import { I as InputPropsByBackingType, c as FieldType, S as SerializableInputProps, J as JSONSchemaPropertyBase, A as AutoFormInputComponentProps } from '../../shared/stack.CPsYC2-Z.js';
|
|
4
4
|
import 'react-hook-form';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { UseFormReturn } from 'react-hook-form';
|
|
5
|
-
import { a as FieldConfig } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig } from '../../shared/stack.CPsYC2-Z.cjs';
|
|
6
6
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.cjs';
|
|
7
7
|
|
|
8
8
|
interface StepperComponentProps {
|
|
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { UseFormReturn } from 'react-hook-form';
|
|
5
|
-
import { a as FieldConfig } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig } from '../../shared/stack.CPsYC2-Z.mjs';
|
|
6
6
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.mjs';
|
|
7
7
|
|
|
8
8
|
interface StepperComponentProps {
|
|
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { UseFormReturn } from 'react-hook-form';
|
|
5
|
-
import { a as FieldConfig } from '../../shared/stack.
|
|
5
|
+
import { a as FieldConfig } from '../../shared/stack.CPsYC2-Z.js';
|
|
6
6
|
import { Z as ZodObjectOrWrapped } from '../../shared/stack.CZMWR72v.js';
|
|
7
7
|
|
|
8
8
|
interface StepperComponentProps {
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { stack } from './api/index.cjs';
|
|
2
2
|
export { toNodeHandler } from 'better-call/node';
|
|
3
|
-
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.
|
|
3
|
+
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.CQnwAN7x.cjs';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
|
6
6
|
import 'better-call';
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { stack } from './api/index.mjs';
|
|
2
2
|
export { toNodeHandler } from 'better-call/node';
|
|
3
|
-
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.
|
|
3
|
+
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.CQnwAN7x.mjs';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
|
6
6
|
import 'better-call';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { stack } from './api/index.js';
|
|
2
2
|
export { toNodeHandler } from 'better-call/node';
|
|
3
|
-
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.
|
|
3
|
+
export { i as BackendLib, h as BackendLibConfig, B as BackendPlugin, j as PluginApis, S as StackContext } from './shared/stack.CQnwAN7x.js';
|
|
4
4
|
import '@btst/yar';
|
|
5
5
|
import '@btst/db';
|
|
6
6
|
import 'better-call';
|
package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.cjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const skeleton = require('../../../../../../../ui/src/components/skeleton.cjs');
|
|
5
|
+
|
|
6
|
+
function PostNavigationSkeleton() {
|
|
7
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t mt-4 pt-4 w-full flex flex-col sm:flex-row gap-4", children: [
|
|
8
|
+
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-14 flex-1 rounded-md" }),
|
|
9
|
+
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-14 flex-1 rounded-md" })
|
|
10
|
+
] });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.PostNavigationSkeleton = PostNavigationSkeleton;
|
package/dist/packages/stack/src/plugins/blog/client/components/loading/post-navigation-skeleton.mjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Skeleton } from '../../../../../../../ui/src/components/skeleton.mjs';
|
|
3
|
+
|
|
4
|
+
function PostNavigationSkeleton() {
|
|
5
|
+
return /* @__PURE__ */ jsxs("div", { className: "border-t mt-4 pt-4 w-full flex flex-col sm:flex-row gap-4", children: [
|
|
6
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-14 flex-1 rounded-md" }),
|
|
7
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-14 flex-1 rounded-md" })
|
|
8
|
+
] });
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { PostNavigationSkeleton };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const skeleton = require('../../../../../../../ui/src/components/skeleton.cjs');
|
|
5
|
+
const postCardSkeleton = require('./post-card-skeleton.cjs');
|
|
6
|
+
|
|
7
|
+
function RecentPostsCarouselSkeleton() {
|
|
8
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full mt-4 py-4 border-t", children: [
|
|
9
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
10
|
+
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-7 w-36" }),
|
|
11
|
+
/* @__PURE__ */ jsxRuntime.jsx(skeleton.Skeleton, { className: "h-4 w-16" })
|
|
12
|
+
] }),
|
|
13
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsxRuntime.jsx(postCardSkeleton.PostCardSkeleton, {}, i)) })
|
|
14
|
+
] });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
exports.RecentPostsCarouselSkeleton = RecentPostsCarouselSkeleton;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Skeleton } from '../../../../../../../ui/src/components/skeleton.mjs';
|
|
3
|
+
import { PostCardSkeleton } from './post-card-skeleton.mjs';
|
|
4
|
+
|
|
5
|
+
function RecentPostsCarouselSkeleton() {
|
|
6
|
+
return /* @__PURE__ */ jsxs("div", { className: "w-full mt-4 py-4 border-t", children: [
|
|
7
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-4", children: [
|
|
8
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-7 w-36" }),
|
|
9
|
+
/* @__PURE__ */ jsx(Skeleton, { className: "h-4 w-16" })
|
|
10
|
+
] }),
|
|
11
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: [1, 2, 3].map((i) => /* @__PURE__ */ jsx(PostCardSkeleton, {}, i)) })
|
|
12
|
+
] });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { RecentPostsCarouselSkeleton };
|
|
@@ -17,6 +17,9 @@ const badge = require('../../../../../../../ui/src/components/badge.cjs');
|
|
|
17
17
|
const useRouteLifecycle = require('../../../../../../../ui/src/hooks/use-route-lifecycle.cjs');
|
|
18
18
|
const onThisPage = require('../shared/on-this-page.cjs');
|
|
19
19
|
const context$1 = require('@btst/stack/plugins/ai-chat/client/context');
|
|
20
|
+
const whenVisible = require('../../../../../../../ui/src/components/when-visible.cjs');
|
|
21
|
+
const postNavigationSkeleton = require('../loading/post-navigation-skeleton.cjs');
|
|
22
|
+
const recentPostsCarouselSkeleton = require('../loading/recent-posts-carousel-skeleton.cjs');
|
|
20
23
|
|
|
21
24
|
function PostPage({ slug }) {
|
|
22
25
|
const overrides = context.usePluginOverrides("blog", {
|
|
@@ -40,13 +43,13 @@ function PostPage({ slug }) {
|
|
|
40
43
|
}
|
|
41
44
|
});
|
|
42
45
|
const { post } = blogHooks.useSuspensePost(slug ?? "");
|
|
43
|
-
const { previousPost, nextPost
|
|
46
|
+
const { previousPost, nextPost } = blogHooks.useNextPreviousPosts(
|
|
44
47
|
post?.createdAt ?? /* @__PURE__ */ new Date(),
|
|
45
48
|
{
|
|
46
49
|
enabled: !!post
|
|
47
50
|
}
|
|
48
51
|
);
|
|
49
|
-
const { recentPosts
|
|
52
|
+
const { recentPosts } = blogHooks.useRecentPosts({
|
|
50
53
|
limit: 5,
|
|
51
54
|
excludeSlug: slug,
|
|
52
55
|
enabled: !!post
|
|
@@ -94,14 +97,22 @@ ${post.content ?? ""}`.slice(
|
|
|
94
97
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full px-3", children: /* @__PURE__ */ jsxRuntime.jsx(markdownContent.MarkdownContent, { markdown: post.content }) }),
|
|
95
98
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 w-full", children: [
|
|
96
99
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
-
|
|
100
|
+
whenVisible.WhenVisible,
|
|
98
101
|
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
+
rootMargin: "200px",
|
|
103
|
+
fallback: /* @__PURE__ */ jsxRuntime.jsx(postNavigationSkeleton.PostNavigationSkeleton, {}),
|
|
104
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(postNavigation.PostNavigation, { previousPost, nextPost })
|
|
102
105
|
}
|
|
103
106
|
),
|
|
104
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
108
|
+
whenVisible.WhenVisible,
|
|
109
|
+
{
|
|
110
|
+
rootMargin: "200px",
|
|
111
|
+
fallback: /* @__PURE__ */ jsxRuntime.jsx(recentPostsCarouselSkeleton.RecentPostsCarouselSkeleton, {}),
|
|
112
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(recentPostsCarousel.RecentPostsCarousel, { posts: recentPosts })
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
overrides.postBottomSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": "post-bottom-slot", children: overrides.postBottomSlot(post) })
|
|
105
116
|
] })
|
|
106
117
|
] }),
|
|
107
118
|
/* @__PURE__ */ jsxRuntime.jsx(onThisPage.OnThisPage, { markdown: post.content })
|
|
@@ -15,6 +15,9 @@ import { Badge } from '../../../../../../../ui/src/components/badge.mjs';
|
|
|
15
15
|
import { useRouteLifecycle } from '../../../../../../../ui/src/hooks/use-route-lifecycle.mjs';
|
|
16
16
|
import { OnThisPageSelect, OnThisPage } from '../shared/on-this-page.mjs';
|
|
17
17
|
import { useRegisterPageAIContext } from '@btst/stack/plugins/ai-chat/client/context';
|
|
18
|
+
import { WhenVisible } from '../../../../../../../ui/src/components/when-visible.mjs';
|
|
19
|
+
import { PostNavigationSkeleton } from '../loading/post-navigation-skeleton.mjs';
|
|
20
|
+
import { RecentPostsCarouselSkeleton } from '../loading/recent-posts-carousel-skeleton.mjs';
|
|
18
21
|
|
|
19
22
|
function PostPage({ slug }) {
|
|
20
23
|
const overrides = usePluginOverrides("blog", {
|
|
@@ -38,13 +41,13 @@ function PostPage({ slug }) {
|
|
|
38
41
|
}
|
|
39
42
|
});
|
|
40
43
|
const { post } = useSuspensePost(slug ?? "");
|
|
41
|
-
const { previousPost, nextPost
|
|
44
|
+
const { previousPost, nextPost } = useNextPreviousPosts(
|
|
42
45
|
post?.createdAt ?? /* @__PURE__ */ new Date(),
|
|
43
46
|
{
|
|
44
47
|
enabled: !!post
|
|
45
48
|
}
|
|
46
49
|
);
|
|
47
|
-
const { recentPosts
|
|
50
|
+
const { recentPosts } = useRecentPosts({
|
|
48
51
|
limit: 5,
|
|
49
52
|
excludeSlug: slug,
|
|
50
53
|
enabled: !!post
|
|
@@ -92,14 +95,22 @@ ${post.content ?? ""}`.slice(
|
|
|
92
95
|
/* @__PURE__ */ jsx("div", { className: "w-full px-3", children: /* @__PURE__ */ jsx(MarkdownContent, { markdown: post.content }) }),
|
|
93
96
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 w-full", children: [
|
|
94
97
|
/* @__PURE__ */ jsx(
|
|
95
|
-
|
|
98
|
+
WhenVisible,
|
|
96
99
|
{
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
+
rootMargin: "200px",
|
|
101
|
+
fallback: /* @__PURE__ */ jsx(PostNavigationSkeleton, {}),
|
|
102
|
+
children: /* @__PURE__ */ jsx(PostNavigation, { previousPost, nextPost })
|
|
100
103
|
}
|
|
101
104
|
),
|
|
102
|
-
/* @__PURE__ */ jsx(
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
WhenVisible,
|
|
107
|
+
{
|
|
108
|
+
rootMargin: "200px",
|
|
109
|
+
fallback: /* @__PURE__ */ jsx(RecentPostsCarouselSkeleton, {}),
|
|
110
|
+
children: /* @__PURE__ */ jsx(RecentPostsCarousel, { posts: recentPosts })
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
overrides.postBottomSlot && /* @__PURE__ */ jsx("div", { "data-testid": "post-bottom-slot", children: overrides.postBottomSlot(post) })
|
|
103
114
|
] })
|
|
104
115
|
] }),
|
|
105
116
|
/* @__PURE__ */ jsx(OnThisPage, { markdown: post.content })
|
|
@@ -9,66 +9,62 @@ const defaults = require('./defaults.cjs');
|
|
|
9
9
|
|
|
10
10
|
function PostNavigation({
|
|
11
11
|
previousPost,
|
|
12
|
-
nextPost
|
|
13
|
-
ref
|
|
12
|
+
nextPost
|
|
14
13
|
}) {
|
|
15
14
|
const { Link } = context.usePluginOverrides("blog", {
|
|
16
15
|
Link: defaults.DefaultLink
|
|
17
16
|
});
|
|
18
17
|
const basePath = context.useBasePath();
|
|
19
18
|
const blogPath = `${basePath}/blog`;
|
|
20
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
className: "
|
|
36
|
-
|
|
37
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38
|
-
/* @__PURE__ */ jsxRuntime.
|
|
39
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Previous" }),
|
|
40
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: previousPost.title })
|
|
41
|
-
] })
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (previousPost || nextPost) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t mt-4 pt-4 w-full" }),
|
|
21
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col sm:flex-row gap-4 w-full justify-between", children: [
|
|
22
|
+
previousPost ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
23
|
+
Link,
|
|
24
|
+
{
|
|
25
|
+
"data-testid": "previous-post-link",
|
|
26
|
+
href: `${blogPath}/${previousPost.slug}`,
|
|
27
|
+
className: "flex-1 sm:max-w-1/3",
|
|
28
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
button.Button,
|
|
30
|
+
{
|
|
31
|
+
variant: "outline",
|
|
32
|
+
className: "w-full justify-start py-4 px-4 whitespace-normal! h-full hover:cursor-pointer",
|
|
33
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full min-w-0", children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronLeft, { className: "h-4 w-4 shrink-0" }),
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-start min-w-0 flex-1", children: [
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Previous" }),
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: previousPost.title })
|
|
42
38
|
] })
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
39
|
+
] })
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
|
|
44
|
+
nextPost ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
45
|
+
Link,
|
|
46
|
+
{
|
|
47
|
+
"data-testid": "next-post-link",
|
|
48
|
+
href: `${blogPath}/${nextPost.slug}`,
|
|
49
|
+
className: "flex-1 sm:max-w-1/3",
|
|
50
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
51
|
+
button.Button,
|
|
52
|
+
{
|
|
53
|
+
variant: "outline",
|
|
54
|
+
className: "w-full justify-end py-4 px-4 whitespace-normal! h-full hover:cursor-pointer",
|
|
55
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 w-full min-w-0", children: [
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1", children: [
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Next" }),
|
|
58
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: nextPost.title })
|
|
59
|
+
] }),
|
|
60
|
+
/* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronRight, { className: "h-4 w-4 shrink-0" })
|
|
61
|
+
] })
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" })
|
|
70
66
|
] })
|
|
71
|
-
] });
|
|
67
|
+
] }) });
|
|
72
68
|
}
|
|
73
69
|
|
|
74
70
|
exports.PostNavigation = PostNavigation;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { usePluginOverrides, useBasePath } from '@btst/stack/context';
|
|
4
4
|
import { Button } from '../../../../../../../ui/src/components/button.mjs';
|
|
5
5
|
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
|
@@ -7,66 +7,62 @@ import { DefaultLink } from './defaults.mjs';
|
|
|
7
7
|
|
|
8
8
|
function PostNavigation({
|
|
9
9
|
previousPost,
|
|
10
|
-
nextPost
|
|
11
|
-
ref
|
|
10
|
+
nextPost
|
|
12
11
|
}) {
|
|
13
12
|
const { Link } = usePluginOverrides("blog", {
|
|
14
13
|
Link: DefaultLink
|
|
15
14
|
});
|
|
16
15
|
const basePath = useBasePath();
|
|
17
16
|
const blogPath = `${basePath}/blog`;
|
|
18
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/* @__PURE__ */ jsx(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
className: "
|
|
34
|
-
|
|
35
|
-
/* @__PURE__ */ jsx(
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Previous" }),
|
|
38
|
-
/* @__PURE__ */ jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: previousPost.title })
|
|
39
|
-
] })
|
|
17
|
+
return /* @__PURE__ */ jsx(Fragment, { children: (previousPost || nextPost) && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
18
|
+
/* @__PURE__ */ jsx("div", { className: "border-t mt-4 pt-4 w-full" }),
|
|
19
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row gap-4 w-full justify-between", children: [
|
|
20
|
+
previousPost ? /* @__PURE__ */ jsx(
|
|
21
|
+
Link,
|
|
22
|
+
{
|
|
23
|
+
"data-testid": "previous-post-link",
|
|
24
|
+
href: `${blogPath}/${previousPost.slug}`,
|
|
25
|
+
className: "flex-1 sm:max-w-1/3",
|
|
26
|
+
children: /* @__PURE__ */ jsx(
|
|
27
|
+
Button,
|
|
28
|
+
{
|
|
29
|
+
variant: "outline",
|
|
30
|
+
className: "w-full justify-start py-4 px-4 whitespace-normal! h-full hover:cursor-pointer",
|
|
31
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full min-w-0", children: [
|
|
32
|
+
/* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4 shrink-0" }),
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start min-w-0 flex-1", children: [
|
|
34
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Previous" }),
|
|
35
|
+
/* @__PURE__ */ jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: previousPost.title })
|
|
40
36
|
] })
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
37
|
+
] })
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
42
|
+
nextPost ? /* @__PURE__ */ jsx(
|
|
43
|
+
Link,
|
|
44
|
+
{
|
|
45
|
+
"data-testid": "next-post-link",
|
|
46
|
+
href: `${blogPath}/${nextPost.slug}`,
|
|
47
|
+
className: "flex-1 sm:max-w-1/3",
|
|
48
|
+
children: /* @__PURE__ */ jsx(
|
|
49
|
+
Button,
|
|
50
|
+
{
|
|
51
|
+
variant: "outline",
|
|
52
|
+
className: "w-full justify-end py-4 px-4 whitespace-normal! h-full hover:cursor-pointer",
|
|
53
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 w-full min-w-0", children: [
|
|
54
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1", children: [
|
|
55
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: "Next" }),
|
|
56
|
+
/* @__PURE__ */ jsx("div", { className: "font-semibold line-clamp-2 text-sm leading-tight transition-colors text-start", children: nextPost.title })
|
|
57
|
+
] }),
|
|
58
|
+
/* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 shrink-0" })
|
|
59
|
+
] })
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex-1" })
|
|
68
64
|
] })
|
|
69
|
-
] });
|
|
65
|
+
] }) });
|
|
70
66
|
}
|
|
71
67
|
|
|
72
68
|
export { PostNavigation };
|