@sleetch/react 1.0.7 → 1.0.9

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 (155) hide show
  1. package/dist/assets/button.css +1 -1
  2. package/dist/assets/content.css +1 -1
  3. package/dist/assets/content2.css +1 -1
  4. package/dist/assets/content3.css +1 -1
  5. package/dist/assets/content4.css +1 -0
  6. package/dist/assets/file-system.css +1 -1
  7. package/dist/assets/header.css +1 -1
  8. package/dist/assets/layout.css +1 -1
  9. package/dist/assets/navigation.css +1 -1
  10. package/dist/assets/sidebar.css +1 -1
  11. package/dist/assets/spinner.css +1 -0
  12. package/dist/assets/story.css +1 -0
  13. package/dist/assets/toc.css +1 -1
  14. package/dist/assets/toggle.css +1 -0
  15. package/dist/{button-BVRKTAnQ.js → button-BYPozliY.js} +7 -7
  16. package/dist/button-BYPozliY.js.map +1 -0
  17. package/dist/{button-rojnIyoM.cjs → button-CdMMW1Ny.cjs} +2 -2
  18. package/dist/button-CdMMW1Ny.cjs.map +1 -0
  19. package/dist/components/button.cjs.js +1 -1
  20. package/dist/components/button.es.js +1 -1
  21. package/dist/components/documentation/content.cjs.js +1 -1
  22. package/dist/components/documentation/content.es.js +1 -1
  23. package/dist/components/documentation/header.cjs.js +1 -1
  24. package/dist/components/documentation/header.es.js +1 -2
  25. package/dist/components/documentation/layout.cjs.js +1 -1
  26. package/dist/components/documentation/layout.es.js +1 -1
  27. package/dist/components/documentation/page/content.cjs.js +1 -1
  28. package/dist/components/documentation/page/content.d.ts +4 -3
  29. package/dist/components/documentation/page/content.es.js +1 -1
  30. package/dist/components/documentation/page/header.cjs.js +1 -1
  31. package/dist/components/documentation/page/header.cjs.js.map +1 -1
  32. package/dist/components/documentation/page/header.d.ts +2 -2
  33. package/dist/components/documentation/page/header.es.js +14 -16
  34. package/dist/components/documentation/page/header.es.js.map +1 -1
  35. package/dist/components/documentation/page/loader.cjs.js +2 -0
  36. package/dist/components/documentation/page/loader.cjs.js.map +1 -0
  37. package/dist/components/documentation/page/loader.d.ts +6 -0
  38. package/dist/components/documentation/page/loader.es.js +7 -0
  39. package/dist/components/documentation/page/loader.es.js.map +1 -0
  40. package/dist/components/documentation/page/navigation.cjs.js +1 -1
  41. package/dist/components/documentation/page/navigation.es.js +1 -1
  42. package/dist/components/documentation/sidebar/content.cjs.js +1 -1
  43. package/dist/components/documentation/sidebar/content.es.js +1 -1
  44. package/dist/components/documentation/sidebar/index.cjs.js +1 -1
  45. package/dist/components/documentation/sidebar/index.es.js +1 -1
  46. package/dist/components/documentation/sidebar/toggle.cjs.js +1 -0
  47. package/dist/components/documentation/sidebar/toggle.d.ts +4 -0
  48. package/dist/components/documentation/sidebar/toggle.es.js +3 -0
  49. package/dist/components/documentation/toc/content.cjs.js +1 -1
  50. package/dist/components/documentation/toc/content.es.js +1 -1
  51. package/dist/components/documentation/toc/index.cjs.js +1 -1
  52. package/dist/components/documentation/toc/index.d.ts +2 -2
  53. package/dist/components/documentation/toc/index.es.js +1 -1
  54. package/dist/components/file-system.cjs.js +1 -1
  55. package/dist/components/file-system.es.js +1 -1
  56. package/dist/components/spinner.cjs.js +1 -0
  57. package/dist/components/spinner.d.ts +5 -0
  58. package/dist/components/spinner.es.js +2 -0
  59. package/dist/{content-DsE39ENV.cjs → content-6sh6k7yf.cjs} +2 -2
  60. package/dist/content-6sh6k7yf.cjs.map +1 -0
  61. package/dist/content-BViNSM8m.js +39 -0
  62. package/dist/content-BViNSM8m.js.map +1 -0
  63. package/dist/content-CGtNRdoV.cjs +2 -0
  64. package/dist/content-CGtNRdoV.cjs.map +1 -0
  65. package/dist/{content-DvLxAJYd.js → content-ClFdagzQ.js} +3 -3
  66. package/dist/content-ClFdagzQ.js.map +1 -0
  67. package/dist/{content-CQ5PQ1-Z.cjs → content-DUX4ByVA.cjs} +2 -2
  68. package/dist/content-DUX4ByVA.cjs.map +1 -0
  69. package/dist/{content-Wo136UBd.js → content-DlC3ONDr.js} +4 -4
  70. package/dist/content-DlC3ONDr.js.map +1 -0
  71. package/dist/content-SlTW2OsO.js +17 -0
  72. package/dist/content-SlTW2OsO.js.map +1 -0
  73. package/dist/content-rfhfHH3W.cjs +2 -0
  74. package/dist/content-rfhfHH3W.cjs.map +1 -0
  75. package/dist/contexts/documentation.cjs.js +1 -1
  76. package/dist/contexts/documentation.cjs.js.map +1 -1
  77. package/dist/contexts/documentation.d.ts +1 -1
  78. package/dist/contexts/documentation.es.js +8 -8
  79. package/dist/contexts/documentation.es.js.map +1 -1
  80. package/dist/{file-system-CMsswKsJ.js → file-system-CW_7OsYk.js} +12 -12
  81. package/dist/file-system-CW_7OsYk.js.map +1 -0
  82. package/dist/{file-system-Ca6fqwTn.cjs → file-system-De1go4Pz.cjs} +2 -2
  83. package/dist/file-system-De1go4Pz.cjs.map +1 -0
  84. package/dist/{content-CoLxuTJs.js → header-BFkQq3p7.js} +4 -4
  85. package/dist/header-BFkQq3p7.js.map +1 -0
  86. package/dist/header-IQArXGpT.cjs +2 -0
  87. package/dist/header-IQArXGpT.cjs.map +1 -0
  88. package/dist/index.cjs.js +1 -1
  89. package/dist/index.d.ts +13 -9
  90. package/dist/index.es.js +18 -14
  91. package/dist/{layout-C_NguCrO.js → layout-9WOcI8QC.js} +2 -2
  92. package/dist/layout-9WOcI8QC.js.map +1 -0
  93. package/dist/{layout-B9nkyVRH.cjs → layout-CNLxKkFm.cjs} +2 -2
  94. package/dist/layout-CNLxKkFm.cjs.map +1 -0
  95. package/dist/navigation-B26nKjER.js +143 -0
  96. package/dist/navigation-B26nKjER.js.map +1 -0
  97. package/dist/navigation-CmXsaglM.cjs +2 -0
  98. package/dist/navigation-CmXsaglM.cjs.map +1 -0
  99. package/dist/sidebar-CXrzg2Go.cjs +2 -0
  100. package/dist/sidebar-CXrzg2Go.cjs.map +1 -0
  101. package/dist/sidebar-V1MCkkEu.js +162 -0
  102. package/dist/sidebar-V1MCkkEu.js.map +1 -0
  103. package/dist/spinner-BWq14zTZ.js +36 -0
  104. package/dist/spinner-BWq14zTZ.js.map +1 -0
  105. package/dist/spinner-CiEz3GLj.cjs +2 -0
  106. package/dist/spinner-CiEz3GLj.cjs.map +1 -0
  107. package/dist/story/index.cjs.js +1 -0
  108. package/dist/story/index.d.ts +34 -0
  109. package/dist/story/index.es.js +2 -0
  110. package/dist/story-D6POW6tk.js +42 -0
  111. package/dist/story-D6POW6tk.js.map +1 -0
  112. package/dist/story-DMJSe7Sg.cjs +2 -0
  113. package/dist/story-DMJSe7Sg.cjs.map +1 -0
  114. package/dist/toc-4StZsTN_.js +101 -0
  115. package/dist/toc-4StZsTN_.js.map +1 -0
  116. package/dist/toc-CPqRAPOv.cjs +2 -0
  117. package/dist/toc-CPqRAPOv.cjs.map +1 -0
  118. package/dist/toggle-D81rCUj_.cjs +2 -0
  119. package/dist/toggle-D81rCUj_.cjs.map +1 -0
  120. package/dist/toggle-DoePXMlE.js +51 -0
  121. package/dist/toggle-DoePXMlE.js.map +1 -0
  122. package/package.json +49 -48
  123. package/dist/button-BVRKTAnQ.js.map +0 -1
  124. package/dist/button-rojnIyoM.cjs.map +0 -1
  125. package/dist/content-CQ5PQ1-Z.cjs.map +0 -1
  126. package/dist/content-CoLxuTJs.js.map +0 -1
  127. package/dist/content-DOo3vcgG.cjs +0 -2
  128. package/dist/content-DOo3vcgG.cjs.map +0 -1
  129. package/dist/content-DsE39ENV.cjs.map +0 -1
  130. package/dist/content-DvLxAJYd.js.map +0 -1
  131. package/dist/content-KDKeEwv-.cjs +0 -2
  132. package/dist/content-KDKeEwv-.cjs.map +0 -1
  133. package/dist/content-Wo136UBd.js.map +0 -1
  134. package/dist/content-xKdbA544.js +0 -37
  135. package/dist/content-xKdbA544.js.map +0 -1
  136. package/dist/file-system-CMsswKsJ.js.map +0 -1
  137. package/dist/file-system-Ca6fqwTn.cjs.map +0 -1
  138. package/dist/header-CmQhY5Pa.cjs +0 -2
  139. package/dist/header-CmQhY5Pa.cjs.map +0 -1
  140. package/dist/header-DDS6Ak-Z.js +0 -57
  141. package/dist/header-DDS6Ak-Z.js.map +0 -1
  142. package/dist/layout-B9nkyVRH.cjs.map +0 -1
  143. package/dist/layout-C_NguCrO.js.map +0 -1
  144. package/dist/navigation-BCpfEaXG.cjs +0 -2
  145. package/dist/navigation-BCpfEaXG.cjs.map +0 -1
  146. package/dist/navigation-bIVcotMC.js +0 -139
  147. package/dist/navigation-bIVcotMC.js.map +0 -1
  148. package/dist/sidebar-CiheJpEa.cjs +0 -2
  149. package/dist/sidebar-CiheJpEa.cjs.map +0 -1
  150. package/dist/sidebar-aXd_UA6s.js +0 -162
  151. package/dist/sidebar-aXd_UA6s.js.map +0 -1
  152. package/dist/toc-CI_8-KFH.cjs +0 -2
  153. package/dist/toc-CI_8-KFH.cjs.map +0 -1
  154. package/dist/toc-Dvn-UEjm.js +0 -103
  155. package/dist/toc-Dvn-UEjm.js.map +0 -1
