@btst/stack 2.11.7 → 2.12.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/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.cjs +2 -6
- package/dist/packages/stack/src/plugins/blog/client/components/pages/post-page.internal.mjs +5 -9
- package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.cjs +44 -0
- package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.mjs +42 -0
- package/dist/packages/stack/src/plugins/blog/client/components/shared/tags-list.cjs +2 -8
- package/dist/packages/stack/src/plugins/blog/client/components/shared/tags-list.mjs +2 -8
- package/dist/packages/stack/src/plugins/blog/client/localization/blog-common.cjs +3 -1
- package/dist/packages/stack/src/plugins/blog/client/localization/blog-common.mjs +3 -1
- package/dist/packages/stack/src/plugins/comments/api/query-key-defs.cjs +2 -1
- package/dist/packages/stack/src/plugins/comments/api/query-key-defs.mjs +2 -1
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.cjs +6 -2
- package/dist/packages/stack/src/plugins/comments/client/components/comment-thread.mjs +6 -2
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.cjs +5 -3
- package/dist/packages/stack/src/plugins/comments/client/hooks/use-comments.mjs +5 -3
- package/dist/plugins/blog/api/index.d.cts +2 -2
- package/dist/plugins/blog/api/index.d.mts +2 -2
- package/dist/plugins/blog/api/index.d.ts +2 -2
- 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 +4 -2
- package/dist/plugins/blog/client/index.d.mts +4 -2
- package/dist/plugins/blog/client/index.d.ts +4 -2
- package/dist/plugins/blog/query-keys.d.cts +2 -2
- package/dist/plugins/blog/query-keys.d.mts +2 -2
- package/dist/plugins/blog/query-keys.d.ts +2 -2
- package/dist/plugins/comments/api/index.d.cts +4 -4
- package/dist/plugins/comments/api/index.d.mts +4 -4
- package/dist/plugins/comments/api/index.d.ts +4 -4
- package/dist/plugins/comments/client/components/index.d.cts +11 -0
- package/dist/plugins/comments/client/components/index.d.mts +11 -0
- package/dist/plugins/comments/client/components/index.d.ts +11 -0
- package/dist/plugins/comments/client/hooks/index.d.cts +17 -1
- package/dist/plugins/comments/client/hooks/index.d.mts +17 -1
- package/dist/plugins/comments/client/hooks/index.d.ts +17 -1
- package/dist/plugins/comments/client/index.d.cts +9 -0
- package/dist/plugins/comments/client/index.d.mts +9 -0
- package/dist/plugins/comments/client/index.d.ts +9 -0
- package/dist/plugins/comments/query-keys.cjs +1 -0
- package/dist/plugins/comments/query-keys.d.cts +3 -2
- package/dist/plugins/comments/query-keys.d.mts +3 -2
- package/dist/plugins/comments/query-keys.d.ts +3 -2
- package/dist/plugins/comments/query-keys.mjs +1 -0
- package/dist/plugins/kanban/api/index.d.cts +1 -1
- package/dist/plugins/kanban/api/index.d.mts +1 -1
- package/dist/plugins/kanban/api/index.d.ts +1 -1
- package/dist/plugins/kanban/query-keys.d.cts +1 -1
- package/dist/plugins/kanban/query-keys.d.mts +1 -1
- package/dist/plugins/kanban/query-keys.d.ts +1 -1
- package/dist/shared/{stack.CLWhMntf.d.cts → stack.04aMRz_W.d.cts} +5 -5
- package/dist/shared/{stack.CJE9sAjV.d.ts → stack.Bq3kiUaM.d.ts} +1 -1
- package/dist/shared/{stack.DNLuzDb3.d.cts → stack.BvuqACtA.d.cts} +3 -3
- package/dist/shared/{stack.C-b3Sn8j.d.cts → stack.C7KNNiJm.d.cts} +3 -1
- package/dist/shared/{stack.C-b3Sn8j.d.mts → stack.C7KNNiJm.d.mts} +3 -1
- package/dist/shared/{stack.C-b3Sn8j.d.ts → stack.C7KNNiJm.d.ts} +3 -1
- package/dist/shared/{stack.Dcz6636A.d.mts → stack.CCncwK6g.d.cts} +1 -1
- package/dist/shared/{stack.CmHRdhl8.d.cts → stack.CO1g47IS.d.mts} +1 -1
- package/dist/shared/{stack.Dfc44JiE.d.mts → stack.Cs8R5HxD.d.mts} +3 -3
- package/dist/shared/{stack.ufcExQIR.d.ts → stack.CxWEN62M.d.ts} +5 -5
- package/dist/shared/{stack.BnSAhKJi.d.ts → stack.DPTRuLUH.d.ts} +3 -3
- package/dist/shared/{stack.DiodAFAa.d.mts → stack.ueI-K4xy.d.mts} +5 -5
- package/package.json +1 -1
- package/src/plugins/blog/client/components/pages/post-page.internal.tsx +4 -21
- package/src/plugins/blog/client/components/shared/collapsible-tag-list.tsx +76 -0
- package/src/plugins/blog/client/components/shared/tags-list.tsx +2 -18
- package/src/plugins/blog/client/localization/blog-common.ts +2 -0
- package/src/plugins/comments/api/query-key-defs.ts +5 -1
- package/src/plugins/comments/client/components/comment-thread.tsx +15 -0
- package/src/plugins/comments/client/hooks/use-comments.tsx +26 -3
- package/src/plugins/comments/client/overrides.ts +10 -0
- package/src/plugins/comments/query-keys.ts +2 -0
- package/dist/shared/{stack.Rtcvl8sS.d.cts → stack.B6S3cgwN.d.cts} +13 -13
- package/dist/shared/{stack.HE_IvqV5.d.mts → stack.Bzfx-_lq.d.mts} +13 -13
- package/dist/shared/{stack.CuhcFsAx.d.cts → stack.DuQOcInS.d.cts} +3 -3
- package/dist/shared/{stack.CuhcFsAx.d.mts → stack.DuQOcInS.d.mts} +3 -3
- package/dist/shared/{stack.CuhcFsAx.d.ts → stack.DuQOcInS.d.ts} +3 -3
- package/dist/shared/{stack.D4Cea8II.d.ts → stack.j5SFLC1d.d.ts} +13 -13
|
@@ -13,13 +13,13 @@ const defaults = require('../shared/defaults.cjs');
|
|
|
13
13
|
const index = require('../../localization/index.cjs');
|
|
14
14
|
const postNavigation = require('../shared/post-navigation.cjs');
|
|
15
15
|
const recentPostsCarousel = require('../shared/recent-posts-carousel.cjs');
|
|
16
|
-
const badge = require('../../../../../../../ui/src/components/badge.cjs');
|
|
17
16
|
const useRouteLifecycle = require('../../../../../../../ui/src/hooks/use-route-lifecycle.cjs');
|
|
18
17
|
const onThisPage = require('../shared/on-this-page.cjs');
|
|
19
18
|
const context$1 = require('@btst/stack/plugins/ai-chat/client/context');
|
|
20
19
|
const whenVisible = require('../../../../../../../ui/src/components/when-visible.cjs');
|
|
21
20
|
const postNavigationSkeleton = require('../loading/post-navigation-skeleton.cjs');
|
|
22
21
|
const recentPostsCarouselSkeleton = require('../loading/recent-posts-carousel-skeleton.cjs');
|
|
22
|
+
const collapsibleTagList = require('../shared/collapsible-tag-list.cjs');
|
|
23
23
|
|
|
24
24
|
function PostPage({ slug }) {
|
|
25
25
|
const overrides = context.usePluginOverrides("blog", {
|
|
@@ -119,13 +119,9 @@ ${post.content ?? ""}`.slice(
|
|
|
119
119
|
] }) });
|
|
120
120
|
}
|
|
121
121
|
function PostHeaderTop({ post }) {
|
|
122
|
-
const { Link } = context.usePluginOverrides("blog", {
|
|
123
|
-
Link: defaults.DefaultLink
|
|
124
|
-
});
|
|
125
|
-
const basePath = context.useBasePath();
|
|
126
122
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row items-center justify-center gap-2 flex-wrap mt-8", children: [
|
|
127
123
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-light text-muted-foreground text-sm", children: dateFns.formatDate(post.createdAt, "MMMM d, yyyy") }),
|
|
128
|
-
|
|
124
|
+
/* @__PURE__ */ jsxRuntime.jsx(collapsibleTagList.CollapsibleTagList, { tags: post.tags ?? [] })
|
|
129
125
|
] });
|
|
130
126
|
}
|
|
131
127
|
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx, jsxs
|
|
3
|
-
import { usePluginOverrides
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { usePluginOverrides } from '@btst/stack/context';
|
|
4
4
|
import { formatDate } from 'date-fns';
|
|
5
5
|
import { useSuspensePost, useNextPreviousPosts, useRecentPosts } from '../../hooks/blog-hooks.mjs';
|
|
6
6
|
import { EmptyList } from '../shared/empty-list.mjs';
|
|
7
7
|
import { MarkdownContent } from '../shared/markdown-content.mjs';
|
|
8
8
|
import { PageHeader } from '../shared/page-header.mjs';
|
|
9
9
|
import { PageWrapper } from '../shared/page-wrapper.mjs';
|
|
10
|
-
import { DefaultImage
|
|
10
|
+
import { DefaultImage } from '../shared/defaults.mjs';
|
|
11
11
|
import { BLOG_LOCALIZATION } from '../../localization/index.mjs';
|
|
12
12
|
import { PostNavigation } from '../shared/post-navigation.mjs';
|
|
13
13
|
import { RecentPostsCarousel } from '../shared/recent-posts-carousel.mjs';
|
|
14
|
-
import { Badge } from '../../../../../../../ui/src/components/badge.mjs';
|
|
15
14
|
import { useRouteLifecycle } from '../../../../../../../ui/src/hooks/use-route-lifecycle.mjs';
|
|
16
15
|
import { OnThisPageSelect, OnThisPage } from '../shared/on-this-page.mjs';
|
|
17
16
|
import { useRegisterPageAIContext } from '@btst/stack/plugins/ai-chat/client/context';
|
|
18
17
|
import { WhenVisible } from '../../../../../../../ui/src/components/when-visible.mjs';
|
|
19
18
|
import { PostNavigationSkeleton } from '../loading/post-navigation-skeleton.mjs';
|
|
20
19
|
import { RecentPostsCarouselSkeleton } from '../loading/recent-posts-carousel-skeleton.mjs';
|
|
20
|
+
import { CollapsibleTagList } from '../shared/collapsible-tag-list.mjs';
|
|
21
21
|
|
|
22
22
|
function PostPage({ slug }) {
|
|
23
23
|
const overrides = usePluginOverrides("blog", {
|
|
@@ -117,13 +117,9 @@ ${post.content ?? ""}`.slice(
|
|
|
117
117
|
] }) });
|
|
118
118
|
}
|
|
119
119
|
function PostHeaderTop({ post }) {
|
|
120
|
-
const { Link } = usePluginOverrides("blog", {
|
|
121
|
-
Link: DefaultLink
|
|
122
|
-
});
|
|
123
|
-
const basePath = useBasePath();
|
|
124
120
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center justify-center gap-2 flex-wrap mt-8", children: [
|
|
125
121
|
/* @__PURE__ */ jsx("span", { className: "font-light text-muted-foreground text-sm", children: formatDate(post.createdAt, "MMMM d, yyyy") }),
|
|
126
|
-
|
|
122
|
+
/* @__PURE__ */ jsx(CollapsibleTagList, { tags: post.tags ?? [] })
|
|
127
123
|
] });
|
|
128
124
|
}
|
|
129
125
|
|
package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.cjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
const context = require('@btst/stack/context');
|
|
6
|
+
const defaults = require('./defaults.cjs');
|
|
7
|
+
const badge = require('../../../../../../../ui/src/components/badge.cjs');
|
|
8
|
+
const index = require('../../localization/index.cjs');
|
|
9
|
+
const LucideIcons = require('lucide-react');
|
|
10
|
+
const React = require('react');
|
|
11
|
+
|
|
12
|
+
const MAX_VISIBLE_TAGS = 15;
|
|
13
|
+
function CollapsibleTagList({
|
|
14
|
+
tags,
|
|
15
|
+
maxVisible = MAX_VISIBLE_TAGS
|
|
16
|
+
}) {
|
|
17
|
+
const { Link, localization } = context.usePluginOverrides("blog", {
|
|
18
|
+
Link: defaults.DefaultLink,
|
|
19
|
+
localization: index.BLOG_LOCALIZATION
|
|
20
|
+
});
|
|
21
|
+
const basePath = context.useBasePath();
|
|
22
|
+
const [showAll, setShowAll] = React.useState(false);
|
|
23
|
+
if (!tags || tags.length === 0) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const hasMore = tags.length > maxVisible;
|
|
27
|
+
const visibleTags = showAll || !hasMore ? tags : tags.slice(0, maxVisible);
|
|
28
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29
|
+
visibleTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(Link, { href: `${basePath}/blog/tag/${tag.slug}`, children: /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { variant: "secondary", className: "text-xs", children: tag.name }) }, tag.id)),
|
|
30
|
+
hasMore && /* @__PURE__ */ jsxRuntime.jsx(badge.Badge, { asChild: true, variant: "secondary", className: "text-xs cursor-pointer", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
31
|
+
"button",
|
|
32
|
+
{
|
|
33
|
+
type: "button",
|
|
34
|
+
onClick: () => setShowAll((prev) => !prev),
|
|
35
|
+
"aria-expanded": showAll,
|
|
36
|
+
"aria-label": showAll ? localization.BLOG_TAGS_SHOW_LESS : localization.BLOG_TAGS_SHOW_ALL,
|
|
37
|
+
title: showAll ? localization.BLOG_TAGS_SHOW_LESS : localization.BLOG_TAGS_SHOW_ALL,
|
|
38
|
+
children: showAll ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronUp, { "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { "aria-hidden": "true" })
|
|
39
|
+
}
|
|
40
|
+
) })
|
|
41
|
+
] });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.CollapsibleTagList = CollapsibleTagList;
|
package/dist/packages/stack/src/plugins/blog/client/components/shared/collapsible-tag-list.mjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { usePluginOverrides, useBasePath } from '@btst/stack/context';
|
|
4
|
+
import { DefaultLink } from './defaults.mjs';
|
|
5
|
+
import { Badge } from '../../../../../../../ui/src/components/badge.mjs';
|
|
6
|
+
import { BLOG_LOCALIZATION } from '../../localization/index.mjs';
|
|
7
|
+
import { ChevronUp, ChevronDown } from 'lucide-react';
|
|
8
|
+
import { useState } from 'react';
|
|
9
|
+
|
|
10
|
+
const MAX_VISIBLE_TAGS = 15;
|
|
11
|
+
function CollapsibleTagList({
|
|
12
|
+
tags,
|
|
13
|
+
maxVisible = MAX_VISIBLE_TAGS
|
|
14
|
+
}) {
|
|
15
|
+
const { Link, localization } = usePluginOverrides("blog", {
|
|
16
|
+
Link: DefaultLink,
|
|
17
|
+
localization: BLOG_LOCALIZATION
|
|
18
|
+
});
|
|
19
|
+
const basePath = useBasePath();
|
|
20
|
+
const [showAll, setShowAll] = useState(false);
|
|
21
|
+
if (!tags || tags.length === 0) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const hasMore = tags.length > maxVisible;
|
|
25
|
+
const visibleTags = showAll || !hasMore ? tags : tags.slice(0, maxVisible);
|
|
26
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
27
|
+
visibleTags.map((tag) => /* @__PURE__ */ jsx(Link, { href: `${basePath}/blog/tag/${tag.slug}`, children: /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: tag.name }) }, tag.id)),
|
|
28
|
+
hasMore && /* @__PURE__ */ jsx(Badge, { asChild: true, variant: "secondary", className: "text-xs cursor-pointer", children: /* @__PURE__ */ jsx(
|
|
29
|
+
"button",
|
|
30
|
+
{
|
|
31
|
+
type: "button",
|
|
32
|
+
onClick: () => setShowAll((prev) => !prev),
|
|
33
|
+
"aria-expanded": showAll,
|
|
34
|
+
"aria-label": showAll ? localization.BLOG_TAGS_SHOW_LESS : localization.BLOG_TAGS_SHOW_ALL,
|
|
35
|
+
title: showAll ? localization.BLOG_TAGS_SHOW_LESS : localization.BLOG_TAGS_SHOW_ALL,
|
|
36
|
+
children: showAll ? /* @__PURE__ */ jsx(ChevronUp, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": "true" })
|
|
37
|
+
}
|
|
38
|
+
) })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export { CollapsibleTagList };
|
|
@@ -2,21 +2,15 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
const jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
const context = require('@btst/stack/context');
|
|
6
|
-
const defaults = require('./defaults.cjs');
|
|
7
|
-
const badge = require('../../../../../../../ui/src/components/badge.cjs');
|
|
8
5
|
const blogHooks = require('../../hooks/blog-hooks.cjs');
|
|
6
|
+
const collapsibleTagList = require('./collapsible-tag-list.cjs');
|
|
9
7
|
|
|
10
8
|
function TagsList() {
|
|
11
9
|
const { tags } = blogHooks.useSuspenseTags();
|
|
12
|
-
const { Link } = context.usePluginOverrides("blog", {
|
|
13
|
-
Link: defaults.DefaultLink
|
|
14
|
-
});
|
|
15
|
-
const basePath = context.useBasePath();
|
|
16
10
|
if (!tags || tags.length === 0) {
|
|
17
11
|
return null;
|
|
18
12
|
}
|
|
19
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2 justify-center", children:
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2 justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(collapsibleTagList.CollapsibleTagList, { tags }) });
|
|
20
14
|
}
|
|
21
15
|
|
|
22
16
|
exports.TagsList = TagsList;
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { usePluginOverrides, useBasePath } from '@btst/stack/context';
|
|
4
|
-
import { DefaultLink } from './defaults.mjs';
|
|
5
|
-
import { Badge } from '../../../../../../../ui/src/components/badge.mjs';
|
|
6
3
|
import { useSuspenseTags } from '../../hooks/blog-hooks.mjs';
|
|
4
|
+
import { CollapsibleTagList } from './collapsible-tag-list.mjs';
|
|
7
5
|
|
|
8
6
|
function TagsList() {
|
|
9
7
|
const { tags } = useSuspenseTags();
|
|
10
|
-
const { Link } = usePluginOverrides("blog", {
|
|
11
|
-
Link: DefaultLink
|
|
12
|
-
});
|
|
13
|
-
const basePath = useBasePath();
|
|
14
8
|
if (!tags || tags.length === 0) {
|
|
15
9
|
return null;
|
|
16
10
|
}
|
|
17
|
-
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 justify-center", children:
|
|
11
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2 justify-center", children: /* @__PURE__ */ jsx(CollapsibleTagList, { tags }) });
|
|
18
12
|
}
|
|
19
13
|
|
|
20
14
|
export { TagsList };
|
|
@@ -4,7 +4,9 @@ const BLOG_COMMON = {
|
|
|
4
4
|
BLOG_GENERIC_ERROR_TITLE: "Something went wrong",
|
|
5
5
|
BLOG_GENERIC_ERROR_MESSAGE: "An unexpected error occurred.",
|
|
6
6
|
BLOG_PAGE_NOT_FOUND_TITLE: "Not Found",
|
|
7
|
-
BLOG_PAGE_NOT_FOUND_DESCRIPTION: "The page you are looking for does not exist."
|
|
7
|
+
BLOG_PAGE_NOT_FOUND_DESCRIPTION: "The page you are looking for does not exist.",
|
|
8
|
+
BLOG_TAGS_SHOW_ALL: "Show all tags",
|
|
9
|
+
BLOG_TAGS_SHOW_LESS: "Show fewer tags"
|
|
8
10
|
};
|
|
9
11
|
|
|
10
12
|
exports.BLOG_COMMON = BLOG_COMMON;
|
|
@@ -2,7 +2,9 @@ const BLOG_COMMON = {
|
|
|
2
2
|
BLOG_GENERIC_ERROR_TITLE: "Something went wrong",
|
|
3
3
|
BLOG_GENERIC_ERROR_MESSAGE: "An unexpected error occurred.",
|
|
4
4
|
BLOG_PAGE_NOT_FOUND_TITLE: "Not Found",
|
|
5
|
-
BLOG_PAGE_NOT_FOUND_DESCRIPTION: "The page you are looking for does not exist."
|
|
5
|
+
BLOG_PAGE_NOT_FOUND_DESCRIPTION: "The page you are looking for does not exist.",
|
|
6
|
+
BLOG_TAGS_SHOW_ALL: "Show all tags",
|
|
7
|
+
BLOG_TAGS_SHOW_LESS: "Show fewer tags"
|
|
6
8
|
};
|
|
7
9
|
|
|
8
10
|
export { BLOG_COMMON };
|
|
@@ -27,6 +27,7 @@ function commentsThreadDiscriminator(params) {
|
|
|
27
27
|
parentId: params?.parentId,
|
|
28
28
|
status: params?.status,
|
|
29
29
|
currentUserId: params?.currentUserId,
|
|
30
|
+
sort: params?.sort,
|
|
30
31
|
limit: params?.limit ?? 20
|
|
31
32
|
};
|
|
32
33
|
}
|
|
@@ -48,7 +49,7 @@ const COMMENTS_QUERY_KEYS = {
|
|
|
48
49
|
commentCount: (params) => ["comments", "count", commentCountDiscriminator(params)],
|
|
49
50
|
/**
|
|
50
51
|
* Key for the infinite thread query (top-level comments, load-more).
|
|
51
|
-
* Full key: ["commentsThread", "list", { resourceId, resourceType, parentId, status, currentUserId, limit }]
|
|
52
|
+
* Full key: ["commentsThread", "list", { resourceId, resourceType, parentId, status, currentUserId, sort, limit }]
|
|
52
53
|
* Offset is excluded — it is driven by `pageParam`, not baked into the key.
|
|
53
54
|
*/
|
|
54
55
|
commentsThread: (params) => ["commentsThread", "list", commentsThreadDiscriminator(params)]
|
|
@@ -25,6 +25,7 @@ function commentsThreadDiscriminator(params) {
|
|
|
25
25
|
parentId: params?.parentId,
|
|
26
26
|
status: params?.status,
|
|
27
27
|
currentUserId: params?.currentUserId,
|
|
28
|
+
sort: params?.sort,
|
|
28
29
|
limit: params?.limit ?? 20
|
|
29
30
|
};
|
|
30
31
|
}
|
|
@@ -46,7 +47,7 @@ const COMMENTS_QUERY_KEYS = {
|
|
|
46
47
|
commentCount: (params) => ["comments", "count", commentCountDiscriminator(params)],
|
|
47
48
|
/**
|
|
48
49
|
* Key for the infinite thread query (top-level comments, load-more).
|
|
49
|
-
* Full key: ["commentsThread", "list", { resourceId, resourceType, parentId, status, currentUserId, limit }]
|
|
50
|
+
* Full key: ["commentsThread", "list", { resourceId, resourceType, parentId, status, currentUserId, sort, limit }]
|
|
50
51
|
* Offset is excluded — it is driven by `pageParam`, not baked into the key.
|
|
51
52
|
*/
|
|
52
53
|
commentsThread: (params) => ["commentsThread", "list", commentsThreadDiscriminator(params)]
|
|
@@ -195,12 +195,14 @@ function CommentThreadInner({
|
|
|
195
195
|
localization: localizationProp,
|
|
196
196
|
pageSize: pageSizeProp,
|
|
197
197
|
allowPosting: allowPostingProp,
|
|
198
|
-
allowEditing: allowEditingProp
|
|
198
|
+
allowEditing: allowEditingProp,
|
|
199
|
+
sort: sortProp
|
|
199
200
|
}) {
|
|
200
201
|
const overrides = context.usePluginOverrides("comments", {});
|
|
201
202
|
const pageSize = pageSizeProp ?? overrides.defaultCommentPageSize ?? DEFAULT_PAGE_SIZE;
|
|
202
203
|
const allowPosting = allowPostingProp ?? overrides.allowPosting ?? true;
|
|
203
204
|
const allowEditing = allowEditingProp ?? overrides.allowEditing ?? true;
|
|
205
|
+
const sort = sortProp ?? overrides.defaultCommentSort ?? "desc";
|
|
204
206
|
const loc = { ...index.COMMENTS_LOCALIZATION, ...localizationProp };
|
|
205
207
|
const [replyingTo, setReplyingTo] = React.useState(null);
|
|
206
208
|
const [expandedReplies, setExpandedReplies] = React.useState(
|
|
@@ -222,6 +224,7 @@ function CommentThreadInner({
|
|
|
222
224
|
status: "approved",
|
|
223
225
|
parentId: null,
|
|
224
226
|
currentUserId,
|
|
227
|
+
sort,
|
|
225
228
|
pageSize
|
|
226
229
|
});
|
|
227
230
|
const postMutation = useComments.usePostComment(config, {
|
|
@@ -229,7 +232,8 @@ function CommentThreadInner({
|
|
|
229
232
|
resourceType,
|
|
230
233
|
currentUserId,
|
|
231
234
|
infiniteKey: threadQueryKey,
|
|
232
|
-
pageSize
|
|
235
|
+
pageSize,
|
|
236
|
+
sort
|
|
233
237
|
});
|
|
234
238
|
const handlePost = async (body) => {
|
|
235
239
|
if (!currentUserId) return;
|
|
@@ -193,12 +193,14 @@ function CommentThreadInner({
|
|
|
193
193
|
localization: localizationProp,
|
|
194
194
|
pageSize: pageSizeProp,
|
|
195
195
|
allowPosting: allowPostingProp,
|
|
196
|
-
allowEditing: allowEditingProp
|
|
196
|
+
allowEditing: allowEditingProp,
|
|
197
|
+
sort: sortProp
|
|
197
198
|
}) {
|
|
198
199
|
const overrides = usePluginOverrides("comments", {});
|
|
199
200
|
const pageSize = pageSizeProp ?? overrides.defaultCommentPageSize ?? DEFAULT_PAGE_SIZE;
|
|
200
201
|
const allowPosting = allowPostingProp ?? overrides.allowPosting ?? true;
|
|
201
202
|
const allowEditing = allowEditingProp ?? overrides.allowEditing ?? true;
|
|
203
|
+
const sort = sortProp ?? overrides.defaultCommentSort ?? "desc";
|
|
202
204
|
const loc = { ...COMMENTS_LOCALIZATION, ...localizationProp };
|
|
203
205
|
const [replyingTo, setReplyingTo] = useState(null);
|
|
204
206
|
const [expandedReplies, setExpandedReplies] = useState(
|
|
@@ -220,6 +222,7 @@ function CommentThreadInner({
|
|
|
220
222
|
status: "approved",
|
|
221
223
|
parentId: null,
|
|
222
224
|
currentUserId,
|
|
225
|
+
sort,
|
|
223
226
|
pageSize
|
|
224
227
|
});
|
|
225
228
|
const postMutation = usePostComment(config, {
|
|
@@ -227,7 +230,8 @@ function CommentThreadInner({
|
|
|
227
230
|
resourceType,
|
|
228
231
|
currentUserId,
|
|
229
232
|
infiniteKey: threadQueryKey,
|
|
230
|
-
pageSize
|
|
233
|
+
pageSize,
|
|
234
|
+
sort
|
|
231
235
|
});
|
|
232
236
|
const handlePost = async (body) => {
|
|
233
237
|
if (!currentUserId) return;
|
|
@@ -84,6 +84,7 @@ function useInfiniteComments(config, params, options) {
|
|
|
84
84
|
parentId: params.parentId ?? null,
|
|
85
85
|
status: params.status,
|
|
86
86
|
currentUserId: params.currentUserId,
|
|
87
|
+
sort: params.sort,
|
|
87
88
|
limit: pageSize
|
|
88
89
|
});
|
|
89
90
|
const query = reactQuery.useInfiniteQuery({
|
|
@@ -183,6 +184,7 @@ function usePostComment(config, params) {
|
|
|
183
184
|
};
|
|
184
185
|
if (isInfinitePost(input.parentId)) {
|
|
185
186
|
const previous2 = queryClient.getQueryData(listKey);
|
|
187
|
+
const isDesc = params.sort === "desc";
|
|
186
188
|
queryClient.setQueryData(
|
|
187
189
|
listKey,
|
|
188
190
|
(old) => {
|
|
@@ -199,15 +201,15 @@ function usePostComment(config, params) {
|
|
|
199
201
|
pageParams: [0]
|
|
200
202
|
};
|
|
201
203
|
}
|
|
202
|
-
const
|
|
204
|
+
const targetIdx = isDesc ? 0 : old.pages.length - 1;
|
|
203
205
|
return {
|
|
204
206
|
...old,
|
|
205
207
|
// Increment `total` on every page so the header count (which reads
|
|
206
208
|
// pages[0].total) stays in sync even after multiple pages are loaded.
|
|
207
209
|
pages: old.pages.map(
|
|
208
|
-
(page, idx) => idx ===
|
|
210
|
+
(page, idx) => idx === targetIdx ? {
|
|
209
211
|
...page,
|
|
210
|
-
items: [...page.items, optimistic],
|
|
212
|
+
items: isDesc ? [optimistic, ...page.items] : [...page.items, optimistic],
|
|
211
213
|
total: page.total + 1
|
|
212
214
|
} : { ...page, total: page.total + 1 }
|
|
213
215
|
)
|
|
@@ -82,6 +82,7 @@ function useInfiniteComments(config, params, options) {
|
|
|
82
82
|
parentId: params.parentId ?? null,
|
|
83
83
|
status: params.status,
|
|
84
84
|
currentUserId: params.currentUserId,
|
|
85
|
+
sort: params.sort,
|
|
85
86
|
limit: pageSize
|
|
86
87
|
});
|
|
87
88
|
const query = useInfiniteQuery({
|
|
@@ -181,6 +182,7 @@ function usePostComment(config, params) {
|
|
|
181
182
|
};
|
|
182
183
|
if (isInfinitePost(input.parentId)) {
|
|
183
184
|
const previous2 = queryClient.getQueryData(listKey);
|
|
185
|
+
const isDesc = params.sort === "desc";
|
|
184
186
|
queryClient.setQueryData(
|
|
185
187
|
listKey,
|
|
186
188
|
(old) => {
|
|
@@ -197,15 +199,15 @@ function usePostComment(config, params) {
|
|
|
197
199
|
pageParams: [0]
|
|
198
200
|
};
|
|
199
201
|
}
|
|
200
|
-
const
|
|
202
|
+
const targetIdx = isDesc ? 0 : old.pages.length - 1;
|
|
201
203
|
return {
|
|
202
204
|
...old,
|
|
203
205
|
// Increment `total` on every page so the header count (which reads
|
|
204
206
|
// pages[0].total) stays in sync even after multiple pages are loaded.
|
|
205
207
|
pages: old.pages.map(
|
|
206
|
-
(page, idx) => idx ===
|
|
208
|
+
(page, idx) => idx === targetIdx ? {
|
|
207
209
|
...page,
|
|
208
|
-
items: [...page.items, optimistic],
|
|
210
|
+
items: isDesc ? [optimistic, ...page.items] : [...page.items, optimistic],
|
|
209
211
|
total: page.total + 1
|
|
210
212
|
} : { ...page, total: page.total + 1 }
|
|
211
213
|
)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.
|
|
1
|
+
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.04aMRz_W.cjs';
|
|
2
2
|
import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.cjs';
|
|
3
3
|
import '@tanstack/react-query';
|
|
4
4
|
import '@btst/stack/plugins/client';
|
|
@@ -6,7 +6,7 @@ import '@btst/stack/plugins/api';
|
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../../shared/stack.
|
|
9
|
+
import '../../../shared/stack.DuQOcInS.cjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Serialize a Tag for SSR/SSG use (convert dates to strings).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.
|
|
1
|
+
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.ueI-K4xy.mjs';
|
|
2
2
|
import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.mjs';
|
|
3
3
|
import '@tanstack/react-query';
|
|
4
4
|
import '@btst/stack/plugins/client';
|
|
@@ -6,7 +6,7 @@ import '@btst/stack/plugins/api';
|
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../../shared/stack.
|
|
9
|
+
import '../../../shared/stack.DuQOcInS.mjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Serialize a Tag for SSR/SSG use (convert dates to strings).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.
|
|
1
|
+
export { B as BLOG_QUERY_KEYS, j as BlogApiContext, m as BlogApiRouter, k as BlogBackendHooks, h as BlogRouteKey, C as CreatePostInput, N as NextPreviousPostsQuerySchema, P as PostListParams, i as PostListQuerySchema, c as PostListResult, U as UpdatePostInput, l as blogBackendPlugin, f as createBlogQueryKeys, d as createPost, e as deletePost, g as getAllPosts, b as getAllTags, a as getPostBySlug, u as updatePost } from '../../../shared/stack.CxWEN62M.js';
|
|
2
2
|
import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.Dsatjh0B.js';
|
|
3
3
|
import '@tanstack/react-query';
|
|
4
4
|
import '@btst/stack/plugins/client';
|
|
@@ -6,7 +6,7 @@ import '@btst/stack/plugins/api';
|
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../../shared/stack.
|
|
9
|
+
import '../../../shared/stack.DuQOcInS.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Serialize a Tag for SSR/SSG use (convert dates to strings).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.
|
|
1
|
+
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.BvuqACtA.cjs';
|
|
2
2
|
import '@tanstack/react-query';
|
|
3
3
|
import '../../../../shared/stack.Dsatjh0B.cjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../../../../shared/stack.
|
|
5
|
+
import '../../../../shared/stack.DuQOcInS.cjs';
|
|
6
6
|
|
|
7
7
|
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
8
8
|
declare function useThrottle<T>(value: T, wait?: number): T;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.
|
|
1
|
+
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.Cs8R5HxD.mjs';
|
|
2
2
|
import '@tanstack/react-query';
|
|
3
3
|
import '../../../../shared/stack.Dsatjh0B.mjs';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../../../../shared/stack.
|
|
5
|
+
import '../../../../shared/stack.DuQOcInS.mjs';
|
|
6
6
|
|
|
7
7
|
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
8
8
|
declare function useThrottle<T>(value: T, wait?: number): T;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.
|
|
1
|
+
export { P as PostCreateInput, e as PostUpdateInput, o as UseNextPreviousPostsOptions, p as UseNextPreviousPostsResult, d as UsePostResult, b as UsePostSearchOptions, c as UsePostSearchResult, U as UsePostsOptions, a as UsePostsResult, r as UseRecentPostsOptions, s as UseRecentPostsResult, k as useCreatePost, m as useDeletePost, q as useNextPreviousPosts, g as usePost, n as usePostSearch, u as usePosts, t as useRecentPosts, h as useSuspensePost, f as useSuspensePosts, j as useSuspenseTags, i as useTags, l as useUpdatePost } from '../../../../shared/stack.DPTRuLUH.js';
|
|
2
2
|
import '@tanstack/react-query';
|
|
3
3
|
import '../../../../shared/stack.Dsatjh0B.js';
|
|
4
4
|
import 'zod';
|
|
5
|
-
import '../../../../shared/stack.
|
|
5
|
+
import '../../../../shared/stack.DuQOcInS.js';
|
|
6
6
|
|
|
7
7
|
declare function useDebounce<T>(value: T, delay?: number): T;
|
|
8
8
|
declare function useThrottle<T>(value: T, wait?: number): T;
|
|
@@ -3,9 +3,9 @@ import * as _btst_yar from '@btst/yar';
|
|
|
3
3
|
import { ComponentType, ReactNode } from 'react';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
5
|
import { P as Post, S as SerializedPost } from '../../../shared/stack.Dsatjh0B.cjs';
|
|
6
|
-
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.
|
|
6
|
+
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.BvuqACtA.cjs';
|
|
7
7
|
import 'zod';
|
|
8
|
-
import '../../../shared/stack.
|
|
8
|
+
import '../../../shared/stack.DuQOcInS.cjs';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Context passed to route hooks
|
|
@@ -390,6 +390,8 @@ declare const BLOG_LOCALIZATION: {
|
|
|
390
390
|
BLOG_GENERIC_ERROR_MESSAGE: string;
|
|
391
391
|
BLOG_PAGE_NOT_FOUND_TITLE: string;
|
|
392
392
|
BLOG_PAGE_NOT_FOUND_DESCRIPTION: string;
|
|
393
|
+
BLOG_TAGS_SHOW_ALL: string;
|
|
394
|
+
BLOG_TAGS_SHOW_LESS: string;
|
|
393
395
|
};
|
|
394
396
|
type BlogLocalization = typeof BLOG_LOCALIZATION;
|
|
395
397
|
|
|
@@ -3,9 +3,9 @@ import * as _btst_yar from '@btst/yar';
|
|
|
3
3
|
import { ComponentType, ReactNode } from 'react';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
5
|
import { P as Post, S as SerializedPost } from '../../../shared/stack.Dsatjh0B.mjs';
|
|
6
|
-
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.
|
|
6
|
+
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.Cs8R5HxD.mjs';
|
|
7
7
|
import 'zod';
|
|
8
|
-
import '../../../shared/stack.
|
|
8
|
+
import '../../../shared/stack.DuQOcInS.mjs';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Context passed to route hooks
|
|
@@ -390,6 +390,8 @@ declare const BLOG_LOCALIZATION: {
|
|
|
390
390
|
BLOG_GENERIC_ERROR_MESSAGE: string;
|
|
391
391
|
BLOG_PAGE_NOT_FOUND_TITLE: string;
|
|
392
392
|
BLOG_PAGE_NOT_FOUND_DESCRIPTION: string;
|
|
393
|
+
BLOG_TAGS_SHOW_ALL: string;
|
|
394
|
+
BLOG_TAGS_SHOW_LESS: string;
|
|
393
395
|
};
|
|
394
396
|
type BlogLocalization = typeof BLOG_LOCALIZATION;
|
|
395
397
|
|
|
@@ -3,9 +3,9 @@ import * as _btst_yar from '@btst/yar';
|
|
|
3
3
|
import { ComponentType, ReactNode } from 'react';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
5
|
import { P as Post, S as SerializedPost } from '../../../shared/stack.Dsatjh0B.js';
|
|
6
|
-
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.
|
|
6
|
+
export { U as UsePostsOptions, a as UsePostsResult } from '../../../shared/stack.DPTRuLUH.js';
|
|
7
7
|
import 'zod';
|
|
8
|
-
import '../../../shared/stack.
|
|
8
|
+
import '../../../shared/stack.DuQOcInS.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Context passed to route hooks
|
|
@@ -390,6 +390,8 @@ declare const BLOG_LOCALIZATION: {
|
|
|
390
390
|
BLOG_GENERIC_ERROR_MESSAGE: string;
|
|
391
391
|
BLOG_PAGE_NOT_FOUND_TITLE: string;
|
|
392
392
|
BLOG_PAGE_NOT_FOUND_DESCRIPTION: string;
|
|
393
|
+
BLOG_TAGS_SHOW_ALL: string;
|
|
394
|
+
BLOG_TAGS_SHOW_LESS: string;
|
|
393
395
|
};
|
|
394
396
|
type BlogLocalization = typeof BLOG_LOCALIZATION;
|
|
395
397
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '@tanstack/react-query';
|
|
2
|
-
export { f as createBlogQueryKeys } from '../../shared/stack.
|
|
2
|
+
export { f as createBlogQueryKeys } from '../../shared/stack.04aMRz_W.cjs';
|
|
3
3
|
import '@btst/stack/plugins/client';
|
|
4
4
|
import '../../shared/stack.Dsatjh0B.cjs';
|
|
5
5
|
import '@btst/stack/plugins/api';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../shared/stack.
|
|
9
|
+
import '../../shared/stack.DuQOcInS.cjs';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '@tanstack/react-query';
|
|
2
|
-
export { f as createBlogQueryKeys } from '../../shared/stack.
|
|
2
|
+
export { f as createBlogQueryKeys } from '../../shared/stack.ueI-K4xy.mjs';
|
|
3
3
|
import '@btst/stack/plugins/client';
|
|
4
4
|
import '../../shared/stack.Dsatjh0B.mjs';
|
|
5
5
|
import '@btst/stack/plugins/api';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../shared/stack.
|
|
9
|
+
import '../../shared/stack.DuQOcInS.mjs';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '@tanstack/react-query';
|
|
2
|
-
export { f as createBlogQueryKeys } from '../../shared/stack.
|
|
2
|
+
export { f as createBlogQueryKeys } from '../../shared/stack.CxWEN62M.js';
|
|
3
3
|
import '@btst/stack/plugins/client';
|
|
4
4
|
import '../../shared/stack.Dsatjh0B.js';
|
|
5
5
|
import '@btst/stack/plugins/api';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
import 'zod';
|
|
9
|
-
import '../../shared/stack.
|
|
9
|
+
import '../../shared/stack.DuQOcInS.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as CommentListParamsSchema, b as CommentCountQuerySchema } from '../../../shared/stack.
|
|
2
|
-
export { d as CommentsApiContext, C as CommentsApiRouter, e as CommentsBackendOptions, c as commentsBackendPlugin } from '../../../shared/stack.
|
|
1
|
+
import { a as CommentListParamsSchema, b as CommentCountQuerySchema } from '../../../shared/stack.CCncwK6g.cjs';
|
|
2
|
+
export { d as CommentsApiContext, C as CommentsApiRouter, e as CommentsBackendOptions, c as commentsBackendPlugin } from '../../../shared/stack.CCncwK6g.cjs';
|
|
3
3
|
import { DBAdapter } from '@btst/db';
|
|
4
|
-
import { C as CommentListResult, S as SerializedComment, d as Comment } from '../../../shared/stack.
|
|
5
|
-
export { e as COMMENTS_QUERY_KEYS } from '../../../shared/stack.
|
|
4
|
+
import { C as CommentListResult, S as SerializedComment, d as Comment } from '../../../shared/stack.C7KNNiJm.cjs';
|
|
5
|
+
export { e as COMMENTS_QUERY_KEYS } from '../../../shared/stack.C7KNNiJm.cjs';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import '@btst/stack/plugins/api';
|
|
8
8
|
import 'better-call';
|