zudoku 0.3.0-dev.41 → 0.3.0-dev.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/config/config.d.ts +2 -35
  2. package/dist/config/validators/validate.d.ts +1011 -2
  3. package/dist/config/validators/validate.js +181 -1
  4. package/dist/config/validators/validate.js.map +1 -1
  5. package/dist/lib/core/DevPortalContext.d.ts +7 -7
  6. package/dist/lib/core/DevPortalContext.js +1 -1
  7. package/dist/lib/core/DevPortalContext.js.map +1 -1
  8. package/dist/lib/plugins/api-keys/index.d.ts +2 -3
  9. package/dist/lib/plugins/api-keys/index.js.map +1 -1
  10. package/dist/lib/plugins/openapi/client/createWorkerClient.js.map +1 -1
  11. package/dist/lib/plugins/openapi/index.js +1 -1
  12. package/dist/lib/plugins/openapi/index.js.map +1 -1
  13. package/dist/lib/plugins/redirect/index.d.ts +0 -1
  14. package/dist/lib/plugins/redirect/index.js +1 -1
  15. package/dist/lib/plugins/redirect/index.js.map +1 -1
  16. package/dist/lib/ui/button-variants.d.ts +2 -2
  17. package/dist/lib/util/MdxComponents.d.ts +2 -2
  18. package/dist/lib/util/MdxComponents.js +4 -2
  19. package/dist/lib/util/MdxComponents.js.map +1 -1
  20. package/dist/vite/build.js +3 -2
  21. package/dist/vite/build.js.map +1 -1
  22. package/dist/vite/config.js +5 -5
  23. package/dist/vite/config.js.map +1 -1
  24. package/dist/vite/plugin-component.js +1 -0
  25. package/dist/vite/plugin-component.js.map +1 -1
  26. package/dist/vite/plugin-html.js +1 -1
  27. package/dist/vite/plugin-html.js.map +1 -1
  28. package/lib/{AnchorLink-DCdBbdqo.js → AnchorLink-CZUp-F0P.js} +6 -6
  29. package/lib/{AnchorLink-DCdBbdqo.js.map → AnchorLink-CZUp-F0P.js.map} +1 -1
  30. package/lib/{DevPortalProvider-C-O1s7mm.js → DevPortalProvider-Do9oJqme.js} +20 -20
  31. package/lib/{DevPortalProvider-C-O1s7mm.js.map → DevPortalProvider-Do9oJqme.js.map} +1 -1
  32. package/lib/{Markdown-CGZJUYcj.js → Markdown-Dbzrtopg.js} +18 -16
  33. package/lib/{Markdown-CGZJUYcj.js.map → Markdown-Dbzrtopg.js.map} +1 -1
  34. package/lib/{MdxPage-BZLuBOqR.js → MdxPage-JvboTsbK.js} +23 -23
  35. package/lib/{MdxPage-BZLuBOqR.js.map → MdxPage-JvboTsbK.js.map} +1 -1
  36. package/lib/{OperationList-BEpN70_E.js → OperationList-C22hqFQA.js} +192 -192
  37. package/lib/{OperationList-BEpN70_E.js.map → OperationList-C22hqFQA.js.map} +1 -1
  38. package/lib/{Route-WiMUalLG.js → Route-C1LyvITr.js} +3 -3
  39. package/lib/{Route-WiMUalLG.js.map → Route-C1LyvITr.js.map} +1 -1
  40. package/lib/{Select-BQ9-3iTJ.js → Select-DHm1jDdS.js} +5 -5
  41. package/lib/{Select-BQ9-3iTJ.js.map → Select-DHm1jDdS.js.map} +1 -1
  42. package/lib/{Spinner-C1L_TK5f.js → Spinner-BSk0ImmP.js} +10 -10
  43. package/lib/{Spinner-C1L_TK5f.js.map → Spinner-BSk0ImmP.js.map} +1 -1
  44. package/lib/{_commonjsHelpers-BkfeUUK-.js → _commonjsHelpers-BVfed4GL.js} +3 -3
  45. package/lib/_commonjsHelpers-BVfed4GL.js.map +1 -0
  46. package/lib/{hook-SM2dMVmI.js → hook-DCYGmylw.js} +12 -12
  47. package/lib/{hook-SM2dMVmI.js.map → hook-DCYGmylw.js.map} +1 -1
  48. package/lib/{index-CtLNbq0d.js → index-CXXn0D4E.js} +15 -15
  49. package/lib/{index-CtLNbq0d.js.map → index-CXXn0D4E.js.map} +1 -1
  50. package/lib/{index-PvQa9XLl.js → index-PzuYthhc.js} +16 -15
  51. package/lib/{index-PvQa9XLl.js.map → index-PzuYthhc.js.map} +1 -1
  52. package/lib/{jsx-runtime-DLtUZ5Ve.js → jsx-runtime-CJZJivg2.js} +5 -5
  53. package/lib/{jsx-runtime-DLtUZ5Ve.js.map → jsx-runtime-CJZJivg2.js.map} +1 -1
  54. package/lib/{router-BkOLuJlq.js → router-CBw2vqJE.js} +5 -5
  55. package/lib/{router-BkOLuJlq.js.map → router-CBw2vqJE.js.map} +1 -1
  56. package/lib/{slugify-DbLhpSPt.js → slugify-CiPVjteN.js} +2 -2
  57. package/lib/{slugify-DbLhpSPt.js.map → slugify-CiPVjteN.js.map} +1 -1
  58. package/lib/{state-Ds_OxRHP.js → state-D36MLDHk.js} +15 -15
  59. package/lib/{state-Ds_OxRHP.js.map → state-D36MLDHk.js.map} +1 -1
  60. package/lib/urql-DMlBWUKL.js +1592 -0
  61. package/lib/urql-DMlBWUKL.js.map +1 -0
  62. package/lib/{util-Cgie7wjb.js → util-_jwUlTBU.js} +2 -2
  63. package/lib/{util-Cgie7wjb.js.map → util-_jwUlTBU.js.map} +1 -1
  64. package/lib/zudoku.auth-auth0.js +1 -1
  65. package/lib/zudoku.auth-clerk.js +1 -1
  66. package/lib/zudoku.auth-openid.js +3 -3
  67. package/lib/zudoku.components.js +12 -12
  68. package/lib/zudoku.components.js.map +1 -1
  69. package/lib/zudoku.openapi-worker.js +15108 -2
  70. package/lib/zudoku.openapi-worker.js.map +1 -1
  71. package/lib/zudoku.plugin-api-keys.js +5 -5
  72. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  73. package/lib/zudoku.plugin-markdown.js +4 -4
  74. package/lib/zudoku.plugin-openapi.js +7 -6
  75. package/lib/zudoku.plugin-openapi.js.map +1 -1
  76. package/lib/zudoku.plugin-redirect.js +4 -4
  77. package/lib/zudoku.plugin-redirect.js.map +1 -1
  78. package/package.json +5 -1
  79. package/src/lib/core/DevPortalContext.ts +9 -9
  80. package/src/lib/plugins/api-keys/index.tsx +2 -3
  81. package/src/lib/plugins/openapi/client/createWorkerClient.ts +0 -1
  82. package/src/lib/plugins/openapi/index.tsx +1 -1
  83. package/src/lib/plugins/redirect/index.tsx +1 -2
  84. package/src/lib/util/MdxComponents.tsx +4 -2
  85. package/lib/_commonjsHelpers-BkfeUUK-.js.map +0 -1
  86. package/lib/createWorkerClient-TWecYOlx.js +0 -16698
  87. package/lib/createWorkerClient-TWecYOlx.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { j as e, u as I } from "./jsx-runtime-DLtUZ5Ve.js";
