@sleetch/react 1.0.7 → 1.0.8

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 (127) 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/file-system.css +1 -1
  6. package/dist/assets/header.css +1 -1
  7. package/dist/assets/layout.css +1 -1
  8. package/dist/assets/navigation.css +1 -1
  9. package/dist/assets/sidebar.css +1 -1
  10. package/dist/assets/toc.css +1 -1
  11. package/dist/{button-BVRKTAnQ.js → button-B6mWWZyo.js} +7 -7
  12. package/dist/button-B6mWWZyo.js.map +1 -0
  13. package/dist/{button-rojnIyoM.cjs → button-DLQL3vVY.cjs} +2 -2
  14. package/dist/button-DLQL3vVY.cjs.map +1 -0
  15. package/dist/components/button.cjs.js +1 -1
  16. package/dist/components/button.es.js +1 -1
  17. package/dist/components/documentation/content.cjs.js +1 -1
  18. package/dist/components/documentation/content.es.js +1 -1
  19. package/dist/components/documentation/header.cjs.js +1 -1
  20. package/dist/components/documentation/header.es.js +1 -1
  21. package/dist/components/documentation/layout.cjs.js +1 -1
  22. package/dist/components/documentation/layout.es.js +1 -1
  23. package/dist/components/documentation/page/content.cjs.js +1 -1
  24. package/dist/components/documentation/page/content.d.ts +2 -2
  25. package/dist/components/documentation/page/content.es.js +1 -1
  26. package/dist/components/documentation/page/header.cjs.js +1 -1
  27. package/dist/components/documentation/page/header.cjs.js.map +1 -1
  28. package/dist/components/documentation/page/header.d.ts +2 -2
  29. package/dist/components/documentation/page/header.es.js +14 -16
  30. package/dist/components/documentation/page/header.es.js.map +1 -1
  31. package/dist/components/documentation/page/loader.cjs.js +2 -0
  32. package/dist/components/documentation/page/loader.cjs.js.map +1 -0
  33. package/dist/components/documentation/page/loader.d.ts +6 -0
  34. package/dist/components/documentation/page/loader.es.js +7 -0
  35. package/dist/components/documentation/page/loader.es.js.map +1 -0
  36. package/dist/components/documentation/page/navigation.cjs.js +1 -1
  37. package/dist/components/documentation/page/navigation.es.js +1 -1
  38. package/dist/components/documentation/sidebar/content.cjs.js +1 -1
  39. package/dist/components/documentation/sidebar/content.es.js +1 -1
  40. package/dist/components/documentation/sidebar/index.cjs.js +1 -1
  41. package/dist/components/documentation/sidebar/index.es.js +1 -1
  42. package/dist/components/documentation/toc/content.cjs.js +1 -1
  43. package/dist/components/documentation/toc/content.es.js +1 -1
  44. package/dist/components/documentation/toc/index.cjs.js +1 -1
  45. package/dist/components/documentation/toc/index.d.ts +2 -2
  46. package/dist/components/documentation/toc/index.es.js +1 -1
  47. package/dist/components/file-system.cjs.js +1 -1
  48. package/dist/components/file-system.es.js +1 -1
  49. package/dist/{content-CQ5PQ1-Z.cjs → content-8dXeWXcA.cjs} +2 -2
  50. package/dist/content-8dXeWXcA.cjs.map +1 -0
  51. package/dist/{content-DsE39ENV.cjs → content-BJ6O_X1Y.cjs} +2 -2
  52. package/dist/content-BJ6O_X1Y.cjs.map +1 -0
  53. package/dist/content-BU9cbvVn.cjs +2 -0
  54. package/dist/content-BU9cbvVn.cjs.map +1 -0
  55. package/dist/{content-DvLxAJYd.js → content-CP58YEGJ.js} +3 -3
  56. package/dist/content-CP58YEGJ.js.map +1 -0
  57. package/dist/content-CjmD3T8J.cjs +2 -0
  58. package/dist/content-CjmD3T8J.cjs.map +1 -0
  59. package/dist/content-D0ROn3Pd.js +36 -0
  60. package/dist/content-D0ROn3Pd.js.map +1 -0
  61. package/dist/{content-Wo136UBd.js → content-DmSVqH2f.js} +4 -4
  62. package/dist/content-DmSVqH2f.js.map +1 -0
  63. package/dist/{content-CoLxuTJs.js → content-eQM-qDRO.js} +4 -4
  64. package/dist/content-eQM-qDRO.js.map +1 -0
  65. package/dist/contexts/documentation.cjs.js +1 -1
  66. package/dist/contexts/documentation.cjs.js.map +1 -1
  67. package/dist/contexts/documentation.d.ts +1 -1
  68. package/dist/contexts/documentation.es.js +8 -8
  69. package/dist/contexts/documentation.es.js.map +1 -1
  70. package/dist/{file-system-Ca6fqwTn.cjs → file-system-BNu9B10z.cjs} +2 -2
  71. package/dist/file-system-BNu9B10z.cjs.map +1 -0
  72. package/dist/{file-system-CMsswKsJ.js → file-system-SWuikr8O.js} +12 -12
  73. package/dist/file-system-SWuikr8O.js.map +1 -0
  74. package/dist/{header-DDS6Ak-Z.js → header-1bJsyr4I.js} +7 -7
  75. package/dist/header-1bJsyr4I.js.map +1 -0
  76. package/dist/{header-CmQhY5Pa.cjs → header-3dQ5Gq3p.cjs} +2 -2
  77. package/dist/header-3dQ5Gq3p.cjs.map +1 -0
  78. package/dist/index.cjs.js +1 -1
  79. package/dist/index.d.ts +10 -9
  80. package/dist/index.es.js +15 -14
  81. package/dist/{layout-C_NguCrO.js → layout-BE3-MmWB.js} +2 -2
  82. package/dist/layout-BE3-MmWB.js.map +1 -0
  83. package/dist/{layout-B9nkyVRH.cjs → layout-vfa7JhoC.cjs} +2 -2
  84. package/dist/layout-vfa7JhoC.cjs.map +1 -0
  85. package/dist/{navigation-bIVcotMC.js → navigation-BWmLA_nr.js} +37 -37
  86. package/dist/navigation-BWmLA_nr.js.map +1 -0
  87. package/dist/navigation-D6nkWYOB.cjs +2 -0
  88. package/dist/navigation-D6nkWYOB.cjs.map +1 -0
  89. package/dist/sidebar-D7bXjwCm.js +162 -0
  90. package/dist/sidebar-D7bXjwCm.js.map +1 -0
  91. package/dist/sidebar-DSOeiBFI.cjs +2 -0
  92. package/dist/sidebar-DSOeiBFI.cjs.map +1 -0
  93. package/dist/toc-DkBTetNW.cjs +2 -0
  94. package/dist/toc-DkBTetNW.cjs.map +1 -0
  95. package/dist/toc-rfPQJ_Pf.js +101 -0
  96. package/dist/toc-rfPQJ_Pf.js.map +1 -0
  97. package/package.json +47 -47
  98. package/dist/button-BVRKTAnQ.js.map +0 -1
  99. package/dist/button-rojnIyoM.cjs.map +0 -1
  100. package/dist/content-CQ5PQ1-Z.cjs.map +0 -1
  101. package/dist/content-CoLxuTJs.js.map +0 -1
  102. package/dist/content-DOo3vcgG.cjs +0 -2
  103. package/dist/content-DOo3vcgG.cjs.map +0 -1
  104. package/dist/content-DsE39ENV.cjs.map +0 -1
  105. package/dist/content-DvLxAJYd.js.map +0 -1
  106. package/dist/content-KDKeEwv-.cjs +0 -2
  107. package/dist/content-KDKeEwv-.cjs.map +0 -1
  108. package/dist/content-Wo136UBd.js.map +0 -1
  109. package/dist/content-xKdbA544.js +0 -37
  110. package/dist/content-xKdbA544.js.map +0 -1
  111. package/dist/file-system-CMsswKsJ.js.map +0 -1
  112. package/dist/file-system-Ca6fqwTn.cjs.map +0 -1
  113. package/dist/header-CmQhY5Pa.cjs.map +0 -1
  114. package/dist/header-DDS6Ak-Z.js.map +0 -1
  115. package/dist/layout-B9nkyVRH.cjs.map +0 -1
  116. package/dist/layout-C_NguCrO.js.map +0 -1
  117. package/dist/navigation-BCpfEaXG.cjs +0 -2
  118. package/dist/navigation-BCpfEaXG.cjs.map +0 -1
  119. package/dist/navigation-bIVcotMC.js.map +0 -1
  120. package/dist/sidebar-CiheJpEa.cjs +0 -2
  121. package/dist/sidebar-CiheJpEa.cjs.map +0 -1
  122. package/dist/sidebar-aXd_UA6s.js +0 -162
  123. package/dist/sidebar-aXd_UA6s.js.map +0 -1
  124. package/dist/toc-CI_8-KFH.cjs +0 -2
  125. package/dist/toc-CI_8-KFH.cjs.map +0 -1
  126. package/dist/toc-Dvn-UEjm.js +0 -103
  127. package/dist/toc-Dvn-UEjm.js.map +0 -1
@@ -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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"}