@sleetch/react 1.0.4 → 1.0.5

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 (93) hide show
  1. package/dist/{button-DWM5D_of.cjs → button-BeAWWhRN.cjs} +2 -2
  2. package/dist/{button-DWM5D_of.cjs.map → button-BeAWWhRN.cjs.map} +1 -1
  3. package/dist/{button-B1pw1TFm.js → button-WIi-MWq9.js} +2 -2
  4. package/dist/{button-B1pw1TFm.js.map → button-WIi-MWq9.js.map} +1 -1
  5. package/dist/{clsx-CeX9s6vy.js → clsx-CaAiuA5w.js} +7 -5
  6. package/dist/{clsx-CeX9s6vy.js.map → clsx-CaAiuA5w.js.map} +1 -1
  7. package/dist/clsx-GLXUd3yb.cjs +2 -0
  8. package/dist/{clsx-CPcBvw4Z.cjs.map → clsx-GLXUd3yb.cjs.map} +1 -1
  9. package/dist/components/button.cjs.js +1 -1
  10. package/dist/components/button.es.js +2 -0
  11. package/dist/components/documentation/connected-header.cjs.js +1 -1
  12. package/dist/components/documentation/{connected-header.esm.js → connected-header.es.js} +3 -3
  13. package/dist/components/documentation/connected-header.es.js.map +1 -0
  14. package/dist/components/documentation/connected-sidebar.cjs.js +1 -1
  15. package/dist/components/documentation/{connected-sidebar.esm.js → connected-sidebar.es.js} +3 -3
  16. package/dist/components/documentation/connected-sidebar.es.js.map +1 -0
  17. package/dist/components/documentation/content.cjs.js +1 -1
  18. package/dist/components/documentation/content.es.js +2 -0
  19. package/dist/components/documentation/header.cjs.js +1 -1
  20. package/dist/components/documentation/header.es.js +2 -0
  21. package/dist/components/documentation/layout.cjs.js +1 -1
  22. package/dist/components/documentation/{layout.esm.js → layout.es.js} +1 -1
  23. package/dist/components/documentation/page/content.cjs.js +1 -1
  24. package/dist/components/documentation/page/header.cjs.js +1 -1
  25. package/dist/components/documentation/page/header.cjs.js.map +1 -1
  26. package/dist/components/documentation/page/{header.esm.js → header.es.js} +3 -3
  27. package/dist/components/documentation/page/header.es.js.map +1 -0
  28. package/dist/components/documentation/page/navigation.cjs.js +1 -1
  29. package/dist/components/documentation/page/navigation.es.js +2 -0
  30. package/dist/components/documentation/sidebar/content.cjs.js +1 -1
  31. package/dist/components/documentation/sidebar/content.es.js +2 -0
  32. package/dist/components/documentation/sidebar/index.cjs.js +1 -1
  33. package/dist/components/documentation/sidebar/index.es.js +2 -0
  34. package/dist/components/documentation/toc/content.cjs.js +1 -1
  35. package/dist/components/documentation/toc/content.es.js +2 -0
  36. package/dist/components/documentation/toc/index.cjs.js +1 -1
  37. package/dist/components/documentation/toc/index.es.js +2 -0
  38. package/dist/{content-CRXZ7aLX.js → content-Bnjq-GtR.js} +2 -2
  39. package/dist/{content-CRXZ7aLX.js.map → content-Bnjq-GtR.js.map} +1 -1
  40. package/dist/{content-_OkOg-pq.cjs → content-CqUGhbCF.cjs} +2 -2
  41. package/dist/{content-_OkOg-pq.cjs.map → content-CqUGhbCF.cjs.map} +1 -1
  42. package/dist/{content-CePPkmqw.cjs → content-DJNzy3NF.cjs} +2 -2
  43. package/dist/{content-D_P9xOgL.cjs.map → content-DJNzy3NF.cjs.map} +1 -1
  44. package/dist/{content-mbVWCXX0.js → content-Dit2HthD.js} +2 -2
  45. package/dist/{content-mbVWCXX0.js.map → content-Dit2HthD.js.map} +1 -1
  46. package/dist/content-DusAp8Q6.js.map +1 -1
  47. package/dist/{content-x_2bnG7q.js → content-a-BY0A0H.js} +2 -2
  48. package/dist/{content-x_2bnG7q.js.map → content-a-BY0A0H.js.map} +1 -1
  49. package/dist/content-chbzPH8e.cjs +2 -0
  50. package/dist/{content-r8d8MkOf.cjs.map → content-chbzPH8e.cjs.map} +1 -1
  51. package/dist/{content-D_P9xOgL.cjs → content-t22ieOoh.cjs} +2 -2
  52. package/dist/{content-CePPkmqw.cjs.map → content-t22ieOoh.cjs.map} +1 -1
  53. package/dist/file-system-BtXBcLmT.js.map +1 -1
  54. package/dist/file-system-Dr4N-WNs.cjs.map +1 -1
  55. package/dist/{header-DbR9X4YP.cjs → header-CYEQU5cQ.cjs} +2 -2
  56. package/dist/{header-DbR9X4YP.cjs.map → header-CYEQU5cQ.cjs.map} +1 -1
  57. package/dist/{header-D59bdlay.js → header-sU8dWMtq.js} +2 -2
  58. package/dist/{header-D59bdlay.js.map → header-sU8dWMtq.js.map} +1 -1
  59. package/dist/index.cjs.js +1 -1
  60. package/dist/{index.esm.js → index.es.js} +12 -12
  61. package/dist/{layout-BRE4zrjG.js → layout-8L0QXbyL.js} +2 -2
  62. package/dist/{layout-BRE4zrjG.js.map → layout-8L0QXbyL.js.map} +1 -1
  63. package/dist/{layout-D6mjobyq.cjs → layout-S6NKDwxp.cjs} +2 -2
  64. package/dist/{layout-D6mjobyq.cjs.map → layout-S6NKDwxp.cjs.map} +1 -1
  65. package/dist/navigation-B9LRrcfi.cjs +2 -0
  66. package/dist/{navigation-BdVu1Uh-.cjs.map → navigation-B9LRrcfi.cjs.map} +1 -1
  67. package/dist/{navigation-kP1-q7Ux.js → navigation-C9yFcqfd.js} +3 -3
  68. package/dist/{navigation-kP1-q7Ux.js.map → navigation-C9yFcqfd.js.map} +1 -1
  69. package/dist/{sidebar-DgVlWEfQ.js → sidebar-L0Psnc5-.js} +3 -3
  70. package/dist/{sidebar-DgVlWEfQ.js.map → sidebar-L0Psnc5-.js.map} +1 -1
  71. package/dist/{sidebar-DGEZFbBi.cjs → sidebar-itvEMQwG.cjs} +2 -2
  72. package/dist/{sidebar-DGEZFbBi.cjs.map → sidebar-itvEMQwG.cjs.map} +1 -1
  73. package/dist/{toc-BuFdWsti.js → toc-DDk-G4gk.js} +4 -4
  74. package/dist/{toc-BuFdWsti.js.map → toc-DDk-G4gk.js.map} +1 -1
  75. package/dist/{toc-CMwm46RH.cjs → toc-Do6Ltevt.cjs} +2 -2
  76. package/dist/{toc-CMwm46RH.cjs.map → toc-Do6Ltevt.cjs.map} +1 -1
  77. package/package.json +4 -4
  78. package/dist/clsx-CPcBvw4Z.cjs +0 -2
  79. package/dist/components/button.esm.js +0 -2
  80. package/dist/components/documentation/connected-header.esm.js.map +0 -1
  81. package/dist/components/documentation/connected-sidebar.esm.js.map +0 -1
  82. package/dist/components/documentation/content.esm.js +0 -2
  83. package/dist/components/documentation/header.esm.js +0 -2
  84. package/dist/components/documentation/page/header.esm.js.map +0 -1
  85. package/dist/components/documentation/page/navigation.esm.js +0 -2
  86. package/dist/components/documentation/sidebar/content.esm.js +0 -2
  87. package/dist/components/documentation/sidebar/index.esm.js +0 -2
  88. package/dist/components/documentation/toc/content.esm.js +0 -2
  89. package/dist/components/documentation/toc/index.esm.js +0 -2
  90. package/dist/content-r8d8MkOf.cjs +0 -2
  91. package/dist/navigation-BdVu1Uh-.cjs +0 -2
  92. /package/dist/components/documentation/page/{content.esm.js → content.es.js} +0 -0
  93. /package/dist/components/{file-system.esm.js → file-system.es.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"toc-CMwm46RH.cjs","names":[],"sources":["../../styles/src/components/documentation/toc/index.module.css","../src/components/documentation/toc/index.tsx"],"sourcesContent":["@import '../../../variables.css';\n\n.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-muted);\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 { markdown_module } from '@sleetch/core/compiler';\n\nexport interface DocumentationTocProps extends BaseHTMLAttributes<HTMLBaseElement> {\n page: Promise<markdown_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
+ {"version":3,"file":"toc-Do6Ltevt.cjs","names":[],"sources":["../../styles/src/components/documentation/toc/index.module.css","../src/components/documentation/toc/index.tsx"],"sourcesContent":["@import '../../../variables.css';\n\n.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-muted);\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 { markdown_module } from '@sleetch/core/compiler';\n\nexport interface DocumentationTocProps extends BaseHTMLAttributes<HTMLBaseElement> {\n page: Promise<markdown_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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleetch/react",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,9 +29,9 @@
29
29
  "react-dom": "^18.0.0 || ^19.0.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@sleetch/core": "1.0.4",
33
- "@sleetch/styles": "1.0.4",
34
- "@sleetch/vite": "1.0.4",
32
+ "@sleetch/core": "1.0.5",
33
+ "@sleetch/styles": "1.0.5",
34
+ "@sleetch/vite": "1.0.5",
35
35
  "@types/mdx": "^2.0.14",
36
36
  "@types/react": "^19",
37
37
  "@types/react-dom": "^19",
@@ -1,2 +0,0 @@
1
- function e(t){var n,r,i=``;if(typeof t==`string`||typeof t==`number`)i+=t;else if(typeof t==`object`)if(Array.isArray(t)){var a=t.length;for(n=0;n<a;n++)t[n]&&(r=e(t[n]))&&(i&&(i+=` `),i+=r)}else for(r in t)t[r]&&(i&&(i+=` `),i+=r);return i}function t(){for(var t,n,r=0,i=``,a=arguments.length;r<a;r++)(t=arguments[r])&&(n=e(t))&&(i&&(i+=` `),i+=n);return i}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return t}});
2
- //# sourceMappingURL=clsx-CPcBvw4Z.cjs.map
@@ -1,2 +0,0 @@
1
- import { t as e } from "../button-B1pw1TFm.js";
2
- export { e as Button };
@@ -1 +0,0 @@
1
- {"version":3,"file":"connected-header.esm.js","names":[],"sources":["../../../src/components/documentation/connected-header.tsx"],"sourcesContent":["import type { BaseHTMLAttributes } from 'react';\nimport { DocumentationHeader } from './header';\nimport { useDocumentationLayout } from './layout';\n\nexport interface ConnectedDocumentationHeaderProps extends BaseHTMLAttributes<HTMLDivElement> {}\n\nexport function ConnectedDocumentationHeader(props: ConnectedDocumentationHeaderProps) {\n const { toggleSidebar } = useDocumentationLayout();\n\n return <DocumentationHeader onMenuToggle={toggleSidebar} {...props} />;\n}\n"],"mappings":";;;;AAMA,SAAgB,EAA6B,GAA0C;CACrF,IAAM,EAAE,qBAAkB,EAAuB;CAEjD,OAAO,kBAAC,GAAD;EAAqB,cAAc;EAAe,GAAI;CAAQ,CAAA;AACvE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"connected-sidebar.esm.js","names":[],"sources":["../../../src/components/documentation/connected-sidebar.tsx"],"sourcesContent":["import type { BaseHTMLAttributes, ReactNode } from 'react';\nimport { DocumentationSidebar } from './sidebar';\nimport { useDocumentationLayout } from './layout';\nimport type { tree_object } from 'packages/core/dist/compiler';\n\nexport interface ConnectedDocumentationSidebarProps extends BaseHTMLAttributes<HTMLBaseElement> {\n tree: tree_object[];\n currentPath?: string;\n hrefBuilder?: (path: string) => string;\n iconResolver?: (icon?: string) => ReactNode;\n}\n\nexport function ConnectedDocumentationSidebar(props: ConnectedDocumentationSidebarProps) {\n const { isSidebarOpen, closeSidebar } = useDocumentationLayout();\n\n return <DocumentationSidebar isOpen={isSidebarOpen} onClose={closeSidebar} {...props} />;\n}\n"],"mappings":";;;;AAYA,SAAgB,EAA8B,GAA2C;CACvF,IAAM,EAAE,kBAAe,oBAAiB,EAAuB;CAE/D,OAAO,kBAAC,GAAD;EAAsB,QAAQ;EAAe,SAAS;EAAc,GAAI;CAAQ,CAAA;AACzF"}
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../content-mbVWCXX0.js";
2
- export { e as DocumentationContent };
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../header-D59bdlay.js";
2
- export { e as DocumentationHeader };
@@ -1 +0,0 @@
1
- {"version":3,"file":"header.esm.js","names":[],"sources":["../../../../src/components/documentation/page/header.tsx"],"sourcesContent":["import { use, type BaseHTMLAttributes } from 'react';\n//import styles from '@sleetch/styles/components/Page/header.module.css';\nimport clsx from 'clsx';\nimport { Button } from '../../button';\nimport type { markdown_module } from 'packages/core/dist/compiler';\n\nexport interface PageHeaderProps extends BaseHTMLAttributes<HTMLDivElement> {\n page: Promise<markdown_module>;\n}\n\nexport function PageHeader({ page, className, children, ...props }: PageHeaderProps) {\n const value = use(page);\n return (\n <div className={clsx(/*styles['default'],*/ className, 'sleetch-markdown')} {...props}>\n <h1>{value.default.frontmatter.title}</h1>\n <p>{value.default.frontmatter.description}</p>\n <div style={{ gap: '15px', display: 'flex' }}>\n <Button variant=\"secondary\">View as markdown</Button>\n <Button>Copy for LLM</Button>\n </div>\n <hr />\n </div>\n );\n}\n"],"mappings":";;;;;AAUA,SAAgB,EAAW,EAAE,SAAM,cAAW,aAAU,GAAG,KAA0B;CACnF,IAAM,IAAQ,EAAI,CAAI;CACtB,OACE,kBAAC,OAAD;EAAK,WAAW,EAA4B,GAAW,kBAAkB;EAAG,GAAI;YAAhF;GACE,kBAAC,MAAD,EAAA,UAAK,EAAM,QAAQ,YAAY,MAAU,CAAA;GACzC,kBAAC,KAAD,EAAA,UAAI,EAAM,QAAQ,YAAY,YAAe,CAAA;GAC7C,kBAAC,OAAD;IAAK,OAAO;KAAE,KAAK;KAAQ,SAAS;IAAO;cAA3C,CACE,kBAAC,GAAD;KAAQ,SAAQ;eAAY;IAAwB,CAAA,GACpD,kBAAC,GAAD,EAAA,UAAQ,eAAoB,CAAA,CACzB;;GACL,kBAAC,MAAD,CAAK,CAAA;EACF;;AAET"}
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../../navigation-kP1-q7Ux.js";
2
- export { e as PageNavigation };
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../../content-x_2bnG7q.js";
2
- export { e as DocumentationSidebarContent };
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../../sidebar-DgVlWEfQ.js";
2
- export { e as DocumentationSidebar };
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../../content-CRXZ7aLX.js";
2
- export { e as DocumentationTocContent };
@@ -1,2 +0,0 @@
1
- import { t as e } from "../../../toc-BuFdWsti.js";
2
- export { e as DocumentationToc };
@@ -1,2 +0,0 @@
1
- require('./assets/content3.css');var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("react"),l=require("react/jsx-runtime");l=s(l,1);var u=Object.getPrototypeOf(d).constructor;async function d(e,t){return new u(String(e))(t)}function f(e){return d(e,{...l,baseUrl:{}.url})}function p({page:e,components:t}){let n=(0,c.use)(e);if(n.default.parsed.type==`html`)return(0,l.jsx)(`div`,{className:`sleetch-markdown`,children:(0,l.jsx)(`div`,{dangerouslySetInnerHTML:{__html:n.default.parsed.html}})});let r=(0,c.use)(f(n.default.parsed.code)).default;return(0,l.jsx)(`div`,{className:`sleetch-markdown`,children:(0,l.jsx)(r,{components:t})})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
2
- //# sourceMappingURL=content-r8d8MkOf.cjs.map
@@ -1,2 +0,0 @@
1
- require('./assets/navigation.css');const e=require("./clsx-CPcBvw4Z.cjs");let t=require("react"),n=require("react/jsx-runtime");var r={navigation:`_navigation_fckni_3`,slot:`_slot_fckni_12`,"slot-end":`_slot-end_fckni_16`,card:`_card_fckni_20`,next:`_next_fckni_47`,previous:`_previous_fckni_52`,meta:`_meta_fckni_57`,chevron:`_chevron_fckni_65`,title:`_title_fckni_71`,description:`_description_fckni_78`},i=e=>e;function a(e){return e.children.find(e=>e.type===`data`)}function o(e){return e.children.find(e=>e.type===`page`&&e.index===!0)}function s(e){return e.type===`category`?a(e)?.frontmatter?.order??1/0:e.type===`page`?e.frontmatter.order??1/0:1/0}function c(e){return e.map((e,t)=>({node:e,index:t})).filter(({node:e})=>e.type!==`data`).sort((e,t)=>{let n=s(e.node)-s(t.node);return n===0?e.index-t.index:n}).map(({node:e})=>e)}function l(e){let t=c(e),n=[];for(let e of t){if(e.type===`page`){n.push(e);continue}if(e.type===`category`){let t=o(e);t&&n.push(t);let r=e.children.filter(e=>e.type!==`data`&&!(e.type===`page`&&e.index===!0));n.push(...l(r))}}return n}function u(){return(0,n.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:r.chevron,children:(0,n.jsx)(`polyline`,{points:`15 18 9 12 15 6`})})}function d(){return(0,n.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,className:r.chevron,children:(0,n.jsx)(`polyline`,{points:`9 18 15 12 9 6`})})}function f(e,t){return e&&e!==`No title.`?e:t}function p(e){return e&&e!==`No description.`?e:void 0}function m({node:t,direction:i,hrefBuilder:a}){let o=f(t.frontmatter.title,t.path),s=p(t.frontmatter.description);return(0,n.jsxs)(`a`,{href:a(t.path),className:e.t(r.card,r[i]),"data-direction":i,children:[(0,n.jsxs)(`span`,{className:r.meta,children:[i===`previous`&&(0,n.jsx)(u,{}),(0,n.jsx)(`span`,{className:r.title,children:o}),i===`next`&&(0,n.jsx)(d,{})]}),s&&(0,n.jsx)(`span`,{className:r.description,children:s})]})}function h({className:a,tree:o,currentPath:s,hrefBuilder:c=i,...u}){let{previous:d,next:f}=(0,t.useMemo)(()=>{let e=l(o),t=e.findIndex(e=>e.path===s);return t===-1?{previous:void 0,next:void 0}:{previous:e[t-1],next:e[t+1]}},[o,s]);return!d&&!f?null:(0,n.jsxs)(`nav`,{className:e.t(r.navigation,a),"aria-label":`Pagination`,...u,children:[(0,n.jsx)(`div`,{className:r.slot,children:d&&(0,n.jsx)(m,{node:d,direction:`previous`,hrefBuilder:c})}),(0,n.jsx)(`div`,{className:e.t(r.slot,r[`slot-end`]),children:f&&(0,n.jsx)(m,{node:f,direction:`next`,hrefBuilder:c})})]})}Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}});
2
- //# sourceMappingURL=navigation-BdVu1Uh-.cjs.map