2
- import { A as _, H as E, u as $ } from "./AnchorLink-DCdBbdqo.js";
1
+ import { j as e, u as _ } from "./jsx-runtime-CJZJivg2.js";
2
+ import { A as C, a as E, u as $ } from "./AnchorLink-CZUp-F0P.js";
3
3
  import { useRef as q, useState as B, useEffect as D, useMemo as z } from "react";
4
- import { c as F, u as V, a as u, P as W, C as X, H as g, L as T } from "./Markdown-CGZJUYcj.js";
5
- import { u as G } from "./DevPortalProvider-C-O1s7mm.js";
6
- import { t as A, i as M } from "./util-Cgie7wjb.js";
7
- import { s as J } from "./slugify-DbLhpSPt.js";
4
+ import { c as F, b as V, e as g, P as W, g as X, H as u, L as T } from "./Markdown-Dbzrtopg.js";
5
+ import { k as G } from "./DevPortalProvider-Do9oJqme.js";
6
+ import { t as A, i as M } from "./util-_jwUlTBU.js";
7
+ import { s as J } from "./slugify-CiPVjteN.js";
8
8
  /**
9
9
  * @license lucide-react v0.378.0 - ISC
10
10
  *
@@ -17,7 +17,7 @@ const K = F("ListTree", [
17
17
  ["path", { d: "M21 18h-8", key: "1tm79t" }],
18
18
  ["path", { d: "M3 6v4c0 1.1.9 2 2 2h3", key: "1ywdgy" }],
19
19
  ["path", { d: "M3 10v6c0 1.1.9 2 2 2h3", key: "2wc746" }]
20
- ]), P = "data-active", H = ({
20
+ ]), H = "data-active", P = ({
21
21
  item: s,
22
22
  children: t,
23
23
  className: r,
@@ -25,7 +25,7 @@ const K = F("ListTree", [
25
25
  }) => /* @__PURE__ */ e.jsxs(
26
26
  "li",
27
27
  {
28
- className: u(
28
+ className: g(
29
29
  "truncate",
30
30
  o ? "text-primary" : "text-foreground/65 dark:text-foreground/75",
31
31
  r
@@ -33,11 +33,11 @@ const K = F("ListTree", [
33
33
  title: s.value,
34
34
  children: [
35
35
  /* @__PURE__ */ e.jsx(
36
- _,
36
+ C,
37
37
  {
38
38
  to: `#${s.id}`,
39
- [P]: s.id,
40
- className: u(
39
+ [H]: s.id,
40
+ className: g(
41
41
  o ? "text-primary" : "text-foreground/65 dark:text-foreground/75 hover:text-foreground"
42
42
  ),
43
43
  children: s.value
@@ -51,7 +51,7 @@ const K = F("ListTree", [
51
51
  return D(() => {
52
52
  if (!r.current) return;
53
53
  const a = r.current.querySelector(
54
- `[${P}='${t}']`
54
+ `[${H}='${t}']`
55
55
  );
56
56
  if (!a) {
57
57
  n({
@@ -75,19 +75,19 @@ const K = F("ListTree", [
75
75
  {
76
76
  ref: r,
77
77
  style: o,
78
- className: u(
78
+ className: g(
79
79
  "relative ms-2 ps-4 font-medium list-none mt-0 space-y-2",
80
80
  "before:absolute before:inset-0 before:right-auto before:bg-border before:w-[2px]",
81
81
  "after:absolute after:-left-px after:-translate-y-1 after:top-[--indicator-top] after:opacity-[--indicator-opacity] after:h-6 after:bg-primary after:w-[4px] after:rounded after:ease-out after:[transition:top__150ms,opacity_325ms]"
82
82
  ),
83
83
  children: s.map((a) => /* @__PURE__ */ e.jsx(
84
- H,
84
+ P,
85
85
  {
86
86
  isActive: a.id === t,
87
87
  item: a,
88
88
  className: "pl-0",
89
89
  children: a.children && /* @__PURE__ */ e.jsx("ul", { className: "list-none pl-4 pt-2 space-y-2", children: a.children.map((l) => /* @__PURE__ */ e.jsx(
90
- H,
90
+ P,
91
91
  {
92
92
  item: l,
93
93
  isActive: l.id === t
@@ -101,8 +101,8 @@ const K = F("ListTree", [
101
101
  )
102
102
  ] });
103
103
  }, U = {
104
- h2: ({ children: s, id: t }) => /* @__PURE__ */ e.jsx(g, { level: 2, id: t, registerSidebarAnchor: !0, children: s }),
105
- h3: ({ children: s, id: t }) => /* @__PURE__ */ e.jsxs(g, { level: 3, id: t, registerSidebarAnchor: !0, children: [
104
+ h2: ({ children: s, id: t }) => /* @__PURE__ */ e.jsx(u, { level: 2, id: t, registerSidebarAnchor: !0, children: s }),
105
+ h3: ({ children: s, id: t }) => /* @__PURE__ */ e.jsxs(u, { level: 3, id: t, registerSidebarAnchor: !0, children: [
106
106
  " ",
107
107
  s
108
108
  ] })
@@ -113,12 +113,12 @@ const K = F("ListTree", [
113
113
  tableOfContents: o
114
114
  }) => {
115
115
  var b, y;
116
- const n = G(), a = I(), l = n ? A(n, (i, x, m) => {
116
+ const n = G(), a = _(), l = n ? A(n, (i, x, m) => {
117
117
  var c;
118
118
  if (x === a.pathname)
119
119
  return (c = m.at(0)) == null ? void 0 : c.label;
120
120
  }) : void 0, d = t.title, f = t.category ?? l, L = t.toc === !1 || (r == null ? void 0 : r.toc) === !1, R = ((b = o.find((i) => i.depth === 1)) == null ? void 0 : b.value) ?? d, S = t.disablePager ?? (r == null ? void 0 : r.disablePager) ?? !1, v = ((y = o.find((i) => i.depth === 1)) == null ? void 0 : y.children) ?? // if `title` is provided by frontmatter it does not appear in the table of contents
121
- o.filter((i) => i.depth === 2), C = !L && v.length > 0, { prev: p, next: h } = z(() => {
121
+ o.filter((i) => i.depth === 2), I = !L && v.length > 0, { prev: p, next: h } = z(() => {
122
122
  let i = { path: "", label: "" }, x = { path: "", label: "" }, m = !1;
123
123
  return n ? (A(n, (c, j) => {
124
124
  var w, k;
@@ -133,14 +133,14 @@ const K = F("ListTree", [
133
133
  /* @__PURE__ */ e.jsxs(
134
134
  "div",
135
135
  {
136
- className: u(
136
+ className: g(
137
137
  W,
138
138
  "max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]"
139
139
  ),
140
140
  children: [
141
141
  /* @__PURE__ */ e.jsxs("header", { children: [
142
142
  f && /* @__PURE__ */ e.jsx(X, { children: f }),
143
- d && /* @__PURE__ */ e.jsx(g, { level: 1, id: J(d, { lower: !0 }), children: d }),
143
+ d && /* @__PURE__ */ e.jsx(u, { level: 1, id: J(d, { lower: !0 }), children: d }),
144
144
  t.description && /* @__PURE__ */ e.jsx("p", { className: "prose-lg", children: t.description })
145
145
  ] }),
146
146
  /* @__PURE__ */ e.jsx(
@@ -181,10 +181,10 @@ const K = F("ListTree", [
181
181
  ]
182
182
  }
183
183
  ),
184
- /* @__PURE__ */ e.jsx("div", { className: "hidden xl:block", children: C && /* @__PURE__ */ e.jsx(Q, { entries: v }) })
184
+ /* @__PURE__ */ e.jsx("div", { className: "hidden xl:block", children: I && /* @__PURE__ */ e.jsx(Q, { entries: v }) })
185
185
  ] });
186
186
  };
187
187
  export {
188
188
  ae as MdxPage
189
189
  };
190
- //# sourceMappingURL=MdxPage-BZLuBOqR.js.map
190
+ //# sourceMappingURL=MdxPage-JvboTsbK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MdxPage-BZLuBOqR.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/list-tree.js","../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ListTree = createLucideIcon(\"ListTree\", [\n [\"path\", { d: \"M21 12h-8\", key: \"1bmf0i\" }],\n [\"path\", { d: \"M21 6H8\", key: \"1pqkrb\" }],\n [\"path\", { d: \"M21 18h-8\", key: \"1tm79t\" }],\n [\"path\", { d: \"M3 6v4c0 1.1.9 2 2 2h3\", key: \"1ywdgy\" }],\n [\"path\", { d: \"M3 10v6c0 1.1.9 2 2 2h3\", key: \"2wc746\" }]\n]);\n\nexport { ListTree as default };\n//# sourceMappingURL=list-tree.js.map\n","import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({});\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({\n \"--indicator-top\": \"0\",\n \"--indicator-opacity\": 0,\n } as CSSProperties);\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n \"--indicator-top\": `${topElement - topParent}px`,\n \"--indicator-opacity\": 1,\n } as CSSProperties);\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n\n <ul\n ref={listWrapperRef}\n style={indicatorStyle}\n className={cn(\n \"relative ms-2 ps-4 font-medium list-none mt-0 space-y-2\",\n \"before:absolute before:inset-0 before:right-auto before:bg-border before:w-[2px]\",\n \"after:absolute after:-left-px after:-translate-y-1 after:top-[--indicator-top] after:opacity-[--indicator-opacity] after:h-6 after:bg-primary after:w-[4px] after:rounded after:ease-out after:[transition:top__150ms,opacity_325ms]\",\n )}\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMemo, type PropsWithChildren, type ReactNode } from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport { useTopNavigationItem } from \"../../components/context/DevPortalProvider.js\";\nimport { isPathItem } from \"../../components/navigation/util.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport slugify from \"../../util/slugify.js\";\nimport { traverseNavigation } from \"../../util/traverseNavigation.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {\" \"}\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const navItem = useTopNavigationItem();\n const location = useLocation();\n\n const categoryTitle = navItem\n ? traverseNavigation(navItem, (_node, fullPath, parentNodes) => {\n if (fullPath === location.pathname) {\n return parentNodes.at(0)?.label;\n }\n })\n : undefined;\n\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = useMemo(() => {\n let prev = { path: \"\", label: \"\" as ReactNode };\n let next = { path: \"\", label: \"\" as ReactNode };\n let shouldStop = false;\n\n if (!navItem) return { prev, next };\n\n traverseNavigation(navItem, (node, fullPath) => {\n const item = { path: fullPath, label: node.label };\n\n if (shouldStop && isPathItem(node) && !node.children?.length) {\n next = item;\n return true;\n }\n if (fullPath === location.pathname) {\n shouldStop = true;\n }\n if (!shouldStop && isPathItem(node) && !node.children?.length) {\n prev = item;\n }\n });\n\n return { prev, next } as const;\n }, [navItem, location.pathname]);\n\n return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title, { lower: true })}>\n {title}\n </Heading>\n )}\n {frontmatter.description && (\n <p className=\"prose-lg\">{frontmatter.description}</p>\n )}\n </header>\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex items-center justify-between gap-8\">\n {prev.path ? (\n <Link\n to={prev.path}\n className=\"flex flex-col items-stretch gap-2 flex-1 truncate border border-border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={\n typeof prev.label === \"string\" ? prev.label : undefined\n }\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next.path ? (\n <Link\n to={next.path}\n className=\"flex flex-col items-stretch gap-2 flex-1 truncate border border-border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={\n typeof next.label === \"string\" ? next.label : undefined\n }\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["ListTree","createLucideIcon","DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","tableOfContents","navItem","useTopNavigationItem","location","useLocation","categoryTitle","traverseNavigation","_node","fullPath","parentNodes","_a","title","category","hideToc","pageTitle","hidePager","tocEntries","_b","showToc","prev","next","useMemo","shouldStop","node","isPathItem","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"MdxPage-JvboTsbK.js","sources":["../../../node_modules/.pnpm/lucide-react@0.378.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/list-tree.js","../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.378.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ListTree = createLucideIcon(\"ListTree\", [\n [\"path\", { d: \"M21 12h-8\", key: \"1bmf0i\" }],\n [\"path\", { d: \"M21 6H8\", key: \"1pqkrb\" }],\n [\"path\", { d: \"M21 18h-8\", key: \"1tm79t\" }],\n [\"path\", { d: \"M3 6v4c0 1.1.9 2 2 2h3\", key: \"1ywdgy\" }],\n [\"path\", { d: \"M3 10v6c0 1.1.9 2 2 2h3\", key: \"2wc746\" }]\n]);\n\nexport { ListTree as default };\n//# sourceMappingURL=list-tree.js.map\n","import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({});\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({\n \"--indicator-top\": \"0\",\n \"--indicator-opacity\": 0,\n } as CSSProperties);\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n \"--indicator-top\": `${topElement - topParent}px`,\n \"--indicator-opacity\": 1,\n } as CSSProperties);\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n\n <ul\n ref={listWrapperRef}\n style={indicatorStyle}\n className={cn(\n \"relative ms-2 ps-4 font-medium list-none mt-0 space-y-2\",\n \"before:absolute before:inset-0 before:right-auto before:bg-border before:w-[2px]\",\n \"after:absolute after:-left-px after:-translate-y-1 after:top-[--indicator-top] after:opacity-[--indicator-opacity] after:h-6 after:bg-primary after:w-[4px] after:rounded after:ease-out after:[transition:top__150ms,opacity_325ms]\",\n )}\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { useMemo, type PropsWithChildren, type ReactNode } from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport { useTopNavigationItem } from \"../../components/context/DevPortalProvider.js\";\nimport { isPathItem } from \"../../components/navigation/util.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport slugify from \"../../util/slugify.js\";\nimport { traverseNavigation } from \"../../util/traverseNavigation.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {\" \"}\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const navItem = useTopNavigationItem();\n const location = useLocation();\n\n const categoryTitle = navItem\n ? traverseNavigation(navItem, (_node, fullPath, parentNodes) => {\n if (fullPath === location.pathname) {\n return parentNodes.at(0)?.label;\n }\n })\n : undefined;\n\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = useMemo(() => {\n let prev = { path: \"\", label: \"\" as ReactNode };\n let next = { path: \"\", label: \"\" as ReactNode };\n let shouldStop = false;\n\n if (!navItem) return { prev, next };\n\n traverseNavigation(navItem, (node, fullPath) => {\n const item = { path: fullPath, label: node.label };\n\n if (shouldStop && isPathItem(node) && !node.children?.length) {\n next = item;\n return true;\n }\n if (fullPath === location.pathname) {\n shouldStop = true;\n }\n if (!shouldStop && isPathItem(node) && !node.children?.length) {\n prev = item;\n }\n });\n\n return { prev, next } as const;\n }, [navItem, location.pathname]);\n\n return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title, { lower: true })}>\n {title}\n </Heading>\n )}\n {frontmatter.description && (\n <p className=\"prose-lg\">{frontmatter.description}</p>\n )}\n </header>\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex items-center justify-between gap-8\">\n {prev.path ? (\n <Link\n to={prev.path}\n className=\"flex flex-col items-stretch gap-2 flex-1 truncate border border-border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={\n typeof prev.label === \"string\" ? prev.label : undefined\n }\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next.path ? (\n <Link\n to={next.path}\n className=\"flex flex-col items-stretch gap-2 flex-1 truncate border border-border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={\n typeof next.label === \"string\" ? next.label : undefined\n }\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["ListTree","createLucideIcon","DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","frontmatter","defaultOptions","tableOfContents","navItem","useTopNavigationItem","location","useLocation","categoryTitle","traverseNavigation","_node","fullPath","parentNodes","_a","title","category","hideToc","pageTitle","hidePager","tocEntries","_b","showToc","prev","next","useMemo","shouldStop","node","isPathItem","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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","x_google_ignoreList":[0]}