boltdocs 3.3.6 → 3.4.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/{adapters-BKzKe2mO.mjs → adapters-BXiBWAKs.mjs} +1 -1
- package/dist/{adapters-DwDTQoCG.cjs → adapters-Czl3WtQt.cjs} +1 -1
- package/dist/{build-CxT38vPv.cjs → build-CNkXRdk8.cjs} +1 -1
- package/dist/{build-BJnL-FHG.mjs → build-CqUBsXVC.mjs} +1 -1
- package/dist/client/index.cjs +223 -51
- package/dist/client/index.d.cts +3 -3
- package/dist/client/index.d.ts +3 -3
- package/dist/client/index.js +226 -56
- package/dist/client/mdx.cjs +1 -1
- package/dist/client/mdx.js +1 -1
- package/dist/client/primitives.cjs +5 -5
- package/dist/client/primitives.d.cts +53 -34
- package/dist/client/primitives.d.ts +62 -43
- package/dist/client/primitives.js +4 -4
- package/dist/client/router.cjs +1 -1
- package/dist/client/router.d.cts +1 -1
- package/dist/client/router.d.ts +1 -1
- package/dist/client/router.js +1 -1
- package/dist/client/theme/reset.css +41 -0
- package/dist/{config-BJp3lGzE.cjs → config-B3SEoVjG.cjs} +2 -2
- package/dist/{config-BC_qhXws.cjs → config-Bfakeadu.cjs} +1 -1
- package/dist/{config-B3_iVsbi.mjs → config-CTcfF-0c.mjs} +2 -2
- package/dist/dev-D1DmOSjn.mjs +6 -0
- package/dist/dev-DH6cSge8.cjs +6 -0
- package/dist/{docs-layout-D3Fmb0Wd.js → docs-layout-CmntYM6p.js} +33 -33
- package/dist/{docs-layout-SgphExoE.cjs → docs-layout-DIgxJ5c7.cjs} +9 -9
- package/dist/{doctor-BqxOFRt3.cjs → doctor-BLxm2alc.cjs} +1 -1
- package/dist/{doctor-TS3JGNEU.cjs → doctor-Dd-JMTRo.cjs} +1 -1
- package/dist/{doctor-Cv5lXnay.mjs → doctor-DogHujrP.mjs} +1 -1
- package/dist/{image-Bkx85rsq.cjs → image-Bke2ojW1.cjs} +3 -3
- package/dist/{image-BAiDReNd.js → image-CaY2w0ua.js} +2 -1
- package/dist/index--xbYbT8N.d.ts +343 -0
- package/dist/{index-B1Mx0dHl.d.ts → index-B_o5y34l.d.cts} +89 -10
- package/dist/{index-DLaHgD-i.d.cts → index-Bx0CUd7Q.d.ts} +89 -10
- package/dist/index-RK7W_Fxy.d.cts +343 -0
- package/dist/{link-q1qHNGK_.js → link-CSe_oD8Y.js} +86 -113
- package/dist/{link-hLWOsx0x.cjs → link-Xb69Oy2F.cjs} +87 -143
- package/dist/{mdx-Qi0DmaY8.cjs → mdx-BCOrMd-P.cjs} +68 -16
- package/dist/{mdx-CJGWzBGy.js → mdx-BijiEbkp.js} +62 -15
- package/dist/{native-nLA4Jr0T.cjs → native-BbtRkce5.cjs} +1 -1
- package/dist/node/cli-entry.cjs +1 -1
- package/dist/node/cli-entry.mjs +1 -1
- package/dist/node/highlight.d.cts +2 -2
- package/dist/node/highlight.d.mts +2 -2
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.cts +18 -39
- package/dist/node/index.d.mts +19 -40
- package/dist/node/index.mjs +1 -1
- package/dist/node/mdx/shiki-adapter.d.cts +1 -1
- package/dist/node/mdx/shiki-adapter.d.mts +1 -1
- package/dist/node-BgiLCa0I.cjs +39 -0
- package/dist/node-Da3tYBHo.mjs +39 -0
- package/dist/{package-Bah2tHjK.cjs → package-D1gVs5gQ.cjs} +1 -1
- package/dist/{package-D6bf68FR.mjs → package-YgQJn3Yh.mjs} +1 -1
- package/dist/pages-external-B_r6gvqP.cjs +6 -0
- package/dist/pages-external-jmK7AHaO.mjs +6 -0
- package/dist/{parser-CD8Oo8qh.mjs → parser-CvNZc5s3.mjs} +1 -1
- package/dist/{parser-vPaKvzLp.cjs → parser-DJLWTiO-.cjs} +1 -1
- package/dist/plugin-DW9K2fW5.mjs +69 -0
- package/dist/plugin-NwGKyTJX.cjs +69 -0
- package/dist/{plugin-context-b5qVVQSU.mjs → plugin-context-COh-cbsW.mjs} +1 -1
- package/dist/{plugin-context-BZs5lvDu.cjs → plugin-context-FIHaWn6r.cjs} +1 -1
- package/dist/{plugin-lifecycle-s89gzTlh.cjs → plugin-lifecycle-D9fTRaWY.cjs} +1 -1
- package/dist/{registry-B8pt41zj.d.cts → registry-BFmzj1yg.d.mts} +1 -1
- package/dist/{registry-BrrH2X9c.d.mts → registry-BoswPzYV.d.cts} +1 -1
- package/dist/{resolve-C5rT6B21.mjs → resolve-5puUe7eS.mjs} +1 -1
- package/dist/{resolve-BelytNYR.cjs → resolve-CF4ZLfqx.cjs} +1 -1
- package/dist/route-paths-B6ocUfNY.cjs +6 -0
- package/dist/route-paths-DyDji4bX.mjs +6 -0
- package/dist/{router-CZBxMRAH.js → router-B5e8k4qK.js} +175 -10
- package/dist/{router-C3kygdRK.cjs → router-DKC0Lu0n.cjs} +204 -9
- package/dist/{routes-Dq_2EUIB.cjs → routes-D55M8UrH.cjs} +1 -1
- package/dist/{routes-CzhKOw67.cjs → routes-DdE6Lfcl.cjs} +1 -1
- package/dist/{routes-Dw6g0bfF.mjs → routes-_I_8PQYF.mjs} +1 -1
- package/dist/{search-dialog-CguKVtUu.cjs → search-dialog-BOQRHKTb.cjs} +53 -20
- package/dist/{search-dialog-mYnqU4v7.js → search-dialog-BXil4_7P.js} +57 -24
- package/dist/{search-dialog-BYZS9aeO.cjs → search-dialog-CwlBd-Mu.cjs} +5 -5
- package/dist/{search-dialog-DQwod5Xc.js → search-dialog-D3Obh3eA.js} +1 -1
- package/dist/{search-dialog-DzObE-Ar.js → search-dialog-DeplpVEB.js} +3 -3
- package/dist/{search-dialog-QgKRRbsI.cjs → search-dialog-cHXR5zhL.cjs} +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/ssg-static-options-Br1_u9qp.mjs +6 -0
- package/dist/ssg-static-options-CVvGKM8i.cjs +6 -0
- package/dist/types-58Ac3UGI.d.cts +114 -0
- package/dist/types-BwnGf-1E.d.mts +114 -0
- package/dist/{virtual-modules-C3S3Nz8r.cjs → virtual-modules-C4-qxFlL.cjs} +1 -1
- package/dist/{virtual-modules-CaxqrFd6.mjs → virtual-modules-DiWUKJGP.mjs} +1 -1
- package/package.json +5 -3
- package/src/shared/types.ts +133 -987
- package/dist/dev-46NiL0MC.cjs +0 -6
- package/dist/dev-C4kjO5xs.mjs +0 -6
- package/dist/index-CgWkOCCn.d.cts +0 -1193
- package/dist/index-CuNSD3E2.d.ts +0 -1193
- package/dist/node-7Cfw6nMr.cjs +0 -23
- package/dist/node-CT2E84nY.mjs +0 -23
- package/dist/pages-external-BBw8ObVK.mjs +0 -6
- package/dist/pages-external-DPiPFxxP.cjs +0 -6
- package/dist/plugin-AgNI3ktz.cjs +0 -69
- package/dist/plugin-BAv_pYLt.mjs +0 -69
- package/dist/types-74i_xUe2.d.mts +0 -975
- package/dist/types-X_Pwk8Cg.d.cts +0 -975
- /package/dist/{audit-CMc_ydRr.mjs → audit-CYAkXXvP.mjs} +0 -0
- /package/dist/{audit-CHkGiV3c.cjs → audit-DxCZZTuX.cjs} +0 -0
- /package/dist/{csp-BiGAG8aF.cjs → csp-B-gc2Iha.cjs} +0 -0
- /package/dist/{csp-D0BOH8ae.mjs → csp-f8DOcI_7.mjs} +0 -0
- /package/dist/{generator-BCrZL53x.cjs → generator-CBAPKY6r.cjs} +0 -0
- /package/dist/{generator-CFukoGa0.mjs → generator-MRpn-yp6.mjs} +0 -0
- /package/dist/{handler-Lex5DbvG.mjs → handler-DBZqoWt2.mjs} +0 -0
- /package/dist/{handler-Ch-Q9NAB.cjs → handler-ryZR9Q41.cjs} +0 -0
- /package/dist/{index-HAwIo4nZ.d.mts → index-CPr34I2C.d.mts} +0 -0
- /package/dist/{native-BYKMke79.mjs → native-DZ6WMwjG.mjs} +0 -0
- /package/dist/{native-BOet8hpE.cjs → native-DeKxny_T.cjs} +0 -0
- /package/dist/{update-check-BXD1atVv.mjs → update-check-BXx8te9F.mjs} +0 -0
- /package/dist/{update-check-DFQZyoSU.cjs → update-check-CiIeC7CX.cjs} +0 -0
package/dist/client/index.js
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import { B as
|
|
7
|
-
import { A as useRouteData, B as
|
|
8
|
-
import { _ as useTheme, g as ThemeProvider } from "../image-
|
|
9
|
-
import { a as
|
|
10
|
-
import { A as useUI, C as resolveIcon, D as ButtonGroup, O as Breadcrumbs$2, S as IconRenderer, T as Menu$
|
|
11
|
-
import { a as useRoutes, i as InternalErrorBoundary, r as useSearch, t as SearchDialog } from "../search-dialog-
|
|
12
|
-
import { a as Github, c as Button$1, i as Navbar$1, o as ErrorBoundary$1, r as useSearchHighlight } from "../search-dialog-
|
|
6
|
+
import { B as X, C as FaceGood, D as Home, H as BoltdocsProvider, I as Pencil, M as Menu$1, N as Monitor, P as Moon, R as Sun, S as FaceBad, U as useBoltdocsContext, _ as ChevronRight, a as useLocalizedTo, g as ChevronLeft, h as ChevronDown, i as cn, k as Languages, l as normalizePath, m as Check, o as RoutesProvider, p as ArrowLeft, t as Link, u as resolvePublicAssetUrl, v as CircleHelp, w as FaceRegular, x as ExternalLink, y as Copy, z as TextAlignStart } from "../link-CSe_oD8Y.js";
|
|
7
|
+
import { A as useRouteData, B as ConfigContext, C as Outlet, D as useMatches, E as useLocation, F as PrefetchContext, G as normalizeBasename, I as RouteDataContext, K as stripBasename, L as defaultNavigate, M as LocationProvider, N as MatchesContext, O as useNavigate, P as NavigateContext, R as startViewTransition, S as resolveRouteBranch, T as useLoaderData, U as addBasename, V as useConfig, W as hasBasename, _ as stripSiteProtocol, a as getConfiguredVersions, b as matchRouteBranch, c as hasUriScheme, d as isConfiguredVersion, f as normalizeUrlBase, g as splitUrlReference, h as resolveUrlReference, i as getConfiguredLocales, j as LocationContext, k as usePrefetch, l as hasUrlBase, m as parseUrlReference, n as buildUrl, o as getVersionPrefixSegments, p as normalizeUrlPath, r as classifyUrlPath, s as getVersionSegments, t as addUrlBase, u as isConfiguredLocale, v as stripUrlBase, w as OutletContext, x as matchRouteBranchWithParams, y as RouteRenderer, z as useViewTransition } from "../router-B5e8k4qK.js";
|
|
8
|
+
import { _ as useTheme, g as ThemeProvider } from "../image-CaY2w0ua.js";
|
|
9
|
+
import { a as useExpandable, i as useCodeBlockFeedback, n as Timeline, o as useCopyButton, r as formatDeterministicDate, s as copyToClipboard, t as mdx_components_default } from "../mdx-BijiEbkp.js";
|
|
10
|
+
import { A as useUI, C as resolveIcon, D as ButtonGroup, O as Breadcrumbs$2, S as IconRenderer, T as Menu$2, f as PageNav$1, k as UIProvider, m as OnThisPage$1, n as Sidebar$1, t as DocsLayout$1, w as Tabs$1, x as useSidebar } from "../docs-layout-CmntYM6p.js";
|
|
11
|
+
import { a as useRoutes, i as InternalErrorBoundary, r as useSearch, t as SearchDialog } from "../search-dialog-DeplpVEB.js";
|
|
12
|
+
import { a as Github, c as Button$1, i as Navbar$1, o as ErrorBoundary$1, r as useSearchHighlight } from "../search-dialog-BXil4_7P.js";
|
|
13
13
|
import { ViteReactSSG } from "@bdocs/ssg";
|
|
14
14
|
import { Suspense, createContext, isValidElement, lazy, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
15
15
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -651,12 +651,12 @@ function DocPage({ route, content: Content, mdxComponents: propComponents }) {
|
|
|
651
651
|
/**
|
|
652
652
|
* Renders an MDX page by consuming pre-loaded route data.
|
|
653
653
|
*
|
|
654
|
-
* - If the route belongs to a collection
|
|
655
|
-
*
|
|
656
|
-
*
|
|
654
|
+
* - If the route belongs to a collection, wraps the content with
|
|
655
|
+
* `CurrentPostProvider` so that `usePost()` (called without a slug) can read
|
|
656
|
+
* the current post's data from context.
|
|
657
657
|
* - Otherwise, renders the standard `DocPage` layout.
|
|
658
658
|
*/
|
|
659
|
-
function MdxPage({ MDXComponent, mdxComponents: propComponents, collectionPostComponent: CollectionPost }) {
|
|
659
|
+
function MdxPage({ MDXComponent, mdxComponents: propComponents, collectionPostComponent: CollectionPost, collection, route: routeProp }) {
|
|
660
660
|
const data = useLoaderData();
|
|
661
661
|
const mdxComponents = {
|
|
662
662
|
...useMdxComponents(),
|
|
@@ -664,30 +664,37 @@ function MdxPage({ MDXComponent, mdxComponents: propComponents, collectionPostCo
|
|
|
664
664
|
};
|
|
665
665
|
if (!MDXComponent) return null;
|
|
666
666
|
const collectionData = data || {};
|
|
667
|
-
|
|
667
|
+
const isCollection = collection ? true : !!collectionData?.collection && !!collectionData?.route;
|
|
668
|
+
/**
|
|
669
|
+
* The loader's own copy of the route, falling back to the route table so the
|
|
670
|
+
* first client render has the same metadata the server used.
|
|
671
|
+
*/
|
|
672
|
+
const postRoute = collectionData.route ?? routeProp;
|
|
673
|
+
const postHeadings = collectionData.headings ?? routeProp?.headings ?? [];
|
|
674
|
+
if (isCollection) {
|
|
668
675
|
const postElement = CollectionPost ? /* @__PURE__ */ jsx(CollectionPost, {
|
|
669
676
|
MDXComponent,
|
|
670
677
|
mdxComponents
|
|
671
678
|
}) : /* @__PURE__ */ jsx(DocPage, {
|
|
672
679
|
route: {
|
|
673
|
-
path:
|
|
674
|
-
filePath:
|
|
675
|
-
title:
|
|
676
|
-
description:
|
|
677
|
-
headings:
|
|
678
|
-
locale:
|
|
679
|
-
version:
|
|
680
|
-
lastUpdated:
|
|
681
|
-
frontmatter:
|
|
680
|
+
path: postRoute?.path || "",
|
|
681
|
+
filePath: postRoute?.filePath || "",
|
|
682
|
+
title: postRoute?.title,
|
|
683
|
+
description: postRoute?.description,
|
|
684
|
+
headings: postHeadings,
|
|
685
|
+
locale: postRoute?.locale,
|
|
686
|
+
version: postRoute?.version,
|
|
687
|
+
lastUpdated: postRoute?.lastUpdated,
|
|
688
|
+
frontmatter: postRoute?.frontmatter
|
|
682
689
|
},
|
|
683
690
|
content: MDXComponent,
|
|
684
691
|
mdxComponents
|
|
685
692
|
});
|
|
686
693
|
return /* @__PURE__ */ jsx(CurrentPostProvider, {
|
|
687
694
|
value: {
|
|
688
|
-
route:
|
|
689
|
-
headings:
|
|
690
|
-
collection: collectionData.collection
|
|
695
|
+
route: postRoute,
|
|
696
|
+
headings: postHeadings,
|
|
697
|
+
collection: collection ?? collectionData.collection
|
|
691
698
|
},
|
|
692
699
|
children: postElement
|
|
693
700
|
});
|
|
@@ -840,14 +847,14 @@ function CopyMarkdown({ content, mdxRaw, route, className }) {
|
|
|
840
847
|
className: cn("hidden md:flex items-center gap-2 px-5 py-2 bg-transparent text-[0.8125rem] font-semibold h-9 shrink-0 outline-none select-none cursor-pointer border-none", "text-body transition-all duration-300 hover:bg-primary-500/5", copied && "text-emerald-500 hover:bg-emerald-500/5"),
|
|
841
848
|
children: [copied ? /* @__PURE__ */ jsx(Check, { size: 16 }) : /* @__PURE__ */ jsx(Copy, { size: 16 }), copied ? "Copied!" : "Copy Markdown"]
|
|
842
849
|
}),
|
|
843
|
-
/* @__PURE__ */ jsxs(Menu$
|
|
850
|
+
/* @__PURE__ */ jsxs(Menu$2.Trigger, {
|
|
844
851
|
placement: "bottom end",
|
|
845
852
|
children: [/* @__PURE__ */ jsx(Button$1, {
|
|
846
853
|
className: cn("flex items-center justify-center px-2.5 md:px-3.5 h-8 md:h-9 border-none border-l border-subtle/50 text-muted rounded-none bg-transparent shrink-0 outline-none select-none cursor-pointer", "transition-all duration-300 hover:bg-primary-500/5 hover:text-primary-500"),
|
|
847
854
|
children: /* @__PURE__ */ jsx(ChevronDown, { size: 14 })
|
|
848
|
-
}), /* @__PURE__ */ jsxs(Menu$
|
|
855
|
+
}), /* @__PURE__ */ jsxs(Menu$2.Root, {
|
|
849
856
|
className: "w-52 bg-main border border-subtle rounded-xl p-1.5 shadow-md outline-none flex flex-col gap-0.5 animate-fade-in z-100",
|
|
850
|
-
children: [/* @__PURE__ */ jsxs(Menu$
|
|
857
|
+
children: [/* @__PURE__ */ jsxs(Menu$2.Item, {
|
|
851
858
|
onAction: handleCopy,
|
|
852
859
|
className: "flex items-center px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group",
|
|
853
860
|
children: [/* @__PURE__ */ jsx(Copy, {
|
|
@@ -857,7 +864,7 @@ function CopyMarkdown({ content, mdxRaw, route, className }) {
|
|
|
857
864
|
className: "ml-2",
|
|
858
865
|
children: "Copy Markdown"
|
|
859
866
|
})]
|
|
860
|
-
}), /* @__PURE__ */ jsxs(Menu$
|
|
867
|
+
}), /* @__PURE__ */ jsxs(Menu$2.Item, {
|
|
861
868
|
onAction: handleOpenRaw,
|
|
862
869
|
className: "flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group",
|
|
863
870
|
children: [/* @__PURE__ */ jsx(ExternalLink, {
|
|
@@ -999,7 +1006,13 @@ function useNavbar() {
|
|
|
999
1006
|
return {
|
|
1000
1007
|
links,
|
|
1001
1008
|
title,
|
|
1002
|
-
logo: !logo ? null : typeof logo === "string" ?
|
|
1009
|
+
logo: !logo ? null : typeof logo === "string" ? {
|
|
1010
|
+
light: logo,
|
|
1011
|
+
dark: null
|
|
1012
|
+
} : {
|
|
1013
|
+
light: logo.light,
|
|
1014
|
+
dark: logo.dark
|
|
1015
|
+
},
|
|
1003
1016
|
logoProps: {
|
|
1004
1017
|
alt: (logo && typeof logo === "object" ? logo.alt : void 0) || title,
|
|
1005
1018
|
width: logo && typeof logo === "object" ? logo.width : void 0,
|
|
@@ -1022,7 +1035,7 @@ function ThemeToggle({ className }) {
|
|
|
1022
1035
|
}, []);
|
|
1023
1036
|
if (!mounted) return /* @__PURE__ */ jsx("div", { className: cn("h-9 w-9", className) });
|
|
1024
1037
|
const Icon = theme === "system" ? Monitor : theme === "dark" ? Moon : Sun;
|
|
1025
|
-
return /* @__PURE__ */ jsxs(Menu$
|
|
1038
|
+
return /* @__PURE__ */ jsxs(Menu$2.Trigger, {
|
|
1026
1039
|
placement: "bottom right",
|
|
1027
1040
|
children: [/* @__PURE__ */ jsx(Button, {
|
|
1028
1041
|
className: cn("flex h-9 w-9 items-center justify-center rounded-xl text-muted transition-colors hover:bg-surface hover:text-body outline-none border-none bg-transparent cursor-pointer", className),
|
|
@@ -1031,7 +1044,7 @@ function ThemeToggle({ className }) {
|
|
|
1031
1044
|
size: 20,
|
|
1032
1045
|
className: "animate-in fade-in zoom-in duration-300"
|
|
1033
1046
|
})
|
|
1034
|
-
}), /* @__PURE__ */ jsxs(Menu$
|
|
1047
|
+
}), /* @__PURE__ */ jsxs(Menu$2.Root, {
|
|
1035
1048
|
selectionMode: "single",
|
|
1036
1049
|
selectedKeys: [theme],
|
|
1037
1050
|
onSelectionChange: (keys) => {
|
|
@@ -1040,7 +1053,7 @@ function ThemeToggle({ className }) {
|
|
|
1040
1053
|
},
|
|
1041
1054
|
className: "w-36 bg-main border border-subtle rounded-xl p-1.5 shadow-md outline-none flex flex-col gap-0.5 animate-fade-in z-100",
|
|
1042
1055
|
children: [
|
|
1043
|
-
/* @__PURE__ */ jsxs(Menu$
|
|
1056
|
+
/* @__PURE__ */ jsxs(Menu$2.Item, {
|
|
1044
1057
|
id: "light",
|
|
1045
1058
|
className: "group flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group data-selected:text-primary-500 data-selected:bg-primary-500/5",
|
|
1046
1059
|
children: [/* @__PURE__ */ jsx(Sun, {
|
|
@@ -1051,7 +1064,7 @@ function ThemeToggle({ className }) {
|
|
|
1051
1064
|
children: "Light"
|
|
1052
1065
|
})]
|
|
1053
1066
|
}),
|
|
1054
|
-
/* @__PURE__ */ jsxs(Menu$
|
|
1067
|
+
/* @__PURE__ */ jsxs(Menu$2.Item, {
|
|
1055
1068
|
id: "dark",
|
|
1056
1069
|
className: "flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group data-selected:text-primary-500 data-selected:bg-primary-500/5",
|
|
1057
1070
|
children: [/* @__PURE__ */ jsx(Moon, {
|
|
@@ -1062,7 +1075,7 @@ function ThemeToggle({ className }) {
|
|
|
1062
1075
|
children: "Dark"
|
|
1063
1076
|
})]
|
|
1064
1077
|
}),
|
|
1065
|
-
/* @__PURE__ */ jsxs(Menu$
|
|
1078
|
+
/* @__PURE__ */ jsxs(Menu$2.Item, {
|
|
1066
1079
|
id: "system",
|
|
1067
1080
|
className: "flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group data-selected:text-primary-500 data-selected:bg-primary-500/5",
|
|
1068
1081
|
children: [/* @__PURE__ */ jsx(Monitor, {
|
|
@@ -1248,17 +1261,17 @@ function useVersion() {
|
|
|
1248
1261
|
function VersionSelector({ className }) {
|
|
1249
1262
|
const { currentVersionLabel, availableVersions, handleVersionChange } = useVersion();
|
|
1250
1263
|
if (availableVersions.length === 0) return null;
|
|
1251
|
-
return /* @__PURE__ */ jsxs(Menu$
|
|
1264
|
+
return /* @__PURE__ */ jsxs(Menu$2.Trigger, { children: [/* @__PURE__ */ jsxs(Button$1, {
|
|
1252
1265
|
className: cn("flex h-9 items-center justify-between gap-2 border border-subtle bg-surface px-4 py-1.5 rounded-xl text-xs font-semibold text-body hover:bg-primary-50/20 hover:border-primary-500/50 transition-all duration-300 outline-none select-none cursor-pointer", className),
|
|
1253
1266
|
children: [/* @__PURE__ */ jsx("span", {
|
|
1254
1267
|
className: "font-semibold text-[0.8125rem]",
|
|
1255
1268
|
children: currentVersionLabel
|
|
1256
1269
|
}), /* @__PURE__ */ jsx(ChevronDown, { className: "w-3.5 h-3.5 text-muted/60" })]
|
|
1257
|
-
}), /* @__PURE__ */ jsx(Menu$
|
|
1270
|
+
}), /* @__PURE__ */ jsx(Menu$2.Root, {
|
|
1258
1271
|
className: "w-40 bg-main border border-subtle rounded-xl p-1.5 shadow-md outline-none flex flex-col gap-0.5 animate-fade-in z-100",
|
|
1259
|
-
children: /* @__PURE__ */ jsx(Menu$
|
|
1272
|
+
children: /* @__PURE__ */ jsx(Menu$2.Section, {
|
|
1260
1273
|
items: availableVersions,
|
|
1261
|
-
children: (version) => /* @__PURE__ */ jsx(Menu$
|
|
1274
|
+
children: (version) => /* @__PURE__ */ jsx(Menu$2.Item, {
|
|
1262
1275
|
onPress: () => handleVersionChange(version.value),
|
|
1263
1276
|
className: "flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body hover:bg-primary-50/50 cursor-pointer select-none outline-none group data-selected:text-primary-500 data-selected:bg-primary-500/5",
|
|
1264
1277
|
children: version.label
|
|
@@ -1706,7 +1719,7 @@ function useFeedback(options = {}) {
|
|
|
1706
1719
|
function I18nSelector({ className }) {
|
|
1707
1720
|
const { currentLocale, availableLocales, handleLocaleChange } = useI18n();
|
|
1708
1721
|
if (availableLocales.length === 0) return null;
|
|
1709
|
-
return /* @__PURE__ */ jsxs(Menu$
|
|
1722
|
+
return /* @__PURE__ */ jsxs(Menu$2.Trigger, { children: [/* @__PURE__ */ jsxs(Button$1, {
|
|
1710
1723
|
className: cn("flex h-9 items-center justify-between gap-2 border border-subtle bg-surface px-4 py-1.5 rounded-xl text-xs font-semibold text-body hover:bg-primary-50/20 hover:border-primary-500/50 transition-all duration-300 outline-none select-none cursor-pointer", className),
|
|
1711
1724
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1712
1725
|
className: "flex items-center gap-1.5",
|
|
@@ -1715,11 +1728,11 @@ function I18nSelector({ className }) {
|
|
|
1715
1728
|
children: currentLocale || "en"
|
|
1716
1729
|
})]
|
|
1717
1730
|
}), /* @__PURE__ */ jsx(ChevronDown, { className: "w-3.5 h-3.5 text-muted/60" })]
|
|
1718
|
-
}), /* @__PURE__ */ jsx(Menu$
|
|
1731
|
+
}), /* @__PURE__ */ jsx(Menu$2.Root, {
|
|
1719
1732
|
className: "w-40 bg-main border border-subtle rounded-xl p-1.5 shadow-md outline-none flex flex-col gap-0.5 animate-fade-in z-100",
|
|
1720
|
-
children: /* @__PURE__ */ jsx(Menu$
|
|
1733
|
+
children: /* @__PURE__ */ jsx(Menu$2.Section, {
|
|
1721
1734
|
items: availableLocales,
|
|
1722
|
-
children: (locale) => /* @__PURE__ */ jsx(Menu$
|
|
1735
|
+
children: (locale) => /* @__PURE__ */ jsx(Menu$2.Item, {
|
|
1723
1736
|
onPress: () => handleLocaleChange(locale.value),
|
|
1724
1737
|
className: "flex items-center gap-2 px-3 py-2 rounded-lg text-xs font-medium text-body dark:hover:bg-primary-300/50 hover:bg-primary-200/50 transition-colors duration-100 cursor-pointer select-none outline-none group data-selected:text-primary-500 data-selected:bg-primary-500/5",
|
|
1725
1738
|
children: /* @__PURE__ */ jsx("span", { children: locale.label })
|
|
@@ -1730,7 +1743,7 @@ function I18nSelector({ className }) {
|
|
|
1730
1743
|
|
|
1731
1744
|
//#endregion
|
|
1732
1745
|
//#region src/client/components/ui-base/navbar.tsx
|
|
1733
|
-
const SearchDialog$1 = lazy(() => import("../search-dialog-
|
|
1746
|
+
const SearchDialog$1 = lazy(() => import("../search-dialog-D3Obh3eA.js").then((m) => ({ default: m.SearchDialog })));
|
|
1734
1747
|
function Navbar({ className }) {
|
|
1735
1748
|
const { links, title, logo, logoProps, github, social, config } = useNavbar();
|
|
1736
1749
|
const { routes, allRoutes, currentRoute, isCollectionPage, currentVersion, currentLocale } = useRoutes();
|
|
@@ -1748,10 +1761,12 @@ function Navbar({ className }) {
|
|
|
1748
1761
|
onPress: toggleSidebar,
|
|
1749
1762
|
className: "mr-2 lg:hidden p-1.5 h-8 w-8 flex items-center justify-center bg-transparent border-none outline-none select-none cursor-pointer rounded-xl hover:bg-primary-50/50 transition-colors",
|
|
1750
1763
|
"aria-label": isSidebarOpen ? "Close sidebar" : "Open sidebar",
|
|
1751
|
-
children: isSidebarOpen ? /* @__PURE__ */ jsx(X, { className: "w-5 h-5 text-body" }) : /* @__PURE__ */ jsx(Menu, { className: "w-5 h-5 text-body" })
|
|
1764
|
+
children: isSidebarOpen ? /* @__PURE__ */ jsx(X, { className: "w-5 h-5 text-body" }) : /* @__PURE__ */ jsx(Menu$1, { className: "w-5 h-5 text-body" })
|
|
1752
1765
|
}),
|
|
1753
1766
|
logo && /* @__PURE__ */ jsx(Navbar$1.Logo, {
|
|
1754
|
-
src: logo,
|
|
1767
|
+
src: logo.light,
|
|
1768
|
+
srcLight: logo.light,
|
|
1769
|
+
srcDark: logo.dark,
|
|
1755
1770
|
alt: logoProps?.alt || title,
|
|
1756
1771
|
width: logoProps?.width ?? 24,
|
|
1757
1772
|
height: logoProps?.height ?? 24,
|
|
@@ -2002,8 +2017,30 @@ const mergeSlots = (defaults, overrides) => {
|
|
|
2002
2017
|
function SidebarMain({ routes, config, className }) {
|
|
2003
2018
|
const { logo, title, logoProps } = useNavbar();
|
|
2004
2019
|
const { closeSidebar } = useUI();
|
|
2005
|
-
|
|
2006
|
-
|
|
2020
|
+
/**
|
|
2021
|
+
* Both logo variants are rendered and CSS selects the visible one.
|
|
2022
|
+
*
|
|
2023
|
+
* Resolving the source from the theme would make the server and the browser
|
|
2024
|
+
* emit different `src` values, which is a hydration mismatch. The `dark`
|
|
2025
|
+
* class on `<html>` is set before first paint, so there is no flash.
|
|
2026
|
+
*/
|
|
2027
|
+
const SidebarLogo = logo ? logo.dark && logo.dark !== logo.light ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("img", {
|
|
2028
|
+
src: resolvePublicAssetUrl(logo.light, config.base),
|
|
2029
|
+
alt: logoProps?.alt || title,
|
|
2030
|
+
width: 24,
|
|
2031
|
+
height: 24,
|
|
2032
|
+
"data-logo-theme": "light",
|
|
2033
|
+
className: "rounded-xl dark:hidden"
|
|
2034
|
+
}), /* @__PURE__ */ jsx("img", {
|
|
2035
|
+
src: resolvePublicAssetUrl(logo.dark, config.base),
|
|
2036
|
+
alt: logoProps?.alt || title,
|
|
2037
|
+
width: 24,
|
|
2038
|
+
height: 24,
|
|
2039
|
+
"data-logo-theme": "dark",
|
|
2040
|
+
"aria-hidden": "true",
|
|
2041
|
+
className: "hidden rounded-xl dark:block"
|
|
2042
|
+
})] }) : /* @__PURE__ */ jsx("img", {
|
|
2043
|
+
src: resolvePublicAssetUrl(logo.light, config.base),
|
|
2007
2044
|
alt: logoProps?.alt || title,
|
|
2008
2045
|
width: 24,
|
|
2009
2046
|
height: 24,
|
|
@@ -2320,7 +2357,9 @@ const EagerMdxElement = ({ moduleLoader, moduleKey, route, components, collectio
|
|
|
2320
2357
|
return /* @__PURE__ */ jsx(MdxPage, {
|
|
2321
2358
|
MDXComponent,
|
|
2322
2359
|
mdxComponents: components ?? {},
|
|
2323
|
-
collectionPostComponent
|
|
2360
|
+
collectionPostComponent,
|
|
2361
|
+
collection: route.collection,
|
|
2362
|
+
route
|
|
2324
2363
|
});
|
|
2325
2364
|
};
|
|
2326
2365
|
const NotFoundWrapper = () => {
|
|
@@ -2367,7 +2406,7 @@ function DocsLayout({ collectionsData }) {
|
|
|
2367
2406
|
|
|
2368
2407
|
//#endregion
|
|
2369
2408
|
//#region src/client/ssg/create-routes.utils.ts
|
|
2370
|
-
function withBase(path, config) {
|
|
2409
|
+
function withBase$1(path, config) {
|
|
2371
2410
|
const base = config.base || "/";
|
|
2372
2411
|
if (path.startsWith(base)) return path;
|
|
2373
2412
|
return `${base === "/" ? "" : base.replace(/\/$/, "")}${path.startsWith("/") ? path : `/${path}`}` || "/";
|
|
@@ -2463,7 +2502,7 @@ function buildDocRoutes(options) {
|
|
|
2463
2502
|
const docRoutes = docMetadata.map((route) => {
|
|
2464
2503
|
const moduleKey = resolveModuleKey(route.filePath, moduleMap);
|
|
2465
2504
|
const moduleLoader = moduleKey ? mdxModules[moduleKey] : null;
|
|
2466
|
-
const fullPath = withBase(route.path === "" ? "/" : route.path, config);
|
|
2505
|
+
const fullPath = withBase$1(route.path === "" ? "/" : route.path, config);
|
|
2467
2506
|
const path = fullPath === baseDocsPath ? "." : fullPath.startsWith(baseDocsPath + "/") ? fullPath.slice(baseDocsPath.length + 1) : fullPath;
|
|
2468
2507
|
const routeRecord = {
|
|
2469
2508
|
path,
|
|
@@ -2590,7 +2629,7 @@ function buildDocRoutes(options) {
|
|
|
2590
2629
|
fallback: true,
|
|
2591
2630
|
seo: {
|
|
2592
2631
|
...matchedMetaObj.seo,
|
|
2593
|
-
canonical: config.siteUrl ? `${config.siteUrl.replace(/\/$/, "")}${withBase(bPath, config)}` : withBase(bPath, config)
|
|
2632
|
+
canonical: config.siteUrl ? `${config.siteUrl.replace(/\/$/, "")}${withBase$1(bPath, config)}` : withBase$1(bPath, config)
|
|
2594
2633
|
}
|
|
2595
2634
|
} : {
|
|
2596
2635
|
path: bPath,
|
|
@@ -2665,16 +2704,33 @@ function ExternalPageWrapper({ children }) {
|
|
|
2665
2704
|
|
|
2666
2705
|
//#endregion
|
|
2667
2706
|
//#region src/client/ssg/create-routes.external.tsx
|
|
2668
|
-
function getLocales(config) {
|
|
2707
|
+
function getLocales$1(config) {
|
|
2669
2708
|
if (!config.i18n) return [];
|
|
2670
2709
|
return Array.isArray(config.i18n.locales) ? config.i18n.locales : Object.keys(config.i18n.locales);
|
|
2671
2710
|
}
|
|
2711
|
+
/**
|
|
2712
|
+
* Lists the locale-prefixed variants of a path.
|
|
2713
|
+
*
|
|
2714
|
+
* The default locale is skipped on purpose. It is already the unprefixed path,
|
|
2715
|
+
* so prefixing it would mint a second URL for the same page: a site with
|
|
2716
|
+
* `defaultLocale: 'en'` would serve both `/about` and `/en/about`. That is not
|
|
2717
|
+
* a harmless duplicate. The docs site is served under a base, and the SSG path
|
|
2718
|
+
* collector prepends the base to the prefixed variant, so it emitted
|
|
2719
|
+
* `/docs/en/about` — a URL the client router never learns about, because the
|
|
2720
|
+
* base is not part of the route. Visitors landing there got a 404 on a page
|
|
2721
|
+
* the build had itself written.
|
|
2722
|
+
*
|
|
2723
|
+
* A developer configuring a second locale should not have to know this, so the
|
|
2724
|
+
* redundant variant is never generated in the first place.
|
|
2725
|
+
*/
|
|
2672
2726
|
function getLocalizedPaths(pathname, config) {
|
|
2673
2727
|
const paths = [{
|
|
2674
2728
|
path: pathname,
|
|
2675
2729
|
locale: config.i18n?.defaultLocale
|
|
2676
2730
|
}];
|
|
2677
|
-
|
|
2731
|
+
const defaultLocale = config.i18n?.defaultLocale;
|
|
2732
|
+
for (const locale of getLocales$1(config)) {
|
|
2733
|
+
if (locale === defaultLocale) continue;
|
|
2678
2734
|
const localizedPath = pathname === "/" ? `/${locale}` : `/${locale}${pathname}`;
|
|
2679
2735
|
if (!paths.some((entry) => entry.path === localizedPath)) paths.push({
|
|
2680
2736
|
path: localizedPath,
|
|
@@ -2798,7 +2854,7 @@ function buildExternalFileRoutes(options) {
|
|
|
2798
2854
|
metadata
|
|
2799
2855
|
};
|
|
2800
2856
|
const EffectiveExternalLayout = externalLayout || (({ children }) => /* @__PURE__ */ jsx(Fragment$1, { children }));
|
|
2801
|
-
const locales = getLocales(config);
|
|
2857
|
+
const locales = getLocales$1(config);
|
|
2802
2858
|
const isLocalizedPath = (pathname) => locales.some((locale) => pathname === `/${locale}` || pathname.startsWith(`/${locale}/`));
|
|
2803
2859
|
const localeOfPath = (pathname) => {
|
|
2804
2860
|
const first = pathname.split("/").filter(Boolean)[0];
|
|
@@ -2993,7 +3049,7 @@ function DefaultCollectionList() {
|
|
|
2993
3049
|
}),
|
|
2994
3050
|
post.date && /* @__PURE__ */ jsx("time", {
|
|
2995
3051
|
className: "text-xs text-muted block mb-2",
|
|
2996
|
-
children:
|
|
3052
|
+
children: formatDeterministicDate(post.date, { month: "short" })
|
|
2997
3053
|
}),
|
|
2998
3054
|
post.excerpt && /* @__PURE__ */ jsx("p", {
|
|
2999
3055
|
className: "text-sm text-body",
|
|
@@ -3235,6 +3291,106 @@ function buildCollectionRoutes(options) {
|
|
|
3235
3291
|
};
|
|
3236
3292
|
}
|
|
3237
3293
|
|
|
3294
|
+
//#endregion
|
|
3295
|
+
//#region src/client/ssg/create-routes.redirect.tsx
|
|
3296
|
+
function normalize(value) {
|
|
3297
|
+
const [withoutHash] = value.split("#");
|
|
3298
|
+
const queryIndex = withoutHash.indexOf("?");
|
|
3299
|
+
const rawPath = queryIndex === -1 ? withoutHash : withoutHash.slice(0, queryIndex);
|
|
3300
|
+
const query = queryIndex === -1 ? "" : withoutHash.slice(queryIndex);
|
|
3301
|
+
const collapsed = `/${rawPath}`.replace(/\/{2,}/g, "/");
|
|
3302
|
+
return `${collapsed === "/" ? "/" : collapsed.replace(/\/+$/, "")}${query}`;
|
|
3303
|
+
}
|
|
3304
|
+
function isExternalTarget(to) {
|
|
3305
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(to) || to.startsWith("//");
|
|
3306
|
+
}
|
|
3307
|
+
function getLocales(config) {
|
|
3308
|
+
const locales = config.i18n?.locales;
|
|
3309
|
+
if (!locales) return [];
|
|
3310
|
+
return Array.isArray(locales) ? locales : Object.keys(locales);
|
|
3311
|
+
}
|
|
3312
|
+
function withBase(pathname, base) {
|
|
3313
|
+
if (base === "/" || !base) return pathname;
|
|
3314
|
+
const normalizedBase = `/${base.replace(/^\/+|\/+$/g, "")}`;
|
|
3315
|
+
if (pathname === "/") return normalizedBase;
|
|
3316
|
+
return `${normalizedBase}${pathname}`;
|
|
3317
|
+
}
|
|
3318
|
+
/**
|
|
3319
|
+
* Collapses redirect chains and rejects cycles in the browser as well, so a
|
|
3320
|
+
* misconfigured site fails visibly instead of trapping the visitor.
|
|
3321
|
+
*/
|
|
3322
|
+
function buildRedirectMap(config) {
|
|
3323
|
+
const map = /* @__PURE__ */ new Map();
|
|
3324
|
+
const entries = config.redirects ?? [];
|
|
3325
|
+
for (const entry of entries) {
|
|
3326
|
+
const from = normalize(entry.from);
|
|
3327
|
+
const sources = entry.locale ? getLocales(config).map((locale) => from === `/${locale}` || from.startsWith(`/${locale}/`) ? from : from === "/" ? `/${locale}` : `/${locale}${from}`) : [from];
|
|
3328
|
+
for (const source of sources) {
|
|
3329
|
+
const to = isExternalTarget(entry.to) ? entry.to : withBase(normalize(entry.to), config.base ?? "/");
|
|
3330
|
+
map.set(source, to);
|
|
3331
|
+
}
|
|
3332
|
+
}
|
|
3333
|
+
for (const [source, direct] of map) {
|
|
3334
|
+
let current = direct;
|
|
3335
|
+
const seen = new Set([source]);
|
|
3336
|
+
for (let depth = 0; depth < 10; depth++) {
|
|
3337
|
+
const nextPath = current.split("?")[0];
|
|
3338
|
+
const next = map.get(nextPath);
|
|
3339
|
+
if (!next || seen.has(nextPath)) break;
|
|
3340
|
+
seen.add(nextPath);
|
|
3341
|
+
current = next;
|
|
3342
|
+
}
|
|
3343
|
+
map.set(source, current);
|
|
3344
|
+
}
|
|
3345
|
+
return map;
|
|
3346
|
+
}
|
|
3347
|
+
/**
|
|
3348
|
+
* Performs the redirect during render effects. A short delay lets the static
|
|
3349
|
+
* host serve the prerendered redirect document first on a cold load, while a
|
|
3350
|
+
* client-side navigation never flashes the destination page.
|
|
3351
|
+
*/
|
|
3352
|
+
function RedirectBoundary({ to }) {
|
|
3353
|
+
const navigate = useNavigate();
|
|
3354
|
+
useEffect(() => {
|
|
3355
|
+
if (isExternalTarget(to)) {
|
|
3356
|
+
window.location.replace(to);
|
|
3357
|
+
return;
|
|
3358
|
+
}
|
|
3359
|
+
navigate(to, { replace: true });
|
|
3360
|
+
}, [navigate, to]);
|
|
3361
|
+
return /* @__PURE__ */ jsx("main", {
|
|
3362
|
+
className: "boltdocs-page w-full pt-4 pb-20 px-4 sm:px-8",
|
|
3363
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
3364
|
+
className: "mx-auto w-full max-w-3xl sm:max-w-4xl",
|
|
3365
|
+
children: /* @__PURE__ */ jsxs("p", {
|
|
3366
|
+
className: "text-paragraph",
|
|
3367
|
+
children: [
|
|
3368
|
+
"Redirecting to ",
|
|
3369
|
+
/* @__PURE__ */ jsx("a", {
|
|
3370
|
+
href: to,
|
|
3371
|
+
children: to
|
|
3372
|
+
}),
|
|
3373
|
+
"…"
|
|
3374
|
+
]
|
|
3375
|
+
})
|
|
3376
|
+
})
|
|
3377
|
+
});
|
|
3378
|
+
}
|
|
3379
|
+
/**
|
|
3380
|
+
* Builds client-side redirect routes from `config.redirects`.
|
|
3381
|
+
*
|
|
3382
|
+
* Redirect sources are appended after the real routes so an existing page always
|
|
3383
|
+
* wins, and before the catch-all so a redirect is never shadowed by the 404.
|
|
3384
|
+
*/
|
|
3385
|
+
function buildRedirectRoutes({ config }) {
|
|
3386
|
+
const map = buildRedirectMap(config);
|
|
3387
|
+
if (map.size === 0) return [];
|
|
3388
|
+
return [...map.entries()].sort(([a], [b]) => a.localeCompare(b)).map(([from, to]) => ({
|
|
3389
|
+
path: from,
|
|
3390
|
+
element: /* @__PURE__ */ jsx(RedirectBoundary, { to })
|
|
3391
|
+
}));
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3238
3394
|
//#endregion
|
|
3239
3395
|
//#region src/client/ssg/create-routes.tsx
|
|
3240
3396
|
function createRoutes(options) {
|
|
@@ -3260,6 +3416,7 @@ function createRoutes(options) {
|
|
|
3260
3416
|
};
|
|
3261
3417
|
filteredExternalFileRoutes.children = externalFileRoutes.children.filter((route) => !route.path || acceptedExternalFilePaths.has(route.path));
|
|
3262
3418
|
const collectionRoutes = buildCollectionRoutes(options);
|
|
3419
|
+
const redirectRoutes = buildRedirectRoutes({ config });
|
|
3263
3420
|
const children = [
|
|
3264
3421
|
{
|
|
3265
3422
|
path: baseDocsPath,
|
|
@@ -3269,6 +3426,7 @@ function createRoutes(options) {
|
|
|
3269
3426
|
...externalRoutes.children,
|
|
3270
3427
|
...filteredExternalFileRoutes.children,
|
|
3271
3428
|
...collectionRoutes.children,
|
|
3429
|
+
...redirectRoutes,
|
|
3272
3430
|
{
|
|
3273
3431
|
path: "*",
|
|
3274
3432
|
element: /* @__PURE__ */ jsx(ExternalPageWrapper, { children: /* @__PURE__ */ jsx(EffectiveExternalLayout, { children: /* @__PURE__ */ jsx(NotFoundWrapper, {}) }) })
|
|
@@ -3303,6 +3461,18 @@ function createRoutes(options) {
|
|
|
3303
3461
|
};
|
|
3304
3462
|
}
|
|
3305
3463
|
|
|
3464
|
+
//#endregion
|
|
3465
|
+
//#region src/client/collections/utils.ts
|
|
3466
|
+
/**
|
|
3467
|
+
* Formats a date to a human-readable string.
|
|
3468
|
+
*
|
|
3469
|
+
* Locale and time zone are pinned so the server and the browser produce
|
|
3470
|
+
* identical text during hydration. See `formatDeterministicDate`.
|
|
3471
|
+
*/
|
|
3472
|
+
function formatDate(date, options = {}) {
|
|
3473
|
+
return formatDeterministicDate(date, options);
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3306
3476
|
//#endregion
|
|
3307
3477
|
//#region src/client/components/docs-layout-default.tsx
|
|
3308
3478
|
/**
|
|
@@ -3428,4 +3598,4 @@ function useCodeBlock(props) {
|
|
|
3428
3598
|
}
|
|
3429
3599
|
|
|
3430
3600
|
//#endregion
|
|
3431
|
-
export { Banner, BoltdocsShell, Breadcrumbs, CollectionsContext, CopyMarkdown, CurrentPostProvider, DocsLayoutComponent as DocsLayout, ErrorBoundary, LocationContext, LocationProvider, MatchesContext, MdxPage, Navbar, NavigateContext, NotFound, OnThisPage, Outlet, OutletContext, PageNav, PrefetchContext, RouteDataContext, RouteRenderer, SearchDialog, Sidebar, StructuredData, Timeline, ViteReactSSG, addBasename, addUrlBase, buildUrl, classifyUrlPath, cn, copyToClipboard, createArticleStructuredData, createBreadcrumbStructuredData, createRoutes, createStructuredData, createWebSiteStructuredData, defaultNavigate, defineStructuredData, getConfiguredLocales, getConfiguredVersions, getStarsRepo, getTranslated, getVersionPrefixSegments, getVersionSegments, hasBasename, hasUriScheme, hasUrlBase, isConfiguredLocale, isConfiguredVersion, matchRouteBranch, matchRouteBranchWithParams, normalizeBasename, normalizeUrlBase, normalizeUrlPath, parseUrlReference, reactToText, resolvePublicAssetUrl, resolveRouteBranch, resolveUrlReference, splitUrlReference, startViewTransition, stripBasename, stripSiteProtocol, stripUrlBase, useAnalytics, useBreadcrumbs, useCodeBlock, useCodeBlockFeedback, useConfig, useCopyButton, useExpandable, useFeedback, useHeadings, useI18n, useLoaderData, useLocalizedTo, useLocation, useMatches, useMdxComponents, useMergedComponents, useNavbar, useNavigate, usePageNav, usePost, usePosts, usePrefetch, useRecentPosts, useRouteData, useRoutes, useSearch, useSearchHighlight, useSidebar, useTabs, useTheme, useTrackEvent, useTrackPageView, useUI, useVersion, useViewTransition };
|
|
3601
|
+
export { Banner, BoltdocsShell, Breadcrumbs, CollectionsContext, CopyMarkdown, CurrentPostProvider, DocsLayoutComponent as DocsLayout, ErrorBoundary, LocationContext, LocationProvider, MatchesContext, MdxPage, Navbar, NavigateContext, NotFound, OnThisPage, Outlet, OutletContext, PageNav, PrefetchContext, RouteDataContext, RouteRenderer, SearchDialog, Sidebar, StructuredData, Timeline, ViteReactSSG, addBasename, addUrlBase, buildUrl, classifyUrlPath, cn, copyToClipboard, createArticleStructuredData, createBreadcrumbStructuredData, createRoutes, createStructuredData, createWebSiteStructuredData, defaultNavigate, defineStructuredData, formatDate, formatDeterministicDate, getConfiguredLocales, getConfiguredVersions, getStarsRepo, getTranslated, getVersionPrefixSegments, getVersionSegments, hasBasename, hasUriScheme, hasUrlBase, isConfiguredLocale, isConfiguredVersion, matchRouteBranch, matchRouteBranchWithParams, normalizeBasename, normalizeUrlBase, normalizeUrlPath, parseUrlReference, reactToText, resolvePublicAssetUrl, resolveRouteBranch, resolveUrlReference, splitUrlReference, startViewTransition, stripBasename, stripSiteProtocol, stripUrlBase, useAnalytics, useBreadcrumbs, useCodeBlock, useCodeBlockFeedback, useConfig, useCopyButton, useExpandable, useFeedback, useHeadings, useI18n, useLoaderData, useLocalizedTo, useLocation, useMatches, useMdxComponents, useMergedComponents, useNavbar, useNavigate, usePageNav, usePost, usePosts, usePrefetch, useRecentPosts, useRouteData, useRoutes, useSearch, useSearchHighlight, useSidebar, useTabs, useTheme, useTrackEvent, useTrackPageView, useUI, useVersion, useViewTransition };
|
package/dist/client/mdx.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
7
|
-
const require_mdx = require('../mdx-
|
|
7
|
+
const require_mdx = require('../mdx-BCOrMd-P.cjs');
|
|
8
8
|
|
|
9
9
|
//#region src/client/mdx.ts
|
|
10
10
|
const { Card, Cards, Callout, Field, Image } = require_mdx.mdx_components_default;
|
package/dist/client/mdx.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2026 Jesus Alcala
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
import { t as mdx_components_default } from "../mdx-
|
|
6
|
+
import { t as mdx_components_default } from "../mdx-BijiEbkp.js";
|
|
7
7
|
|
|
8
8
|
//#region src/client/mdx.ts
|
|
9
9
|
const { Card, Cards, Callout, Field, Image } = mdx_components_default;
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
7
|
-
const require_router = require('../router-
|
|
8
|
-
const require_link = require('../link-
|
|
9
|
-
const require_image = require('../image-
|
|
10
|
-
const require_docs_layout = require('../docs-layout-
|
|
11
|
-
const require_search_dialog = require('../search-dialog-
|
|
7
|
+
const require_router = require('../router-DKC0Lu0n.cjs');
|
|
8
|
+
const require_link = require('../link-Xb69Oy2F.cjs');
|
|
9
|
+
const require_image = require('../image-Bke2ojW1.cjs');
|
|
10
|
+
const require_docs_layout = require('../docs-layout-DIgxJ5c7.cjs');
|
|
11
|
+
const require_search_dialog = require('../search-dialog-BOQRHKTb.cjs');
|
|
12
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
13
13
|
|
|
14
14
|
//#region src/client/components/primitives/skeleton.tsx
|