livemark 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/package.json +14 -14
  2. package/source/actions/changelog/build.ts +245 -0
  3. package/source/actions/changelog/build.unit.ts +69 -0
  4. package/source/actions/config/define.ts +11 -0
  5. package/source/actions/config/define.unit.ts +33 -0
  6. package/source/actions/config/load.ts +22 -0
  7. package/source/actions/config/load.unit.ts +30 -0
  8. package/source/commands/build.ts +21 -0
  9. package/source/commands/escape.ts +77 -0
  10. package/source/commands/preview.ts +25 -0
  11. package/source/commands/start.ts +26 -0
  12. package/{build/website → source}/components/Article.tsx +12 -2
  13. package/{build/website → source}/components/Callout.tsx +1 -1
  14. package/{build/website → source}/components/Layout.tsx +3 -14
  15. package/{build/website → source}/components/LinkButton.tsx +1 -1
  16. package/{build/website → source}/components/PageToolbar.tsx +21 -8
  17. package/{build/website → source}/components/Section.tsx +1 -1
  18. package/{build/website → source}/components/SectionHeader.tsx +1 -1
  19. package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
  20. package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
  21. package/source/components/SidebarPosts.tsx +129 -0
  22. package/source/components/SidebarReleases.tsx +85 -0
  23. package/{build/website → source}/content-collections.ts +2 -2
  24. package/{build/website → source}/elements/accordion.tsx +1 -1
  25. package/{build/website → source}/elements/alert-dialog.tsx +1 -1
  26. package/{build/website → source}/elements/alert.tsx +1 -1
  27. package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
  28. package/{build/website → source}/elements/avatar.tsx +1 -1
  29. package/{build/website → source}/elements/badge.tsx +1 -1
  30. package/{build/website → source}/elements/breadcrumb.tsx +1 -1
  31. package/{build/website → source}/elements/button-group.tsx +1 -1
  32. package/{build/website → source}/elements/button.tsx +1 -1
  33. package/{build/website → source}/elements/calendar.tsx +1 -1
  34. package/{build/website → source}/elements/card.tsx +1 -1
  35. package/{build/website → source}/elements/carousel.tsx +1 -1
  36. package/{build/website → source}/elements/chart.tsx +1 -1
  37. package/{build/website → source}/elements/checkbox.tsx +1 -1
  38. package/{build/website → source}/elements/command.tsx +1 -1
  39. package/{build/website → source}/elements/context-menu.tsx +1 -1
  40. package/{build/website → source}/elements/dialog.tsx +1 -1
  41. package/{build/website → source}/elements/drawer.tsx +1 -1
  42. package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
  43. package/{build/website → source}/elements/empty.tsx +1 -1
  44. package/{build/website → source}/elements/field.tsx +1 -1
  45. package/{build/website → source}/elements/hover-card.tsx +1 -1
  46. package/{build/website → source}/elements/input-group.tsx +1 -1
  47. package/{build/website → source}/elements/input-otp.tsx +1 -1
  48. package/{build/website → source}/elements/input.tsx +1 -1
  49. package/{build/website → source}/elements/item.tsx +1 -1
  50. package/{build/website → source}/elements/kbd.tsx +1 -1
  51. package/{build/website → source}/elements/label.tsx +1 -1
  52. package/{build/website → source}/elements/menubar.tsx +1 -1
  53. package/{build/website → source}/elements/native-select.tsx +1 -1
  54. package/{build/website → source}/elements/navigation-menu.tsx +1 -1
  55. package/{build/website → source}/elements/pagination.tsx +1 -1
  56. package/{build/website → source}/elements/popover.tsx +1 -1
  57. package/{build/website → source}/elements/progress.tsx +1 -1
  58. package/{build/website → source}/elements/radio-group.tsx +1 -1
  59. package/{build/website → source}/elements/resizable.tsx +1 -1
  60. package/{build/website → source}/elements/scroll-area.tsx +1 -1
  61. package/{build/website → source}/elements/select.tsx +1 -1
  62. package/{build/website → source}/elements/separator.tsx +1 -1
  63. package/{build/website → source}/elements/sheet.tsx +1 -1
  64. package/{build/website → source}/elements/sidebar.tsx +7 -4
  65. package/{build/website → source}/elements/skeleton.tsx +1 -1
  66. package/{build/website → source}/elements/slider.tsx +1 -1
  67. package/{build/website → source}/elements/spinner.tsx +1 -1
  68. package/{build/website → source}/elements/switch.tsx +1 -1
  69. package/{build/website → source}/elements/table.tsx +1 -1
  70. package/{build/website → source}/elements/tabs.tsx +1 -1
  71. package/{build/website → source}/elements/textarea.tsx +1 -1
  72. package/{build/website → source}/elements/toggle-group.tsx +1 -1
  73. package/{build/website → source}/elements/toggle.tsx +1 -1
  74. package/{build/website → source}/elements/tooltip.tsx +1 -1
  75. package/source/entrypoints/main.ts +12 -0
  76. package/{build/website → source}/env.d.ts +1 -1
  77. package/source/helpers/program.ts +6 -0
  78. package/{build/website → source}/helpers/section.ts +1 -1
  79. package/source/hooks/media.ts +29 -0
  80. package/source/index.ts +1 -0
  81. package/{build/website → source}/models/article.ts +4 -0
  82. package/source/models/config.ts +51 -0
  83. package/source/models/link.ts +11 -0
  84. package/source/models/patch.ts +9 -0
  85. package/source/models/section.ts +45 -0
  86. package/source/models/theme.ts +74 -0
  87. package/source/program.ts +18 -0
  88. package/source/settings.ts +6 -0
  89. package/{build/website → source}/vite.config.ts +3 -3
  90. package/{build → target}/actions/changelog/build.d.ts +1 -0
  91. package/target/actions/changelog/build.js +187 -0
  92. package/target/actions/changelog/build.unit.js +66 -0
  93. package/target/actions/config/define.js +8 -0
  94. package/target/actions/config/define.unit.js +29 -0
  95. package/target/actions/config/load.js +25 -0
  96. package/target/actions/config/load.unit.js +23 -0
  97. package/target/client.d.ts +1 -0
  98. package/target/client.js +6 -0
  99. package/target/commands/build.js +14 -0
  100. package/target/commands/escape.js +56 -0
  101. package/target/commands/preview.js +18 -0
  102. package/target/commands/start.js +19 -0
  103. package/target/components/Abbr.d.ts +5 -0
  104. package/target/components/Abbr.js +9 -0
  105. package/target/components/AnsiCode.d.ts +4 -0
  106. package/target/components/AnsiCode.js +6 -0
  107. package/target/components/Article.d.ts +5 -0
  108. package/target/components/Article.js +105 -0
  109. package/target/components/BackToTop.d.ts +3 -0
  110. package/target/components/BackToTop.js +19 -0
  111. package/target/components/Banner.d.ts +2 -0
  112. package/target/components/Banner.js +12 -0
  113. package/target/components/BlogIndex.d.ts +4 -0
  114. package/target/components/BlogIndex.js +62 -0
  115. package/target/components/Breadcrumbs.d.ts +1 -0
  116. package/target/components/Breadcrumbs.js +13 -0
  117. package/target/components/Callout.d.ts +8 -0
  118. package/target/components/Callout.js +43 -0
  119. package/target/components/Card.d.ts +7 -0
  120. package/target/components/Card.js +17 -0
  121. package/target/components/Cards.d.ts +4 -0
  122. package/target/components/Cards.js +6 -0
  123. package/target/components/ChangelogIndex.d.ts +4 -0
  124. package/target/components/ChangelogIndex.js +57 -0
  125. package/target/components/CodeBlock.d.ts +1 -0
  126. package/target/components/CodeBlock.js +47 -0
  127. package/target/components/CodeTabs.d.ts +6 -0
  128. package/target/components/CodeTabs.js +49 -0
  129. package/target/components/Column.d.ts +4 -0
  130. package/target/components/Column.js +6 -0
  131. package/target/components/Columns.d.ts +5 -0
  132. package/target/components/Columns.js +10 -0
  133. package/target/components/Content.d.ts +3 -0
  134. package/target/components/Content.js +5 -0
  135. package/target/components/ContentTab.d.ts +5 -0
  136. package/target/components/ContentTab.js +6 -0
  137. package/target/components/ContentTabs.d.ts +5 -0
  138. package/target/components/ContentTabs.js +47 -0
  139. package/target/components/DefaultCatchBoundary.d.ts +2 -0
  140. package/target/components/DefaultCatchBoundary.js +20 -0
  141. package/target/components/DefinitionList.d.ts +7 -0
  142. package/target/components/DefinitionList.js +14 -0
  143. package/target/components/Details.d.ts +5 -0
  144. package/target/components/Details.js +13 -0
  145. package/target/components/FileTree.d.ts +4 -0
  146. package/target/components/FileTree.js +17 -0
  147. package/target/components/Footer.d.ts +2 -0
  148. package/target/components/Footer.js +9 -0
  149. package/target/components/FootnoteRef.d.ts +3 -0
  150. package/target/components/FootnoteRef.js +31 -0
  151. package/target/components/Heading.d.ts +8 -0
  152. package/target/components/Heading.js +18 -0
  153. package/target/components/InlineBadge.d.ts +5 -0
  154. package/target/components/InlineBadge.js +7 -0
  155. package/target/components/InlineIcon.d.ts +5 -0
  156. package/target/components/InlineIcon.js +10 -0
  157. package/target/components/InlineToc.d.ts +4 -0
  158. package/target/components/InlineToc.js +14 -0
  159. package/target/components/Layout.d.ts +4 -0
  160. package/target/components/Layout.js +65 -0
  161. package/target/components/LinkButton.d.ts +7 -0
  162. package/target/components/LinkButton.js +11 -0
  163. package/target/components/Mermaid.d.ts +4 -0
  164. package/target/components/Mermaid.js +8 -0
  165. package/target/components/MermaidRenderer.d.ts +4 -0
  166. package/target/components/MermaidRenderer.js +32 -0
  167. package/target/components/NotFound.d.ts +3 -0
  168. package/target/components/NotFound.js +10 -0
  169. package/target/components/PackageTabs.d.ts +9 -0
  170. package/target/components/PackageTabs.js +28 -0
  171. package/target/components/PageToolbar.d.ts +7 -0
  172. package/target/components/PageToolbar.js +34 -0
  173. package/target/components/PrevNext.d.ts +4 -0
  174. package/target/components/PrevNext.js +34 -0
  175. package/target/components/Search.d.ts +2 -0
  176. package/target/components/Search.js +16 -0
  177. package/target/components/SearchDialog.d.ts +5 -0
  178. package/target/components/SearchDialog.js +139 -0
  179. package/target/components/Section.d.ts +5 -0
  180. package/target/components/Section.js +8 -0
  181. package/target/components/SectionHeader.d.ts +7 -0
  182. package/target/components/SectionHeader.js +7 -0
  183. package/target/components/Sidebar.d.ts +4 -0
  184. package/target/components/Sidebar.js +33 -0
  185. package/target/components/SidebarArticles.d.ts +2 -0
  186. package/target/components/SidebarArticles.js +45 -0
  187. package/target/components/SidebarLinks.d.ts +4 -0
  188. package/target/components/SidebarLinks.js +26 -0
  189. package/target/components/SidebarPosts.d.ts +2 -0
  190. package/target/components/SidebarPosts.js +53 -0
  191. package/target/components/SidebarReleases.d.ts +2 -0
  192. package/target/components/SidebarReleases.js +35 -0
  193. package/target/components/SidebarSections.d.ts +4 -0
  194. package/target/components/SidebarSections.js +36 -0
  195. package/target/components/SiteTitle.d.ts +2 -0
  196. package/target/components/SiteTitle.js +12 -0
  197. package/target/components/SortableTable.d.ts +5 -0
  198. package/target/components/SortableTable.js +63 -0
  199. package/target/components/SoundCloud.d.ts +4 -0
  200. package/target/components/SoundCloud.js +7 -0
  201. package/target/components/TagIndex.d.ts +5 -0
  202. package/target/components/TagIndex.js +64 -0
  203. package/target/components/Theme.d.ts +1 -0
  204. package/target/components/Theme.js +21 -0
  205. package/target/components/Toc.d.ts +12 -0
  206. package/target/components/Toc.js +128 -0
  207. package/target/components/YouTube.d.ts +4 -0
  208. package/target/components/YouTube.js +6 -0
  209. package/target/components/ZoomImage.d.ts +4 -0
  210. package/target/components/ZoomImage.js +26 -0
  211. package/target/content/article.d.ts +43 -0
  212. package/target/content/article.js +54 -0
  213. package/target/content/tag.d.ts +2 -0
  214. package/target/content/tag.js +30 -0
  215. package/target/content-collections.d.ts +2 -0
  216. package/target/content-collections.js +192 -0
  217. package/target/elements/accordion.d.ts +6 -0
  218. package/target/elements/accordion.js +19 -0
  219. package/target/elements/alert-dialog.d.ts +18 -0
  220. package/target/elements/alert-dialog.js +44 -0
  221. package/target/elements/alert.d.ts +9 -0
  222. package/target/elements/alert.js +28 -0
  223. package/target/elements/aspect-ratio.d.ts +4 -0
  224. package/target/elements/aspect-ratio.js +9 -0
  225. package/target/elements/avatar.d.ts +11 -0
  226. package/target/elements/avatar.js +23 -0
  227. package/target/elements/badge.d.ts +7 -0
  228. package/target/elements/badge.js +34 -0
  229. package/target/elements/breadcrumb.d.ts +9 -0
  230. package/target/elements/breadcrumb.js +39 -0
  231. package/target/elements/button-group.d.ts +10 -0
  232. package/target/elements/button-group.js +37 -0
  233. package/target/elements/button.d.ts +8 -0
  234. package/target/elements/button.js +35 -0
  235. package/target/elements/calendar.d.ts +10 -0
  236. package/target/elements/calendar.js +76 -0
  237. package/target/elements/card.d.ts +11 -0
  238. package/target/elements/card.js +25 -0
  239. package/target/elements/carousel.d.ts +28 -0
  240. package/target/elements/carousel.js +95 -0
  241. package/target/elements/chart.d.ts +44 -0
  242. package/target/elements/chart.js +140 -0
  243. package/target/elements/checkbox.d.ts +3 -0
  244. package/target/elements/checkbox.js +9 -0
  245. package/target/elements/collapsible.d.ts +5 -0
  246. package/target/elements/collapsible.js +13 -0
  247. package/target/elements/command.d.ts +23 -0
  248. package/target/elements/command.js +42 -0
  249. package/target/elements/context-menu.d.ts +29 -0
  250. package/target/elements/context-menu.js +54 -0
  251. package/target/elements/dialog.d.ts +16 -0
  252. package/target/elements/dialog.js +41 -0
  253. package/target/elements/direction.d.ts +1 -0
  254. package/target/elements/direction.js +2 -0
  255. package/target/elements/drawer.d.ts +12 -0
  256. package/target/elements/drawer.js +38 -0
  257. package/target/elements/dropdown-menu.d.ts +24 -0
  258. package/target/elements/dropdown-menu.js +54 -0
  259. package/target/elements/empty.d.ts +11 -0
  260. package/target/elements/empty.js +34 -0
  261. package/target/elements/field.d.ts +24 -0
  262. package/target/elements/field.js +69 -0
  263. package/target/elements/hover-card.d.ts +5 -0
  264. package/target/elements/hover-card.js +14 -0
  265. package/target/elements/input-group.d.ts +18 -0
  266. package/target/elements/input-group.js +60 -0
  267. package/target/elements/input-otp.d.ts +11 -0
  268. package/target/elements/input-otp.js +21 -0
  269. package/target/elements/input.d.ts +2 -0
  270. package/target/elements/input.js +8 -0
  271. package/target/elements/item.d.ts +21 -0
  272. package/target/elements/item.js +79 -0
  273. package/target/elements/kbd.d.ts +3 -0
  274. package/target/elements/kbd.js +10 -0
  275. package/target/elements/label.d.ts +2 -0
  276. package/target/elements/label.js +8 -0
  277. package/target/elements/menubar.d.ts +29 -0
  278. package/target/elements/menubar.js +58 -0
  279. package/target/elements/native-select.d.ts +8 -0
  280. package/target/elements/native-select.js +16 -0
  281. package/target/elements/navigation-menu.d.ts +11 -0
  282. package/target/elements/navigation-menu.js +34 -0
  283. package/target/elements/pagination.d.ts +17 -0
  284. package/target/elements/pagination.js +33 -0
  285. package/target/elements/popover.d.ts +9 -0
  286. package/target/elements/popover.js +23 -0
  287. package/target/elements/progress.d.ts +7 -0
  288. package/target/elements/progress.js +21 -0
  289. package/target/elements/radio-group.d.ts +5 -0
  290. package/target/elements/radio-group.js +12 -0
  291. package/target/elements/resizable.d.ts +7 -0
  292. package/target/elements/resizable.js +14 -0
  293. package/target/elements/scroll-area.d.ts +4 -0
  294. package/target/elements/scroll-area.js +13 -0
  295. package/target/elements/select.d.ts +15 -0
  296. package/target/elements/select.js +39 -0
  297. package/target/elements/separator.d.ts +3 -0
  298. package/target/elements/separator.js +8 -0
  299. package/target/elements/sheet.d.ts +13 -0
  300. package/target/elements/sheet.js +41 -0
  301. package/target/elements/sidebar.d.ts +63 -0
  302. package/target/elements/sidebar.js +272 -0
  303. package/target/elements/skeleton.d.ts +2 -0
  304. package/target/elements/skeleton.js +7 -0
  305. package/target/elements/slider.d.ts +3 -0
  306. package/target/elements/slider.js +15 -0
  307. package/target/elements/sonner.d.ts +3 -0
  308. package/target/elements/sonner.js +23 -0
  309. package/target/elements/spinner.d.ts +2 -0
  310. package/target/elements/spinner.js +8 -0
  311. package/target/elements/switch.d.ts +5 -0
  312. package/target/elements/switch.js +8 -0
  313. package/target/elements/table.d.ts +9 -0
  314. package/target/elements/table.js +28 -0
  315. package/target/elements/tabs.d.ts +10 -0
  316. package/target/elements/tabs.js +29 -0
  317. package/target/elements/textarea.d.ts +2 -0
  318. package/target/elements/textarea.js +7 -0
  319. package/target/elements/toggle-group.d.ts +10 -0
  320. package/target/elements/toggle-group.js +24 -0
  321. package/target/elements/toggle.d.ts +8 -0
  322. package/target/elements/toggle.js +26 -0
  323. package/target/elements/tooltip.d.ts +6 -0
  324. package/target/elements/tooltip.js +18 -0
  325. package/target/entrypoints/main.js +12 -0
  326. package/target/helpers/article-icon.d.ts +3 -0
  327. package/target/helpers/article-icon.js +34 -0
  328. package/target/helpers/article.d.ts +24 -0
  329. package/target/helpers/article.js +73 -0
  330. package/target/helpers/changelog-source.d.ts +7 -0
  331. package/target/helpers/changelog-source.js +16 -0
  332. package/target/helpers/changelog-source.unit.d.ts +1 -0
  333. package/target/helpers/changelog-source.unit.js +33 -0
  334. package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
  335. package/target/helpers/dynamic-icon-resolver.js +17 -0
  336. package/target/helpers/dynamic-icon.d.ts +5 -0
  337. package/target/helpers/dynamic-icon.js +8 -0
  338. package/target/helpers/favicon.d.ts +2 -0
  339. package/target/helpers/favicon.js +11 -0
  340. package/target/helpers/model.d.ts +3 -0
  341. package/target/helpers/model.js +4 -0
  342. package/target/helpers/program.js +5 -0
  343. package/target/helpers/resolve-asset-path.d.ts +2 -0
  344. package/target/helpers/resolve-asset-path.js +9 -0
  345. package/target/helpers/resolve-includes.d.ts +2 -0
  346. package/target/helpers/resolve-includes.js +113 -0
  347. package/target/helpers/resolve-includes.unit.d.ts +1 -0
  348. package/target/helpers/resolve-includes.unit.js +76 -0
  349. package/target/helpers/search-text.d.ts +2 -0
  350. package/target/helpers/search-text.js +16 -0
  351. package/target/helpers/section.d.ts +13 -0
  352. package/target/helpers/section.js +39 -0
  353. package/target/helpers/section.unit.d.ts +1 -0
  354. package/target/helpers/section.unit.js +62 -0
  355. package/target/helpers/theme.d.ts +5 -0
  356. package/target/helpers/theme.js +23 -0
  357. package/target/helpers/toc-context.d.ts +5 -0
  358. package/target/helpers/toc-context.js +8 -0
  359. package/target/helpers/toc.d.ts +3 -0
  360. package/target/helpers/toc.js +41 -0
  361. package/target/helpers/toc.unit.d.ts +1 -0
  362. package/target/helpers/toc.unit.js +65 -0
  363. package/target/hooks/in-view.d.ts +4 -0
  364. package/target/hooks/in-view.js +23 -0
  365. package/target/hooks/media.d.ts +6 -0
  366. package/target/hooks/media.js +25 -0
  367. package/target/index.js +2 -0
  368. package/target/models/article.d.ts +57 -0
  369. package/target/models/article.js +21 -0
  370. package/{build → target}/models/config.d.ts +10 -0
  371. package/target/models/config.js +34 -0
  372. package/target/models/link.js +9 -0
  373. package/{build → target}/models/patch.d.ts +5 -0
  374. package/target/models/patch.js +7 -0
  375. package/target/models/section.js +26 -0
  376. package/target/models/theme.js +73 -0
  377. package/target/models/toc.d.ts +5 -0
  378. package/target/models/toc.js +2 -0
  379. package/target/plugins/rehype-inline-code.d.ts +19 -0
  380. package/target/plugins/rehype-inline-code.js +55 -0
  381. package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
  382. package/target/plugins/rehype-task-list-a11y.js +29 -0
  383. package/target/plugins/remark-abbr.d.ts +6 -0
  384. package/target/plugins/remark-abbr.js +39 -0
  385. package/target/plugins/remark-abbr.unit.d.ts +1 -0
  386. package/target/plugins/remark-abbr.unit.js +79 -0
  387. package/target/plugins/remark-ansi.d.ts +8 -0
  388. package/target/plugins/remark-ansi.js +239 -0
  389. package/target/plugins/remark-ansi.unit.d.ts +1 -0
  390. package/target/plugins/remark-ansi.unit.js +134 -0
  391. package/target/plugins/remark-badge.d.ts +6 -0
  392. package/target/plugins/remark-badge.js +43 -0
  393. package/target/plugins/remark-badge.unit.d.ts +1 -0
  394. package/target/plugins/remark-badge.unit.js +76 -0
  395. package/target/plugins/remark-button.d.ts +6 -0
  396. package/target/plugins/remark-button.js +52 -0
  397. package/target/plugins/remark-button.unit.d.ts +1 -0
  398. package/target/plugins/remark-button.unit.js +105 -0
  399. package/target/plugins/remark-callout.d.ts +4 -0
  400. package/target/plugins/remark-callout.js +39 -0
  401. package/target/plugins/remark-card.d.ts +4 -0
  402. package/target/plugins/remark-card.js +66 -0
  403. package/target/plugins/remark-code-tabs.d.ts +4 -0
  404. package/target/plugins/remark-code-tabs.js +72 -0
  405. package/target/plugins/remark-columns.d.ts +4 -0
  406. package/target/plugins/remark-columns.js +54 -0
  407. package/target/plugins/remark-custom-heading-id.d.ts +14 -0
  408. package/target/plugins/remark-custom-heading-id.js +54 -0
  409. package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
  410. package/target/plugins/remark-custom-heading-id.unit.js +91 -0
  411. package/target/plugins/remark-deflist.d.ts +4 -0
  412. package/target/plugins/remark-deflist.js +31 -0
  413. package/target/plugins/remark-details.d.ts +4 -0
  414. package/target/plugins/remark-details.js +33 -0
  415. package/target/plugins/remark-filetree.d.ts +12 -0
  416. package/target/plugins/remark-filetree.js +61 -0
  417. package/target/plugins/remark-filetree.unit.d.ts +1 -0
  418. package/target/plugins/remark-filetree.unit.js +87 -0
  419. package/target/plugins/remark-github-callout.d.ts +4 -0
  420. package/target/plugins/remark-github-callout.js +62 -0
  421. package/target/plugins/remark-icon.d.ts +4 -0
  422. package/target/plugins/remark-icon.js +36 -0
  423. package/target/plugins/remark-image.d.ts +9 -0
  424. package/target/plugins/remark-image.js +26 -0
  425. package/target/plugins/remark-media.d.ts +6 -0
  426. package/target/plugins/remark-media.js +52 -0
  427. package/target/plugins/remark-media.unit.d.ts +1 -0
  428. package/target/plugins/remark-media.unit.js +54 -0
  429. package/target/plugins/remark-mermaid.d.ts +4 -0
  430. package/target/plugins/remark-mermaid.js +20 -0
  431. package/target/plugins/remark-npm.d.ts +4 -0
  432. package/target/plugins/remark-npm.js +32 -0
  433. package/target/plugins/remark-steps.d.ts +6 -0
  434. package/target/plugins/remark-steps.js +30 -0
  435. package/target/plugins/remark-steps.unit.d.ts +1 -0
  436. package/target/plugins/remark-steps.unit.js +65 -0
  437. package/target/plugins/remark-tab.d.ts +6 -0
  438. package/target/plugins/remark-tab.js +76 -0
  439. package/target/plugins/remark-tab.unit.d.ts +1 -0
  440. package/target/plugins/remark-tab.unit.js +156 -0
  441. package/target/plugins/remark-toc.d.ts +6 -0
  442. package/target/plugins/remark-toc.js +33 -0
  443. package/target/plugins/remark-toc.unit.d.ts +1 -0
  444. package/target/plugins/remark-toc.unit.js +57 -0
  445. package/target/plugins/shiki-icon.d.ts +16 -0
  446. package/target/plugins/shiki-icon.js +66 -0
  447. package/target/plugins/shiki-line-highlight.d.ts +27 -0
  448. package/target/plugins/shiki-line-highlight.js +140 -0
  449. package/target/plugins/vite-livemark.d.ts +13 -0
  450. package/target/plugins/vite-livemark.js +76 -0
  451. package/target/program.js +18 -0
  452. package/target/routeTree.gen.d.ts +57 -0
  453. package/target/routeTree.gen.js +27 -0
  454. package/target/router.d.ts +6 -0
  455. package/target/router.js +26 -0
  456. package/target/routes/$.d.ts +1 -0
  457. package/target/routes/$.js +85 -0
  458. package/target/routes/__root.d.ts +1 -0
  459. package/target/routes/__root.js +69 -0
  460. package/target/server.d.ts +2 -0
  461. package/target/server.js +7 -0
  462. package/target/settings.js +7 -0
  463. package/target/utils/style.d.ts +2 -0
  464. package/target/utils/style.js +6 -0
  465. package/target/vite.config.d.ts +2 -0
  466. package/target/vite.config.js +64 -0
  467. package/build/actions/changelog/build.js +0 -158
  468. package/build/actions/changelog/build.unit.js +0 -66
  469. package/build/actions/config/define.js +0 -8
  470. package/build/actions/config/define.unit.js +0 -29
  471. package/build/actions/config/load.js +0 -25
  472. package/build/actions/config/load.unit.js +0 -23
  473. package/build/commands/build.js +0 -14
  474. package/build/commands/escape.js +0 -56
  475. package/build/commands/preview.js +0 -18
  476. package/build/commands/start.js +0 -19
  477. package/build/docs/markdown/includes/example.d.ts +0 -58
  478. package/build/docs/markdown/includes/example.js +0 -5
  479. package/build/entrypoints/main.js +0 -12
  480. package/build/helpers/program.js +0 -5
  481. package/build/index.js +0 -2
  482. package/build/livemark.config.d.ts +0 -58
  483. package/build/livemark.config.js +0 -25
  484. package/build/models/config.js +0 -34
  485. package/build/models/link.js +0 -9
  486. package/build/models/patch.js +0 -7
  487. package/build/models/section.js +0 -26
  488. package/build/models/theme.js +0 -73
  489. package/build/package.json +0 -138
  490. package/build/program.js +0 -18
  491. package/build/settings.js +0 -7
  492. package/build/vite.config.d.ts +0 -2
  493. package/build/vite.config.js +0 -48
  494. package/build/website/components/BlogSidebar.tsx +0 -162
  495. package/build/website/components/ChangelogSidebar.tsx +0 -120
  496. package/build/website/hooks/media.ts +0 -19
  497. /package/{build/website → source}/assets/logo.svg +0 -0
  498. /package/{build/website → source}/client.tsx +0 -0
  499. /package/{build/website → source}/components/Abbr.tsx +0 -0
  500. /package/{build/website → source}/components/AnsiCode.tsx +0 -0
  501. /package/{build/website → source}/components/BackToTop.tsx +0 -0
  502. /package/{build/website → source}/components/Banner.tsx +0 -0
  503. /package/{build/website → source}/components/BlogIndex.tsx +0 -0
  504. /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
  505. /package/{build/website → source}/components/Card.tsx +0 -0
  506. /package/{build/website → source}/components/Cards.tsx +0 -0
  507. /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
  508. /package/{build/website → source}/components/CodeBlock.tsx +0 -0
  509. /package/{build/website → source}/components/CodeTabs.tsx +0 -0
  510. /package/{build/website → source}/components/Column.tsx +0 -0
  511. /package/{build/website → source}/components/Columns.tsx +0 -0
  512. /package/{build/website → source}/components/Content.tsx +0 -0
  513. /package/{build/website → source}/components/ContentTab.tsx +0 -0
  514. /package/{build/website → source}/components/ContentTabs.tsx +0 -0
  515. /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
  516. /package/{build/website → source}/components/DefinitionList.tsx +0 -0
  517. /package/{build/website → source}/components/Details.tsx +0 -0
  518. /package/{build/website → source}/components/FileTree.tsx +0 -0
  519. /package/{build/website → source}/components/Footer.tsx +0 -0
  520. /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
  521. /package/{build/website → source}/components/Heading.tsx +0 -0
  522. /package/{build/website → source}/components/InlineBadge.tsx +0 -0
  523. /package/{build/website → source}/components/InlineIcon.tsx +0 -0
  524. /package/{build/website → source}/components/InlineToc.tsx +0 -0
  525. /package/{build/website → source}/components/Mermaid.tsx +0 -0
  526. /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
  527. /package/{build/website → source}/components/NotFound.tsx +0 -0
  528. /package/{build/website → source}/components/PackageTabs.tsx +0 -0
  529. /package/{build/website → source}/components/PrevNext.tsx +0 -0
  530. /package/{build/website → source}/components/Search.tsx +0 -0
  531. /package/{build/website → source}/components/SearchDialog.tsx +0 -0
  532. /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
  533. /package/{build/website → source}/components/SidebarSections.tsx +0 -0
  534. /package/{build/website → source}/components/SiteTitle.tsx +0 -0
  535. /package/{build/website → source}/components/SortableTable.tsx +0 -0
  536. /package/{build/website → source}/components/SoundCloud.tsx +0 -0
  537. /package/{build/website → source}/components/TagIndex.tsx +0 -0
  538. /package/{build/website → source}/components/Theme.tsx +0 -0
  539. /package/{build/website → source}/components/Toc.tsx +0 -0
  540. /package/{build/website → source}/components/YouTube.tsx +0 -0
  541. /package/{build/website → source}/components/ZoomImage.tsx +0 -0
  542. /package/{build/website → source}/content/article.ts +0 -0
  543. /package/{build/website → source}/content/tag.ts +0 -0
  544. /package/{build/website → source}/elements/collapsible.tsx +0 -0
  545. /package/{build/website → source}/elements/direction.tsx +0 -0
  546. /package/{build/website → source}/elements/sonner.tsx +0 -0
  547. /package/{build/website → source}/helpers/article-icon.ts +0 -0
  548. /package/{build/website → source}/helpers/article.ts +0 -0
  549. /package/{build/website → source}/helpers/changelog-source.ts +0 -0
  550. /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
  551. /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
  552. /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
  553. /package/{build/website → source}/helpers/favicon.ts +0 -0
  554. /package/{build/website → source}/helpers/model.ts +0 -0
  555. /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
  556. /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
  557. /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
  558. /package/{build/website → source}/helpers/search-text.ts +0 -0
  559. /package/{build/website → source}/helpers/section.unit.ts +0 -0
  560. /package/{build/website → source}/helpers/theme.ts +0 -0
  561. /package/{build/website → source}/helpers/toc-context.ts +0 -0
  562. /package/{build/website → source}/helpers/toc.ts +0 -0
  563. /package/{build/website → source}/helpers/toc.unit.ts +0 -0
  564. /package/{build/website → source}/hooks/in-view.ts +0 -0
  565. /package/{build/website → source}/models/toc.ts +0 -0
  566. /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
  567. /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
  568. /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
  569. /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
  570. /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
  571. /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
  572. /package/{build/website → source}/plugins/remark-badge.ts +0 -0
  573. /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
  574. /package/{build/website → source}/plugins/remark-button.ts +0 -0
  575. /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
  576. /package/{build/website → source}/plugins/remark-callout.ts +0 -0
  577. /package/{build/website → source}/plugins/remark-card.ts +0 -0
  578. /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
  579. /package/{build/website → source}/plugins/remark-columns.ts +0 -0
  580. /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
  581. /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
  582. /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
  583. /package/{build/website → source}/plugins/remark-details.ts +0 -0
  584. /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
  585. /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
  586. /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
  587. /package/{build/website → source}/plugins/remark-icon.ts +0 -0
  588. /package/{build/website → source}/plugins/remark-image.ts +0 -0
  589. /package/{build/website → source}/plugins/remark-media.ts +0 -0
  590. /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
  591. /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
  592. /package/{build/website → source}/plugins/remark-npm.ts +0 -0
  593. /package/{build/website → source}/plugins/remark-steps.ts +0 -0
  594. /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
  595. /package/{build/website → source}/plugins/remark-tab.ts +0 -0
  596. /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
  597. /package/{build/website → source}/plugins/remark-toc.ts +0 -0
  598. /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
  599. /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
  600. /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
  601. /package/{build/website → source}/plugins/vite-livemark.ts +0 -0
  602. /package/{build/website → source}/routeTree.gen.ts +0 -0
  603. /package/{build/website → source}/router.tsx +0 -0
  604. /package/{build/website → source}/routes/$.tsx +0 -0
  605. /package/{build/website → source}/routes/__root.tsx +0 -0
  606. /package/{build/website → source}/server.ts +0 -0
  607. /package/{build/website → source}/styles/general.css +0 -0
  608. /package/{build/website → source}/styles/markdown.css +0 -0
  609. /package/{build/website/helpers → source/utils}/style.ts +0 -0
  610. /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
  611. /package/{build → target}/actions/config/define.d.ts +0 -0
  612. /package/{build → target}/actions/config/define.unit.d.ts +0 -0
  613. /package/{build → target}/actions/config/load.d.ts +0 -0
  614. /package/{build → target}/actions/config/load.unit.d.ts +0 -0
  615. /package/{build → target}/commands/build.d.ts +0 -0
  616. /package/{build → target}/commands/escape.d.ts +0 -0
  617. /package/{build → target}/commands/preview.d.ts +0 -0
  618. /package/{build → target}/commands/start.d.ts +0 -0
  619. /package/{build → target}/entrypoints/main.d.ts +0 -0
  620. /package/{build → target}/helpers/program.d.ts +0 -0
  621. /package/{build → target}/index.d.ts +0 -0
  622. /package/{build → target}/models/link.d.ts +0 -0
  623. /package/{build → target}/models/section.d.ts +0 -0
  624. /package/{build → target}/models/theme.d.ts +0 -0
  625. /package/{build → target}/program.d.ts +0 -0
  626. /package/{build → target}/settings.d.ts +0 -0
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Children, useEffect, useState } from "react";
3
+ /** Tabbed code block component for grouping multiple code blocks with optional sync */
4
+ export function CodeTabs(props) {
5
+ const names = JSON.parse(props.tabs);
6
+ const children = Children.toArray(props.children);
7
+ const getInitialIndex = () => {
8
+ if (!props.sync)
9
+ return 0;
10
+ const saved = typeof window !== "undefined"
11
+ ? localStorage.getItem("livemark-tab-" + props.sync)
12
+ : null;
13
+ if (!saved)
14
+ return 0;
15
+ const idx = names.indexOf(saved);
16
+ return idx >= 0 ? idx : 0;
17
+ };
18
+ const [active, setActive] = useState(getInitialIndex);
19
+ const handleSelect = (i) => {
20
+ setActive(i);
21
+ if (props.sync) {
22
+ localStorage.setItem("livemark-tab-" + props.sync, names[i]);
23
+ window.dispatchEvent(new CustomEvent("livemark-tab-sync", {
24
+ detail: { sync: props.sync, title: names[i] },
25
+ }));
26
+ }
27
+ };
28
+ useEffect(() => {
29
+ if (!props.sync)
30
+ return;
31
+ const handler = (e) => {
32
+ const { sync, title } = e.detail;
33
+ if (sync !== props.sync)
34
+ return;
35
+ const idx = names.indexOf(title);
36
+ if (idx >= 0)
37
+ setActive(idx);
38
+ };
39
+ window.addEventListener("livemark-tab-sync", handler);
40
+ return () => window.removeEventListener("livemark-tab-sync", handler);
41
+ }, [props.sync, names]);
42
+ return (_jsxs("div", { className: "not-prose my-4 rounded-xl border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: [
43
+ _jsx("div", { className: "flex border-b", children: names.map((name, i) => (_jsx("button", { type: "button", onClick: () => handleSelect(i), className: `px-4 py-2 text-xs font-medium transition-colors cursor-pointer ${i === active
44
+ ? "text-foreground border-b-2 border-primary -mb-px"
45
+ : "text-muted-foreground hover:text-foreground"}`, children: name }, name))) }), children.map((child, i) => (_jsx("div", { className: i === active
46
+ ? "[&>figure]:my-0 [&>figure]:rounded-none [&>figure]:border-0 [&>figure]:shadow-none"
47
+ : "hidden", children: child }, names[i])))] }));
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZVRhYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Db2RlVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVyRCx1RkFBdUY7QUFDdkYsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUl4QjtJQUNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYSxDQUFBO0lBQ2hELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRWpELE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FDVCxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDVixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDaEMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUE7SUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFO1FBQ2pDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNaLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQTtZQUM3RCxNQUFNLENBQUMsYUFBYSxDQUNsQixJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDbkMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTthQUM5QyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQUUsT0FBTTtRQUN2QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1lBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQ25CLENBQ0QsQ0FBQyxNQUFNLENBQUE7WUFDUixJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSTtnQkFBRSxPQUFNO1lBQy9CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFBO1FBQ0QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3JELE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUV2QixPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsK0ZBQStGO1lBQzVHLGNBQUssU0FBUyxFQUFDLGVBQWUsWUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ3RCLGlCQUVFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDOUIsU0FBUyxFQUFFLGtFQUNULENBQUMsS0FBSyxNQUFNO3dCQUNWLENBQUMsQ0FBQyxrREFBa0Q7d0JBQ3BELENBQUMsQ0FBQyw2Q0FDTixFQUFFLFlBRUQsSUFBSSxJQVRBLElBQUksQ0FVRixDQUNWLENBQUMsR0FDRSxFQUNMLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUMxQixjQUVFLFNBQVMsRUFDUCxDQUFDLEtBQUssTUFBTTtvQkFDVixDQUFDLENBQUMsb0ZBQW9GO29CQUN0RixDQUFDLENBQUMsUUFBUSxZQUdiLEtBQUssSUFQRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBUVQsQ0FDUCxDQUFDLElBQ0UsQ0FDUCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoaWxkcmVuLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcblxuLyoqIFRhYmJlZCBjb2RlIGJsb2NrIGNvbXBvbmVudCBmb3IgZ3JvdXBpbmcgbXVsdGlwbGUgY29kZSBibG9ja3Mgd2l0aCBvcHRpb25hbCBzeW5jICovXG5leHBvcnQgZnVuY3Rpb24gQ29kZVRhYnMocHJvcHM6IHtcbiAgdGFiczogc3RyaW5nXG4gIHN5bmM/OiBzdHJpbmdcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICBjb25zdCBuYW1lcyA9IEpTT04ucGFyc2UocHJvcHMudGFicykgYXMgc3RyaW5nW11cbiAgY29uc3QgY2hpbGRyZW4gPSBDaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKVxuXG4gIGNvbnN0IGdldEluaXRpYWxJbmRleCA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLnN5bmMpIHJldHVybiAwXG4gICAgY29uc3Qgc2F2ZWQgPVxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGl2ZW1hcmstdGFiLVwiICsgcHJvcHMuc3luYylcbiAgICAgICAgOiBudWxsXG4gICAgaWYgKCFzYXZlZCkgcmV0dXJuIDBcbiAgICBjb25zdCBpZHggPSBuYW1lcy5pbmRleE9mKHNhdmVkKVxuICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCA6IDBcbiAgfVxuXG4gIGNvbnN0IFthY3RpdmUsIHNldEFjdGl2ZV0gPSB1c2VTdGF0ZShnZXRJbml0aWFsSW5kZXgpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKGk6IG51bWJlcikgPT4ge1xuICAgIHNldEFjdGl2ZShpKVxuICAgIGlmIChwcm9wcy5zeW5jKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImxpdmVtYXJrLXRhYi1cIiArIHByb3BzLnN5bmMsIG5hbWVzW2ldISlcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJsaXZlbWFyay10YWItc3luY1wiLCB7XG4gICAgICAgICAgZGV0YWlsOiB7IHN5bmM6IHByb3BzLnN5bmMsIHRpdGxlOiBuYW1lc1tpXSB9LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcHJvcHMuc3luYykgcmV0dXJuXG4gICAgY29uc3QgaGFuZGxlciA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBzeW5jLCB0aXRsZSB9ID0gKFxuICAgICAgICBlIGFzIEN1c3RvbUV2ZW50PHsgc3luYzogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+XG4gICAgICApLmRldGFpbFxuICAgICAgaWYgKHN5bmMgIT09IHByb3BzLnN5bmMpIHJldHVyblxuICAgICAgY29uc3QgaWR4ID0gbmFtZXMuaW5kZXhPZih0aXRsZSlcbiAgICAgIGlmIChpZHggPj0gMCkgc2V0QWN0aXZlKGlkeClcbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsaXZlbWFyay10YWItc3luY1wiLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxpdmVtYXJrLXRhYi1zeW5jXCIsIGhhbmRsZXIpXG4gIH0sIFtwcm9wcy5zeW5jLCBuYW1lc10pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJvdW5kZWQteGwgYm9yZGVyIHNoYWRvdy1zbSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbSBiZy1zaWRlYmFyIGRhcms6Ymctc2lkZWJhclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGJvcmRlci1iXCI+XG4gICAgICAgIHtuYW1lcy5tYXAoKG5hbWUsIGkpID0+IChcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChpKX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YHB4LTQgcHktMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyICR7XG4gICAgICAgICAgICAgIGkgPT09IGFjdGl2ZVxuICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWZvcmVncm91bmQgYm9yZGVyLWItMiBib3JkZXItcHJpbWFyeSAtbWItcHhcIlxuICAgICAgICAgICAgICAgIDogXCJ0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCJcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtuYW1lfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2NoaWxkcmVuLm1hcCgoY2hpbGQsIGkpID0+IChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17bmFtZXNbaV19XG4gICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgIGkgPT09IGFjdGl2ZVxuICAgICAgICAgICAgICA/IFwiWyY+ZmlndXJlXTpteS0wIFsmPmZpZ3VyZV06cm91bmRlZC1ub25lIFsmPmZpZ3VyZV06Ym9yZGVyLTAgWyY+ZmlndXJlXTpzaGFkb3ctbm9uZVwiXG4gICAgICAgICAgICAgIDogXCJoaWRkZW5cIlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZH1cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ /** Single column within a Columns grid */
2
+ export declare function Column(props: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Single column within a Columns grid */
3
+ export function Column(props) {
4
+ return _jsx("div", { className: "max-w-none", children: props.children });
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQ29sdW1uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMENBQTBDO0FBQzFDLE1BQU0sVUFBVSxNQUFNLENBQUMsS0FBb0M7SUFDekQsT0FBTyxjQUFLLFNBQVMsRUFBQyxZQUFZLFlBQUUsS0FBSyxDQUFDLFFBQVEsR0FBTyxDQUFBO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2luZ2xlIGNvbHVtbiB3aXRoaW4gYSBDb2x1bW5zIGdyaWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW4ocHJvcHM6IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LW5vbmVcIj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** Grid layout for arranging content side by side */
2
+ export declare function Columns(props: {
3
+ cols?: string;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Grid layout for arranging content side by side */
3
+ export function Columns(props) {
4
+ const cols = props.cols ? parseInt(props.cols, 10) : undefined;
5
+ const style = cols
6
+ ? { gridTemplateColumns: `repeat(${cols}, 1fr)` }
7
+ : undefined;
8
+ return (_jsx("div", { className: "grid gap-6 my-4 sm:grid-cols-2", style: style, children: props.children }));
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NvbHVtbnMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFtRDtJQUN6RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQzlELE1BQU0sS0FBSyxHQUFHLElBQUk7UUFDaEIsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxJQUFJLFFBQVEsRUFBRTtRQUNqRCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBQ2IsT0FBTyxDQUNMLGNBQUssU0FBUyxFQUFDLGdDQUFnQyxFQUFDLEtBQUssRUFBRSxLQUFLLFlBQ3pELEtBQUssQ0FBQyxRQUFRLEdBQ1gsQ0FDUCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBHcmlkIGxheW91dCBmb3IgYXJyYW5naW5nIGNvbnRlbnQgc2lkZSBieSBzaWRlICovXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1ucyhwcm9wczogeyBjb2xzPzogc3RyaW5nOyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgY29scyA9IHByb3BzLmNvbHMgPyBwYXJzZUludChwcm9wcy5jb2xzLCAxMCkgOiB1bmRlZmluZWRcbiAgY29uc3Qgc3R5bGUgPSBjb2xzXG4gICAgPyB7IGdyaWRUZW1wbGF0ZUNvbHVtbnM6IGByZXBlYXQoJHtjb2xzfSwgMWZyKWAgfVxuICAgIDogdW5kZWZpbmVkXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG15LTQgc206Z3JpZC1jb2xzLTJcIiBzdHlsZT17c3R5bGV9PlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export declare function Content(props: {
2
+ children: React.ReactNode;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function Content(props) {
3
+ return (_jsx("div", { className: "w-full max-w-7xl mx-auto px-4 md:px-10", children: props.children }));
4
+ }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NvbnRlbnQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBQW9DO0lBQzFELE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyx3Q0FBd0MsWUFDcEQsS0FBSyxDQUFDLFFBQVEsR0FDWCxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIENvbnRlbnQocHJvcHM6IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgbWF4LXctN3hsIG14LWF1dG8gcHgtNCBtZDpweC0xMFwiPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** Simple wrapper that provides a title prop for ContentTabs to read */
2
+ export declare function ContentTab(props: {
3
+ title: string;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Simple wrapper that provides a title prop for ContentTabs to read */
3
+ export function ContentTab(props) {
4
+ return _jsx("div", { children: props.children });
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFRhYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NvbnRlbnRUYWIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUcxQjtJQUNDLE9BQU8sd0JBQU0sS0FBSyxDQUFDLFFBQVEsR0FBTyxDQUFBO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2ltcGxlIHdyYXBwZXIgdGhhdCBwcm92aWRlcyBhIHRpdGxlIHByb3AgZm9yIENvbnRlbnRUYWJzIHRvIHJlYWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBDb250ZW50VGFiKHByb3BzOiB7XG4gIHRpdGxlOiBzdHJpbmdcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICByZXR1cm4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** Tabbed container component for grouping content tabs with optional sync across groups */
2
+ export declare function ContentTabs(props: {
3
+ sync?: string;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Children, isValidElement, useEffect, useState } from "react";
3
+ /** Tabbed container component for grouping content tabs with optional sync across groups */
4
+ export function ContentTabs(props) {
5
+ const children = Children.toArray(props.children);
6
+ const titles = children.map(child => isValidElement(child) ? child.props.title : "");
7
+ const getInitialIndex = () => {
8
+ if (!props.sync)
9
+ return 0;
10
+ const saved = typeof window !== "undefined"
11
+ ? localStorage.getItem("livemark-tab-" + props.sync)
12
+ : null;
13
+ if (!saved)
14
+ return 0;
15
+ const idx = titles.indexOf(saved);
16
+ return idx >= 0 ? idx : 0;
17
+ };
18
+ const [active, setActive] = useState(getInitialIndex);
19
+ const handleSelect = (i) => {
20
+ setActive(i);
21
+ if (props.sync) {
22
+ localStorage.setItem("livemark-tab-" + props.sync, titles[i]);
23
+ window.dispatchEvent(new CustomEvent("livemark-tab-sync", {
24
+ detail: { sync: props.sync, title: titles[i] },
25
+ }));
26
+ }
27
+ };
28
+ useEffect(() => {
29
+ if (!props.sync)
30
+ return;
31
+ const handler = (e) => {
32
+ const { sync, title } = e.detail;
33
+ if (sync !== props.sync)
34
+ return;
35
+ const idx = titles.indexOf(title);
36
+ if (idx >= 0)
37
+ setActive(idx);
38
+ };
39
+ window.addEventListener("livemark-tab-sync", handler);
40
+ return () => window.removeEventListener("livemark-tab-sync", handler);
41
+ }, [props.sync, titles]);
42
+ return (_jsxs("div", { className: "not-prose my-4 rounded-xl border bg-card", children: [
43
+ _jsx("div", { className: "flex border-b", children: titles.map((title, i) => (_jsx("button", { type: "button", onClick: () => handleSelect(i), className: `px-4 py-2 text-sm font-medium transition-colors cursor-pointer ${i === active
44
+ ? "text-foreground border-b-2 border-primary -mb-px"
45
+ : "text-muted-foreground hover:text-foreground"}`, children: title }, title))) }), children.map((child, i) => (_jsx("div", { className: i === active ? "p-4 prose dark:prose-invert max-w-none" : "hidden", children: child }, titles[i])))] }));
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFRhYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Db250ZW50VGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFckUsNEZBQTRGO0FBQzVGLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FHM0I7SUFDQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2xDLGNBQWMsQ0FBb0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xFLENBQUE7SUFFRCxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUU7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUE7UUFDekIsTUFBTSxLQUFLLEdBQ1QsT0FBTyxNQUFNLEtBQUssV0FBVztZQUMzQixDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ1YsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFBO0lBRUQsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUE7SUFFckQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRTtRQUNqQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDWixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUE7WUFDOUQsTUFBTSxDQUFDLGFBQWEsQ0FDbEIsSUFBSSxXQUFXLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ25DLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7YUFDL0MsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUFFLE9BQU07UUFDdkIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUMzQixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUNuQixDQUNELENBQUMsTUFBTSxDQUFBO1lBQ1IsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUk7Z0JBQUUsT0FBTTtZQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2pDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNyRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN2RSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFeEIsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLDBDQUEwQztZQUN2RCxjQUFLLFNBQVMsRUFBQyxlQUFlLFlBQzNCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN4QixpQkFFRSxJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQzlCLFNBQVMsRUFBRSxrRUFDVCxDQUFDLEtBQUssTUFBTTt3QkFDVixDQUFDLENBQUMsa0RBQWtEO3dCQUNwRCxDQUFDLENBQUMsNkNBQ04sRUFBRSxZQUVELEtBQUssSUFURCxLQUFLLENBVUgsQ0FDVixDQUFDLEdBQ0UsRUFDTCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDMUIsY0FFRSxTQUFTLEVBQ1AsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxDQUFDLFFBQVEsWUFHbkUsS0FBSyxJQUxELE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FNVixDQUNQLENBQUMsSUFDRSxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcblxuLyoqIFRhYmJlZCBjb250YWluZXIgY29tcG9uZW50IGZvciBncm91cGluZyBjb250ZW50IHRhYnMgd2l0aCBvcHRpb25hbCBzeW5jIGFjcm9zcyBncm91cHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBDb250ZW50VGFicyhwcm9wczoge1xuICBzeW5jPzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBDaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKVxuICBjb25zdCB0aXRsZXMgPSBjaGlsZHJlbi5tYXAoY2hpbGQgPT5cbiAgICBpc1ZhbGlkRWxlbWVudDx7IHRpdGxlOiBzdHJpbmcgfT4oY2hpbGQpID8gY2hpbGQucHJvcHMudGl0bGUgOiBcIlwiLFxuICApXG5cbiAgY29uc3QgZ2V0SW5pdGlhbEluZGV4ID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuc3luYykgcmV0dXJuIDBcbiAgICBjb25zdCBzYXZlZCA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsaXZlbWFyay10YWItXCIgKyBwcm9wcy5zeW5jKVxuICAgICAgICA6IG51bGxcbiAgICBpZiAoIXNhdmVkKSByZXR1cm4gMFxuICAgIGNvbnN0IGlkeCA9IHRpdGxlcy5pbmRleE9mKHNhdmVkKVxuICAgIHJldHVybiBpZHggPj0gMCA/IGlkeCA6IDBcbiAgfVxuXG4gIGNvbnN0IFthY3RpdmUsIHNldEFjdGl2ZV0gPSB1c2VTdGF0ZShnZXRJbml0aWFsSW5kZXgpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKGk6IG51bWJlcikgPT4ge1xuICAgIHNldEFjdGl2ZShpKVxuICAgIGlmIChwcm9wcy5zeW5jKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImxpdmVtYXJrLXRhYi1cIiArIHByb3BzLnN5bmMsIHRpdGxlc1tpXSEpXG4gICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KFwibGl2ZW1hcmstdGFiLXN5bmNcIiwge1xuICAgICAgICAgIGRldGFpbDogeyBzeW5jOiBwcm9wcy5zeW5jLCB0aXRsZTogdGl0bGVzW2ldIH0sXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5zeW5jKSByZXR1cm5cbiAgICBjb25zdCBoYW5kbGVyID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IHN5bmMsIHRpdGxlIH0gPSAoXG4gICAgICAgIGUgYXMgQ3VzdG9tRXZlbnQ8eyBzeW5jOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfT5cbiAgICAgICkuZGV0YWlsXG4gICAgICBpZiAoc3luYyAhPT0gcHJvcHMuc3luYykgcmV0dXJuXG4gICAgICBjb25zdCBpZHggPSB0aXRsZXMuaW5kZXhPZih0aXRsZSlcbiAgICAgIGlmIChpZHggPj0gMCkgc2V0QWN0aXZlKGlkeClcbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsaXZlbWFyay10YWItc3luY1wiLCBoYW5kbGVyKVxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxpdmVtYXJrLXRhYi1zeW5jXCIsIGhhbmRsZXIpXG4gIH0sIFtwcm9wcy5zeW5jLCB0aXRsZXNdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJub3QtcHJvc2UgbXktNCByb3VuZGVkLXhsIGJvcmRlciBiZy1jYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggYm9yZGVyLWJcIj5cbiAgICAgICAge3RpdGxlcy5tYXAoKHRpdGxlLCBpKSA9PiAoXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAga2V5PXt0aXRsZX1cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KGkpfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXIgJHtcbiAgICAgICAgICAgICAgaSA9PT0gYWN0aXZlXG4gICAgICAgICAgICAgICAgPyBcInRleHQtZm9yZWdyb3VuZCBib3JkZXItYi0yIGJvcmRlci1wcmltYXJ5IC1tYi1weFwiXG4gICAgICAgICAgICAgICAgOiBcInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RpdGxlfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgICAge2NoaWxkcmVuLm1hcCgoY2hpbGQsIGkpID0+IChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17dGl0bGVzW2ldfVxuICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICBpID09PSBhY3RpdmUgPyBcInAtNCBwcm9zZSBkYXJrOnByb3NlLWludmVydCBtYXgtdy1ub25lXCIgOiBcImhpZGRlblwiXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import type { ErrorComponentProps } from "@tanstack/react-router";
2
+ export declare function DefaultCatchBoundary({ error }: ErrorComponentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ErrorComponent, Link, rootRouteId, useMatch, useRouter, } from "@tanstack/react-router";
3
+ export function DefaultCatchBoundary({ error }) {
4
+ const router = useRouter();
5
+ const isRoot = useMatch({
6
+ strict: false,
7
+ select: state => state.id === rootRouteId,
8
+ });
9
+ console.error(error);
10
+ return (_jsxs("div", { className: "min-h-[60vh] flex flex-col items-center justify-center gap-6 px-4", children: [
11
+ _jsx(ErrorComponent, { error: error }), _jsxs("div", { className: "flex gap-3 items-center flex-wrap", children: [
12
+ _jsx("button", { type: "button", onClick: () => {
13
+ router.invalidate();
14
+ }, className: "bg-primary text-primary-foreground px-4 py-2 text-sm font-medium hover:bg-primary/80 transition-colors", children: "Try Again" }), isRoot ? (_jsx(Link, { to: "/", className: "border border-border px-4 py-2 text-sm font-medium hover:bg-card transition-colors", children: "Home" })) : (_jsx(Link, { to: "/", className: "border border-border px-4 py-2 text-sm font-medium hover:bg-card transition-colors", onClick: (e) => {
15
+ e.preventDefault();
16
+ window.history.back();
17
+ }, children: "Go Back" }))] })
18
+ ] }));
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdENhdGNoQm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9EZWZhdWx0Q2F0Y2hCb3VuZGFyeS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsSUFBSSxFQUNKLFdBQVcsRUFDWCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUF1QjtJQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdEIsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7S0FDMUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVwQixPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsbUVBQW1FO1lBQ2hGLEtBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDaEMsZUFBSyxTQUFTLEVBQUMsbUNBQW1DO29CQUNoRCxpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUU7NEJBQ1osTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO3dCQUNyQixDQUFDLEVBQ0QsU0FBUyxFQUFDLHdHQUF3RywwQkFHM0csRUFDUixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ1IsS0FBQyxJQUFJLElBQ0gsRUFBRSxFQUFDLEdBQUcsRUFDTixTQUFTLEVBQUMsb0ZBQW9GLHFCQUd6RixDQUNSLENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxJQUFJLElBQ0gsRUFBRSxFQUFDLEdBQUcsRUFDTixTQUFTLEVBQUMsb0ZBQW9GLEVBQzlGLE9BQU8sRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFOzRCQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7NEJBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7d0JBQ3ZCLENBQUMsd0JBR0ksQ0FDUixJQUNHO1lBQ0YsQ0FDUCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JDb21wb25lbnRQcm9wcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7XG4gIEVycm9yQ29tcG9uZW50LFxuICBMaW5rLFxuICByb290Um91dGVJZCxcbiAgdXNlTWF0Y2gsXG4gIHVzZVJvdXRlcixcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENhdGNoQm91bmRhcnkoeyBlcnJvciB9OiBFcnJvckNvbXBvbmVudFByb3BzKSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIGNvbnN0IGlzUm9vdCA9IHVzZU1hdGNoKHtcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICAgIHNlbGVjdDogc3RhdGUgPT4gc3RhdGUuaWQgPT09IHJvb3RSb3V0ZUlkLFxuICB9KVxuXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLVs2MHZoXSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtNiBweC00XCI+XG4gICAgICA8RXJyb3JDb21wb25lbnQgZXJyb3I9e2Vycm9yfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zIGl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHJvdXRlci5pbnZhbGlkYXRlKClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS84MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgID5cbiAgICAgICAgICBUcnkgQWdhaW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIHtpc1Jvb3QgPyAoXG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIHRvPVwiL1wiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLWJvcmRlciBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSBob3ZlcjpiZy1jYXJkIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBIb21lXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICB0bz1cIi9cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ib3JkZXIgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6YmctY2FyZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXsoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgR28gQmFja1xuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import type { ComponentProps } from "react";
2
+ /** Styled wrapper for definition lists produced by remark-definition-list */
3
+ export declare function DefinitionList(props: ComponentProps<"dl">): import("react/jsx-runtime").JSX.Element;
4
+ /** Styled definition term rendered as bold text */
5
+ export declare function DefinitionTerm(props: ComponentProps<"dt">): import("react/jsx-runtime").JSX.Element;
6
+ /** Styled definition detail with a left border accent */
7
+ export declare function DefinitionDetail(props: ComponentProps<"dd">): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Styled wrapper for definition lists produced by remark-definition-list */
3
+ export function DefinitionList(props) {
4
+ return _jsx("dl", { ...props, className: "not-prose space-y-4" });
5
+ }
6
+ /** Styled definition term rendered as bold text */
7
+ export function DefinitionTerm(props) {
8
+ return _jsx("dt", { ...props, className: "text-foreground font-semibold" });
9
+ }
10
+ /** Styled definition detail with a left border accent */
11
+ export function DefinitionDetail(props) {
12
+ return (_jsx("dd", { ...props, className: "ml-0 pl-4 border-l-2 border-border text-muted-foreground" }));
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmaW5pdGlvbkxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9EZWZpbml0aW9uTGlzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLDZFQUE2RTtBQUM3RSxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQTJCO0lBQ3hELE9BQU8sZ0JBQVEsS0FBSyxFQUFFLFNBQVMsRUFBQyxxQkFBcUIsR0FBRyxDQUFBO0FBQzFELENBQUM7QUFFRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUEyQjtJQUN4RCxPQUFPLGdCQUFRLEtBQUssRUFBRSxTQUFTLEVBQUMsK0JBQStCLEdBQUcsQ0FBQTtBQUNwRSxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUEyQjtJQUMxRCxPQUFPLENBQ0wsZ0JBQ00sS0FBSyxFQUNULFNBQVMsRUFBQywwREFBMEQsR0FDcEUsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMgfSBmcm9tIFwicmVhY3RcIlxuXG4vKiogU3R5bGVkIHdyYXBwZXIgZm9yIGRlZmluaXRpb24gbGlzdHMgcHJvZHVjZWQgYnkgcmVtYXJrLWRlZmluaXRpb24tbGlzdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmluaXRpb25MaXN0KHByb3BzOiBDb21wb25lbnRQcm9wczxcImRsXCI+KSB7XG4gIHJldHVybiA8ZGwgey4uLnByb3BzfSBjbGFzc05hbWU9XCJub3QtcHJvc2Ugc3BhY2UteS00XCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIHRlcm0gcmVuZGVyZWQgYXMgYm9sZCB0ZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvblRlcm0ocHJvcHM6IENvbXBvbmVudFByb3BzPFwiZHRcIj4pIHtcbiAgcmV0dXJuIDxkdCB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LXNlbWlib2xkXCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIGRldGFpbCB3aXRoIGEgbGVmdCBib3JkZXIgYWNjZW50ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvbkRldGFpbChwcm9wczogQ29tcG9uZW50UHJvcHM8XCJkZFwiPikge1xuICByZXR1cm4gKFxuICAgIDxkZFxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPVwibWwtMCBwbC00IGJvcmRlci1sLTIgYm9yZGVyLWJvcmRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIlxuICAgIC8+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /** Collapsible content section with a summary label */
2
+ export declare function Details(props: {
3
+ summary: string;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { ChevronRight } from "lucide-react";
4
+ import { Collapsible, CollapsibleTrigger, CollapsibleContent, } from "../elements/collapsible.js";
5
+ /** Collapsible content section with a summary label */
6
+ export function Details(props) {
7
+ const [open, setOpen] = useState(false);
8
+ return (_jsxs(Collapsible, { open: open, onOpenChange: setOpen, className: "not-prose my-4 rounded-xl border border-border bg-card px-4 py-3", children: [
9
+ _jsxs(CollapsibleTrigger, { className: "flex w-full cursor-pointer items-center gap-2 text-sm font-semibold select-none", children: [
10
+ _jsx(ChevronRight, { className: `size-4 shrink-0 transition-transform ${open ? "rotate-90" : ""}` }), props.summary] }), _jsx(CollapsibleContent, { className: "mt-3 text-sm [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", children: props.children })
11
+ ] }));
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0RldGFpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sNEJBQTZCLENBQUE7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBcUQ7SUFDM0UsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdkMsT0FBTyxDQUNMLE1BQUMsV0FBVyxJQUNWLElBQUksRUFBRSxJQUFJLEVBQ1YsWUFBWSxFQUFFLE9BQU8sRUFDckIsU0FBUyxFQUFDLGtFQUFrRTtZQUU1RSxNQUFDLGtCQUFrQixJQUFDLFNBQVMsRUFBQyxpRkFBaUY7b0JBQzdHLEtBQUMsWUFBWSxJQUNYLFNBQVMsRUFBRSx3Q0FBd0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUM1RSxFQUNELEtBQUssQ0FBQyxPQUFPLElBQ0ssRUFDckIsS0FBQyxrQkFBa0IsSUFBQyxTQUFTLEVBQUMsc0VBQXNFLFlBQ2pHLEtBQUssQ0FBQyxRQUFRLEdBQ0k7WUFDVCxDQUNmLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxuICBDb2xsYXBzaWJsZUNvbnRlbnQsXG59IGZyb20gXCIuLi9lbGVtZW50cy9jb2xsYXBzaWJsZS50c3hcIlxuXG4vKiogQ29sbGFwc2libGUgY29udGVudCBzZWN0aW9uIHdpdGggYSBzdW1tYXJ5IGxhYmVsICovXG5leHBvcnQgZnVuY3Rpb24gRGV0YWlscyhwcm9wczogeyBzdW1tYXJ5OiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICByZXR1cm4gKFxuICAgIDxDb2xsYXBzaWJsZVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17c2V0T3Blbn1cbiAgICAgIGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctY2FyZCBweC00IHB5LTNcIlxuICAgID5cbiAgICAgIDxDb2xsYXBzaWJsZVRyaWdnZXIgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gZm9udC1zZW1pYm9sZCBzZWxlY3Qtbm9uZVwiPlxuICAgICAgICA8Q2hldnJvblJpZ2h0XG4gICAgICAgICAgY2xhc3NOYW1lPXtgc2l6ZS00IHNocmluay0wIHRyYW5zaXRpb24tdHJhbnNmb3JtICR7b3BlbiA/IFwicm90YXRlLTkwXCIgOiBcIlwifWB9XG4gICAgICAgIC8+XG4gICAgICAgIHtwcm9wcy5zdW1tYXJ5fVxuICAgICAgPC9Db2xsYXBzaWJsZVRyaWdnZXI+XG4gICAgICA8Q29sbGFwc2libGVDb250ZW50IGNsYXNzTmFtZT1cIm10LTMgdGV4dC1zbSBbJj5wXTpteS0xIFsmPnA6Zmlyc3QtY2hpbGRdOm10LTAgWyY+cDpsYXN0LWNoaWxkXTptYi0wXCI+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvQ29sbGFwc2libGVDb250ZW50PlxuICAgIDwvQ29sbGFwc2libGU+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ /** Renders a file/directory tree from a JSON-serialized tree structure */
2
+ export declare function FileTree(props: {
3
+ tree: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { File, Folder } from "lucide-react";
3
+ /** Renders a file/directory tree from a JSON-serialized tree structure */
4
+ export function FileTree(props) {
5
+ const items = JSON.parse(props.tree);
6
+ return (_jsx("div", { className: "not-prose my-4 rounded-xl border border-border bg-card p-4 font-mono text-sm", children: _jsx(TreeItems, { items: items, depth: 0 }) }));
7
+ }
8
+ function TreeItems(props) {
9
+ return (_jsx("ul", { className: props.depth > 0 ? "ml-4 border-l border-border pl-2" : "", children: props.items.map((item, index) => (_jsx(TreeNode, { item: item, depth: props.depth }, `${item.name}-${index}`))) }));
10
+ }
11
+ function TreeNode(props) {
12
+ const { item, depth } = props;
13
+ return (_jsxs("li", { className: "py-0.5", children: [
14
+ _jsxs("span", { className: "inline-flex items-center gap-2", children: [item.isDir ? (_jsx(Folder, { className: "size-4 shrink-0 text-primary" })) : (_jsx(File, { className: "size-4 shrink-0 text-muted-foreground" })), _jsx("span", { className: item.isDir ? "font-semibold" : "", children: item.name })
15
+ ] }), item.children && item.children.length > 0 && (_jsx(TreeItems, { items: item.children, depth: depth + 1 }))] }));
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZVRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9GaWxlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBUTNDLDBFQUEwRTtBQUMxRSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXVCO0lBQzlDLE1BQU0sS0FBSyxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWhELE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyw4RUFBOEUsWUFDM0YsS0FBQyxTQUFTLElBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFJLEdBQ2pDLENBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUEyQztJQUM1RCxPQUFPLENBQ0wsYUFBSSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQ3JFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDaEMsS0FBQyxRQUFRLElBRVAsSUFBSSxFQUFFLElBQUksRUFDVixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFGYixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBRzVCLENBQ0gsQ0FBQyxHQUNDLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxLQUF3QztJQUN4RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU3QixPQUFPLENBQ0wsY0FBSSxTQUFTLEVBQUMsUUFBUTtZQUNwQixnQkFBTSxTQUFTLEVBQUMsZ0NBQWdDLGFBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1osS0FBQyxNQUFNLElBQUMsU0FBUyxFQUFDLDhCQUE4QixHQUFHLENBQ3BELENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLHVDQUF1QyxHQUFHLENBQzNELEVBQ0QsZUFBTSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQUcsSUFBSSxDQUFDLElBQUksR0FBUTtvQkFDakUsRUFDTixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUM1QyxLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBSSxDQUN0RCxJQUNFLENBQ04sQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlLCBGb2xkZXIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuaW50ZXJmYWNlIFRyZWVJdGVtIHtcbiAgbmFtZTogc3RyaW5nXG4gIGlzRGlyOiBib29sZWFuXG4gIGNoaWxkcmVuPzogVHJlZUl0ZW1bXVxufVxuXG4vKiogUmVuZGVycyBhIGZpbGUvZGlyZWN0b3J5IHRyZWUgZnJvbSBhIEpTT04tc2VyaWFsaXplZCB0cmVlIHN0cnVjdHVyZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZpbGVUcmVlKHByb3BzOiB7IHRyZWU6IHN0cmluZyB9KSB7XG4gIGNvbnN0IGl0ZW1zOiBUcmVlSXRlbVtdID0gSlNPTi5wYXJzZShwcm9wcy50cmVlKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJub3QtcHJvc2UgbXktNCByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgcC00IGZvbnQtbW9ubyB0ZXh0LXNtXCI+XG4gICAgICA8VHJlZUl0ZW1zIGl0ZW1zPXtpdGVtc30gZGVwdGg9ezB9IC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gVHJlZUl0ZW1zKHByb3BzOiB7IGl0ZW1zOiBUcmVlSXRlbVtdOyBkZXB0aDogbnVtYmVyIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8dWwgY2xhc3NOYW1lPXtwcm9wcy5kZXB0aCA+IDAgPyBcIm1sLTQgYm9yZGVyLWwgYm9yZGVyLWJvcmRlciBwbC0yXCIgOiBcIlwifT5cbiAgICAgIHtwcm9wcy5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgIDxUcmVlTm9kZVxuICAgICAgICAgIGtleT17YCR7aXRlbS5uYW1lfS0ke2luZGV4fWB9XG4gICAgICAgICAgaXRlbT17aXRlbX1cbiAgICAgICAgICBkZXB0aD17cHJvcHMuZGVwdGh9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8L3VsPlxuICApXG59XG5cbmZ1bmN0aW9uIFRyZWVOb2RlKHByb3BzOiB7IGl0ZW06IFRyZWVJdGVtOyBkZXB0aDogbnVtYmVyIH0pIHtcbiAgY29uc3QgeyBpdGVtLCBkZXB0aCB9ID0gcHJvcHNcblxuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9XCJweS0wLjVcIj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICB7aXRlbS5pc0RpciA/IChcbiAgICAgICAgICA8Rm9sZGVyIGNsYXNzTmFtZT1cInNpemUtNCBzaHJpbmstMCB0ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxGaWxlIGNsYXNzTmFtZT1cInNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICApfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2l0ZW0uaXNEaXIgPyBcImZvbnQtc2VtaWJvbGRcIiA6IFwiXCJ9PntpdGVtLm5hbWV9PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAge2l0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPFRyZWVJdGVtcyBpdGVtcz17aXRlbS5jaGlsZHJlbn0gZGVwdGg9e2RlcHRoICsgMX0gLz5cbiAgICAgICl9XG4gICAgPC9saT5cbiAgKVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ /** Footer shown below article content */
2
+ export declare function Footer(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /** Footer shown below article content */
3
+ export function Footer() {
4
+ return (_jsxs("p", { className: "mt-12 text-center text-sm text-muted-foreground", children: ["Created with ",
5
+ _jsx("span", { className: "text-red-500", children: "\u2764" }),
6
+ " and", " ", _jsx("a", { href: "https://github.com/datisthq/livemark", target: "_blank", rel: "noopener noreferrer", className: "font-medium hover:text-foreground transition-colors", children: "Livemark" })
7
+ ] }));
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvRm9vdGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUNBQXlDO0FBQ3pDLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE9BQU8sQ0FDTCxhQUFHLFNBQVMsRUFBQyxpREFBaUQ7WUFDL0MsZUFBTSxTQUFTLEVBQUMsY0FBYyx1QkFBUztvQkFBSyxHQUFHLEVBQzVELFlBQ0UsSUFBSSxFQUFDLHNDQUFzQyxFQUMzQyxNQUFNLEVBQUMsUUFBUSxFQUNmLEdBQUcsRUFBQyxxQkFBcUIsRUFDekIsU0FBUyxFQUFDLHFEQUFxRCx5QkFHN0Q7WUFDRixDQUNMLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEZvb3RlciBzaG93biBiZWxvdyBhcnRpY2xlIGNvbnRlbnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBGb290ZXIoKSB7XG4gIHJldHVybiAoXG4gICAgPHAgY2xhc3NOYW1lPVwibXQtMTIgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIENyZWF0ZWQgd2l0aCA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj7inaQ8L3NwYW4+IGFuZHtcIiBcIn1cbiAgICAgIDxhXG4gICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vZGF0aXN0aHEvbGl2ZW1hcmtcIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgID5cbiAgICAgICAgTGl2ZW1hcmtcbiAgICAgIDwvYT5cbiAgICA8L3A+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { type ComponentProps } from "react";
2
+ /** Wraps footnote reference links in a HoverCard that previews footnote content inline */
3
+ export declare function FootnoteRef(props: ComponentProps<"a">): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { HoverCard, HoverCardContent, HoverCardTrigger, } from "../elements/hover-card.js";
4
+ const FOOTNOTE_PREFIX = "#user-content-fn-";
5
+ /** Wraps footnote reference links in a HoverCard that previews footnote content inline */
6
+ export function FootnoteRef(props) {
7
+ const href = props.href ?? "";
8
+ if (!href.startsWith(FOOTNOTE_PREFIX)) {
9
+ return _jsx("a", { ...props });
10
+ }
11
+ return _jsx(FootnoteHoverCard, { ...props, href: href });
12
+ }
13
+ function FootnoteHoverCard(props) {
14
+ const [footnoteHtml, setFootnoteHtml] = useState("");
15
+ useEffect(() => {
16
+ const targetId = props.href.slice(1);
17
+ const el = document.getElementById(targetId);
18
+ if (!el)
19
+ return;
20
+ const wrapper = document.createElement("div");
21
+ wrapper.innerHTML = el.innerHTML;
22
+ for (const backref of wrapper.querySelectorAll("[data-footnote-backref]")) {
23
+ backref.remove();
24
+ }
25
+ setFootnoteHtml(wrapper.innerHTML);
26
+ }, [props.href]);
27
+ return (_jsxs(HoverCard, { children: [
28
+ _jsx(HoverCardTrigger, { render: _jsx("a", { ...props }) }), _jsx(HoverCardContent, { className: "prose dark:prose-invert text-sm w-80 [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", side: "top", sideOffset: 8, children: footnoteHtml ? (_jsx("div", { dangerouslySetInnerHTML: { __html: footnoteHtml } })) : (_jsx("p", { className: "text-muted-foreground", children: "Footnote not found" })) })
29
+ ] }));
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdG5vdGVSZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Gb290bm90ZVJlZi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBdUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSwyQkFBNEIsQ0FBQTtBQUVuQyxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQTtBQUUzQywwRkFBMEY7QUFDMUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUEwQjtJQUNwRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sZUFBTyxLQUFLLEdBQUksQ0FBQTtJQUN6QixDQUFDO0lBRUQsT0FBTyxLQUFDLGlCQUFpQixPQUFLLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFJLENBQUE7QUFDckQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBNkM7SUFDdEUsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFcEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFNO1FBRWYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUE7UUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUVoQixPQUFPLENBQ0wsTUFBQyxTQUFTO1lBQ1IsS0FBQyxnQkFBZ0IsSUFBQyxNQUFNLEVBQUUsZUFBTyxLQUFLLEdBQUksR0FBSSxFQUM5QyxLQUFDLGdCQUFnQixJQUNmLFNBQVMsRUFBQyw4RkFBOEYsRUFDeEcsSUFBSSxFQUFDLEtBQUssRUFDVixVQUFVLEVBQUUsQ0FBQyxZQUVaLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDZCxjQUFLLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFJLENBQzNELENBQUMsQ0FBQyxDQUFDLENBQ0YsWUFBRyxTQUFTLEVBQUMsdUJBQXVCLG1DQUF1QixDQUM1RCxHQUNnQjtZQUNULENBQ2IsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbXBvbmVudFByb3BzLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7XG4gIEhvdmVyQ2FyZCxcbiAgSG92ZXJDYXJkQ29udGVudCxcbiAgSG92ZXJDYXJkVHJpZ2dlcixcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL2hvdmVyLWNhcmQudHN4XCJcblxuY29uc3QgRk9PVE5PVEVfUFJFRklYID0gXCIjdXNlci1jb250ZW50LWZuLVwiXG5cbi8qKiBXcmFwcyBmb290bm90ZSByZWZlcmVuY2UgbGlua3MgaW4gYSBIb3ZlckNhcmQgdGhhdCBwcmV2aWV3cyBmb290bm90ZSBjb250ZW50IGlubGluZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZvb3Rub3RlUmVmKHByb3BzOiBDb21wb25lbnRQcm9wczxcImFcIj4pIHtcbiAgY29uc3QgaHJlZiA9IHByb3BzLmhyZWYgPz8gXCJcIlxuICBpZiAoIWhyZWYuc3RhcnRzV2l0aChGT09UTk9URV9QUkVGSVgpKSB7XG4gICAgcmV0dXJuIDxhIHsuLi5wcm9wc30gLz5cbiAgfVxuXG4gIHJldHVybiA8Rm9vdG5vdGVIb3ZlckNhcmQgey4uLnByb3BzfSBocmVmPXtocmVmfSAvPlxufVxuXG5mdW5jdGlvbiBGb290bm90ZUhvdmVyQ2FyZChwcm9wczogQ29tcG9uZW50UHJvcHM8XCJhXCI+ICYgeyBocmVmOiBzdHJpbmcgfSkge1xuICBjb25zdCBbZm9vdG5vdGVIdG1sLCBzZXRGb290bm90ZUh0bWxdID0gdXNlU3RhdGUoXCJcIilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldElkID0gcHJvcHMuaHJlZi5zbGljZSgxKVxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SWQpXG4gICAgaWYgKCFlbCkgcmV0dXJuXG5cbiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKVxuICAgIHdyYXBwZXIuaW5uZXJIVE1MID0gZWwuaW5uZXJIVE1MXG4gICAgZm9yIChjb25zdCBiYWNrcmVmIG9mIHdyYXBwZXIucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWZvb3Rub3RlLWJhY2tyZWZdXCIpKSB7XG4gICAgICBiYWNrcmVmLnJlbW92ZSgpXG4gICAgfVxuICAgIHNldEZvb3Rub3RlSHRtbCh3cmFwcGVyLmlubmVySFRNTClcbiAgfSwgW3Byb3BzLmhyZWZdKVxuXG4gIHJldHVybiAoXG4gICAgPEhvdmVyQ2FyZD5cbiAgICAgIDxIb3ZlckNhcmRUcmlnZ2VyIHJlbmRlcj17PGEgey4uLnByb3BzfSAvPn0gLz5cbiAgICAgIDxIb3ZlckNhcmRDb250ZW50XG4gICAgICAgIGNsYXNzTmFtZT1cInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IHRleHQtc20gdy04MCBbJj5wXTpteS0xIFsmPnA6Zmlyc3QtY2hpbGRdOm10LTAgWyY+cDpsYXN0LWNoaWxkXTptYi0wXCJcbiAgICAgICAgc2lkZT1cInRvcFwiXG4gICAgICAgIHNpZGVPZmZzZXQ9ezh9XG4gICAgICA+XG4gICAgICAgIHtmb290bm90ZUh0bWwgPyAoXG4gICAgICAgICAgPGRpdiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGZvb3Rub3RlSHRtbCB9fSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvb3Rub3RlIG5vdCBmb3VuZDwvcD5cbiAgICAgICAgKX1cbiAgICAgIDwvSG92ZXJDYXJkQ29udGVudD5cbiAgICA8L0hvdmVyQ2FyZD5cbiAgKVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ export declare const headingComponents: {
2
+ h1: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
3
+ h2: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
4
+ h3: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
5
+ h4: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
6
+ h5: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
7
+ h6: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
8
+ };
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /** Heading component that wraps content in an anchor link to itself */
3
+ function createHeading(Tag) {
4
+ return function Heading(props) {
5
+ if (!props.id)
6
+ return _jsx(Tag, { ...props });
7
+ return (_jsx(Tag, { ...props, children: _jsx("a", { href: `#${props.id}`, children: props.children }) }));
8
+ };
9
+ }
10
+ export const headingComponents = {
11
+ h1: createHeading("h1"),
12
+ h2: createHeading("h2"),
13
+ h3: createHeading("h3"),
14
+ h4: createHeading("h4"),
15
+ h5: createHeading("h5"),
16
+ h6: createHeading("h6"),
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVhZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0hlYWRpbmcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RUFBdUU7QUFDdkUsU0FBUyxhQUFhLENBQUMsR0FBNEM7SUFDakUsT0FBTyxTQUFTLE9BQU8sQ0FBQyxLQUErQztRQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUMsR0FBRyxPQUFLLEtBQUssR0FBSSxDQUFBO1FBQ3hDLE9BQU8sQ0FDTCxLQUFDLEdBQUcsT0FBSyxLQUFLLFlBQ1osWUFBRyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLFlBQUcsS0FBSyxDQUFDLFFBQVEsR0FBSyxHQUN6QyxDQUNQLENBQUE7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7Q0FDeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIZWFkaW5nIGNvbXBvbmVudCB0aGF0IHdyYXBzIGNvbnRlbnQgaW4gYW4gYW5jaG9yIGxpbmsgdG8gaXRzZWxmICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkaW5nKFRhZzogXCJoMVwiIHwgXCJoMlwiIHwgXCJoM1wiIHwgXCJoNFwiIHwgXCJoNVwiIHwgXCJoNlwiKSB7XG4gIHJldHVybiBmdW5jdGlvbiBIZWFkaW5nKHByb3BzOiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+KSB7XG4gICAgaWYgKCFwcm9wcy5pZCkgcmV0dXJuIDxUYWcgey4uLnByb3BzfSAvPlxuICAgIHJldHVybiAoXG4gICAgICA8VGFnIHsuLi5wcm9wc30+XG4gICAgICAgIDxhIGhyZWY9e2AjJHtwcm9wcy5pZH1gfT57cHJvcHMuY2hpbGRyZW59PC9hPlxuICAgICAgPC9UYWc+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBoZWFkaW5nQ29tcG9uZW50cyA9IHtcbiAgaDE6IGNyZWF0ZUhlYWRpbmcoXCJoMVwiKSxcbiAgaDI6IGNyZWF0ZUhlYWRpbmcoXCJoMlwiKSxcbiAgaDM6IGNyZWF0ZUhlYWRpbmcoXCJoM1wiKSxcbiAgaDQ6IGNyZWF0ZUhlYWRpbmcoXCJoNFwiKSxcbiAgaDU6IGNyZWF0ZUhlYWRpbmcoXCJoNVwiKSxcbiAgaDY6IGNyZWF0ZUhlYWRpbmcoXCJoNlwiKSxcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /** Inline badge rendered from :badge text directives */
2
+ export declare function InlineBadge(props: {
3
+ label: string;
4
+ variant?: "default" | "secondary" | "destructive" | "outline";
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Badge } from "../elements/badge.js";
3
+ /** Inline badge rendered from :badge text directives */
4
+ export function InlineBadge(props) {
5
+ return _jsx(Badge, { variant: props.variant, children: props.label });
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lQmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9JbmxpbmVCYWRnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBdUIsQ0FBQTtBQUU3Qyx3REFBd0Q7QUFDeEQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUczQjtJQUNDLE9BQU8sS0FBQyxLQUFLLElBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLFlBQUcsS0FBSyxDQUFDLEtBQUssR0FBUyxDQUFBO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9lbGVtZW50cy9iYWRnZS50c3hcIlxuXG4vKiogSW5saW5lIGJhZGdlIHJlbmRlcmVkIGZyb20gOmJhZGdlIHRleHQgZGlyZWN0aXZlcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIElubGluZUJhZGdlKHByb3BzOiB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzZWNvbmRhcnlcIiB8IFwiZGVzdHJ1Y3RpdmVcIiB8IFwib3V0bGluZVwiXG59KSB7XG4gIHJldHVybiA8QmFkZ2UgdmFyaWFudD17cHJvcHMudmFyaWFudH0+e3Byb3BzLmxhYmVsfTwvQmFkZ2U+XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /** Renders a Lucide icon inline by name */
2
+ export declare function InlineIcon(props: {
3
+ name: string;
4
+ className?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { DynamicIcon } from "../helpers/dynamic-icon.js";
3
+ /** Renders a Lucide icon inline by name */
4
+ export function InlineIcon(props) {
5
+ const className = props.className
6
+ ? `inline-block size-4 align-text-bottom ${props.className}`
7
+ : "inline-block size-4 align-text-bottom";
8
+ return _jsx(DynamicIcon, { name: props.name, className: className });
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lSWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0lubGluZUljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTZCLENBQUE7QUFFekQsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBMkM7SUFDcEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVM7UUFDL0IsQ0FBQyxDQUFDLHlDQUF5QyxLQUFLLENBQUMsU0FBUyxFQUFFO1FBQzVELENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQTtJQUUzQyxPQUFPLEtBQUMsV0FBVyxJQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUksQ0FBQTtBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcblxuLyoqIFJlbmRlcnMgYSBMdWNpZGUgaWNvbiBpbmxpbmUgYnkgbmFtZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIElubGluZUljb24ocHJvcHM6IHsgbmFtZTogc3RyaW5nOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICBjb25zdCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWVcbiAgICA/IGBpbmxpbmUtYmxvY2sgc2l6ZS00IGFsaWduLXRleHQtYm90dG9tICR7cHJvcHMuY2xhc3NOYW1lfWBcbiAgICA6IFwiaW5saW5lLWJsb2NrIHNpemUtNCBhbGlnbi10ZXh0LWJvdHRvbVwiXG5cbiAgcmV0dXJuIDxEeW5hbWljSWNvbiBuYW1lPXtwcm9wcy5uYW1lfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gLz5cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ /** Renders the page's table of contents inline within the content */
2
+ export declare function InlineToc(props: {
3
+ maxLevel?: string;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useTocItems } from "../helpers/toc-context.js";
3
+ /** Renders the page's table of contents inline within the content */
4
+ export function InlineToc(props) {
5
+ const allItems = useTocItems();
6
+ const maxDepth = props.maxLevel ? Number(props.maxLevel) : 4;
7
+ const items = allItems.filter(item => item.depth <= maxDepth);
8
+ if (items.length === 0)
9
+ return null;
10
+ return (_jsxs("nav", { className: "not-prose my-8 rounded-xl border border-border bg-card p-6", children: [
11
+ _jsx("p", { className: "text-base font-semibold mb-4", children: "Table of Contents" }), _jsx("ul", { className: "text-base space-y-2.5", children: items.map(item => (_jsx("li", { style: { paddingLeft: `${(item.depth - 2) * 1.25}rem` }, children: _jsx("a", { href: item.url, className: "text-muted-foreground hover:text-primary transition-colors", children: item.title }) }, item.url))) })
12
+ ] }));
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lVG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvSW5saW5lVG9jLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXZELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQTRCO0lBQ3BELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQTtJQUU3RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRW5DLE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyw0REFBNEQ7WUFDekUsWUFBRyxTQUFTLEVBQUMsOEJBQThCLGtDQUFzQixFQUNqRSxhQUFJLFNBQVMsRUFBQyx1QkFBdUIsWUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2pCLGFBRUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLFlBRXZELFlBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQ2QsU0FBUyxFQUFDLDREQUE0RCxZQUVyRSxJQUFJLENBQUMsS0FBSyxHQUNULElBUkMsSUFBSSxDQUFDLEdBQUcsQ0FTVixDQUNOLENBQUMsR0FDQztZQUNELENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUb2NJdGVtcyB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcblxuLyoqIFJlbmRlcnMgdGhlIHBhZ2UncyB0YWJsZSBvZiBjb250ZW50cyBpbmxpbmUgd2l0aGluIHRoZSBjb250ZW50ICovXG5leHBvcnQgZnVuY3Rpb24gSW5saW5lVG9jKHByb3BzOiB7IG1heExldmVsPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgYWxsSXRlbXMgPSB1c2VUb2NJdGVtcygpXG4gIGNvbnN0IG1heERlcHRoID0gcHJvcHMubWF4TGV2ZWwgPyBOdW1iZXIocHJvcHMubWF4TGV2ZWwpIDogNFxuICBjb25zdCBpdGVtcyA9IGFsbEl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uZGVwdGggPD0gbWF4RGVwdGgpXG5cbiAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxuYXYgY2xhc3NOYW1lPVwibm90LXByb3NlIG15LTggcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkIHAtNlwiPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbWItNFwiPlRhYmxlIG9mIENvbnRlbnRzPC9wPlxuICAgICAgPHVsIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzcGFjZS15LTIuNVwiPlxuICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAga2V5PXtpdGVtLnVybH1cbiAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBgJHsoaXRlbS5kZXB0aCAtIDIpICogMS4yNX1yZW1gIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj17aXRlbS51cmx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXRlbS50aXRsZX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export declare function Layout(props: {
2
+ withSidebar?: boolean;
3
+ children?: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,65 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link, useLocation, useMatch } from "@tanstack/react-router";
3
+ import { useHotkey } from "@tanstack/react-hotkeys";
4
+ import { ExternalLink } from "lucide-react";
5
+ import { currentSection, sectionFirstArticle, sectionFlatArticles, sortedArticles, } from "../content/article.js";
6
+ import { DynamicIcon } from "../helpers/dynamic-icon.js";
7
+ import { sectionIcon } from "../helpers/section.js";
8
+ import { SidebarInset, SidebarProvider, SidebarTrigger, useSidebar, } from "../elements/sidebar.js";
9
+ import { BackToTop } from "./BackToTop.js";
10
+ import { Banner } from "./Banner.js";
11
+ import { Sidebar } from "./Sidebar.js";
12
+ import { SiteTitle } from "./SiteTitle.js";
13
+ function splatFor(pathname) {
14
+ return { _splat: pathname.replace(/^\/|\/$/g, "") };
15
+ }
16
+ export function Layout(props) {
17
+ const pathname = useLocation({ select: l => l.pathname });
18
+ const articleRoute = useMatch({ from: "/$", shouldThrow: false });
19
+ const activeSection = articleRoute
20
+ ? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
21
+ : undefined;
22
+ useHotkey("J", () => window.scrollBy({ top: window.innerHeight * 0.8, behavior: "smooth" }));
23
+ useHotkey("K", () => window.scrollBy({ top: -window.innerHeight * 0.8, behavior: "smooth" }));
24
+ const sections = import.meta.env.CONFIG.sections;
25
+ const header = (_jsxs("header", { className: "sticky top-0 z-20 flex h-16 shrink-0 items-center border-b bg-background", children: [
26
+ _jsx("div", { className: `flex items-center self-stretch pl-4 ${props.withSidebar ? "pr-4" : "md:pr-20"}`, children: props.withSidebar ? (_jsxs(_Fragment, { children: [
27
+ _jsx("div", { className: "hidden md:flex", children: _jsx(SidebarTrigger, {}) }), _jsx(Link, { to: "/", className: "md:hidden flex items-center gap-2", children: _jsx(SiteTitle, {}) })
28
+ ] })) : (_jsx(Link, { to: "/", className: "flex items-center gap-2", children: _jsx(SiteTitle, {}) })) }), _jsxs("div", { className: "hidden md:flex flex-1 items-center gap-8 self-stretch px-6 text-sm", children: [sections?.length ? (sections
29
+ .filter(section => section.position === "header")
30
+ .map(section => {
31
+ const isActive = activeSection?.prefix === section.prefix;
32
+ const target = section.type === "blog" || section.type === "changelog"
33
+ ? section.prefix
34
+ : sectionFirstArticle.get(section.prefix);
35
+ const latestVersion = section.type === "changelog" && section.version
36
+ ? sortedArticles.find(a => a.path === sectionFlatArticles.get(section.prefix)?.[0])?.title
37
+ : undefined;
38
+ return (_jsxs(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {}, className: `inline-flex items-center gap-1.5 text-foreground ${isActive
39
+ ? "font-medium border-b-2 border-foreground pb-0.5 -mb-0.5"
40
+ : "opacity-80 hover:opacity-100 transition-opacity"}`, children: [
41
+ _jsx(DynamicIcon, { name: sectionIcon(section), className: "size-3.5" }), _jsxs("span", { children: [section.title, latestVersion && (_jsxs("span", { className: "opacity-80", children: [" (", latestVersion, ")"] }))] })
42
+ ] }, section.prefix));
43
+ })) : (_jsx(Link, { to: "/", className: "text-foreground font-medium underline underline-offset-4", children: "Docs" })), import.meta.env.CONFIG.links
44
+ ?.filter(link => link.position === "header" &&
45
+ (!link.prefix || link.prefix === activeSection?.prefix))
46
+ .map(link => (_jsxs("a", { href: link.url, target: "_blank", rel: "noopener noreferrer", className: "text-foreground opacity-80 hover:opacity-100 transition-opacity", children: [link.icon && (_jsx(DynamicIcon, { name: link.icon, className: "inline size-3.5 align-[-0.125em]" })), " ", link.title, " ", _jsx(ExternalLink, { className: "inline size-3 align-[-0.125em]" })
47
+ ] }, link.url))), _jsx(Banner, {})
48
+ ] }), _jsx("div", { className: "md:hidden ml-auto pr-2", children: _jsx(SidebarTrigger, {}) })
49
+ ] }));
50
+ return (_jsx(SidebarProvider, { defaultOpen: !!props.withSidebar, children: _jsx(SidebarShell, { withSidebar: props.withSidebar, header: header, children: props.children }) }, props.withSidebar ? "sidebar" : "mini"));
51
+ }
52
+ function SidebarShell(props) {
53
+ const { isMobile, setOpenMobile } = useSidebar();
54
+ const onClick = (event) => {
55
+ if (!isMobile)
56
+ return;
57
+ if (event.target.closest("a"))
58
+ setOpenMobile(false);
59
+ };
60
+ return (_jsxs("div", { style: { display: "contents" }, onClick: onClick, children: [
61
+ _jsx(Sidebar, { withSidebar: props.withSidebar }), _jsxs(SidebarInset, { children: [props.header, _jsx("main", { className: "flex-1", children: props.children }), _jsx(BackToTop, {})
62
+ ] })
63
+ ] }));
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNkIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUd0QjtJQUNDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVB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S0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHsgRXh0ZXJuYWxMaW5rIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZpcnN0QXJ0aWNsZSxcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcbmltcG9ydCB7IHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclRyaWdnZXIsXG4gIHVzZVNpZGViYXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9zaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudHN4XCJcbmltcG9ydCB7IEJhbm5lciB9IGZyb20gXCIuL0Jhbm5lci50c3hcIlxuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gXCIuL1NpZGViYXIudHN4XCJcbmltcG9ydCB7IFNpdGVUaXRsZSB9IGZyb20gXCIuL1NpdGVUaXRsZS50c3hcIlxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuXG4gIHVzZUhvdGtleShcIkpcIiwgKCkgPT5cbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcbiAgdXNlSG90a2V5KFwiS1wiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogLXdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcblxuICBjb25zdCBzZWN0aW9ucyA9IGltcG9ydC5tZXRhLmVudi5DT05GSUcuc2VjdGlvbnNcblxuICBjb25zdCBoZWFkZXIgPSAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJzdGlja3kgdG9wLTAgei0yMCBmbGV4IGgtMTYgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJnLWJhY2tncm91bmRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHBsLTQgJHtwcm9wcy53aXRoU2lkZWJhciA/IFwicHItNFwiIDogXCJtZDpwci0yMFwifWB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy53aXRoU2lkZWJhciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleFwiPlxuICAgICAgICAgICAgICA8U2lkZWJhclRyaWdnZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPExpbmsgdG89XCIvXCIgY2xhc3NOYW1lPVwibWQ6aGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC04IHNlbGYtc3RyZXRjaCBweC02IHRleHQtc21cIj5cbiAgICAgICAge3NlY3Rpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoc2VjdGlvbiA9PiBzZWN0aW9uLnBvc2l0aW9uID09PSBcImhlYWRlclwiKVxuICAgICAgICAgICAgLm1hcChzZWN0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVTZWN0aW9uPy5wcmVmaXggPT09IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbi50eXBlID09PSBcImJsb2dcIiB8fCBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgICAgICAgICAgID8gc2VjdGlvbi5wcmVmaXhcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbkZpcnN0QXJ0aWNsZS5nZXQoc2VjdGlvbi5wcmVmaXgpXG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdFZlcnNpb24gPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIiAmJiBzZWN0aW9uLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gc29ydGVkQXJ0aWNsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICBhID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhLnBhdGggPT09IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHNlY3Rpb24ucHJlZml4KT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICApPy50aXRsZVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLnByZWZpeH1cbiAgICAgICAgICAgICAgICAgIHRvPXt0YXJnZXQgPT09IFwiL1wiID8gXCIvXCIgOiBcIi8kXCJ9XG4gICAgICAgICAgICAgICAgICBwYXJhbXM9e3RhcmdldCAmJiB0YXJnZXQgIT09IFwiL1wiID8gc3BsYXRGb3IodGFyZ2V0KSA6IHt9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1mb3JlZ3JvdW5kICR7XG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT17c2VjdGlvbkljb24oc2VjdGlvbil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpemUtMy41XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7aW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5saW5rc1xuICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgbGluayA9PlxuICAgICAgICAgICAgICBsaW5rLnBvc2l0aW9uID09PSBcImhlYWRlclwiICYmXG4gICAgICAgICAgICAgICghbGluay5wcmVmaXggfHwgbGluay5wcmVmaXggPT09IGFjdGl2ZVNlY3Rpb24/LnByZWZpeCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAobGluayA9PiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBrZXk9e2xpbmsudXJsfVxuICAgICAgICAgICAgICBocmVmPXtsaW5rLnVybH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsaW5rLmljb24gJiYgKFxuICAgICAgICAgICAgICAgIDxEeW5hbWljSWNvblxuICAgICAgICAgICAgICAgICAgbmFtZT17bGluay5pY29ufVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMy41IGFsaWduLVstMC4xMjVlbV1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9e1wiIFwifVxuICAgICAgICAgICAgICB7bGluay50aXRsZX17XCIgXCJ9XG4gICAgICAgICAgICAgIDxFeHRlcm5hbExpbmsgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMyBhbGlnbi1bLTAuMTI1ZW1dXCIgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPEJhbm5lciAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1kOmhpZGRlbiBtbC1hdXRvIHByLTJcIj5cbiAgICAgICAgPFNpZGViYXJUcmlnZ2VyIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNpZGViYXJQcm92aWRlclxuICAgICAga2V5PXtwcm9wcy53aXRoU2lkZWJhciA/IFwic2lkZWJhclwiIDogXCJtaW5pXCJ9XG4gICAgICBkZWZhdWx0T3Blbj17ISFwcm9wcy53aXRoU2lkZWJhcn1cbiAgICA+XG4gICAgICA8U2lkZWJhclNoZWxsIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gaGVhZGVyPXtoZWFkZXJ9PlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1NpZGViYXJTaGVsbD5cbiAgICA8L1NpZGViYXJQcm92aWRlcj5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyU2hlbGwocHJvcHM6IHtcbiAgd2l0aFNpZGViYXI/OiBib29sZWFuXG4gIGhlYWRlcjogUmVhY3QuUmVhY3ROb2RlXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IHsgaXNNb2JpbGUsIHNldE9wZW5Nb2JpbGUgfSA9IHVzZVNpZGViYXIoKVxuICBjb25zdCBvbkNsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNNb2JpbGUpIHJldHVyblxuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFwiYVwiKSkgc2V0T3Blbk1vYmlsZShmYWxzZSlcbiAgfVxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJjb250ZW50c1wiIH19IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPFNpZGViYXIgd2l0aFNpZGViYXI9e3Byb3BzLndpdGhTaWRlYmFyfSAvPlxuICAgICAgPFNpZGViYXJJbnNldD5cbiAgICAgICAge3Byb3BzLmhlYWRlcn1cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xXCI+e3Byb3BzLmNoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPEJhY2tUb1RvcCAvPlxuICAgICAgPC9TaWRlYmFySW5zZXQ+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ /** Styled link button rendered from ::button leaf directives */
2
+ export declare function LinkButton(props: {
3
+ href: string;
4
+ label: string;
5
+ variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link";
6
+ size?: "default" | "sm" | "lg";
7
+ }): import("react/jsx-runtime").JSX.Element;