@@ -1,2 +0,0 @@
1
- require('./assets/navigation.css');const e=require("./contexts/documentation.cjs.js"),t=require("./clsx-GLXUd3yb.cjs");let n=require("react"),r=require("react/jsx-runtime");var i={navigation:`_navigation_1ix9w_1`,slot:`_slot_1ix9w_10`,"slot-end":`_slot-end_1ix9w_14`,card:`_card_1ix9w_18`,next:`_next_1ix9w_45`,previous:`_previous_1ix9w_50`,meta:`_meta_1ix9w_55`,chevron:`_chevron_1ix9w_63`,title:`_title_1ix9w_69`,description:`_description_1ix9w_76`};function a(e){return e.type===`category`?e?.frontmatter?.order??1/0:e.type===`page`?e.frontmatter.order??1/0:1/0}function o(e){return e.map((e,t)=>({node:e,index:t})).sort((e,t)=>{let n=a(e.node)-a(t.node);return n===0?e.index-t.index:n}).map(({node:e})=>e)}function s(e){let t=o(e),n=[];for(let e of t){if(e.type===`page`){n.push(e);continue}if(e.type===`category`){let t=e.page;t&&n.push(t);let r=e.children;n.push(...s(r))}}return n}function c(){return(0,r.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:i.chevron,children:(0,r.jsx)(`polyline`,{points:`15 18 9 12 15 6`})})}function l(){return(0,r.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:i.chevron,children:(0,r.jsx)(`polyline`,{points:`9 18 15 12 9 6`})})}function u(e,t){return e&&e!==`No title.`?e:t}function d(e){return e&&e!==`No description.`?e:void 0}function f({node:n,direction:a}){let o=u(n.frontmatter.title,n.path),s=d(n.frontmatter.description),{language:f,path_transformer:p}=e.useDocumentationContext();return(0,r.jsxs)(`a`,{href:p({language:f,path:n.path}),className:t.t(i.card,i[a]),"data-direction":a,children:[(0,r.jsxs)(`span`,{className:i.meta,children:[a===`previous`&&(0,r.jsx)(c,{}),(0,r.jsx)(`span`,{className:i.title,children:o}),a===`next`&&(0,r.jsx)(l,{})]}),s&&(0,r.jsx)(`span`,{className:i.description,children:s})]})}function p({className:a,...o}){let{tree:c,current_path:l}=e.useDocumentationContext(),{previous:u,next:d}=(0,n.useMemo)(()=>{let e=s(c),t=e.findIndex(e=>e.path===l);return t===-1?{previous:void 0,next:void 0}:{previous:e[t-1],next:e[t+1]}},[c,l]);return!u&&!d?null:(0,r.jsxs)(`nav`,{className:t.t(i.navigation,a),"aria-label":`Pagination`,...o,children:[(0,r.jsx)(`div`,{className:i.slot,children:u&&(0,r.jsx)(f,{node:u,direction:`previous`})}),(0,r.jsx)(`div`,{className:t.t(i.slot,i[`slot-end`]),children:d&&(0,r.jsx)(f,{node:d,direction:`next`})})]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
2
- //# sourceMappingURL=navigation-BCpfEaXG.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation-BCpfEaXG.cjs","names":[],"sources":["../../styles/src/components/documentation/page/navigation.module.css","../src/components/documentation/page/navigation.tsx"],"sourcesContent":[".navigation {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1em;\n padding: var(--_sleetch-padding-root);\n padding-top: 0px;\n font-family: var(--_sleetch-font-base);\n}\n\n.slot {\n display: flex;\n}\n\n.slot-end {\n justify-content: flex-end;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n width: 100%;\n max-width: 320px;\n padding: 1em 1em;\n border-radius: var(--_sleetch-radius);\n border: var(--_sleetch-hr-height) solid var(--_sleetch-color-border);\n color: var(--_sleetch-color-text);\n text-decoration: none;\n transition:\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.card:hover,\n.card:focus-visible {\n border-color: var(--_sleetch-color-text-primary);\n background-color: color-mix(in srgb, var(--_sleetch-color-text-primary) 8%, var(--_sleetch-color-card));\n}\n\n.card:focus-visible {\n outline: 2px solid var(--_sleetch-color-text-primary);\n outline-offset: 2px;\n}\n\n.next {\n align-items: flex-end;\n text-align: right;\n}\n\n.previous {\n align-items: flex-start;\n text-align: left;\n}\n\n.meta {\n display: flex;\n align-items: center;\n gap: 0.3em;\n font-size: var(--_sleetch-font-size-tiny);\n color: var(--_sleetch-color-muted-foreground);\n}\n\n.chevron {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n}\n\n.title {\n font-size: var(--_sleetch-font-size-base);\n font-weight: var(--_sleetch-font-weight-heading);\n line-height: var(--_sleetch-line-height-heading);\n color: var(--_sleetch-color-text);\n}\n\n.description {\n font-size: var(--_sleetch-font-size-tiny);\n line-height: var(--_sleetch-line-height);\n color: var(--_sleetch-color-muted-foreground);\n overflow: hidden;\n}\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .navigation {\n padding: 1.5em 2em;\n }\n}\n\n@media (max-width: 768px) {\n .card {\n max-width: 100%;\n }\n\n .navigation {\n grid-template-columns: 1fr;\n\n padding: 1em 1em;\n }\n\n .slot-end {\n justify-content: flex-start;\n }\n\n .next {\n align-items: flex-start;\n text-align: left;\n }\n}\n","/*\n AI Generated :(\n Needs more testing\n*/\n\nimport { useMemo, type BaseHTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport styles from '@sleetch/styles/components/documentation/page/navigation.module.css';\nimport type { tree_object } from '@sleetch/core/compiler';\nimport { useDocumentationContext } from 'packages/react/src/contexts/documentation';\n\ntype category_node = Extract<tree_object, { type: 'category' }>;\ntype page_node = Extract<tree_object, { type: 'page' }>;\ntype data_node = Extract<tree_object, { type: 'data' }>;\n\nexport interface DocumentationNavigationProps extends BaseHTMLAttributes<HTMLDivElement> {}\n\n/*\n Meme logique de tri/priorite que la sidebar (getCategoryData, getCategoryIndex,\n getOrder, sortNodes) pour garantir que l'ordre de navigation prev/next\n corresponde exactement a l'ordre affiche dans la sidebar.\n*/\n\nfunction getOrder(node: tree_object): number {\n if (node.type === 'category') {\n return node?.frontmatter?.order ?? Number.POSITIVE_INFINITY;\n }\n if (node.type === 'page') {\n return (node.frontmatter as { order?: number }).order ?? Number.POSITIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n}\n\nfunction sortNodes(nodes: tree_object[]): tree_object[] {\n return nodes\n .map((node, index) => ({ node, index }))\n .sort((a, b) => {\n const diff = getOrder(a.node) - getOrder(b.node);\n return diff !== 0 ? diff : a.index - b.index;\n })\n .map(({ node }) => node);\n}\n\n/*\n Aplatit l'arbre en une liste ordonnee de pages navigables :\n - l'index d'une categorie arrive en premier (c'est le point d'entree),\n - suivi de ses enfants tries recursivement.\n*/\nfunction flattenPages(nodes: tree_object[]): page_node[] {\n const sorted = sortNodes(nodes);\n const result: page_node[] = [];\n\n for (const node of sorted) {\n if (node.type === 'page') {\n result.push(node);\n continue;\n }\n\n if (node.type === 'category') {\n const indexPage = node.page;\n if (indexPage) result.push(indexPage);\n const rest = node.children;\n result.push(...flattenPages(rest));\n }\n }\n\n return result;\n}\n\nfunction ChevronLeft() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={styles['chevron']}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n\nfunction ChevronRight() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={styles['chevron']}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\nfunction resolveTitle(title: string, fallbackPath: string): string {\n return title && title !== 'No title.' ? title : fallbackPath;\n}\n\nfunction resolveDescription(description: string): string | undefined {\n return description && description !== 'No description.' ? description : undefined;\n}\n\ninterface NavigationCardProps {\n node: page_node;\n direction: 'previous' | 'next';\n}\n\nfunction NavigationCard({ node, direction }: NavigationCardProps) {\n const title = resolveTitle(node.frontmatter.title, node.path);\n const description = resolveDescription(node.frontmatter.description);\n const { language, path_transformer } = useDocumentationContext();\n\n return (\n <a href={path_transformer({ language, path: node.path })} className={clsx(styles['card'], styles[direction])} data-direction={direction}>\n <span className={styles['meta']}>\n {direction === 'previous' && <ChevronLeft />}\n <span className={styles['title']}>{title}</span>\n {direction === 'next' && <ChevronRight />}\n </span>\n {description && <span className={styles['description']}>{description}</span>}\n </a>\n );\n}\n\nexport function PageNavigation({ className, ...props }: DocumentationNavigationProps) {\n const { tree, current_path } = useDocumentationContext();\n const { previous, next } = useMemo(() => {\n const pages = flattenPages(tree);\n const currentIndex = pages.findIndex((page) => page.path === current_path);\n\n if (currentIndex === -1) {\n return { previous: undefined, next: undefined };\n }\n\n return {\n previous: pages[currentIndex - 1],\n next: pages[currentIndex + 1],\n };\n }, [tree, current_path]);\n\n if (!previous && !next) return null;\n\n return (\n <nav className={clsx(styles['navigation'], className)} aria-label=\"Pagination\" {...props}>\n <div className={styles['slot']}>{previous && <NavigationCard node={previous} direction=\"previous\" />}</div>\n <div className={clsx(styles['slot'], styles['slot-end'])}>{next && <NavigationCard node={next} direction=\"next\" />}</div>\n </nav>\n );\n}\n"],"mappings":"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"}
@@ -1,139 +0,0 @@
1
- import { useDocumentationContext as e } from "./contexts/documentation.es.js";
2
- import { t } from "./clsx-CaAiuA5w.js";
3
- import { useMemo as n } from "react";
4
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
- import './assets/navigation.css';var a = {
6
- navigation: "_navigation_1ix9w_1",
7
- slot: "_slot_1ix9w_10",
8
- "slot-end": "_slot-end_1ix9w_14",
9
- card: "_card_1ix9w_18",
10
- next: "_next_1ix9w_45",
11
- previous: "_previous_1ix9w_50",
12
- meta: "_meta_1ix9w_55",
13
- chevron: "_chevron_1ix9w_63",
14
- title: "_title_1ix9w_69",
15
- description: "_description_1ix9w_76"
16
- };
17
- //#endregion
18
- //#region src/components/documentation/page/navigation.tsx
19
- function o(e) {
20
- return e.type === "category" ? e?.frontmatter?.order ?? Infinity : e.type === "page" ? e.frontmatter.order ?? Infinity : Infinity;
21
- }
22
- function s(e) {
23
- return e.map((e, t) => ({
24
- node: e,
25
- index: t
26
- })).sort((e, t) => {
27
- let n = o(e.node) - o(t.node);
28
- return n === 0 ? e.index - t.index : n;
29
- }).map(({ node: e }) => e);
30
- }
31
- function c(e) {
32
- let t = s(e), n = [];
33
- for (let e of t) {
34
- if (e.type === "page") {
35
- n.push(e);
36
- continue;
37
- }
38
- if (e.type === "category") {
39
- let t = e.page;
40
- t && n.push(t);
41
- let r = e.children;
42
- n.push(...c(r));
43
- }
44
- }
45
- return n;
46
- }
47
- function l() {
48
- return /* @__PURE__ */ r("svg", {
49
- viewBox: "0 0 24 24",
50
- width: "16",
51
- height: "16",
52
- fill: "none",
53
- stroke: "currentColor",
54
- strokeWidth: "2.5",
55
- strokeLinecap: "round",
56
- strokeLinejoin: "round",
57
- className: a.chevron,
58
- children: /* @__PURE__ */ r("polyline", { points: "15 18 9 12 15 6" })
59
- });
60
- }
61
- function u() {
62
- return /* @__PURE__ */ r("svg", {
63
- viewBox: "0 0 24 24",
64
- width: "16",
65
- height: "16",
66
- fill: "none",
67
- stroke: "currentColor",
68
- strokeWidth: "2.5",
69
- strokeLinecap: "round",
70
- strokeLinejoin: "round",
71
- className: a.chevron,
72
- children: /* @__PURE__ */ r("polyline", { points: "9 18 15 12 9 6" })
73
- });
74
- }
75
- function d(e, t) {
76
- return e && e !== "No title." ? e : t;
77
- }
78
- function f(e) {
79
- return e && e !== "No description." ? e : void 0;
80
- }
81
- function p({ node: n, direction: o }) {
82
- let s = d(n.frontmatter.title, n.path), c = f(n.frontmatter.description), { language: p, path_transformer: m } = e();
83
- return /* @__PURE__ */ i("a", {
84
- href: m({
85
- language: p,
86
- path: n.path
87
- }),
88
- className: t(a.card, a[o]),
89
- "data-direction": o,
90
- children: [/* @__PURE__ */ i("span", {
91
- className: a.meta,
92
- children: [
93
- o === "previous" && /* @__PURE__ */ r(l, {}),
94
- /* @__PURE__ */ r("span", {
95
- className: a.title,
96
- children: s
97
- }),
98
- o === "next" && /* @__PURE__ */ r(u, {})
99
- ]
100
- }), c && /* @__PURE__ */ r("span", {
101
- className: a.description,
102
- children: c
103
- })]
104
- });
105
- }
106
- function m({ className: o, ...s }) {
107
- let { tree: l, current_path: u } = e(), { previous: d, next: f } = n(() => {
108
- let e = c(l), t = e.findIndex((e) => e.path === u);
109
- return t === -1 ? {
110
- previous: void 0,
111
- next: void 0
112
- } : {
113
- previous: e[t - 1],
114
- next: e[t + 1]
115
- };
116
- }, [l, u]);
117
- return !d && !f ? null : /* @__PURE__ */ i("nav", {
118
- className: t(a.navigation, o),
119
- "aria-label": "Pagination",
120
- ...s,
121
- children: [/* @__PURE__ */ r("div", {
122
- className: a.slot,
123
- children: d && /* @__PURE__ */ r(p, {
124
- node: d,
125
- direction: "previous"
126
- })
127
- }), /* @__PURE__ */ r("div", {
128
- className: t(a.slot, a["slot-end"]),
129
- children: f && /* @__PURE__ */ r(p, {
130
- node: f,
131
- direction: "next"
132
- })
133
- })]
134
- });
135
- }
136
- //#endregion
137
- export { m as t };
138
-
139
- //# sourceMappingURL=navigation-bIVcotMC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation-bIVcotMC.js","names":[],"sources":["../../styles/src/components/documentation/page/navigation.module.css","../src/components/documentation/page/navigation.tsx"],"sourcesContent":[".navigation {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1em;\n padding: var(--_sleetch-padding-root);\n padding-top: 0px;\n font-family: var(--_sleetch-font-base);\n}\n\n.slot {\n display: flex;\n}\n\n.slot-end {\n justify-content: flex-end;\n}\n\n.card {\n display: flex;\n flex-direction: column;\n gap: 0.25em;\n width: 100%;\n max-width: 320px;\n padding: 1em 1em;\n border-radius: var(--_sleetch-radius);\n border: var(--_sleetch-hr-height) solid var(--_sleetch-color-border);\n color: var(--_sleetch-color-text);\n text-decoration: none;\n transition:\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.card:hover,\n.card:focus-visible {\n border-color: var(--_sleetch-color-text-primary);\n background-color: color-mix(in srgb, var(--_sleetch-color-text-primary) 8%, var(--_sleetch-color-card));\n}\n\n.card:focus-visible {\n outline: 2px solid var(--_sleetch-color-text-primary);\n outline-offset: 2px;\n}\n\n.next {\n align-items: flex-end;\n text-align: right;\n}\n\n.previous {\n align-items: flex-start;\n text-align: left;\n}\n\n.meta {\n display: flex;\n align-items: center;\n gap: 0.3em;\n font-size: var(--_sleetch-font-size-tiny);\n color: var(--_sleetch-color-muted-foreground);\n}\n\n.chevron {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n}\n\n.title {\n font-size: var(--_sleetch-font-size-base);\n font-weight: var(--_sleetch-font-weight-heading);\n line-height: var(--_sleetch-line-height-heading);\n color: var(--_sleetch-color-text);\n}\n\n.description {\n font-size: var(--_sleetch-font-size-tiny);\n line-height: var(--_sleetch-line-height);\n color: var(--_sleetch-color-muted-foreground);\n overflow: hidden;\n}\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .navigation {\n padding: 1.5em 2em;\n }\n}\n\n@media (max-width: 768px) {\n .card {\n max-width: 100%;\n }\n\n .navigation {\n grid-template-columns: 1fr;\n\n padding: 1em 1em;\n }\n\n .slot-end {\n justify-content: flex-start;\n }\n\n .next {\n align-items: flex-start;\n text-align: left;\n }\n}\n","/*\n AI Generated :(\n Needs more testing\n*/\n\nimport { useMemo, type BaseHTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport styles from '@sleetch/styles/components/documentation/page/navigation.module.css';\nimport type { tree_object } from '@sleetch/core/compiler';\nimport { useDocumentationContext } from 'packages/react/src/contexts/documentation';\n\ntype category_node = Extract<tree_object, { type: 'category' }>;\ntype page_node = Extract<tree_object, { type: 'page' }>;\ntype data_node = Extract<tree_object, { type: 'data' }>;\n\nexport interface DocumentationNavigationProps extends BaseHTMLAttributes<HTMLDivElement> {}\n\n/*\n Meme logique de tri/priorite que la sidebar (getCategoryData, getCategoryIndex,\n getOrder, sortNodes) pour garantir que l'ordre de navigation prev/next\n corresponde exactement a l'ordre affiche dans la sidebar.\n*/\n\nfunction getOrder(node: tree_object): number {\n if (node.type === 'category') {\n return node?.frontmatter?.order ?? Number.POSITIVE_INFINITY;\n }\n if (node.type === 'page') {\n return (node.frontmatter as { order?: number }).order ?? Number.POSITIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n}\n\nfunction sortNodes(nodes: tree_object[]): tree_object[] {\n return nodes\n .map((node, index) => ({ node, index }))\n .sort((a, b) => {\n const diff = getOrder(a.node) - getOrder(b.node);\n return diff !== 0 ? diff : a.index - b.index;\n })\n .map(({ node }) => node);\n}\n\n/*\n Aplatit l'arbre en une liste ordonnee de pages navigables :\n - l'index d'une categorie arrive en premier (c'est le point d'entree),\n - suivi de ses enfants tries recursivement.\n*/\nfunction flattenPages(nodes: tree_object[]): page_node[] {\n const sorted = sortNodes(nodes);\n const result: page_node[] = [];\n\n for (const node of sorted) {\n if (node.type === 'page') {\n result.push(node);\n continue;\n }\n\n if (node.type === 'category') {\n const indexPage = node.page;\n if (indexPage) result.push(indexPage);\n const rest = node.children;\n result.push(...flattenPages(rest));\n }\n }\n\n return result;\n}\n\nfunction ChevronLeft() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={styles['chevron']}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n\nfunction ChevronRight() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={styles['chevron']}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\nfunction resolveTitle(title: string, fallbackPath: string): string {\n return title && title !== 'No title.' ? title : fallbackPath;\n}\n\nfunction resolveDescription(description: string): string | undefined {\n return description && description !== 'No description.' ? description : undefined;\n}\n\ninterface NavigationCardProps {\n node: page_node;\n direction: 'previous' | 'next';\n}\n\nfunction NavigationCard({ node, direction }: NavigationCardProps) {\n const title = resolveTitle(node.frontmatter.title, node.path);\n const description = resolveDescription(node.frontmatter.description);\n const { language, path_transformer } = useDocumentationContext();\n\n return (\n <a href={path_transformer({ language, path: node.path })} className={clsx(styles['card'], styles[direction])} data-direction={direction}>\n <span className={styles['meta']}>\n {direction === 'previous' && <ChevronLeft />}\n <span className={styles['title']}>{title}</span>\n {direction === 'next' && <ChevronRight />}\n </span>\n {description && <span className={styles['description']}>{description}</span>}\n </a>\n );\n}\n\nexport function PageNavigation({ className, ...props }: DocumentationNavigationProps) {\n const { tree, current_path } = useDocumentationContext();\n const { previous, next } = useMemo(() => {\n const pages = flattenPages(tree);\n const currentIndex = pages.findIndex((page) => page.path === current_path);\n\n if (currentIndex === -1) {\n return { previous: undefined, next: undefined };\n }\n\n return {\n previous: pages[currentIndex - 1],\n next: pages[currentIndex + 1],\n };\n }, [tree, current_path]);\n\n if (!previous && !next) return null;\n\n return (\n <nav className={clsx(styles['navigation'], className)} aria-label=\"Pagination\" {...props}>\n <div className={styles['slot']}>{previous && <NavigationCard node={previous} direction=\"previous\" />}</div>\n <div className={clsx(styles['slot'], styles['slot-end'])}>{next && <NavigationCard node={next} direction=\"next\" />}</div>\n </nav>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- require('./assets/sidebar.css');const e=require("./contexts/documentation.cjs.js"),t=require("./clsx-GLXUd3yb.cjs");let n=require("react"),r=require("react/jsx-runtime");var i={sidebar:`_sidebar_1n87n_1`,overlay:`_overlay_1n87n_33`,"sidebar-open":`_sidebar-open_1n87n_55`,fadeIn:`_fadeIn_1n87n_1`,nav:`_nav_1n87n_89`,list:`_list_1n87n_94`,item:`_item_1n87n_103`,row:`_row_1n87n_107`,link:`_link_1n87n_112`,"category-label":`_category-label_1n87n_113`,"category-link":`_category-link_1n87n_147`,active:`_active_1n87n_154`,toggle:`_toggle_1n87n_165`,chevron:`_chevron_1n87n_188`,"chevron-open":`_chevron-open_1n87n_192`,icon:`_icon_1n87n_196`,label:`_label_1n87n_206`};function a({className:a,children:o,...s}){let{is_sidebar_open:c,close_sidebar:l,tree:d,current_path:f,path_transformer:p,icon_transformer:m}=e.useDocumentationContext();return(0,n.useEffect)(()=>(c?document.body.style.overflow=`hidden`:document.body.style.overflow=``,()=>{document.body.style.overflow=``}),[c]),(0,r.jsxs)(r.Fragment,{children:[c&&(0,r.jsx)(`div`,{className:i.overlay,onClick:l}),(0,r.jsxs)(`aside`,{className:t.t(i.sidebar,c&&i[`sidebar-open`],a),...s,children:[(0,r.jsx)(`nav`,{className:i.nav,children:(0,r.jsx)(u,{nodes:d,depth:1,onLinkClick:l})}),o]})]})}function o(e){return e.type===`category`?e?.frontmatter?.order??1/0:e.type===`page`?e.frontmatter.order??1/0:1/0}function s(e){return e.map((e,t)=>({node:e,index:t})).sort((e,t)=>{let n=o(e.node)-o(t.node);return n===0?e.index-t.index:n}).map(({node:e})=>e)}function c(e,t){return e&&e!==`No title.`?e:t}function l({open:e}){return(0,r.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:t.t(i.chevron,e&&i[`chevron-open`]),children:(0,r.jsx)(`polyline`,{points:`9 6 15 12 9 18`})})}function u({nodes:a,depth:o,onLinkClick:l}){let u=(0,n.useMemo)(()=>s(a),[a]),{icon_transformer:f,current_path:p,path_transformer:m,language:h}=e.useDocumentationContext();return(0,r.jsx)(`ul`,{className:i.list,"data-depth":o,children:u.map(e=>{if(e.type===`page`){let n=e.path===p,a=f(e.frontmatter.icon);return(0,r.jsx)(`li`,{className:i.item,children:(0,r.jsxs)(`a`,{href:m({language:h,path:e.path}),className:t.t(i.link,n&&i.active),style:{"--depth":o},onClick:l,children:[a&&(0,r.jsx)(`span`,{className:i.icon,children:a}),(0,r.jsx)(`span`,{className:i.label,children:c(e.frontmatter.title,e.path)})]})},e.path)}return e.type===`category`?(0,r.jsx)(d,{category:e,depth:o,onLinkClick:l},e.path):null})})}function d({category:a,depth:o,onLinkClick:s}){let{icon_transformer:d,current_path:f,path_transformer:p,language:m}=e.useDocumentationContext(),h=a?.frontmatter?.title??(a.page?c(a.page.frontmatter.title,a.path):a.path),g=d(a?.frontmatter?.icon??a?.page?.frontmatter?.icon),_=a.children,v=_.length>0,y=a.page?a.page.path===f:!1,[b,x]=(0,n.useState)(!0);return(0,r.jsxs)(`li`,{className:i.item,children:[(0,r.jsxs)(`div`,{className:i.row,children:[a.page?(0,r.jsxs)(`a`,{href:p({language:m,path:a.page.path}),className:t.t(i.link,i[`category-link`],y&&i.active),style:{"--depth":o},onClick:s,children:[g&&(0,r.jsx)(`span`,{className:i.icon,children:g}),(0,r.jsx)(`span`,{className:i.label,children:h})]}):(0,r.jsxs)(`button`,{type:`button`,className:t.t(i.link,i[`category-label`]),style:{"--depth":o},onClick:()=>v&&x(e=>!e),children:[g&&(0,r.jsx)(`span`,{className:i.icon,children:g}),(0,r.jsx)(`span`,{className:i.label,children:h})]}),v&&(0,r.jsx)(`button`,{type:`button`,className:i.toggle,"aria-label":b?`Collapse`:`Expand`,"aria-expanded":b,onClick:()=>x(e=>!e),children:(0,r.jsx)(l,{open:b})})]}),v&&b&&(0,r.jsx)(u,{nodes:_,depth:o+1,onLinkClick:s})]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=sidebar-CiheJpEa.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar-CiheJpEa.cjs","names":[],"sources":["../../styles/src/components/documentation/sidebar/index.module.css","../src/components/documentation/sidebar/index.tsx"],"sourcesContent":[".sidebar {\n min-width: var(--_sleetch-sidebar-width);\n height: calc(100vh - var(--_sleetch-header-height));\n position: sticky;\n top: var(--_sleetch-header-height);\n color: var(--_sleetch-color-text);\n padding: 4em 1.5em;\n border-right: 1px dashed var(--_sleetch-color-muted);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--_sleetch-color-muted) transparent;\n}\n\n.sidebar::-webkit-scrollbar {\n width: 6px;\n}\n\n.sidebar::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.sidebar::-webkit-scrollbar-thumb {\n background-color: var(--_sleetch-color-muted);\n border-radius: 3px;\n}\n\n.sidebar::-webkit-scrollbar-thumb:hover {\n background-color: var(--_sleetch-color-muted-foreground);\n}\n\n.overlay {\n display: none;\n}\n\n@media (max-width: 768px) {\n .sidebar {\n position: fixed;\n top: var(--_sleetch-header-height);\n left: 0;\n bottom: 0;\n width: 280px;\n min-width: 280px;\n max-width: 85vw;\n z-index: 90;\n background-color: var(--_sleetch-color-background);\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n padding: 2em 1.5em;\n border-right: 1px solid var(--_sleetch-color-border);\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.3);\n }\n\n .sidebar-open {\n transform: translateX(0);\n }\n\n .overlay {\n display: block;\n position: fixed;\n top: var(--_sleetch-header-height);\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 89;\n backdrop-filter: blur(2px);\n animation: fadeIn 0.3s ease;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n}\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .sidebar {\n min-width: 260px;\n padding: 3em 1.2em;\n }\n}\n\n.nav {\n display: flex;\n flex-direction: column;\n}\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.item {\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: center;\n}\n\n.link,\n.category-label {\n --depth: 1;\n flex: 1;\n display: flex;\n align-items: center;\n gap: 0.55em;\n width: 100%;\n min-width: 0;\n margin-left: -1px;\n padding-block: 0.4em;\n padding-left: calc(1em + (var(--depth) - 1) * 1em);\n padding-right: 0.5em;\n border: none;\n border-left: 3px solid transparent;\n background: none;\n font-family: var(--_sleetch-font-base);\n font-size: calc(1em - (var(--depth) - 1) * 0.03em);\n line-height: 1.3;\n text-align: left;\n color: var(--_sleetch-color-muted-foreground);\n text-decoration: none;\n cursor: pointer;\n transition:\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.link:hover,\n.category-label:hover {\n color: var(--_sleetch-color-text);\n}\n\n.category-link,\n.category-label {\n font-weight: var(--_sleetch-font-weight-heading);\n color: var(--_sleetch-color-text);\n padding-top: 0.5em;\n}\n\n.active {\n border-left-color: var(--_sleetch-color-text-primary);\n background: color-mix(in srgb, var(--_sleetch-color-text-underline) 35%, transparent);\n color: var(--_sleetch-color-text);\n transform: translateX(4px);\n}\n\n.active:hover {\n transform: translateX(6px);\n}\n\n.toggle {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.7em;\n height: 1.7em;\n margin-right: 0.2em;\n background: none;\n border: none;\n border-radius: var(--_sleetch-radius);\n color: var(--_sleetch-color-muted-foreground);\n cursor: pointer;\n transition:\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.toggle:hover {\n background-color: var(--_sleetch-color-card);\n color: var(--_sleetch-color-text);\n}\n\n.chevron {\n transition: transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.chevron-open {\n transform: rotate(90deg);\n}\n\n.icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.1em;\n height: 1.1em;\n opacity: 0.75;\n}\n\n.label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\n AI Generated :(\n Needs more testing\n*/\n\nimport type { BaseHTMLAttributes, ReactNode } from 'react';\nimport { useMemo, useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from '@sleetch/styles/components/documentation/sidebar/index.module.css';\nimport type { tree_object } from '@sleetch/core/compiler';\nimport { useDocumentationContext } from 'packages/react/src/contexts/documentation';\n\nexport interface DocumentationSidebarProps extends BaseHTMLAttributes<HTMLBaseElement> {}\n\nexport function DocumentationSidebar({ className, children, ...props }: DocumentationSidebarProps) {\n const { is_sidebar_open, close_sidebar, tree, current_path, path_transformer, icon_transformer } = useDocumentationContext();\n\n useEffect(() => {\n if (is_sidebar_open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [is_sidebar_open]);\n\n return (\n <>\n {is_sidebar_open && <div className={styles['overlay']} onClick={close_sidebar} />}\n <aside className={clsx(styles['sidebar'], is_sidebar_open && styles['sidebar-open'], className)} {...props}>\n <nav className={styles['nav']}>\n <SidebarTree nodes={tree} depth={1} onLinkClick={close_sidebar} />\n </nav>\n {children}\n </aside>\n </>\n );\n}\n\ntype category_node = Extract<tree_object, { type: 'category' }>;\ntype page_node = Extract<tree_object, { type: 'page' }>;\ntype data_node = Extract<tree_object, { type: 'data' }>;\n\nfunction getOrder(node: tree_object): number {\n if (node.type === 'category') {\n return node?.frontmatter?.order ?? Number.POSITIVE_INFINITY;\n }\n if (node.type === 'page') {\n return (node.frontmatter as { order?: number }).order ?? Number.POSITIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n}\n\nfunction sortNodes(nodes: tree_object[]): tree_object[] {\n return nodes\n .map((node, index) => ({ node, index }))\n .sort((a, b) => {\n const diff = getOrder(a.node) - getOrder(b.node);\n return diff !== 0 ? diff : a.index - b.index;\n })\n .map(({ node }) => node);\n}\n\nfunction resolveTitle(title: string, fallbackPath: string): string {\n return title && title !== 'No title.' ? title : fallbackPath;\n}\n\nfunction Chevron({ open }: { open: boolean }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"13\"\n height=\"13\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={clsx(styles['chevron'], open && styles['chevron-open'])}\n >\n <polyline points=\"9 6 15 12 9 18\" />\n </svg>\n );\n}\n\ninterface HrefContext {\n onLinkClick?: () => void;\n}\n\ninterface SidebarTreeProps extends HrefContext {\n nodes: tree_object[];\n depth: number;\n}\n\nfunction SidebarTree({ nodes, depth, onLinkClick }: SidebarTreeProps) {\n const sorted = useMemo(() => sortNodes(nodes), [nodes]);\n const { icon_transformer, current_path, path_transformer, language } = useDocumentationContext();\n return (\n <ul className={styles['list']} data-depth={depth}>\n {sorted.map((node) => {\n if (node.type === 'page') {\n const isActive = node.path === current_path;\n const icon = icon_transformer(node.frontmatter.icon);\n\n return (\n <li key={node.path} className={styles['item']}>\n <a\n href={path_transformer({ language, path: node.path })}\n className={clsx(styles['link'], isActive && styles['active'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={onLinkClick}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{resolveTitle(node.frontmatter.title, node.path)}</span>\n </a>\n </li>\n );\n }\n\n if (node.type === 'category') {\n return <CategoryItem key={node.path} category={node} depth={depth} onLinkClick={onLinkClick} />;\n }\n\n return null;\n })}\n </ul>\n );\n}\n\ninterface CategoryItemProps extends HrefContext {\n category: category_node;\n depth: number;\n}\n\nfunction CategoryItem({ category, depth, onLinkClick }: CategoryItemProps) {\n const { icon_transformer, current_path, path_transformer, language } = useDocumentationContext();\n\n const title = category?.frontmatter?.title ?? (category.page ? resolveTitle(category.page.frontmatter.title, category.path) : category.path);\n\n const iconName = category?.frontmatter?.icon ?? category?.page?.frontmatter?.icon;\n const icon = icon_transformer(iconName);\n\n const childNodes = category.children;\n\n const hasChildren = childNodes.length > 0;\n const isIndexActive = category.page ? category.page.path === current_path : false;\n\n const [open, setOpen] = useState(true);\n\n return (\n <li className={styles['item']}>\n <div className={styles['row']}>\n {category.page ? (\n <a\n href={path_transformer({ language, path: category.page.path })}\n className={clsx(styles['link'], styles['category-link'], isIndexActive && styles['active'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={onLinkClick}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{title}</span>\n </a>\n ) : (\n <button\n type=\"button\"\n className={clsx(styles['link'], styles['category-label'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={() => hasChildren && setOpen((o) => !o)}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{title}</span>\n </button>\n )}\n\n {hasChildren && (\n <button\n type=\"button\"\n className={styles['toggle']}\n aria-label={open ? 'Collapse' : 'Expand'}\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <Chevron open={open} />\n </button>\n )}\n </div>\n\n {hasChildren && open && <SidebarTree nodes={childNodes} depth={depth + 1} onLinkClick={onLinkClick} />}\n </li>\n );\n}\n"],"mappings":"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"}
@@ -1,162 +0,0 @@
1
- import { useDocumentationContext as e } from "./contexts/documentation.es.js";
2
- import { t } from "./clsx-CaAiuA5w.js";
3
- import { useEffect as n, useMemo as r, useState as i } from "react";
4
- import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
5
- import './assets/sidebar.css';var c = {
6
- sidebar: "_sidebar_1n87n_1",
7
- overlay: "_overlay_1n87n_33",
8
- "sidebar-open": "_sidebar-open_1n87n_55",
9
- fadeIn: "_fadeIn_1n87n_1",
10
- nav: "_nav_1n87n_89",
11
- list: "_list_1n87n_94",
12
- item: "_item_1n87n_103",
13
- row: "_row_1n87n_107",
14
- link: "_link_1n87n_112",
15
- "category-label": "_category-label_1n87n_113",
16
- "category-link": "_category-link_1n87n_147",
17
- active: "_active_1n87n_154",
18
- toggle: "_toggle_1n87n_165",
19
- chevron: "_chevron_1n87n_188",
20
- "chevron-open": "_chevron-open_1n87n_192",
21
- icon: "_icon_1n87n_196",
22
- label: "_label_1n87n_206"
23
- };
24
- //#endregion
25
- //#region src/components/documentation/sidebar/index.tsx
26
- function l({ className: r, children: i, ...l }) {
27
- let { is_sidebar_open: u, close_sidebar: d, tree: f, current_path: p, path_transformer: h, icon_transformer: g } = e();
28
- return n(() => (u ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
29
- document.body.style.overflow = "";
30
- }), [u]), /* @__PURE__ */ s(a, { children: [u && /* @__PURE__ */ o("div", {
31
- className: c.overlay,
32
- onClick: d
33
- }), /* @__PURE__ */ s("aside", {
34
- className: t(c.sidebar, u && c["sidebar-open"], r),
35
- ...l,
36
- children: [/* @__PURE__ */ o("nav", {
37
- className: c.nav,
38
- children: /* @__PURE__ */ o(m, {
39
- nodes: f,
40
- depth: 1,
41
- onLinkClick: d
42
- })
43
- }), i]
44
- })] });
45
- }
46
- function u(e) {
47
- return e.type === "category" ? e?.frontmatter?.order ?? Infinity : e.type === "page" ? e.frontmatter.order ?? Infinity : Infinity;
48
- }
49
- function d(e) {
50
- return e.map((e, t) => ({
51
- node: e,
52
- index: t
53
- })).sort((e, t) => {
54
- let n = u(e.node) - u(t.node);
55
- return n === 0 ? e.index - t.index : n;
56
- }).map(({ node: e }) => e);
57
- }
58
- function f(e, t) {
59
- return e && e !== "No title." ? e : t;
60
- }
61
- function p({ open: e }) {
62
- return /* @__PURE__ */ o("svg", {
63
- viewBox: "0 0 24 24",
64
- width: "13",
65
- height: "13",
66
- fill: "none",
67
- stroke: "currentColor",
68
- strokeWidth: "2.5",
69
- strokeLinecap: "round",
70
- strokeLinejoin: "round",
71
- className: t(c.chevron, e && c["chevron-open"]),
72
- children: /* @__PURE__ */ o("polyline", { points: "9 6 15 12 9 18" })
73
- });
74
- }
75
- function m({ nodes: n, depth: i, onLinkClick: a }) {
76
- let l = r(() => d(n), [n]), { icon_transformer: u, current_path: p, path_transformer: m, language: g } = e();
77
- return /* @__PURE__ */ o("ul", {
78
- className: c.list,
79
- "data-depth": i,
80
- children: l.map((e) => {
81
- if (e.type === "page") {
82
- let n = e.path === p, r = u(e.frontmatter.icon);
83
- return /* @__PURE__ */ o("li", {
84
- className: c.item,
85
- children: /* @__PURE__ */ s("a", {
86
- href: m({
87
- language: g,
88
- path: e.path
89
- }),
90
- className: t(c.link, n && c.active),
91
- style: { "--depth": i },
92
- onClick: a,
93
- children: [r && /* @__PURE__ */ o("span", {
94
- className: c.icon,
95
- children: r
96
- }), /* @__PURE__ */ o("span", {
97
- className: c.label,
98
- children: f(e.frontmatter.title, e.path)
99
- })]
100
- })
101
- }, e.path);
102
- }
103
- return e.type === "category" ? /* @__PURE__ */ o(h, {
104
- category: e,
105
- depth: i,
106
- onLinkClick: a
107
- }, e.path) : null;
108
- })
109
- });
110
- }
111
- function h({ category: n, depth: r, onLinkClick: a }) {
112
- let { icon_transformer: l, current_path: u, path_transformer: d, language: h } = e(), g = n?.frontmatter?.title ?? (n.page ? f(n.page.frontmatter.title, n.path) : n.path), _ = l(n?.frontmatter?.icon ?? n?.page?.frontmatter?.icon), v = n.children, y = v.length > 0, b = n.page ? n.page.path === u : !1, [x, S] = i(!0);
113
- return /* @__PURE__ */ s("li", {
114
- className: c.item,
115
- children: [/* @__PURE__ */ s("div", {
116
- className: c.row,
117
- children: [n.page ? /* @__PURE__ */ s("a", {
118
- href: d({
119
- language: h,
120
- path: n.page.path
121
- }),
122
- className: t(c.link, c["category-link"], b && c.active),
123
- style: { "--depth": r },
124
- onClick: a,
125
- children: [_ && /* @__PURE__ */ o("span", {
126
- className: c.icon,
127
- children: _
128
- }), /* @__PURE__ */ o("span", {
129
- className: c.label,
130
- children: g
131
- })]
132
- }) : /* @__PURE__ */ s("button", {
133
- type: "button",
134
- className: t(c.link, c["category-label"]),
135
- style: { "--depth": r },
136
- onClick: () => y && S((e) => !e),
137
- children: [_ && /* @__PURE__ */ o("span", {
138
- className: c.icon,
139
- children: _
140
- }), /* @__PURE__ */ o("span", {
141
- className: c.label,
142
- children: g
143
- })]
144
- }), y && /* @__PURE__ */ o("button", {
145
- type: "button",
146
- className: c.toggle,
147
- "aria-label": x ? "Collapse" : "Expand",
148
- "aria-expanded": x,
149
- onClick: () => S((e) => !e),
150
- children: /* @__PURE__ */ o(p, { open: x })
151
- })]
152
- }), y && x && /* @__PURE__ */ o(m, {
153
- nodes: v,
154
- depth: r + 1,
155
- onLinkClick: a
156
- })]
157
- });
158
- }
159
- //#endregion
160
- export { l as t };
161
-
162
- //# sourceMappingURL=sidebar-aXd_UA6s.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sidebar-aXd_UA6s.js","names":[],"sources":["../../styles/src/components/documentation/sidebar/index.module.css","../src/components/documentation/sidebar/index.tsx"],"sourcesContent":[".sidebar {\n min-width: var(--_sleetch-sidebar-width);\n height: calc(100vh - var(--_sleetch-header-height));\n position: sticky;\n top: var(--_sleetch-header-height);\n color: var(--_sleetch-color-text);\n padding: 4em 1.5em;\n border-right: 1px dashed var(--_sleetch-color-muted);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--_sleetch-color-muted) transparent;\n}\n\n.sidebar::-webkit-scrollbar {\n width: 6px;\n}\n\n.sidebar::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.sidebar::-webkit-scrollbar-thumb {\n background-color: var(--_sleetch-color-muted);\n border-radius: 3px;\n}\n\n.sidebar::-webkit-scrollbar-thumb:hover {\n background-color: var(--_sleetch-color-muted-foreground);\n}\n\n.overlay {\n display: none;\n}\n\n@media (max-width: 768px) {\n .sidebar {\n position: fixed;\n top: var(--_sleetch-header-height);\n left: 0;\n bottom: 0;\n width: 280px;\n min-width: 280px;\n max-width: 85vw;\n z-index: 90;\n background-color: var(--_sleetch-color-background);\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n padding: 2em 1.5em;\n border-right: 1px solid var(--_sleetch-color-border);\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.3);\n }\n\n .sidebar-open {\n transform: translateX(0);\n }\n\n .overlay {\n display: block;\n position: fixed;\n top: var(--_sleetch-header-height);\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 89;\n backdrop-filter: blur(2px);\n animation: fadeIn 0.3s ease;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n}\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .sidebar {\n min-width: 260px;\n padding: 3em 1.2em;\n }\n}\n\n.nav {\n display: flex;\n flex-direction: column;\n}\n\n.list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.item {\n min-width: 0;\n}\n\n.row {\n display: flex;\n align-items: center;\n}\n\n.link,\n.category-label {\n --depth: 1;\n flex: 1;\n display: flex;\n align-items: center;\n gap: 0.55em;\n width: 100%;\n min-width: 0;\n margin-left: -1px;\n padding-block: 0.4em;\n padding-left: calc(1em + (var(--depth) - 1) * 1em);\n padding-right: 0.5em;\n border: none;\n border-left: 3px solid transparent;\n background: none;\n font-family: var(--_sleetch-font-base);\n font-size: calc(1em - (var(--depth) - 1) * 0.03em);\n line-height: 1.3;\n text-align: left;\n color: var(--_sleetch-color-muted-foreground);\n text-decoration: none;\n cursor: pointer;\n transition:\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.link:hover,\n.category-label:hover {\n color: var(--_sleetch-color-text);\n}\n\n.category-link,\n.category-label {\n font-weight: var(--_sleetch-font-weight-heading);\n color: var(--_sleetch-color-text);\n padding-top: 0.5em;\n}\n\n.active {\n border-left-color: var(--_sleetch-color-text-primary);\n background: color-mix(in srgb, var(--_sleetch-color-text-underline) 35%, transparent);\n color: var(--_sleetch-color-text);\n transform: translateX(4px);\n}\n\n.active:hover {\n transform: translateX(6px);\n}\n\n.toggle {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.7em;\n height: 1.7em;\n margin-right: 0.2em;\n background: none;\n border: none;\n border-radius: var(--_sleetch-radius);\n color: var(--_sleetch-color-muted-foreground);\n cursor: pointer;\n transition:\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.toggle:hover {\n background-color: var(--_sleetch-color-card);\n color: var(--_sleetch-color-text);\n}\n\n.chevron {\n transition: transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.chevron-open {\n transform: rotate(90deg);\n}\n\n.icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.1em;\n height: 1.1em;\n opacity: 0.75;\n}\n\n.label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","/*\n AI Generated :(\n Needs more testing\n*/\n\nimport type { BaseHTMLAttributes, ReactNode } from 'react';\nimport { useMemo, useState, useEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from '@sleetch/styles/components/documentation/sidebar/index.module.css';\nimport type { tree_object } from '@sleetch/core/compiler';\nimport { useDocumentationContext } from 'packages/react/src/contexts/documentation';\n\nexport interface DocumentationSidebarProps extends BaseHTMLAttributes<HTMLBaseElement> {}\n\nexport function DocumentationSidebar({ className, children, ...props }: DocumentationSidebarProps) {\n const { is_sidebar_open, close_sidebar, tree, current_path, path_transformer, icon_transformer } = useDocumentationContext();\n\n useEffect(() => {\n if (is_sidebar_open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [is_sidebar_open]);\n\n return (\n <>\n {is_sidebar_open && <div className={styles['overlay']} onClick={close_sidebar} />}\n <aside className={clsx(styles['sidebar'], is_sidebar_open && styles['sidebar-open'], className)} {...props}>\n <nav className={styles['nav']}>\n <SidebarTree nodes={tree} depth={1} onLinkClick={close_sidebar} />\n </nav>\n {children}\n </aside>\n </>\n );\n}\n\ntype category_node = Extract<tree_object, { type: 'category' }>;\ntype page_node = Extract<tree_object, { type: 'page' }>;\ntype data_node = Extract<tree_object, { type: 'data' }>;\n\nfunction getOrder(node: tree_object): number {\n if (node.type === 'category') {\n return node?.frontmatter?.order ?? Number.POSITIVE_INFINITY;\n }\n if (node.type === 'page') {\n return (node.frontmatter as { order?: number }).order ?? Number.POSITIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n}\n\nfunction sortNodes(nodes: tree_object[]): tree_object[] {\n return nodes\n .map((node, index) => ({ node, index }))\n .sort((a, b) => {\n const diff = getOrder(a.node) - getOrder(b.node);\n return diff !== 0 ? diff : a.index - b.index;\n })\n .map(({ node }) => node);\n}\n\nfunction resolveTitle(title: string, fallbackPath: string): string {\n return title && title !== 'No title.' ? title : fallbackPath;\n}\n\nfunction Chevron({ open }: { open: boolean }) {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"13\"\n height=\"13\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={clsx(styles['chevron'], open && styles['chevron-open'])}\n >\n <polyline points=\"9 6 15 12 9 18\" />\n </svg>\n );\n}\n\ninterface HrefContext {\n onLinkClick?: () => void;\n}\n\ninterface SidebarTreeProps extends HrefContext {\n nodes: tree_object[];\n depth: number;\n}\n\nfunction SidebarTree({ nodes, depth, onLinkClick }: SidebarTreeProps) {\n const sorted = useMemo(() => sortNodes(nodes), [nodes]);\n const { icon_transformer, current_path, path_transformer, language } = useDocumentationContext();\n return (\n <ul className={styles['list']} data-depth={depth}>\n {sorted.map((node) => {\n if (node.type === 'page') {\n const isActive = node.path === current_path;\n const icon = icon_transformer(node.frontmatter.icon);\n\n return (\n <li key={node.path} className={styles['item']}>\n <a\n href={path_transformer({ language, path: node.path })}\n className={clsx(styles['link'], isActive && styles['active'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={onLinkClick}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{resolveTitle(node.frontmatter.title, node.path)}</span>\n </a>\n </li>\n );\n }\n\n if (node.type === 'category') {\n return <CategoryItem key={node.path} category={node} depth={depth} onLinkClick={onLinkClick} />;\n }\n\n return null;\n })}\n </ul>\n );\n}\n\ninterface CategoryItemProps extends HrefContext {\n category: category_node;\n depth: number;\n}\n\nfunction CategoryItem({ category, depth, onLinkClick }: CategoryItemProps) {\n const { icon_transformer, current_path, path_transformer, language } = useDocumentationContext();\n\n const title = category?.frontmatter?.title ?? (category.page ? resolveTitle(category.page.frontmatter.title, category.path) : category.path);\n\n const iconName = category?.frontmatter?.icon ?? category?.page?.frontmatter?.icon;\n const icon = icon_transformer(iconName);\n\n const childNodes = category.children;\n\n const hasChildren = childNodes.length > 0;\n const isIndexActive = category.page ? category.page.path === current_path : false;\n\n const [open, setOpen] = useState(true);\n\n return (\n <li className={styles['item']}>\n <div className={styles['row']}>\n {category.page ? (\n <a\n href={path_transformer({ language, path: category.page.path })}\n className={clsx(styles['link'], styles['category-link'], isIndexActive && styles['active'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={onLinkClick}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{title}</span>\n </a>\n ) : (\n <button\n type=\"button\"\n className={clsx(styles['link'], styles['category-label'])}\n style={{ '--depth': depth } as React.CSSProperties}\n onClick={() => hasChildren && setOpen((o) => !o)}\n >\n {icon && <span className={styles['icon']}>{icon}</span>}\n <span className={styles['label']}>{title}</span>\n </button>\n )}\n\n {hasChildren && (\n <button\n type=\"button\"\n className={styles['toggle']}\n aria-label={open ? 'Collapse' : 'Expand'}\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n >\n <Chevron open={open} />\n </button>\n )}\n </div>\n\n {hasChildren && open && <SidebarTree nodes={childNodes} depth={depth + 1} onLinkClick={onLinkClick} />}\n </li>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;ACcA,SAAgB,EAAqB,EAAE,cAAW,aAAU,GAAG,KAAoC;CACjG,IAAM,EAAE,oBAAiB,kBAAe,SAAM,iBAAc,qBAAkB,wBAAqB,EAAwB;CAa3H,OAXA,SACM,IACF,SAAS,KAAK,MAAM,WAAW,WAE/B,SAAS,KAAK,MAAM,WAAW,UAEpB;EACX,SAAS,KAAK,MAAM,WAAW;CACjC,IACC,CAAC,CAAe,CAAC,GAGlB,kBAAA,GAAA,EAAA,UAAA,CACG,KAAmB,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAY,SAAS;CAAgB,CAAA,GAChF,kBAAC,SAAD;EAAO,WAAW,EAAK,EAAO,SAAY,KAAmB,EAAO,iBAAiB,CAAS;EAAG,GAAI;EAArG,UAAA,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;GACrB,UAAA,kBAAC,GAAD;IAAa,OAAO;IAAM,OAAO;IAAG,aAAa;GAAgB,CAAA;EAC9D,CAAA,GACJ,CACI;CACP,CAAA,CAAA,EAAA,CAAA;AAEN;AAMA,SAAS,EAAS,GAA2B;CAO3C,OANI,EAAK,SAAS,aACT,GAAM,aAAa,SAAS,WAEjC,EAAK,SAAS,SACR,EAAK,YAAmC,SAAS,WAEpD;AACT;AAEA,SAAS,EAAU,GAAqC;CACtD,OAAO,EACJ,KAAK,GAAM,OAAW;EAAE;EAAM;CAAM,EAAE,CAAC,CACvC,MAAM,GAAG,MAAM;EACd,IAAM,IAAO,EAAS,EAAE,IAAI,IAAI,EAAS,EAAE,IAAI;EAC/C,OAAO,MAAS,IAAW,EAAE,QAAQ,EAAE,QAAnB;CACtB,CAAC,CAAC,CACD,KAAK,EAAE,cAAW,CAAI;AAC3B;AAEA,SAAS,EAAa,GAAe,GAA8B;CACjE,OAAO,KAAS,MAAU,cAAc,IAAQ;AAClD;AAEA,SAAS,EAAQ,EAAE,WAA2B;CAC5C,OACE,kBAAC,OAAD;EACE,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACL,QAAO;EACP,aAAY;EACZ,eAAc;EACd,gBAAe;EACf,WAAW,EAAK,EAAO,SAAY,KAAQ,EAAO,eAAe;EAEjE,UAAA,kBAAC,YAAD,EAAU,QAAO,iBAAkB,CAAA;CAChC,CAAA;AAET;AAWA,SAAS,EAAY,EAAE,UAAO,UAAO,kBAAiC;CACpE,IAAM,IAAS,QAAc,EAAU,CAAK,GAAG,CAAC,CAAK,CAAC,GAChD,EAAE,qBAAkB,iBAAc,qBAAkB,gBAAa,EAAwB;CAC/F,OACE,kBAAC,MAAD;EAAI,WAAW,EAAO;EAAS,cAAY;EACxC,UAAA,EAAO,KAAK,MAAS;GACpB,IAAI,EAAK,SAAS,QAAQ;IACxB,IAAM,IAAW,EAAK,SAAS,GACzB,IAAO,EAAiB,EAAK,YAAY,IAAI;IAEnD,OACE,kBAAC,MAAD;KAAoB,WAAW,EAAO;KACpC,UAAA,kBAAC,KAAD;MACE,MAAM,EAAiB;OAAE;OAAU,MAAM,EAAK;MAAK,CAAC;MACpD,WAAW,EAAK,EAAO,MAAS,KAAY,EAAO,MAAS;MAC5D,OAAO,EAAE,WAAW,EAAM;MAC1B,SAAS;MAJX,UAAA,CAMG,KAAQ,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAU,UAAA;MAAW,CAAA,GACtD,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAW,UAAA,EAAa,EAAK,YAAY,OAAO,EAAK,IAAI;MAAQ,CAAA,CACxF;;IACD,GAVK,EAAK,IAUV;GAER;GAMA,OAJI,EAAK,SAAS,aACT,kBAAC,GAAD;IAA8B,UAAU;IAAa;IAAoB;GAAc,GAApE,EAAK,IAA+D,IAGzF;EACT,CAAC;CACC,CAAA;AAER;AAOA,SAAS,EAAa,EAAE,aAAU,UAAO,kBAAkC;CACzE,IAAM,EAAE,qBAAkB,iBAAc,qBAAkB,gBAAa,EAAwB,GAEzF,IAAQ,GAAU,aAAa,UAAU,EAAS,OAAO,EAAa,EAAS,KAAK,YAAY,OAAO,EAAS,IAAI,IAAI,EAAS,OAGjI,IAAO,EADI,GAAU,aAAa,QAAQ,GAAU,MAAM,aAAa,IACvC,GAEhC,IAAa,EAAS,UAEtB,IAAc,EAAW,SAAS,GAClC,IAAgB,EAAS,OAAO,EAAS,KAAK,SAAS,IAAe,IAEtE,CAAC,GAAM,KAAW,EAAS,EAAI;CAErC,OACE,kBAAC,MAAD;EAAI,WAAW,EAAO;EAAtB,UAAA,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAvB,UAAA,CACG,EAAS,OACR,kBAAC,KAAD;IACE,MAAM,EAAiB;KAAE;KAAU,MAAM,EAAS,KAAK;IAAK,CAAC;IAC7D,WAAW,EAAK,EAAO,MAAS,EAAO,kBAAkB,KAAiB,EAAO,MAAS;IAC1F,OAAO,EAAE,WAAW,EAAM;IAC1B,SAAS;IAJX,UAAA,CAMG,KAAQ,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAU,UAAA;IAAW,CAAA,GACtD,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAW,UAAA;IAAY,CAAA,CAC9C;GAEH,CAAA,IAAA,kBAAC,UAAD;IACE,MAAK;IACL,WAAW,EAAK,EAAO,MAAS,EAAO,iBAAiB;IACxD,OAAO,EAAE,WAAW,EAAM;IAC1B,eAAe,KAAe,GAAS,MAAM,CAAC,CAAC;IAJjD,UAAA,CAMG,KAAQ,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAU,UAAA;IAAW,CAAA,GACtD,kBAAC,QAAD;KAAM,WAAW,EAAO;KAAW,UAAA;IAAY,CAAA,CACzC;GAGT,CAAA,GAAA,KACC,kBAAC,UAAD;IACE,MAAK;IACL,WAAW,EAAO;IAClB,cAAY,IAAO,aAAa;IAChC,iBAAe;IACf,eAAe,GAAS,MAAM,CAAC,CAAC;IAEhC,UAAA,kBAAC,GAAD,EAAe,QAAO,CAAA;GAChB,CAAA,CAEP;EAEJ,CAAA,GAAA,KAAe,KAAQ,kBAAC,GAAD;GAAa,OAAO;GAAY,OAAO,IAAQ;GAAgB;EAAc,CAAA,CACnG;;AAER"}
@@ -1,2 +0,0 @@
1
- require('./assets/toc.css');const e=require("./clsx-GLXUd3yb.cjs");let t=require("react"),n=require("react/jsx-runtime");var r={default:`_default_bwrp8_1`,title:`_title_bwrp8_27`,track:`_track_bwrp8_34`,line:`_line_bwrp8_38`,gapDot:`_gapDot_bwrp8_48`,list:`_list_bwrp8_61`,item:`_item_bwrp8_72`,link:`_link_bwrp8_76`,active:`_active_bwrp8_109`};function i({className:i,children:a,page:o,...s}){let c=(0,t.use)(o).default.toc;if(c.length==0)return null;let[l,u]=(0,t.useState)(new Set),[d,f]=(0,t.useState)(null),p=(0,t.useRef)(null),m=(0,t.useRef)(new Map),h=(0,t.useRef)(null);return(0,t.useEffect)(()=>{if(c.length===0)return;let e=c.map(e=>document.getElementById(e.id)).filter(e=>e!==null);if(e.length===0)return;let t=new IntersectionObserver(e=>{u(t=>{let n=new Set(t);for(let t of e)t.isIntersecting?n.add(t.target.id):n.delete(t.target.id);return n})},{rootMargin:`0px 0px -70% 0px`,threshold:0});for(let n of e)t.observe(n);return()=>t.disconnect()},[c]),(0,t.useEffect)(()=>{if(l.size>0){let e=-1;c.forEach((t,n)=>{l.has(t.id)&&(e=n)}),h.current=e,f(null);return}let e=p.current,t=h.current;if(!e||t===null||t>=c.length-1){f(null);return}let n=m.current.get(c[t].id),r=m.current.get(c[t+1].id);if(!n||!r){f(null);return}let i=e.getBoundingClientRect(),a=n.getBoundingClientRect(),o=r.getBoundingClientRect(),s=(a.bottom-i.top+(o.top-i.top))/2;f(s)},[l,c]),(0,n.jsxs)(`aside`,{className:e.t(r.default,i),...s,children:[(0,n.jsx)(`h3`,{className:r.title,children:`On this page`}),(0,n.jsxs)(`div`,{className:r.track,ref:p,children:[(0,n.jsx)(`span`,{className:r.line,"aria-hidden":`true`}),d!==null&&(0,n.jsx)(`span`,{className:r.gapDot,style:{top:d},"aria-hidden":`true`}),(0,n.jsx)(`ul`,{className:r.list,children:c.map(t=>{let i=l.has(t.id),a={"--depth":t.level};return(0,n.jsx)(`li`,{className:r.item,ref:e=>{e?m.current.set(t.id,e):m.current.delete(t.id)},children:(0,n.jsx)(`a`,{href:`#${t.id}`,title:t.title,"aria-current":i?`location`:void 0,className:e.t(r.link,i&&r.active),style:a,children:t.title})},t.id)})})]})]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=toc-CI_8-KFH.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toc-CI_8-KFH.cjs","names":[],"sources":["../../styles/src/components/documentation/toc/index.module.css","../src/components/documentation/toc/index.tsx"],"sourcesContent":[".default {\n min-width: var(--_sleetch-toc-width);\n height: calc(100vh - var(--_sleetch-header-height));\n position: sticky;\n top: var(--_sleetch-header-height);\n color: var(--_sleetch-color-text);\n padding: 4em 2em;\n border-left: 1px dashed var(--_sleetch-color-border);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n@media (max-width: 1024px) {\n .default {\n display: none;\n }\n}\n\n@media (min-width: 1025px) and (max-width: 1280px) {\n .default {\n min-width: 220px;\n padding: 3em 1.5em;\n }\n}\n\n.title {\n margin: 0 0 0.5em;\n font-size: 0.9em;\n font-weight: var(--_sleetch-font-weight-heading);\n color: var(--_sleetch-color-text);\n}\n\n.track {\n position: relative;\n}\n\n.line {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 1px;\n background: var(--_sleetch-color-muted);\n z-index: 0;\n}\n\n.gapDot {\n position: absolute;\n left: 0;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--_sleetch-color-muted-foreground);\n transform: translate(-50%, -50%);\n z-index: 1;\n pointer-events: none;\n transition: top var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.list {\n position: relative; /* nécessaire pour que le z-index prenne le dessus sur .line */\n z-index: 1;\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.item {\n min-width: 0; /* requis pour que l'ellipsis fonctionne dans un flex/grid parent */\n}\n\n.link {\n --depth: 1;\n\n display: block;\n width: 100%;\n margin-left: -1px; /* centre la bordure de 3px sur la ligne de 1px */\n padding-block: 0.4em;\n padding-left: calc(1em + (var(--depth) - 1) * 0.85em);\n padding-right: 0.5em;\n\n border-left: 3px solid transparent;\n\n font-family: var(--_sleetch-font-base);\n font-size: calc(0.85em - (var(--depth) - 1) * 0.03em);\n line-height: 1.3;\n color: var(--_sleetch-color-muted-foreground);\n text-decoration: none;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n transition:\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.link:hover {\n color: var(--_sleetch-color-text);\n}\n\n.active {\n border-left-color: var(--_sleetch-color-text-primary);\n background: color-mix(in srgb, var(--_sleetch-color-text-underline) 35%, transparent);\n color: var(--_sleetch-color-text);\n transform: translateX(4px);\n}\n","/*\nAI Generated :(\nNeeds more testing\n*/\n\nimport { use, useEffect, useRef, useState, type BaseHTMLAttributes, type CSSProperties } from 'react';\nimport styles from '@sleetch/styles/components/documentation/toc/index.module.css';\nimport clsx from 'clsx';\nimport type { page_module } from '@sleetch/core/compiler';\n\nexport interface DocumentationTocProps extends BaseHTMLAttributes<HTMLBaseElement> {\n page: Promise<page_module>;\n}\n\ninterface TocLinkStyle extends CSSProperties {\n '--depth'?: number;\n}\n\nexport function DocumentationToc({ className, children, page, ...props }: DocumentationTocProps) {\n const value = use(page);\n const toc = value.default.toc;\n if (toc.length == 0) return null;\n\n const [activeIds, setActiveIds] = useState<Set<string>>(new Set());\n const [gapY, setGapY] = useState<number | null>(null);\n\n const trackRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<string, HTMLLIElement>>(new Map());\n const lastActiveIndexRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (toc.length === 0) return;\n\n const elements = toc.map((item) => document.getElementById(item.id)).filter((el): el is HTMLElement => el !== null);\n\n if (elements.length === 0) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n setActiveIds((prev) => {\n const next = new Set(prev);\n for (const entry of entries) {\n if (entry.isIntersecting) {\n next.add(entry.target.id);\n } else {\n next.delete(entry.target.id);\n }\n }\n return next;\n });\n },\n {\n rootMargin: '0px 0px -70% 0px',\n threshold: 0,\n }\n );\n\n for (const el of elements) observer.observe(el);\n\n return () => observer.disconnect();\n }, [toc]);\n\n useEffect(() => {\n if (activeIds.size > 0) {\n let maxIndex = -1;\n toc.forEach((item, i) => {\n if (activeIds.has(item.id)) maxIndex = i;\n });\n lastActiveIndexRef.current = maxIndex;\n setGapY(null);\n return;\n }\n\n const track = trackRef.current;\n const lastIndex = lastActiveIndexRef.current;\n\n if (!track || lastIndex === null || lastIndex >= toc.length - 1) {\n setGapY(null);\n return;\n }\n\n const currentLi = itemRefs.current.get(toc[lastIndex].id);\n const nextLi = itemRefs.current.get(toc[lastIndex + 1].id);\n\n if (!currentLi || !nextLi) {\n setGapY(null);\n return;\n }\n\n const trackRect = track.getBoundingClientRect();\n const currentRect = currentLi.getBoundingClientRect();\n const nextRect = nextLi.getBoundingClientRect();\n\n const y = (currentRect.bottom - trackRect.top + (nextRect.top - trackRect.top)) / 2;\n\n setGapY(y);\n }, [activeIds, toc]);\n\n return (\n <aside className={clsx(styles['default'], className)} {...props}>\n <h3 className={styles['title']}>On this page</h3>\n <div className={styles['track']} ref={trackRef}>\n <span className={styles['line']} aria-hidden=\"true\" />\n {gapY !== null && <span className={styles['gapDot']} style={{ top: gapY }} aria-hidden=\"true\" />}\n <ul className={styles['list']}>\n {toc.map((item) => {\n const focused = activeIds.has(item.id);\n const linkStyle: TocLinkStyle = { '--depth': item.level };\n\n return (\n <li\n key={item.id}\n className={styles['item']}\n ref={(el) => {\n if (el) itemRefs.current.set(item.id, el);\n else itemRefs.current.delete(item.id);\n }}\n >\n <a\n href={`#${item.id}`}\n title={item.title}\n aria-current={focused ? 'location' : undefined}\n className={clsx(styles['link'], focused && styles['active'])}\n style={linkStyle}\n >\n {item.title}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n </aside>\n );\n}\n"],"mappings":"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"}
@@ -1,103 +0,0 @@
1
- import { t as e } from "./clsx-CaAiuA5w.js";
2
- import { use as t, useEffect as n, useRef as r, useState as i } from "react";
3
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
- import './assets/toc.css';var s = {
5
- default: "_default_bwrp8_1",
6
- title: "_title_bwrp8_27",
7
- track: "_track_bwrp8_34",
8
- line: "_line_bwrp8_38",
9
- gapDot: "_gapDot_bwrp8_48",
10
- list: "_list_bwrp8_61",
11
- item: "_item_bwrp8_72",
12
- link: "_link_bwrp8_76",
13
- active: "_active_bwrp8_109"
14
- };
15
- //#endregion
16
- //#region src/components/documentation/toc/index.tsx
17
- function c({ className: c, children: l, page: u, ...d }) {
18
- let f = t(u).default.toc;
19
- if (f.length == 0) return null;
20
- let [p, m] = i(/* @__PURE__ */ new Set()), [h, g] = i(null), _ = r(null), v = r(/* @__PURE__ */ new Map()), y = r(null);
21
- return n(() => {
22
- if (f.length === 0) return;
23
- let e = f.map((e) => document.getElementById(e.id)).filter((e) => e !== null);
24
- if (e.length === 0) return;
25
- let t = new IntersectionObserver((e) => {
26
- m((t) => {
27
- let n = new Set(t);
28
- for (let t of e) t.isIntersecting ? n.add(t.target.id) : n.delete(t.target.id);
29
- return n;
30
- });
31
- }, {
32
- rootMargin: "0px 0px -70% 0px",
33
- threshold: 0
34
- });
35
- for (let n of e) t.observe(n);
36
- return () => t.disconnect();
37
- }, [f]), n(() => {
38
- if (p.size > 0) {
39
- let e = -1;
40
- f.forEach((t, n) => {
41
- p.has(t.id) && (e = n);
42
- }), y.current = e, g(null);
43
- return;
44
- }
45
- let e = _.current, t = y.current;
46
- if (!e || t === null || t >= f.length - 1) {
47
- g(null);
48
- return;
49
- }
50
- let n = v.current.get(f[t].id), r = v.current.get(f[t + 1].id);
51
- if (!n || !r) {
52
- g(null);
53
- return;
54
- }
55
- let i = e.getBoundingClientRect(), a = n.getBoundingClientRect(), o = r.getBoundingClientRect(), s = (a.bottom - i.top + (o.top - i.top)) / 2;
56
- g(s);
57
- }, [p, f]), /* @__PURE__ */ o("aside", {
58
- className: e(s.default, c),
59
- ...d,
60
- children: [/* @__PURE__ */ a("h3", {
61
- className: s.title,
62
- children: "On this page"
63
- }), /* @__PURE__ */ o("div", {
64
- className: s.track,
65
- ref: _,
66
- children: [
67
- /* @__PURE__ */ a("span", {
68
- className: s.line,
69
- "aria-hidden": "true"
70
- }),
71
- h !== null && /* @__PURE__ */ a("span", {
72
- className: s.gapDot,
73
- style: { top: h },
74
- "aria-hidden": "true"
75
- }),
76
- /* @__PURE__ */ a("ul", {
77
- className: s.list,
78
- children: f.map((t) => {
79
- let n = p.has(t.id), r = { "--depth": t.level };
80
- return /* @__PURE__ */ a("li", {
81
- className: s.item,
82
- ref: (e) => {
83
- e ? v.current.set(t.id, e) : v.current.delete(t.id);
84
- },
85
- children: /* @__PURE__ */ a("a", {
86
- href: `#${t.id}`,
87
- title: t.title,
88
- "aria-current": n ? "location" : void 0,
89
- className: e(s.link, n && s.active),
90
- style: r,
91
- children: t.title
92
- })
93
- }, t.id);
94
- })
95
- })
96
- ]
97
- })]
98
- });
99
- }
100
- //#endregion
101
- export { c as t };
102
-
103
- //# sourceMappingURL=toc-Dvn-UEjm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toc-Dvn-UEjm.js","names":[],"sources":["../../styles/src/components/documentation/toc/index.module.css","../src/components/documentation/toc/index.tsx"],"sourcesContent":[".default {\n min-width: var(--_sleetch-toc-width);\n height: calc(100vh - var(--_sleetch-header-height));\n position: sticky;\n top: var(--_sleetch-header-height);\n color: var(--_sleetch-color-text);\n padding: 4em 2em;\n border-left: 1px dashed var(--_sleetch-color-border);\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n@media (max-width: 1024px) {\n .default {\n display: none;\n }\n}\n\n@media (min-width: 1025px) and (max-width: 1280px) {\n .default {\n min-width: 220px;\n padding: 3em 1.5em;\n }\n}\n\n.title {\n margin: 0 0 0.5em;\n font-size: 0.9em;\n font-weight: var(--_sleetch-font-weight-heading);\n color: var(--_sleetch-color-text);\n}\n\n.track {\n position: relative;\n}\n\n.line {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 1px;\n background: var(--_sleetch-color-muted);\n z-index: 0;\n}\n\n.gapDot {\n position: absolute;\n left: 0;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--_sleetch-color-muted-foreground);\n transform: translate(-50%, -50%);\n z-index: 1;\n pointer-events: none;\n transition: top var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.list {\n position: relative; /* nécessaire pour que le z-index prenne le dessus sur .line */\n z-index: 1;\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.item {\n min-width: 0; /* requis pour que l'ellipsis fonctionne dans un flex/grid parent */\n}\n\n.link {\n --depth: 1;\n\n display: block;\n width: 100%;\n margin-left: -1px; /* centre la bordure de 3px sur la ligne de 1px */\n padding-block: 0.4em;\n padding-left: calc(1em + (var(--depth) - 1) * 0.85em);\n padding-right: 0.5em;\n\n border-left: 3px solid transparent;\n\n font-family: var(--_sleetch-font-base);\n font-size: calc(0.85em - (var(--depth) - 1) * 0.03em);\n line-height: 1.3;\n color: var(--_sleetch-color-muted-foreground);\n text-decoration: none;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n transition:\n color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n border-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n background-color var(--_sleetch-transition-duration) var(--_sleetch-transition-timing),\n transform var(--_sleetch-transition-duration) var(--_sleetch-transition-timing);\n}\n\n.link:hover {\n color: var(--_sleetch-color-text);\n}\n\n.active {\n border-left-color: var(--_sleetch-color-text-primary);\n background: color-mix(in srgb, var(--_sleetch-color-text-underline) 35%, transparent);\n color: var(--_sleetch-color-text);\n transform: translateX(4px);\n}\n","/*\nAI Generated :(\nNeeds more testing\n*/\n\nimport { use, useEffect, useRef, useState, type BaseHTMLAttributes, type CSSProperties } from 'react';\nimport styles from '@sleetch/styles/components/documentation/toc/index.module.css';\nimport clsx from 'clsx';\nimport type { page_module } from '@sleetch/core/compiler';\n\nexport interface DocumentationTocProps extends BaseHTMLAttributes<HTMLBaseElement> {\n page: Promise<page_module>;\n}\n\ninterface TocLinkStyle extends CSSProperties {\n '--depth'?: number;\n}\n\nexport function DocumentationToc({ className, children, page, ...props }: DocumentationTocProps) {\n const value = use(page);\n const toc = value.default.toc;\n if (toc.length == 0) return null;\n\n const [activeIds, setActiveIds] = useState<Set<string>>(new Set());\n const [gapY, setGapY] = useState<number | null>(null);\n\n const trackRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<string, HTMLLIElement>>(new Map());\n const lastActiveIndexRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (toc.length === 0) return;\n\n const elements = toc.map((item) => document.getElementById(item.id)).filter((el): el is HTMLElement => el !== null);\n\n if (elements.length === 0) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n setActiveIds((prev) => {\n const next = new Set(prev);\n for (const entry of entries) {\n if (entry.isIntersecting) {\n next.add(entry.target.id);\n } else {\n next.delete(entry.target.id);\n }\n }\n return next;\n });\n },\n {\n rootMargin: '0px 0px -70% 0px',\n threshold: 0,\n }\n );\n\n for (const el of elements) observer.observe(el);\n\n return () => observer.disconnect();\n }, [toc]);\n\n useEffect(() => {\n if (activeIds.size > 0) {\n let maxIndex = -1;\n toc.forEach((item, i) => {\n if (activeIds.has(item.id)) maxIndex = i;\n });\n lastActiveIndexRef.current = maxIndex;\n setGapY(null);\n return;\n }\n\n const track = trackRef.current;\n const lastIndex = lastActiveIndexRef.current;\n\n if (!track || lastIndex === null || lastIndex >= toc.length - 1) {\n setGapY(null);\n return;\n }\n\n const currentLi = itemRefs.current.get(toc[lastIndex].id);\n const nextLi = itemRefs.current.get(toc[lastIndex + 1].id);\n\n if (!currentLi || !nextLi) {\n setGapY(null);\n return;\n }\n\n const trackRect = track.getBoundingClientRect();\n const currentRect = currentLi.getBoundingClientRect();\n const nextRect = nextLi.getBoundingClientRect();\n\n const y = (currentRect.bottom - trackRect.top + (nextRect.top - trackRect.top)) / 2;\n\n setGapY(y);\n }, [activeIds, toc]);\n\n return (\n <aside className={clsx(styles['default'], className)} {...props}>\n <h3 className={styles['title']}>On this page</h3>\n <div className={styles['track']} ref={trackRef}>\n <span className={styles['line']} aria-hidden=\"true\" />\n {gapY !== null && <span className={styles['gapDot']} style={{ top: gapY }} aria-hidden=\"true\" />}\n <ul className={styles['list']}>\n {toc.map((item) => {\n const focused = activeIds.has(item.id);\n const linkStyle: TocLinkStyle = { '--depth': item.level };\n\n return (\n <li\n key={item.id}\n className={styles['item']}\n ref={(el) => {\n if (el) itemRefs.current.set(item.id, el);\n else itemRefs.current.delete(item.id);\n }}\n >\n <a\n href={`#${item.id}`}\n title={item.title}\n aria-current={focused ? 'location' : undefined}\n className={clsx(styles['link'], focused && styles['active'])}\n style={linkStyle}\n >\n {item.title}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n </aside>\n );\n}\n"],"mappings":"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"}