livemark 0.7.2 → 0.9.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 (627) hide show
  1. package/README.md +115 -4
  2. package/package.json +15 -14
  3. package/source/actions/changelog/build.ts +245 -0
  4. package/source/actions/changelog/build.unit.ts +69 -0
  5. package/source/actions/config/define.ts +11 -0
  6. package/source/actions/config/define.unit.ts +33 -0
  7. package/source/actions/config/load.ts +22 -0
  8. package/source/actions/config/load.unit.ts +30 -0
  9. package/source/commands/build.ts +21 -0
  10. package/source/commands/escape.ts +77 -0
  11. package/source/commands/preview.ts +25 -0
  12. package/source/commands/start.ts +26 -0
  13. package/{build/website → source}/components/Article.tsx +44 -44
  14. package/{build/website → source}/components/Callout.tsx +1 -1
  15. package/{build/website → source}/components/Layout.tsx +3 -14
  16. package/{build/website → source}/components/LinkButton.tsx +1 -1
  17. package/{build/website → source}/components/PageToolbar.tsx +21 -8
  18. package/{build/website → source}/components/Section.tsx +1 -1
  19. package/{build/website → source}/components/SectionHeader.tsx +1 -1
  20. package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
  21. package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
  22. package/source/components/SidebarPosts.tsx +129 -0
  23. package/source/components/SidebarReleases.tsx +85 -0
  24. package/{build/website → source}/content-collections.ts +12 -3
  25. package/{build/website → source}/elements/accordion.tsx +1 -1
  26. package/{build/website → source}/elements/alert-dialog.tsx +1 -1
  27. package/{build/website → source}/elements/alert.tsx +1 -1
  28. package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
  29. package/{build/website → source}/elements/avatar.tsx +1 -1
  30. package/{build/website → source}/elements/badge.tsx +1 -1
  31. package/{build/website → source}/elements/breadcrumb.tsx +1 -1
  32. package/{build/website → source}/elements/button-group.tsx +1 -1
  33. package/{build/website → source}/elements/button.tsx +1 -1
  34. package/{build/website → source}/elements/calendar.tsx +1 -1
  35. package/{build/website → source}/elements/card.tsx +1 -1
  36. package/{build/website → source}/elements/carousel.tsx +1 -1
  37. package/{build/website → source}/elements/chart.tsx +1 -1
  38. package/{build/website → source}/elements/checkbox.tsx +1 -1
  39. package/{build/website → source}/elements/command.tsx +1 -1
  40. package/{build/website → source}/elements/context-menu.tsx +1 -1
  41. package/{build/website → source}/elements/dialog.tsx +1 -1
  42. package/{build/website → source}/elements/drawer.tsx +1 -1
  43. package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
  44. package/{build/website → source}/elements/empty.tsx +1 -1
  45. package/{build/website → source}/elements/field.tsx +1 -1
  46. package/{build/website → source}/elements/hover-card.tsx +1 -1
  47. package/{build/website → source}/elements/input-group.tsx +1 -1
  48. package/{build/website → source}/elements/input-otp.tsx +1 -1
  49. package/{build/website → source}/elements/input.tsx +1 -1
  50. package/{build/website → source}/elements/item.tsx +1 -1
  51. package/{build/website → source}/elements/kbd.tsx +1 -1
  52. package/{build/website → source}/elements/label.tsx +1 -1
  53. package/{build/website → source}/elements/menubar.tsx +1 -1
  54. package/{build/website → source}/elements/native-select.tsx +1 -1
  55. package/{build/website → source}/elements/navigation-menu.tsx +1 -1
  56. package/{build/website → source}/elements/pagination.tsx +1 -1
  57. package/{build/website → source}/elements/popover.tsx +1 -1
  58. package/{build/website → source}/elements/progress.tsx +1 -1
  59. package/{build/website → source}/elements/radio-group.tsx +1 -1
  60. package/{build/website → source}/elements/resizable.tsx +1 -1
  61. package/{build/website → source}/elements/scroll-area.tsx +1 -1
  62. package/{build/website → source}/elements/select.tsx +1 -1
  63. package/{build/website → source}/elements/separator.tsx +1 -1
  64. package/{build/website → source}/elements/sheet.tsx +1 -1
  65. package/{build/website → source}/elements/sidebar.tsx +7 -4
  66. package/{build/website → source}/elements/skeleton.tsx +1 -1
  67. package/{build/website → source}/elements/slider.tsx +1 -1
  68. package/{build/website → source}/elements/spinner.tsx +1 -1
  69. package/{build/website → source}/elements/switch.tsx +1 -1
  70. package/{build/website → source}/elements/table.tsx +1 -1
  71. package/{build/website → source}/elements/tabs.tsx +1 -1
  72. package/{build/website → source}/elements/textarea.tsx +1 -1
  73. package/{build/website → source}/elements/toggle-group.tsx +1 -1
  74. package/{build/website → source}/elements/toggle.tsx +1 -1
  75. package/{build/website → source}/elements/tooltip.tsx +1 -1
  76. package/source/entrypoints/main.ts +12 -0
  77. package/{build/website → source}/env.d.ts +1 -1
  78. package/source/helpers/program.ts +6 -0
  79. package/{build/website → source}/helpers/section.ts +1 -1
  80. package/source/hooks/media.ts +29 -0
  81. package/source/index.ts +1 -0
  82. package/{build/website → source}/models/article.ts +5 -0
  83. package/source/models/config.ts +51 -0
  84. package/source/models/link.ts +11 -0
  85. package/source/models/patch.ts +9 -0
  86. package/source/models/section.ts +45 -0
  87. package/source/models/theme.ts +74 -0
  88. package/source/program.ts +18 -0
  89. package/source/settings.ts +6 -0
  90. package/{build/website → source}/vite.config.ts +14 -9
  91. package/{build → target}/actions/changelog/build.d.ts +1 -0
  92. package/target/actions/changelog/build.js +187 -0
  93. package/target/actions/changelog/build.unit.js +66 -0
  94. package/target/actions/config/define.js +8 -0
  95. package/target/actions/config/define.unit.js +29 -0
  96. package/target/actions/config/load.js +25 -0
  97. package/target/actions/config/load.unit.js +23 -0
  98. package/target/client.d.ts +1 -0
  99. package/target/client.js +6 -0
  100. package/target/commands/build.js +14 -0
  101. package/target/commands/escape.js +56 -0
  102. package/target/commands/preview.js +18 -0
  103. package/target/commands/start.js +19 -0
  104. package/target/components/Abbr.d.ts +5 -0
  105. package/target/components/Abbr.js +9 -0
  106. package/target/components/AnsiCode.d.ts +4 -0
  107. package/target/components/AnsiCode.js +6 -0
  108. package/target/components/Article.d.ts +5 -0
  109. package/target/components/Article.js +104 -0
  110. package/target/components/BackToTop.d.ts +3 -0
  111. package/target/components/BackToTop.js +19 -0
  112. package/target/components/Banner.d.ts +2 -0
  113. package/target/components/Banner.js +12 -0
  114. package/target/components/BlogIndex.d.ts +4 -0
  115. package/target/components/BlogIndex.js +62 -0
  116. package/target/components/Breadcrumbs.d.ts +1 -0
  117. package/target/components/Breadcrumbs.js +13 -0
  118. package/target/components/Callout.d.ts +8 -0
  119. package/target/components/Callout.js +43 -0
  120. package/target/components/Card.d.ts +7 -0
  121. package/target/components/Card.js +17 -0
  122. package/target/components/Cards.d.ts +4 -0
  123. package/target/components/Cards.js +6 -0
  124. package/target/components/ChangelogIndex.d.ts +4 -0
  125. package/target/components/ChangelogIndex.js +57 -0
  126. package/target/components/CodeBlock.d.ts +1 -0
  127. package/target/components/CodeBlock.js +47 -0
  128. package/target/components/CodeTabs.d.ts +6 -0
  129. package/target/components/CodeTabs.js +49 -0
  130. package/target/components/Column.d.ts +4 -0
  131. package/target/components/Column.js +6 -0
  132. package/target/components/Columns.d.ts +5 -0
  133. package/target/components/Columns.js +10 -0
  134. package/target/components/Content.d.ts +3 -0
  135. package/target/components/Content.js +5 -0
  136. package/target/components/ContentTab.d.ts +5 -0
  137. package/target/components/ContentTab.js +6 -0
  138. package/target/components/ContentTabs.d.ts +5 -0
  139. package/target/components/ContentTabs.js +47 -0
  140. package/target/components/DefaultCatchBoundary.d.ts +2 -0
  141. package/target/components/DefaultCatchBoundary.js +20 -0
  142. package/target/components/DefinitionList.d.ts +7 -0
  143. package/target/components/DefinitionList.js +14 -0
  144. package/target/components/Details.d.ts +5 -0
  145. package/target/components/Details.js +13 -0
  146. package/target/components/FileTree.d.ts +4 -0
  147. package/target/components/FileTree.js +17 -0
  148. package/target/components/Footer.d.ts +2 -0
  149. package/target/components/Footer.js +9 -0
  150. package/target/components/FootnoteRef.d.ts +3 -0
  151. package/target/components/FootnoteRef.js +31 -0
  152. package/target/components/Heading.d.ts +8 -0
  153. package/target/components/Heading.js +18 -0
  154. package/target/components/InlineBadge.d.ts +5 -0
  155. package/target/components/InlineBadge.js +7 -0
  156. package/target/components/InlineIcon.d.ts +5 -0
  157. package/target/components/InlineIcon.js +10 -0
  158. package/target/components/InlineToc.d.ts +4 -0
  159. package/target/components/InlineToc.js +14 -0
  160. package/target/components/Layout.d.ts +4 -0
  161. package/target/components/Layout.js +65 -0
  162. package/target/components/LinkButton.d.ts +7 -0
  163. package/target/components/LinkButton.js +11 -0
  164. package/target/components/Mermaid.d.ts +4 -0
  165. package/target/components/Mermaid.js +8 -0
  166. package/target/components/MermaidRenderer.d.ts +4 -0
  167. package/target/components/MermaidRenderer.js +32 -0
  168. package/target/components/NotFound.d.ts +3 -0
  169. package/target/components/NotFound.js +10 -0
  170. package/target/components/PackageTabs.d.ts +9 -0
  171. package/target/components/PackageTabs.js +28 -0
  172. package/target/components/PageToolbar.d.ts +7 -0
  173. package/target/components/PageToolbar.js +34 -0
  174. package/target/components/PrevNext.d.ts +4 -0
  175. package/target/components/PrevNext.js +34 -0
  176. package/target/components/Search.d.ts +2 -0
  177. package/target/components/Search.js +16 -0
  178. package/target/components/SearchDialog.d.ts +5 -0
  179. package/target/components/SearchDialog.js +139 -0
  180. package/target/components/Section.d.ts +5 -0
  181. package/target/components/Section.js +8 -0
  182. package/target/components/SectionHeader.d.ts +7 -0
  183. package/target/components/SectionHeader.js +7 -0
  184. package/target/components/Sidebar.d.ts +4 -0
  185. package/target/components/Sidebar.js +33 -0
  186. package/target/components/SidebarArticles.d.ts +2 -0
  187. package/target/components/SidebarArticles.js +45 -0
  188. package/target/components/SidebarLinks.d.ts +4 -0
  189. package/target/components/SidebarLinks.js +26 -0
  190. package/target/components/SidebarPosts.d.ts +2 -0
  191. package/target/components/SidebarPosts.js +53 -0
  192. package/target/components/SidebarReleases.d.ts +2 -0
  193. package/target/components/SidebarReleases.js +35 -0
  194. package/target/components/SidebarSections.d.ts +4 -0
  195. package/target/components/SidebarSections.js +36 -0
  196. package/target/components/SiteTitle.d.ts +2 -0
  197. package/target/components/SiteTitle.js +12 -0
  198. package/target/components/SortableTable.d.ts +5 -0
  199. package/target/components/SortableTable.js +63 -0
  200. package/target/components/SoundCloud.d.ts +4 -0
  201. package/target/components/SoundCloud.js +7 -0
  202. package/target/components/TagIndex.d.ts +5 -0
  203. package/target/components/TagIndex.js +64 -0
  204. package/target/components/Theme.d.ts +1 -0
  205. package/target/components/Theme.js +21 -0
  206. package/target/components/Toc.d.ts +12 -0
  207. package/target/components/Toc.js +128 -0
  208. package/target/components/YouTube.d.ts +4 -0
  209. package/target/components/YouTube.js +6 -0
  210. package/target/components/ZoomImage.d.ts +4 -0
  211. package/target/components/ZoomImage.js +26 -0
  212. package/target/content/article.d.ts +43 -0
  213. package/target/content/article.js +54 -0
  214. package/target/content/tag.d.ts +2 -0
  215. package/target/content/tag.js +30 -0
  216. package/target/content-collections.d.ts +2 -0
  217. package/target/content-collections.js +200 -0
  218. package/target/elements/accordion.d.ts +6 -0
  219. package/target/elements/accordion.js +19 -0
  220. package/target/elements/alert-dialog.d.ts +18 -0
  221. package/target/elements/alert-dialog.js +44 -0
  222. package/target/elements/alert.d.ts +9 -0
  223. package/target/elements/alert.js +28 -0
  224. package/target/elements/aspect-ratio.d.ts +4 -0
  225. package/target/elements/aspect-ratio.js +9 -0
  226. package/target/elements/avatar.d.ts +11 -0
  227. package/target/elements/avatar.js +23 -0
  228. package/target/elements/badge.d.ts +7 -0
  229. package/target/elements/badge.js +34 -0
  230. package/target/elements/breadcrumb.d.ts +9 -0
  231. package/target/elements/breadcrumb.js +39 -0
  232. package/target/elements/button-group.d.ts +10 -0
  233. package/target/elements/button-group.js +37 -0
  234. package/target/elements/button.d.ts +8 -0
  235. package/target/elements/button.js +35 -0
  236. package/target/elements/calendar.d.ts +10 -0
  237. package/target/elements/calendar.js +76 -0
  238. package/target/elements/card.d.ts +11 -0
  239. package/target/elements/card.js +25 -0
  240. package/target/elements/carousel.d.ts +28 -0
  241. package/target/elements/carousel.js +95 -0
  242. package/target/elements/chart.d.ts +44 -0
  243. package/target/elements/chart.js +140 -0
  244. package/target/elements/checkbox.d.ts +3 -0
  245. package/target/elements/checkbox.js +9 -0
  246. package/target/elements/collapsible.d.ts +5 -0
  247. package/target/elements/collapsible.js +13 -0
  248. package/target/elements/command.d.ts +23 -0
  249. package/target/elements/command.js +42 -0
  250. package/target/elements/context-menu.d.ts +29 -0
  251. package/target/elements/context-menu.js +54 -0
  252. package/target/elements/dialog.d.ts +16 -0
  253. package/target/elements/dialog.js +41 -0
  254. package/target/elements/direction.d.ts +1 -0
  255. package/target/elements/direction.js +2 -0
  256. package/target/elements/drawer.d.ts +12 -0
  257. package/target/elements/drawer.js +38 -0
  258. package/target/elements/dropdown-menu.d.ts +24 -0
  259. package/target/elements/dropdown-menu.js +54 -0
  260. package/target/elements/empty.d.ts +11 -0
  261. package/target/elements/empty.js +34 -0
  262. package/target/elements/field.d.ts +24 -0
  263. package/target/elements/field.js +69 -0
  264. package/target/elements/hover-card.d.ts +5 -0
  265. package/target/elements/hover-card.js +14 -0
  266. package/target/elements/input-group.d.ts +18 -0
  267. package/target/elements/input-group.js +60 -0
  268. package/target/elements/input-otp.d.ts +11 -0
  269. package/target/elements/input-otp.js +21 -0
  270. package/target/elements/input.d.ts +2 -0
  271. package/target/elements/input.js +8 -0
  272. package/target/elements/item.d.ts +21 -0
  273. package/target/elements/item.js +79 -0
  274. package/target/elements/kbd.d.ts +3 -0
  275. package/target/elements/kbd.js +10 -0
  276. package/target/elements/label.d.ts +2 -0
  277. package/target/elements/label.js +8 -0
  278. package/target/elements/menubar.d.ts +29 -0
  279. package/target/elements/menubar.js +58 -0
  280. package/target/elements/native-select.d.ts +8 -0
  281. package/target/elements/native-select.js +16 -0
  282. package/target/elements/navigation-menu.d.ts +11 -0
  283. package/target/elements/navigation-menu.js +34 -0
  284. package/target/elements/pagination.d.ts +17 -0
  285. package/target/elements/pagination.js +33 -0
  286. package/target/elements/popover.d.ts +9 -0
  287. package/target/elements/popover.js +23 -0
  288. package/target/elements/progress.d.ts +7 -0
  289. package/target/elements/progress.js +21 -0
  290. package/target/elements/radio-group.d.ts +5 -0
  291. package/target/elements/radio-group.js +12 -0
  292. package/target/elements/resizable.d.ts +7 -0
  293. package/target/elements/resizable.js +14 -0
  294. package/target/elements/scroll-area.d.ts +4 -0
  295. package/target/elements/scroll-area.js +13 -0
  296. package/target/elements/select.d.ts +15 -0
  297. package/target/elements/select.js +39 -0
  298. package/target/elements/separator.d.ts +3 -0
  299. package/target/elements/separator.js +8 -0
  300. package/target/elements/sheet.d.ts +13 -0
  301. package/target/elements/sheet.js +41 -0
  302. package/target/elements/sidebar.d.ts +63 -0
  303. package/target/elements/sidebar.js +272 -0
  304. package/target/elements/skeleton.d.ts +2 -0
  305. package/target/elements/skeleton.js +7 -0
  306. package/target/elements/slider.d.ts +3 -0
  307. package/target/elements/slider.js +15 -0
  308. package/target/elements/sonner.d.ts +3 -0
  309. package/target/elements/sonner.js +23 -0
  310. package/target/elements/spinner.d.ts +2 -0
  311. package/target/elements/spinner.js +8 -0
  312. package/target/elements/switch.d.ts +5 -0
  313. package/target/elements/switch.js +8 -0
  314. package/target/elements/table.d.ts +9 -0
  315. package/target/elements/table.js +28 -0
  316. package/target/elements/tabs.d.ts +10 -0
  317. package/target/elements/tabs.js +29 -0
  318. package/target/elements/textarea.d.ts +2 -0
  319. package/target/elements/textarea.js +7 -0
  320. package/target/elements/toggle-group.d.ts +10 -0
  321. package/target/elements/toggle-group.js +24 -0
  322. package/target/elements/toggle.d.ts +8 -0
  323. package/target/elements/toggle.js +26 -0
  324. package/target/elements/tooltip.d.ts +6 -0
  325. package/target/elements/tooltip.js +18 -0
  326. package/target/entrypoints/main.js +12 -0
  327. package/target/helpers/article-icon.d.ts +3 -0
  328. package/target/helpers/article-icon.js +34 -0
  329. package/target/helpers/article.d.ts +24 -0
  330. package/target/helpers/article.js +73 -0
  331. package/target/helpers/changelog-source.d.ts +7 -0
  332. package/target/helpers/changelog-source.js +16 -0
  333. package/target/helpers/changelog-source.unit.d.ts +1 -0
  334. package/target/helpers/changelog-source.unit.js +33 -0
  335. package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
  336. package/target/helpers/dynamic-icon-resolver.js +17 -0
  337. package/target/helpers/dynamic-icon.d.ts +5 -0
  338. package/target/helpers/dynamic-icon.js +8 -0
  339. package/target/helpers/favicon.d.ts +2 -0
  340. package/target/helpers/favicon.js +11 -0
  341. package/target/helpers/model.d.ts +3 -0
  342. package/target/helpers/model.js +4 -0
  343. package/target/helpers/program.js +5 -0
  344. package/target/helpers/resolve-asset-path.d.ts +2 -0
  345. package/target/helpers/resolve-asset-path.js +9 -0
  346. package/target/helpers/resolve-includes.d.ts +2 -0
  347. package/target/helpers/resolve-includes.js +113 -0
  348. package/target/helpers/resolve-includes.unit.d.ts +1 -0
  349. package/target/helpers/resolve-includes.unit.js +76 -0
  350. package/target/helpers/search-text.d.ts +2 -0
  351. package/target/helpers/search-text.js +16 -0
  352. package/target/helpers/section.d.ts +13 -0
  353. package/target/helpers/section.js +39 -0
  354. package/target/helpers/section.unit.d.ts +1 -0
  355. package/target/helpers/section.unit.js +62 -0
  356. package/target/helpers/theme.d.ts +5 -0
  357. package/target/helpers/theme.js +23 -0
  358. package/target/helpers/toc-context.d.ts +5 -0
  359. package/target/helpers/toc-context.js +8 -0
  360. package/target/helpers/toc.d.ts +3 -0
  361. package/target/helpers/toc.js +41 -0
  362. package/target/helpers/toc.unit.d.ts +1 -0
  363. package/target/helpers/toc.unit.js +65 -0
  364. package/target/hooks/in-view.d.ts +4 -0
  365. package/target/hooks/in-view.js +23 -0
  366. package/target/hooks/media.d.ts +6 -0
  367. package/target/hooks/media.js +25 -0
  368. package/target/index.js +2 -0
  369. package/target/models/article.d.ts +58 -0
  370. package/target/models/article.js +21 -0
  371. package/{build → target}/models/config.d.ts +10 -0
  372. package/target/models/config.js +34 -0
  373. package/target/models/link.js +9 -0
  374. package/{build → target}/models/patch.d.ts +5 -0
  375. package/target/models/patch.js +7 -0
  376. package/target/models/section.js +26 -0
  377. package/target/models/theme.js +73 -0
  378. package/target/models/toc.d.ts +5 -0
  379. package/target/models/toc.js +2 -0
  380. package/target/plugins/rehype-inline-code.d.ts +19 -0
  381. package/target/plugins/rehype-inline-code.js +55 -0
  382. package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
  383. package/target/plugins/rehype-task-list-a11y.js +29 -0
  384. package/target/plugins/remark-abbr.d.ts +6 -0
  385. package/target/plugins/remark-abbr.js +39 -0
  386. package/target/plugins/remark-abbr.unit.d.ts +1 -0
  387. package/target/plugins/remark-abbr.unit.js +79 -0
  388. package/target/plugins/remark-ansi.d.ts +8 -0
  389. package/target/plugins/remark-ansi.js +239 -0
  390. package/target/plugins/remark-ansi.unit.d.ts +1 -0
  391. package/target/plugins/remark-ansi.unit.js +134 -0
  392. package/target/plugins/remark-badge.d.ts +6 -0
  393. package/target/plugins/remark-badge.js +43 -0
  394. package/target/plugins/remark-badge.unit.d.ts +1 -0
  395. package/target/plugins/remark-badge.unit.js +76 -0
  396. package/target/plugins/remark-button.d.ts +6 -0
  397. package/target/plugins/remark-button.js +52 -0
  398. package/target/plugins/remark-button.unit.d.ts +1 -0
  399. package/target/plugins/remark-button.unit.js +105 -0
  400. package/target/plugins/remark-callout.d.ts +4 -0
  401. package/target/plugins/remark-callout.js +39 -0
  402. package/target/plugins/remark-card.d.ts +4 -0
  403. package/target/plugins/remark-card.js +66 -0
  404. package/target/plugins/remark-code-tabs.d.ts +4 -0
  405. package/target/plugins/remark-code-tabs.js +72 -0
  406. package/target/plugins/remark-columns.d.ts +4 -0
  407. package/target/plugins/remark-columns.js +54 -0
  408. package/target/plugins/remark-custom-heading-id.d.ts +14 -0
  409. package/target/plugins/remark-custom-heading-id.js +54 -0
  410. package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
  411. package/target/plugins/remark-custom-heading-id.unit.js +91 -0
  412. package/target/plugins/remark-deflist.d.ts +4 -0
  413. package/target/plugins/remark-deflist.js +31 -0
  414. package/target/plugins/remark-details.d.ts +4 -0
  415. package/target/plugins/remark-details.js +33 -0
  416. package/target/plugins/remark-filetree.d.ts +12 -0
  417. package/target/plugins/remark-filetree.js +61 -0
  418. package/target/plugins/remark-filetree.unit.d.ts +1 -0
  419. package/target/plugins/remark-filetree.unit.js +87 -0
  420. package/target/plugins/remark-github-callout.d.ts +4 -0
  421. package/target/plugins/remark-github-callout.js +62 -0
  422. package/target/plugins/remark-icon.d.ts +4 -0
  423. package/target/plugins/remark-icon.js +36 -0
  424. package/target/plugins/remark-image.d.ts +9 -0
  425. package/target/plugins/remark-image.js +26 -0
  426. package/target/plugins/remark-media.d.ts +6 -0
  427. package/target/plugins/remark-media.js +52 -0
  428. package/target/plugins/remark-media.unit.d.ts +1 -0
  429. package/target/plugins/remark-media.unit.js +54 -0
  430. package/target/plugins/remark-mermaid.d.ts +4 -0
  431. package/target/plugins/remark-mermaid.js +20 -0
  432. package/target/plugins/remark-npm.d.ts +4 -0
  433. package/target/plugins/remark-npm.js +32 -0
  434. package/target/plugins/remark-steps.d.ts +6 -0
  435. package/target/plugins/remark-steps.js +30 -0
  436. package/target/plugins/remark-steps.unit.d.ts +1 -0
  437. package/target/plugins/remark-steps.unit.js +65 -0
  438. package/target/plugins/remark-tab.d.ts +6 -0
  439. package/target/plugins/remark-tab.js +76 -0
  440. package/target/plugins/remark-tab.unit.d.ts +1 -0
  441. package/target/plugins/remark-tab.unit.js +156 -0
  442. package/target/plugins/remark-toc.d.ts +6 -0
  443. package/target/plugins/remark-toc.js +33 -0
  444. package/target/plugins/remark-toc.unit.d.ts +1 -0
  445. package/target/plugins/remark-toc.unit.js +57 -0
  446. package/target/plugins/shiki-icon.d.ts +16 -0
  447. package/target/plugins/shiki-icon.js +66 -0
  448. package/target/plugins/shiki-line-highlight.d.ts +27 -0
  449. package/target/plugins/shiki-line-highlight.js +140 -0
  450. package/target/plugins/vite-livemark.d.ts +13 -0
  451. package/target/plugins/vite-livemark.js +76 -0
  452. package/target/program.js +18 -0
  453. package/target/routeTree.gen.d.ts +57 -0
  454. package/target/routeTree.gen.js +27 -0
  455. package/target/router.d.ts +6 -0
  456. package/target/router.js +26 -0
  457. package/target/routes/$.d.ts +1 -0
  458. package/target/routes/$.js +85 -0
  459. package/target/routes/__root.d.ts +1 -0
  460. package/target/routes/__root.js +69 -0
  461. package/target/server.d.ts +2 -0
  462. package/target/server.js +7 -0
  463. package/target/settings.js +7 -0
  464. package/target/utils/style.d.ts +2 -0
  465. package/target/utils/style.js +6 -0
  466. package/target/vite.config.d.ts +2 -0
  467. package/target/vite.config.js +67 -0
  468. package/build/actions/changelog/build.js +0 -158
  469. package/build/actions/changelog/build.unit.js +0 -66
  470. package/build/actions/config/define.js +0 -8
  471. package/build/actions/config/define.unit.js +0 -29
  472. package/build/actions/config/load.js +0 -25
  473. package/build/actions/config/load.unit.js +0 -23
  474. package/build/commands/build.js +0 -14
  475. package/build/commands/escape.js +0 -56
  476. package/build/commands/preview.js +0 -18
  477. package/build/commands/start.js +0 -19
  478. package/build/docs/markdown/includes/example.d.ts +0 -58
  479. package/build/docs/markdown/includes/example.js +0 -5
  480. package/build/entrypoints/main.js +0 -12
  481. package/build/helpers/program.js +0 -5
  482. package/build/index.js +0 -2
  483. package/build/livemark.config.d.ts +0 -58
  484. package/build/livemark.config.js +0 -25
  485. package/build/models/config.js +0 -34
  486. package/build/models/link.js +0 -9
  487. package/build/models/patch.js +0 -7
  488. package/build/models/section.js +0 -26
  489. package/build/models/theme.js +0 -73
  490. package/build/package.json +0 -138
  491. package/build/program.js +0 -18
  492. package/build/settings.js +0 -7
  493. package/build/vite.config.d.ts +0 -2
  494. package/build/vite.config.js +0 -48
  495. package/build/website/components/BlogSidebar.tsx +0 -162
  496. package/build/website/components/ChangelogSidebar.tsx +0 -120
  497. package/build/website/hooks/media.ts +0 -19
  498. package/build/website/routeTree.gen.ts +0 -86
  499. /package/{build/website → source}/assets/logo.svg +0 -0
  500. /package/{build/website → source}/client.tsx +0 -0
  501. /package/{build/website → source}/components/Abbr.tsx +0 -0
  502. /package/{build/website → source}/components/AnsiCode.tsx +0 -0
  503. /package/{build/website → source}/components/BackToTop.tsx +0 -0
  504. /package/{build/website → source}/components/Banner.tsx +0 -0
  505. /package/{build/website → source}/components/BlogIndex.tsx +0 -0
  506. /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
  507. /package/{build/website → source}/components/Card.tsx +0 -0
  508. /package/{build/website → source}/components/Cards.tsx +0 -0
  509. /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
  510. /package/{build/website → source}/components/CodeBlock.tsx +0 -0
  511. /package/{build/website → source}/components/CodeTabs.tsx +0 -0
  512. /package/{build/website → source}/components/Column.tsx +0 -0
  513. /package/{build/website → source}/components/Columns.tsx +0 -0
  514. /package/{build/website → source}/components/Content.tsx +0 -0
  515. /package/{build/website → source}/components/ContentTab.tsx +0 -0
  516. /package/{build/website → source}/components/ContentTabs.tsx +0 -0
  517. /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
  518. /package/{build/website → source}/components/DefinitionList.tsx +0 -0
  519. /package/{build/website → source}/components/Details.tsx +0 -0
  520. /package/{build/website → source}/components/FileTree.tsx +0 -0
  521. /package/{build/website → source}/components/Footer.tsx +0 -0
  522. /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
  523. /package/{build/website → source}/components/Heading.tsx +0 -0
  524. /package/{build/website → source}/components/InlineBadge.tsx +0 -0
  525. /package/{build/website → source}/components/InlineIcon.tsx +0 -0
  526. /package/{build/website → source}/components/InlineToc.tsx +0 -0
  527. /package/{build/website → source}/components/Mermaid.tsx +0 -0
  528. /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
  529. /package/{build/website → source}/components/NotFound.tsx +0 -0
  530. /package/{build/website → source}/components/PackageTabs.tsx +0 -0
  531. /package/{build/website → source}/components/PrevNext.tsx +0 -0
  532. /package/{build/website → source}/components/Search.tsx +0 -0
  533. /package/{build/website → source}/components/SearchDialog.tsx +0 -0
  534. /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
  535. /package/{build/website → source}/components/SidebarSections.tsx +0 -0
  536. /package/{build/website → source}/components/SiteTitle.tsx +0 -0
  537. /package/{build/website → source}/components/SortableTable.tsx +0 -0
  538. /package/{build/website → source}/components/SoundCloud.tsx +0 -0
  539. /package/{build/website → source}/components/TagIndex.tsx +0 -0
  540. /package/{build/website → source}/components/Theme.tsx +0 -0
  541. /package/{build/website → source}/components/Toc.tsx +0 -0
  542. /package/{build/website → source}/components/YouTube.tsx +0 -0
  543. /package/{build/website → source}/components/ZoomImage.tsx +0 -0
  544. /package/{build/website → source}/content/article.ts +0 -0
  545. /package/{build/website → source}/content/tag.ts +0 -0
  546. /package/{build/website → source}/elements/collapsible.tsx +0 -0
  547. /package/{build/website → source}/elements/direction.tsx +0 -0
  548. /package/{build/website → source}/elements/sonner.tsx +0 -0
  549. /package/{build/website → source}/helpers/article-icon.ts +0 -0
  550. /package/{build/website → source}/helpers/article.ts +0 -0
  551. /package/{build/website → source}/helpers/changelog-source.ts +0 -0
  552. /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
  553. /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
  554. /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
  555. /package/{build/website → source}/helpers/favicon.ts +0 -0
  556. /package/{build/website → source}/helpers/model.ts +0 -0
  557. /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
  558. /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
  559. /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
  560. /package/{build/website → source}/helpers/search-text.ts +0 -0
  561. /package/{build/website → source}/helpers/section.unit.ts +0 -0
  562. /package/{build/website → source}/helpers/theme.ts +0 -0
  563. /package/{build/website → source}/helpers/toc-context.ts +0 -0
  564. /package/{build/website → source}/helpers/toc.ts +0 -0
  565. /package/{build/website → source}/helpers/toc.unit.ts +0 -0
  566. /package/{build/website → source}/hooks/in-view.ts +0 -0
  567. /package/{build/website → source}/models/toc.ts +0 -0
  568. /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
  569. /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
  570. /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
  571. /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
  572. /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
  573. /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
  574. /package/{build/website → source}/plugins/remark-badge.ts +0 -0
  575. /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
  576. /package/{build/website → source}/plugins/remark-button.ts +0 -0
  577. /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
  578. /package/{build/website → source}/plugins/remark-callout.ts +0 -0
  579. /package/{build/website → source}/plugins/remark-card.ts +0 -0
  580. /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
  581. /package/{build/website → source}/plugins/remark-columns.ts +0 -0
  582. /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
  583. /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
  584. /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
  585. /package/{build/website → source}/plugins/remark-details.ts +0 -0
  586. /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
  587. /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
  588. /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
  589. /package/{build/website → source}/plugins/remark-icon.ts +0 -0
  590. /package/{build/website → source}/plugins/remark-image.ts +0 -0
  591. /package/{build/website → source}/plugins/remark-media.ts +0 -0
  592. /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
  593. /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
  594. /package/{build/website → source}/plugins/remark-npm.ts +0 -0
  595. /package/{build/website → source}/plugins/remark-steps.ts +0 -0
  596. /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
  597. /package/{build/website → source}/plugins/remark-tab.ts +0 -0
  598. /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
  599. /package/{build/website → source}/plugins/remark-toc.ts +0 -0
  600. /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
  601. /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
  602. /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
  603. /package/{build/website → source}/plugins/vite-livemark.ts +0 -0
  604. /package/{build/website → source}/router.tsx +0 -0
  605. /package/{build/website → source}/routes/$.tsx +0 -0
  606. /package/{build/website → source}/routes/__root.tsx +0 -0
  607. /package/{build/website → source}/server.ts +0 -0
  608. /package/{build/website → source}/styles/general.css +0 -0
  609. /package/{build/website → source}/styles/markdown.css +0 -0
  610. /package/{build/website/helpers → source/utils}/style.ts +0 -0
  611. /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
  612. /package/{build → target}/actions/config/define.d.ts +0 -0
  613. /package/{build → target}/actions/config/define.unit.d.ts +0 -0
  614. /package/{build → target}/actions/config/load.d.ts +0 -0
  615. /package/{build → target}/actions/config/load.unit.d.ts +0 -0
  616. /package/{build → target}/commands/build.d.ts +0 -0
  617. /package/{build → target}/commands/escape.d.ts +0 -0
  618. /package/{build → target}/commands/preview.d.ts +0 -0
  619. /package/{build → target}/commands/start.d.ts +0 -0
  620. /package/{build → target}/entrypoints/main.d.ts +0 -0
  621. /package/{build → target}/helpers/program.d.ts +0 -0
  622. /package/{build → target}/index.d.ts +0 -0
  623. /package/{build → target}/models/link.d.ts +0 -0
  624. /package/{build → target}/models/section.d.ts +0 -0
  625. /package/{build → target}/models/theme.d.ts +0 -0
  626. /package/{build → target}/program.d.ts +0 -0
  627. /package/{build → target}/settings.d.ts +0 -0
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link } from "@tanstack/react-router";
3
+ import { History } from "lucide-react";
4
+ import { currentSection, sectionFlatArticles, sortedArticles, } from "../content/article.js";
5
+ import { Separator } from "../elements/separator.js";
6
+ import { TocContext } from "../helpers/toc-context.js";
7
+ import { Footer } from "./Footer.js";
8
+ import { PageToolbar } from "./PageToolbar.js";
9
+ import { MobileToc, Toc } from "./Toc.js";
10
+ /** Auto-generated blog index listing all posts by date */
11
+ export function BlogIndex(props) {
12
+ const section = currentSection(props.sectionPrefix);
13
+ const flat = sectionFlatArticles.get(props.sectionPrefix) ?? [];
14
+ const posts = flat
15
+ .map(p => sortedArticles.find(a => a.path === p))
16
+ .filter(a => a !== undefined);
17
+ const tocItems = posts.map(post => ({
18
+ url: `#${slugOf(post.path)}`,
19
+ title: post.title,
20
+ depth: 2,
21
+ }));
22
+ const content = [
23
+ `# ${section?.title ?? "Blog"}`,
24
+ ...posts.map(post => {
25
+ const parts = [`## ${post.title}`];
26
+ if (post.date)
27
+ parts.push(formatDate(post.date));
28
+ if (post.author) {
29
+ parts.push(Array.isArray(post.author) ? post.author.join(", ") : post.author);
30
+ }
31
+ if (post.description)
32
+ parts.push("", post.description);
33
+ return parts.join("\n");
34
+ }),
35
+ ].join("\n\n");
36
+ return (_jsxs(TocContext.Provider, { value: tocItems, children: [
37
+ _jsx(MobileToc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) }), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [
38
+ _jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [
39
+ _jsxs("div", { className: "prose dark:prose-invert max-w-none mb-8", children: [
40
+ _jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: section?.title ?? "Blog" }) }), posts[0]?.date && (_jsx("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-0", children: _jsxs("span", { className: "flex items-center gap-1.5", children: [
41
+ _jsx(History, { className: "size-3.5" }),
42
+ "Updated ", formatDate(posts[0].date)] }) }))] }), _jsx("div", { className: "space-y-6", children: posts.map((post, i) => (_jsxs("article", { id: slugOf(post.path), children: [i > 0 && _jsx(Separator, { className: "mb-6" }), _jsx("h2", { className: "text-2xl", children: _jsx(Link, { to: "/$", params: { _splat: post.path.replace(/^\/|\/$/g, "") }, className: "font-medium hover:text-primary transition-colors", children: post.title }) }), _jsxs("p", { className: "text-sm text-muted-foreground mt-1 flex gap-3", children: [post.date && _jsx("span", { children: formatDate(post.date) }), post.author && (_jsx("span", { children: Array.isArray(post.author)
43
+ ? post.author.join(", ")
44
+ : post.author }))] }), post.description && (_jsx("p", { className: "text-muted-foreground mt-2", children: post.description }))] }, post.path))) }), _jsx("div", { className: "mt-10", children: _jsx(Footer, {}) })
45
+ ] }), _jsx(Toc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) })
46
+ ] })
47
+ ] }));
48
+ }
49
+ function slugOf(path) {
50
+ return (path
51
+ .replace(/^\/|\/$/g, "")
52
+ .split("/")
53
+ .pop() ?? "");
54
+ }
55
+ function formatDate(iso) {
56
+ return new Date(iso).toLocaleDateString("en-US", {
57
+ year: "numeric",
58
+ month: "short",
59
+ day: "numeric",
60
+ });
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvZ0luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQmxvZ0luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sdUJBQXVCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEyQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVcsQ0FBQTtBQUUxQywwREFBMEQ7QUFDMUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFnQztJQUN4RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUk7U0FDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUE7SUFFL0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxD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YWN0LXJvdXRlclwiXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3NlcGFyYXRvci50c3hcIlxuaW1wb3J0IHsgVG9jQ29udGV4dCB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcbmltcG9ydCB7IEZvb3RlciB9IGZyb20gXCIuL0Zvb3Rlci50c3hcIlxuaW1wb3J0IHsgUGFnZVRvb2xiYXIgfSBmcm9tIFwiLi9QYWdlVG9vbGJhci50c3hcIlxuaW1wb3J0IHsgTW9iaWxlVG9jLCBUb2MgfSBmcm9tIFwiLi9Ub2MudHN4XCJcblxuLyoqIEF1dG8tZ2VuZXJhdGVkIGJsb2cgaW5kZXggbGlzdGluZyBhbGwgcG9zdHMgYnkgZGF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJsb2dJbmRleChwcm9wczogeyBzZWN0aW9uUHJlZml4OiBzdHJpbmcgfSkge1xuICBjb25zdCBzZWN0aW9uID0gY3VycmVudFNlY3Rpb24ocHJvcHMuc2VjdGlvblByZWZpeClcbiAgY29uc3QgZmxhdCA9IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHByb3BzLnNlY3Rpb25QcmVmaXgpID8/IFtdXG4gIGNvbnN0IHBvc3RzID0gZmxhdFxuICAgIC5tYXAocCA9PiBzb3J0ZWRBcnRpY2xlcy5maW5kKGEgPT4gYS5wYXRoID09PSBwKSlcbiAgICAuZmlsdGVyKGEgPT4gYSAhPT0gdW5kZWZpbmVkKVxuXG4gIGNvbnN0IHRvY0l0ZW1zID0gcG9zdHMubWFwKHBvc3QgPT4gKHtcbiAgICB1cmw6IGAjJHtzbHVnT2YocG9zdC5wYXRoKX1gLFxuICAgIHRpdGxlOiBwb3N0LnRpdGxlLFxuICAgIGRlcHRoOiAyLFxuICB9KSlcblxuICBjb25zdCBjb250ZW50ID0gW1xuICAgIGAjICR7c2VjdGlvbj8udGl0bGUgPz8gXCJCbG9nXCJ9YCxcbiAgICAuLi5wb3N0cy5tYXAocG9zdCA9PiB7XG4gICAgICBjb25zdCBwYXJ0cyA9IFtgIyMgJHtwb3N0LnRpdGxlfWBdXG4gICAgICBpZiAocG9zdC5kYXRlKSBwYXJ0cy5wdXNoKGZvcm1hdERhdGUocG9zdC5kYXRlKSlcbiAgICAgIGlmIChwb3N0LmF1dGhvcikge1xuICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkocG9zdC5hdXRob3IpID8gcG9zdC5hdXRob3Iuam9pbihcIiwgXCIpIDogcG9zdC5hdXRob3IsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChwb3N0LmRlc2NyaXB0aW9uKSBwYXJ0cy5wdXNoKFwiXCIsIHBvc3QuZGVzY3JpcHRpb24pXG4gICAgICByZXR1cm4gcGFydHMuam9pbihcIlxcblwiKVxuICAgIH0pLFxuICBdLmpvaW4oXCJcXG5cXG5cIilcblxuICByZXR1cm4gKFxuICAgIDxUb2NDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0b2NJdGVtc30+XG4gICAgICA8TW9iaWxlVG9jIGl0ZW1zPXt0b2NJdGVtc30+XG4gICAgICAgIDxQYWdlVG9vbGJhciBjb250ZW50PXtjb250ZW50fSAvPlxuICAgICAgPC9Nb2JpbGVUb2M+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC0xIGdhcC0xMCBwLTQgcHQtOCBtZDpwLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTAgbXgtYXV0byBtYXgtdy0zeGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IG1heC13LW5vbmUgbWItOFwiPlxuICAgICAgICAgICAgPGgxIGlkPVwidG9wXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjdG9wXCI+e3NlY3Rpb24/LnRpdGxlID8/IFwiQmxvZ1wifTwvYT5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICB7cG9zdHNbMF0/LmRhdGUgJiYgKFxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kICEtbXQtNCAhbWItMFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICAgICAgICAgIDxIaXN0b3J5IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgICAgIFVwZGF0ZWQge2Zvcm1hdERhdGUocG9zdHNbMF0uZGF0ZSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS02XCI+XG4gICAgICAgICAgICB7cG9zdHMubWFwKChwb3N0LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGtleT17cG9zdC5wYXRofSBpZD17c2x1Z09mKHBvc3QucGF0aCl9PlxuICAgICAgICAgICAgICAgIHtpID4gMCAmJiA8U2VwYXJhdG9yIGNsYXNzTmFtZT1cIm1iLTZcIiAvPn1cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGxcIj5cbiAgICAgICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgICAgIHRvPVwiLyRcIlxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM9e3sgX3NwbGF0OiBwb3N0LnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtwb3N0LnRpdGxlfVxuICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmQgbXQtMSBmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICB7cG9zdC5kYXRlICYmIDxzcGFuPntmb3JtYXREYXRlKHBvc3QuZGF0ZSl9PC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgIHtwb3N0LmF1dGhvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KHBvc3QuYXV0aG9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwb3N0LmF1dGhvci5qb2luKFwiLCBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcG9zdC5hdXRob3J9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIHtwb3N0LmRlc2NyaXB0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIHtwb3N0LmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMTBcIj5cbiAgICAgICAgICAgIDxGb290ZXIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxUb2MgaXRlbXM9e3RvY0l0ZW1zfT5cbiAgICAgICAgICA8UGFnZVRvb2xiYXIgY29udGVudD17Y29udGVudH0gLz5cbiAgICAgICAgPC9Ub2M+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RvY0NvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZnVuY3Rpb24gc2x1Z09mKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gKFxuICAgIHBhdGhcbiAgICAgIC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIilcbiAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgIC5wb3AoKSA/PyBcIlwiXG4gIClcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0ZShpc286IHN0cmluZykge1xuICByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwic2hvcnRcIixcbiAgICBkYXk6IFwibnVtZXJpY1wiLFxuICB9KVxufVxuIl19
@@ -0,0 +1 @@
1
+ export declare function Breadcrumbs(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link, useLocation, useMatches } from "@tanstack/react-router";
3
+ import { currentSection } from "../content/article.js";
4
+ export function Breadcrumbs() {
5
+ const matches = useMatches();
6
+ const last = matches[matches.length - 1];
7
+ const loaderData = last?.loaderData;
8
+ const pathname = useLocation({ select: l => l.pathname });
9
+ const section = currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`);
10
+ return (_jsxs("nav", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
11
+ _jsx(Link, { to: "/", className: "hover:text-foreground transition-colors", children: section?.title ?? import.meta.env.CONFIG.title }), _jsx("span", { children: "/" }), loaderData?.title && (_jsx("span", { className: "text-foreground font-medium", children: loaderData.title }))] }));
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJlYWRjcnVtYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9CcmVhZGNydW1icy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUV0RCxNQUFNLFVBQVUsV0FBVztJQUN6QixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQTtJQUM1QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEVBQUUsVUFBNEMsQ0FBQTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN6RCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFdkUsT0FBTyxDQUNMLGVBQUssU0FBUyxFQUFDLHlEQUF5RDtZQUN0RSxLQUFDLElBQUksSUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBQyx5Q0FBeUMsWUFDN0QsT0FBTyxFQUFFLEtBQUssSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssR0FDMUMsRUFDUCwrQkFBYyxFQUNiLFVBQVUsRUFBRSxLQUFLLElBQUksQ0FDcEIsZUFBTSxTQUFTLEVBQUMsNkJBQTZCLFlBQUUsVUFBVSxDQUFDLEtBQUssR0FBUSxDQUN4RSxJQUNHLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2hlcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7IGN1cnJlbnRTZWN0aW9uIH0gZnJvbSBcIi4uL2NvbnRlbnQvYXJ0aWNsZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBCcmVhZGNydW1icygpIHtcbiAgY29uc3QgbWF0Y2hlcyA9IHVzZU1hdGNoZXMoKVxuICBjb25zdCBsYXN0ID0gbWF0Y2hlc1ttYXRjaGVzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGxvYWRlckRhdGEgPSBsYXN0Py5sb2FkZXJEYXRhIGFzIHsgdGl0bGU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICBjb25zdCBwYXRobmFtZSA9IHVzZUxvY2F0aW9uKHsgc2VsZWN0OiBsID0+IGwucGF0aG5hbWUgfSlcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKGAvJHtwYXRobmFtZS5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIil9L2ApXG5cbiAgcmV0dXJuIChcbiAgICA8bmF2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIDxMaW5rIHRvPVwiL1wiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICB7c2VjdGlvbj8udGl0bGUgPz8gaW1wb3J0Lm1ldGEuZW52LkNPTkZJRy50aXRsZX1cbiAgICAgIDwvTGluaz5cbiAgICAgIDxzcGFuPi88L3NwYW4+XG4gICAgICB7bG9hZGVyRGF0YT8udGl0bGUgJiYgKFxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWZvcmVncm91bmQgZm9udC1tZWRpdW1cIj57bG9hZGVyRGF0YS50aXRsZX08L3NwYW4+XG4gICAgICApfVxuICAgIDwvbmF2PlxuICApXG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ type CalloutType = "note" | "tip" | "info" | "warning" | "danger";
2
+ /** Styled callout block for notes, tips, warnings, and other admonitions */
3
+ export declare function Callout(props: {
4
+ type?: CalloutType;
5
+ title?: string;
6
+ children: React.ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AlertTriangle, Flame, Info, Lightbulb } from "lucide-react";
3
+ import { cn } from "../utils/style.js";
4
+ const configs = {
5
+ note: {
6
+ icon: Info,
7
+ label: "Note",
8
+ classes: "border-blue-500/30 bg-blue-50/50 text-blue-900 dark:bg-blue-950/30 dark:text-blue-200",
9
+ },
10
+ info: {
11
+ icon: Info,
12
+ label: "Info",
13
+ classes: "border-blue-500/30 bg-blue-50/50 text-blue-900 dark:bg-blue-950/30 dark:text-blue-200",
14
+ },
15
+ tip: {
16
+ icon: Lightbulb,
17
+ label: "Tip",
18
+ classes: "border-green-500/30 bg-green-50/50 text-green-900 dark:bg-green-950/30 dark:text-green-200",
19
+ },
20
+ warning: {
21
+ icon: AlertTriangle,
22
+ label: "Warning",
23
+ classes: "border-yellow-500/30 bg-yellow-50/50 text-yellow-900 dark:bg-yellow-950/30 dark:text-yellow-200",
24
+ },
25
+ danger: {
26
+ icon: Flame,
27
+ label: "Danger",
28
+ classes: "border-red-500/30 bg-red-50/50 text-red-900 dark:bg-red-950/30 dark:text-red-200",
29
+ },
30
+ };
31
+ /** Styled callout block for notes, tips, warnings, and other admonitions */
32
+ export function Callout(props) {
33
+ const type = props.type ?? "note";
34
+ const config = configs[type];
35
+ const Icon = config.icon;
36
+ const title = props.title ?? config.label;
37
+ return (_jsxs("aside", { className: cn("not-prose my-4 rounded-xl border px-4 py-3", config.classes), children: [
38
+ _jsxs("div", { className: "flex items-center gap-2 font-semibold text-sm mb-2", children: [
39
+ _jsx(Icon, { className: "size-4 shrink-0" }), _jsx("span", { children: title })
40
+ ] }), _jsx("div", { className: "text-sm [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", children: props.children })
41
+ ] }));
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbG91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NhbGxvdXQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQVV0QyxNQUFNLE9BQU8sR0FBdUM7SUFDbEQsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLElBQUk7UUFDVixLQUFLLEVBQUUsTUFBTTtRQUNiLE9BQU8sRUFDTCx1RkFBdUY7S0FDMUY7SUFDRCxJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRSxNQUFNO1FBQ2IsT0FBTyxFQUNMLHVGQUF1RjtLQUMxRjtJQUNELEdBQUcsRUFBRTtRQUNILElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEtBQUs7UUFDWixPQUFPLEVBQ0wsNEZBQTRGO0tBQy9GO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsT0FBTyxFQUNMLGlHQUFpRztLQUNwRztJQUNELE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxLQUFLO1FBQ1gsS0FBSyxFQUFFLFFBQVE7UUFDZixPQUFPLEVBQ0wsa0ZBQWtGO0tBQ3JGO0NBQ0YsQ0FBQTtBQUVELDRFQUE0RTtBQUM1RSxNQUFNLFVBQVUsT0FBTyxDQUFDLEtBSXZCO0lBQ0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUE7SUFDakMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUE7SUFDeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFBO0lBRXpDLE9BQU8sQ0FDTCxpQkFDRSxTQUFTLEVBQUUsRUFBRSxDQUNYLDRDQUE0QyxFQUM1QyxNQUFNLENBQUMsT0FBTyxDQUNmO1lBRUQsZUFBSyxTQUFTLEVBQUMsb0RBQW9EO29CQUNqRSxLQUFDLElBQUksSUFBQyxTQUFTLEVBQUMsaUJBQWlCLEdBQUcsRUFDcEMseUJBQU8sS0FBSyxHQUFRO29CQUNoQixFQUNOLGNBQUssU0FBUyxFQUFDLGlFQUFpRSxZQUM3RSxLQUFLLENBQUMsUUFBUSxHQUNYO1lBQ0EsQ0FDVCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsZXJ0VHJpYW5nbGUsIEZsYW1lLCBJbmZvLCBMaWdodGJ1bGIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL3V0aWxzL3N0eWxlLnRzXCJcblxudHlwZSBDYWxsb3V0VHlwZSA9IFwibm90ZVwiIHwgXCJ0aXBcIiB8IFwiaW5mb1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG5cbmludGVyZmFjZSBDYWxsb3V0Q29uZmlnIHtcbiAgaWNvbjogUmVhY3QuRWxlbWVudFR5cGVcbiAgbGFiZWw6IHN0cmluZ1xuICBjbGFzc2VzOiBzdHJpbmdcbn1cblxuY29uc3QgY29uZmlnczogUmVjb3JkPENhbGxvdXRUeXBlLCBDYWxsb3V0Q29uZmlnPiA9IHtcbiAgbm90ZToge1xuICAgIGljb246IEluZm8sXG4gICAgbGFiZWw6IFwiTm90ZVwiLFxuICAgIGNsYXNzZXM6XG4gICAgICBcImJvcmRlci1ibHVlLTUwMC8zMCBiZy1ibHVlLTUwLzUwIHRleHQtYmx1ZS05MDAgZGFyazpiZy1ibHVlLTk1MC8zMCBkYXJrOnRleHQtYmx1ZS0yMDBcIixcbiAgfSxcbiAgaW5mbzoge1xuICAgIGljb246IEluZm8sXG4gICAgbGFiZWw6IFwiSW5mb1wiLFxuICAgIGNsYXNzZXM6XG4gICAgICBcImJvcmRlci1ibHVlLTUwMC8zMCBiZy1ibHVlLTUwLzUwIHRleHQtYmx1ZS05MDAgZGFyazpiZy1ibHVlLTk1MC8zMCBkYXJrOnRleHQtYmx1ZS0yMDBcIixcbiAgfSxcbiAgdGlwOiB7XG4gICAgaWNvbjogTGlnaHRidWxiLFxuICAgIGxhYmVsOiBcIlRpcFwiLFxuICAgIGNsYXNzZXM6XG4gICAgICBcImJvcmRlci1ncmVlbi01MDAvMzAgYmctZ3JlZW4tNTAvNTAgdGV4dC1ncmVlbi05MDAgZGFyazpiZy1ncmVlbi05NTAvMzAgZGFyazp0ZXh0LWdyZWVuLTIwMFwiLFxuICB9LFxuICB3YXJuaW5nOiB7XG4gICAgaWNvbjogQWxlcnRUcmlhbmdsZSxcbiAgICBsYWJlbDogXCJXYXJuaW5nXCIsXG4gICAgY2xhc3NlczpcbiAgICAgIFwiYm9yZGVyLXllbGxvdy01MDAvMzAgYmcteWVsbG93LTUwLzUwIHRleHQteWVsbG93LTkwMCBkYXJrOmJnLXllbGxvdy05NTAvMzAgZGFyazp0ZXh0LXllbGxvdy0yMDBcIixcbiAgfSxcbiAgZGFuZ2VyOiB7XG4gICAgaWNvbjogRmxhbWUsXG4gICAgbGFiZWw6IFwiRGFuZ2VyXCIsXG4gICAgY2xhc3NlczpcbiAgICAgIFwiYm9yZGVyLXJlZC01MDAvMzAgYmctcmVkLTUwLzUwIHRleHQtcmVkLTkwMCBkYXJrOmJnLXJlZC05NTAvMzAgZGFyazp0ZXh0LXJlZC0yMDBcIixcbiAgfSxcbn1cblxuLyoqIFN0eWxlZCBjYWxsb3V0IGJsb2NrIGZvciBub3RlcywgdGlwcywgd2FybmluZ3MsIGFuZCBvdGhlciBhZG1vbml0aW9ucyAqL1xuZXhwb3J0IGZ1bmN0aW9uIENhbGxvdXQocHJvcHM6IHtcbiAgdHlwZT86IENhbGxvdXRUeXBlXG4gIHRpdGxlPzogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgdHlwZSA9IHByb3BzLnR5cGUgPz8gXCJub3RlXCJcbiAgY29uc3QgY29uZmlnID0gY29uZmlnc1t0eXBlXVxuICBjb25zdCBJY29uID0gY29uZmlnLmljb25cbiAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSA/PyBjb25maWcubGFiZWxcblxuICByZXR1cm4gKFxuICAgIDxhc2lkZVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJub3QtcHJvc2UgbXktNCByb3VuZGVkLXhsIGJvcmRlciBweC00IHB5LTNcIixcbiAgICAgICAgY29uZmlnLmNsYXNzZXMsXG4gICAgICApfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG1iLTJcIj5cbiAgICAgICAgPEljb24gY2xhc3NOYW1lPVwic2l6ZS00IHNocmluay0wXCIgLz5cbiAgICAgICAgPHNwYW4+e3RpdGxlfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIFsmPnBdOm15LTEgWyY+cDpmaXJzdC1jaGlsZF06bXQtMCBbJj5wOmxhc3QtY2hpbGRdOm1iLTBcIj5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgKVxufVxuIl19
@@ -0,0 +1,7 @@
1
+ /** Card component with optional icon, title, description, and link */
2
+ export declare function Card(props: {
3
+ title: string;
4
+ href?: string;
5
+ icon?: string;
6
+ children?: React.ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link } from "@tanstack/react-router";
3
+ import { DynamicIcon } from "../helpers/dynamic-icon.js";
4
+ import { Card as CardElement, CardContent, CardHeader, CardTitle, } from "../elements/card.js";
5
+ /** Card component with optional icon, title, description, and link */
6
+ export function Card(props) {
7
+ const card = (_jsxs(CardElement, { size: "sm", className: "transition-colors hover:bg-accent", children: [
8
+ _jsx(CardHeader, { children: _jsxs(CardTitle, { className: "flex items-center gap-2", children: [props.icon && (_jsx(DynamicIcon, { name: props.icon, className: "size-5 text-primary" })), props.title] }) }), props.children && (_jsx(CardContent, { children: _jsx("div", { className: "text-muted-foreground text-sm", children: props.children }) }))] }));
9
+ if (props.href?.startsWith("http")) {
10
+ return (_jsx("a", { href: props.href, target: "_blank", rel: "noopener noreferrer", children: card }));
11
+ }
12
+ if (props.href) {
13
+ return _jsx(Link, { to: props.href, children: card });
14
+ }
15
+ return card;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0NhcmQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE2QixDQUFBO0FBQ3pELE9BQU8sRUFDTCxJQUFJLElBQUksV0FBVyxFQUNuQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFNBQVMsR0FDVixNQUFNLHFCQUFzQixDQUFBO0FBRTdCLHNFQUFzRTtBQUN0RSxNQUFNLFVBQVUsSUFBSSxDQUFDLEtBS3BCO0lBQ0MsTUFBTSxJQUFJLEdBQUcsQ0FDWCxNQUFDLFdBQVcsSUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBQyxtQ0FBbUM7WUFDbEUsS0FBQyxVQUFVLGNBQ1QsTUFBQyxTQUFTLElBQUMsU0FBUyxFQUFDLHlCQUF5QixhQUMzQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQ2IsS0FBQyxXQUFXLElBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLHFCQUFxQixHQUFHLENBQ2xFLEVBQ0EsS0FBSyxDQUFDLEtBQUssSUFDRixHQUNELEVBQ1osS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUNqQixLQUFDLFdBQVcsY0FDVixjQUFLLFNBQVMsRUFBQywrQkFBK0IsWUFBRSxLQUFLLENBQUMsUUFBUSxHQUFPLEdBQ3pELENBQ2YsSUFDVyxDQUNmLENBQUE7SUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUNMLFlBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFDLFFBQVEsRUFBQyxHQUFHLEVBQUMscUJBQXFCLFlBQzNELElBQUksR0FDSCxDQUNMLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixPQUFPLEtBQUMsSUFBSSxJQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxZQUFHLElBQUksR0FBUSxDQUFBO0lBQzVDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcbmltcG9ydCB7XG4gIENhcmQgYXMgQ2FyZEVsZW1lbnQsXG4gIENhcmRDb250ZW50LFxuICBDYXJkSGVhZGVyLFxuICBDYXJkVGl0bGUsXG59IGZyb20gXCIuLi9lbGVtZW50cy9jYXJkLnRzeFwiXG5cbi8qKiBDYXJkIGNvbXBvbmVudCB3aXRoIG9wdGlvbmFsIGljb24sIHRpdGxlLCBkZXNjcmlwdGlvbiwgYW5kIGxpbmsgKi9cbmV4cG9ydCBmdW5jdGlvbiBDYXJkKHByb3BzOiB7XG4gIHRpdGxlOiBzdHJpbmdcbiAgaHJlZj86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IGNhcmQgPSAoXG4gICAgPENhcmRFbGVtZW50IHNpemU9XCJzbVwiIGNsYXNzTmFtZT1cInRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmJnLWFjY2VudFwiPlxuICAgICAgPENhcmRIZWFkZXI+XG4gICAgICAgIDxDYXJkVGl0bGUgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICB7cHJvcHMuaWNvbiAmJiAoXG4gICAgICAgICAgICA8RHluYW1pY0ljb24gbmFtZT17cHJvcHMuaWNvbn0gY2xhc3NOYW1lPVwic2l6ZS01IHRleHQtcHJpbWFyeVwiIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgIDwvQ2FyZFRpdGxlPlxuICAgICAgPC9DYXJkSGVhZGVyPlxuICAgICAge3Byb3BzLmNoaWxkcmVuICYmIChcbiAgICAgICAgPENhcmRDb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQtc21cIj57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICApfVxuICAgIDwvQ2FyZEVsZW1lbnQ+XG4gIClcblxuICBpZiAocHJvcHMuaHJlZj8uc3RhcnRzV2l0aChcImh0dHBcIikpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17cHJvcHMuaHJlZn0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICB7Y2FyZH1cbiAgICAgIDwvYT5cbiAgICApXG4gIH1cblxuICBpZiAocHJvcHMuaHJlZikge1xuICAgIHJldHVybiA8TGluayB0bz17cHJvcHMuaHJlZn0+e2NhcmR9PC9MaW5rPlxuICB9XG5cbiAgcmV0dXJuIGNhcmRcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ /** Grid container for card components */
2
+ export declare function Cards(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
+ /** Grid container for card components */
3
+ export function Cards(props) {
4
+ return (_jsx("div", { className: "not-prose grid grid-cols-1 gap-4 my-4 sm:grid-cols-2", children: props.children }));
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9DYXJkcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlDQUF5QztBQUN6QyxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQW9DO0lBQ3hELE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyxzREFBc0QsWUFDbEUsS0FBSyxDQUFDLFFBQVEsR0FDWCxDQUNQLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEdyaWQgY29udGFpbmVyIGZvciBjYXJkIGNvbXBvbmVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBDYXJkcyhwcm9wczogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBncmlkIGdyaWQtY29scy0xIGdhcC00IG15LTQgc206Z3JpZC1jb2xzLTJcIj5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ /** Auto-generated changelog index listing all versions by date */
2
+ export declare function ChangelogIndex(props: {
3
+ sectionPrefix: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,57 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link } from "@tanstack/react-router";
3
+ import { History } from "lucide-react";
4
+ import { currentSection, sectionFlatArticles, sortedArticles, } from "../content/article.js";
5
+ import { Separator } from "../elements/separator.js";
6
+ import { TocContext } from "../helpers/toc-context.js";
7
+ import { Footer } from "./Footer.js";
8
+ import { PageToolbar } from "./PageToolbar.js";
9
+ import { MobileToc, Toc } from "./Toc.js";
10
+ /** Auto-generated changelog index listing all versions by date */
11
+ export function ChangelogIndex(props) {
12
+ const section = currentSection(props.sectionPrefix);
13
+ const flat = sectionFlatArticles.get(props.sectionPrefix) ?? [];
14
+ const entries = flat
15
+ .map(p => sortedArticles.find(a => a.path === p))
16
+ .filter(a => a !== undefined);
17
+ const tocItems = entries.map(entry => ({
18
+ url: `#${slugOf(entry.path)}`,
19
+ title: entry.title,
20
+ depth: 2,
21
+ }));
22
+ const content = [
23
+ `# ${section?.title ?? "Changelog"}`,
24
+ ...entries.map(entry => {
25
+ const parts = [`## ${entry.title}`];
26
+ if (entry.date)
27
+ parts.push(formatDate(entry.date));
28
+ if (entry.description)
29
+ parts.push("", entry.description);
30
+ return parts.join("\n");
31
+ }),
32
+ ].join("\n\n");
33
+ return (_jsxs(TocContext.Provider, { value: tocItems, children: [
34
+ _jsx(MobileToc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) }), _jsxs("div", { className: "flex flex-1 gap-10 p-4 pt-8 md:p-10", children: [
35
+ _jsxs("div", { className: "flex-1 min-w-0 mx-auto max-w-3xl", children: [
36
+ _jsxs("div", { className: "prose dark:prose-invert max-w-none mb-8", children: [
37
+ _jsx("h1", { id: "top", children: _jsx("a", { href: "#top", children: section?.title ?? "Changelog" }) }), entries[0]?.date && (_jsx("p", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-muted-foreground !-mt-4 !mb-0", children: _jsxs("span", { className: "flex items-center gap-1.5", children: [
38
+ _jsx(History, { className: "size-3.5" }),
39
+ "Updated ", formatDate(entries[0].date)] }) }))] }), _jsx("div", { className: "space-y-6", children: entries.map((entry, i) => (_jsxs("article", { id: slugOf(entry.path), children: [i > 0 && _jsx(Separator, { className: "mb-6" }), _jsx("h2", { className: "text-2xl", children: _jsx(Link, { to: "/$", params: { _splat: entry.path.replace(/^\/|\/$/g, "") }, className: "font-medium hover:text-primary transition-colors", children: entry.title }) }), entry.date && (_jsx("p", { className: "text-sm text-muted-foreground mt-1", children: formatDate(entry.date) })), entry.description && (_jsx("p", { className: "text-muted-foreground mt-2", children: entry.description }))] }, entry.path))) }), _jsx("div", { className: "mt-10", children: _jsx(Footer, {}) })
40
+ ] }), _jsx(Toc, { items: tocItems, children: _jsx(PageToolbar, { content: content }) })
41
+ ] })
42
+ ] }));
43
+ }
44
+ function slugOf(path) {
45
+ return (path
46
+ .replace(/^\/|\/$/g, "")
47
+ .split("/")
48
+ .pop() ?? "");
49
+ }
50
+ function formatDate(iso) {
51
+ return new Date(iso).toLocaleDateString("en-US", {
52
+ year: "numeric",
53
+ month: "short",
54
+ day: "numeric",
55
+ });
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhbmdlbG9nSW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9DaGFuZ2Vsb2dJbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3RDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMkIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWMsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxVQUFXLENBQUE7QUFFMUMsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBZ0M7SUFDN0QsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuRCxNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJO1NBQ2pCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQTtJQUUvQixNQUFNLFFBQVEs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LFlBQ3BCLEtBQUMsTUFBTSxLQUFHLEdBQ047NEJBQ0YsRUFDTixLQUFDLEdBQUcsSUFBQyxLQUFLLEVBQUUsUUFBUSxZQUNsQixLQUFDLFdBQVcsSUFBQyxPQUFPLEVBQUUsT0FBTyxHQUFJLEdBQzdCO29CQUNGO1lBQ2MsQ0FDdkIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE9BQU8sQ0FDTCxJQUFJO1NBQ0QsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7U0FDdkIsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FDZixDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEdBQVc7SUFDN0IsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7UUFDL0MsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsT0FBTztRQUNkLEdBQUcsRUFBRSxTQUFTO0tBQ2YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmsgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgU2VwYXJhdG9yIH0gZnJvbSBcIi4uL2VsZW1lbnRzL3NlcGFyYXRvci50c3hcIlxuaW1wb3J0IHsgVG9jQ29udGV4dCB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcbmltcG9ydCB7IEZvb3RlciB9IGZyb20gXCIuL0Zvb3Rlci50c3hcIlxuaW1wb3J0IHsgUGFnZVRvb2xiYXIgfSBmcm9tIFwiLi9QYWdlVG9vbGJhci50c3hcIlxuaW1wb3J0IHsgTW9iaWxlVG9jLCBUb2MgfSBmcm9tIFwiLi9Ub2MudHN4XCJcblxuLyoqIEF1dG8tZ2VuZXJhdGVkIGNoYW5nZWxvZyBpbmRleCBsaXN0aW5nIGFsbCB2ZXJzaW9ucyBieSBkYXRlICovXG5leHBvcnQgZnVuY3Rpb24gQ2hhbmdlbG9nSW5kZXgocHJvcHM6IHsgc2VjdGlvblByZWZpeDogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc2VjdGlvbiA9IGN1cnJlbnRTZWN0aW9uKHByb3BzLnNlY3Rpb25QcmVmaXgpXG4gIGNvbnN0IGZsYXQgPSBzZWN0aW9uRmxhdEFydGljbGVzLmdldChwcm9wcy5zZWN0aW9uUHJlZml4KSA/PyBbXVxuICBjb25zdCBlbnRyaWVzID0gZmxhdFxuICAgIC5tYXAocCA9PiBzb3J0ZWRBcnRpY2xlcy5maW5kKGEgPT4gYS5wYXRoID09PSBwKSlcbiAgICAuZmlsdGVyKGEgPT4gYSAhPT0gdW5kZWZpbmVkKVxuXG4gIGNvbnN0IHRvY0l0ZW1zID0gZW50cmllcy5tYXAoZW50cnkgPT4gKHtcbiAgICB1cmw6IGAjJHtzbHVnT2YoZW50cnkucGF0aCl9YCxcbiAgICB0aXRsZTogZW50cnkudGl0bGUsXG4gICAgZGVwdGg6IDIsXG4gIH0pKVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBbXG4gICAgYCMgJHtzZWN0aW9uPy50aXRsZSA/PyBcIkNoYW5nZWxvZ1wifWAsXG4gICAgLi4uZW50cmllcy5tYXAoZW50cnkgPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBbYCMjICR7ZW50cnkudGl0bGV9YF1cbiAgICAgIGlmIChlbnRyeS5kYXRlKSBwYXJ0cy5wdXNoKGZvcm1hdERhdGUoZW50cnkuZGF0ZSkpXG4gICAgICBpZiAoZW50cnkuZGVzY3JpcHRpb24pIHBhcnRzLnB1c2goXCJcIiwgZW50cnkuZGVzY3JpcHRpb24pXG4gICAgICByZXR1cm4gcGFydHMuam9pbihcIlxcblwiKVxuICAgIH0pLFxuICBdLmpvaW4oXCJcXG5cXG5cIilcblxuICByZXR1cm4gKFxuICAgIDxUb2NDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0b2NJdGVtc30+XG4gICAgICA8TW9iaWxlVG9jIGl0ZW1zPXt0b2NJdGVtc30+XG4gICAgICAgIDxQYWdlVG9vbGJhciBjb250ZW50PXtjb250ZW50fSAvPlxuICAgICAgPC9Nb2JpbGVUb2M+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC0xIGdhcC0xMCBwLTQgcHQtOCBtZDpwLTEwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi13LTAgbXgtYXV0byBtYXgtdy0zeGxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IG1heC13LW5vbmUgbWItOFwiPlxuICAgICAgICAgICAgPGgxIGlkPVwidG9wXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjdG9wXCI+e3NlY3Rpb24/LnRpdGxlID8/IFwiQ2hhbmdlbG9nXCJ9PC9hPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIHtlbnRyaWVzWzBdPy5kYXRlICYmIChcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTMgZ2FwLXktMSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCAhLW10LTQgIW1iLTBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICA8SGlzdG9yeSBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgICAgICAgICBVcGRhdGVkIHtmb3JtYXREYXRlKGVudHJpZXNbMF0uZGF0ZSl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS02XCI+XG4gICAgICAgICAgICB7ZW50cmllcy5tYXAoKGVudHJ5LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxhcnRpY2xlIGtleT17ZW50cnkucGF0aH0gaWQ9e3NsdWdPZihlbnRyeS5wYXRoKX0+XG4gICAgICAgICAgICAgICAge2kgPiAwICYmIDxTZXBhcmF0b3IgY2xhc3NOYW1lPVwibWItNlwiIC8+fVxuICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTJ4bFwiPlxuICAgICAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICAgICAgdG89XCIvJFwiXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcz17eyBfc3BsYXQ6IGVudHJ5LnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIGhvdmVyOnRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtlbnRyeS50aXRsZX1cbiAgICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgIHtlbnRyeS5kYXRlICYmIChcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAge2Zvcm1hdERhdGUoZW50cnkuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7ZW50cnkuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAge2VudHJ5LmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvYXJ0aWNsZT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMTBcIj5cbiAgICAgICAgICAgIDxGb290ZXIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxUb2MgaXRlbXM9e3RvY0l0ZW1zfT5cbiAgICAgICAgICA8UGFnZVRvb2xiYXIgY29udGVudD17Y29udGVudH0gLz5cbiAgICAgICAgPC9Ub2M+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RvY0NvbnRleHQuUHJvdmlkZXI+XG4gIClcbn1cblxuZnVuY3Rpb24gc2x1Z09mKHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gKFxuICAgIHBhdGhcbiAgICAgIC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgXCJcIilcbiAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgIC5wb3AoKSA/PyBcIlwiXG4gIClcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0ZShpc286IHN0cmluZykge1xuICByZXR1cm4gbmV3IERhdGUoaXNvKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwic2hvcnRcIixcbiAgICBkYXk6IFwibnVtZXJpY1wiLFxuICB9KVxufVxuIl19
@@ -0,0 +1 @@
1
+ export declare function CodeBlock(props: React.ComponentProps<"pre">): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Check, ChevronDown, Clipboard, WrapText } from "lucide-react";
3
+ import { useRef, useState } from "react";
4
+ import { Tooltip, TooltipContent, TooltipTrigger, } from "../elements/tooltip.js";
5
+ export function CodeBlock(props) {
6
+ const [copied, setCopied] = useState(false);
7
+ const [wrap, setWrap] = useState(false);
8
+ const [expanded, setExpanded] = useState(false);
9
+ const preRef = useRef(null);
10
+ const extra = props;
11
+ const meta = extra["data-meta"];
12
+ const title = meta?.match(/title="([^"]+)"/)?.[1];
13
+ const maxLines = meta?.match(/maxLines=(\d+)/)?.[1];
14
+ const icon = extra.icon;
15
+ const style = props.style;
16
+ const collapsedHeight = maxLines
17
+ ? `${Number(maxLines) * 1.5 + 1.75}rem`
18
+ : undefined;
19
+ const handleCopy = () => {
20
+ const text = preRef.current?.textContent ?? "";
21
+ navigator.clipboard.writeText(text);
22
+ setCopied(true);
23
+ setTimeout(() => setCopied(false), 2000);
24
+ };
25
+ const handleWrapToggle = () => {
26
+ setWrap(prev => !prev);
27
+ };
28
+ return (_jsxs("figure", { className: "shiki not-prose my-4 relative rounded-xl border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", style: { ...style, backgroundColor: undefined }, children: [title ? (_jsxs("div", { className: "flex items-center gap-2 h-9.5 border-b px-4 text-muted-foreground", children: [icon && (_jsx("span", { className: "size-3.5 [&>svg]:size-full", dangerouslySetInnerHTML: { __html: icon } })), _jsx("span", { className: "flex-1 truncate text-xs font-medium", children: title }), _jsxs(Tooltip, { children: [
29
+ _jsx(TooltipTrigger, { onClick: handleWrapToggle, "aria-label": wrap ? "Disable wrap" : "Enable wrap", className: `-me-2 p-1.5 rounded-md hover:text-foreground transition-colors ${wrap ? "text-foreground" : ""}`, children: _jsx(WrapText, { className: "size-3.5" }) }), _jsx(TooltipContent, { children: wrap ? "Disable wrap" : "Enable wrap" })
30
+ ] }), _jsxs(Tooltip, { children: [
31
+ _jsx(TooltipTrigger, { onClick: handleCopy, "aria-label": copied ? "Copied" : "Copy code", className: "-me-2 p-1.5 rounded-md hover:text-foreground transition-colors", children: copied ? (_jsx(Check, { className: "size-3.5" })) : (_jsx(Clipboard, { className: "size-3.5" })) }), _jsx(TooltipContent, { children: copied ? "Copied!" : "Copy code" })
32
+ ] })
33
+ ] })) : (_jsxs("div", { className: "empty:hidden absolute top-2 right-2 z-10 backdrop-blur-lg rounded-lg text-muted-foreground", children: [
34
+ _jsxs(Tooltip, { children: [
35
+ _jsx(TooltipTrigger, { onClick: handleWrapToggle, "aria-label": wrap ? "Disable wrap" : "Enable wrap", className: `p-1.5 rounded-md hover:text-foreground transition-colors ${wrap ? "text-foreground" : ""}`, children: _jsx(WrapText, { className: "size-3.5" }) }), _jsx(TooltipContent, { children: wrap ? "Disable wrap" : "Enable wrap" })
36
+ ] }), _jsxs(Tooltip, { children: [
37
+ _jsx(TooltipTrigger, { onClick: handleCopy, "aria-label": copied ? "Copied" : "Copy code", className: "p-1.5 rounded-md hover:text-foreground transition-colors", children: copied ? (_jsx(Check, { className: "size-3.5" })) : (_jsx(Clipboard, { className: "size-3.5" })) }), _jsx(TooltipContent, { children: copied ? "Copied!" : "Copy code" })
38
+ ] })
39
+ ] })), _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto transition-[max-height] duration-300", style: {
40
+ maxHeight: collapsedHeight && !expanded ? collapsedHeight : "600px",
41
+ }, children: _jsx("pre", { ...props, ref: preRef, style: undefined, className: wrap
42
+ ? "min-w-full whitespace-pre-wrap break-words [&>code]:flex [&>code]:flex-col"
43
+ : "min-w-full w-max [&>code]:flex [&>code]:flex-col" }) }), collapsedHeight && !expanded && (_jsxs("button", { type: "button", onClick: () => setExpanded(true), className: "flex items-center justify-center gap-1 w-full py-1.5 text-xs text-muted-foreground hover:text-foreground border-t cursor-pointer transition-colors", children: [
44
+ _jsx(ChevronDown, { className: "size-3.5" }),
45
+ "Expand"] }))] }));
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZUJsb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvQ29kZUJsb2NrLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUN4QyxPQUFPLEVBQ0wsT0FBTyxFQUNQLGNBQWMsRUFDZCxjQUFjLEdBQ2YsTUFBTSx3QkFBeUIsQ0FBQTtBQUVoQyxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWtDO0lBQzFELE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUE7SUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBZ0MsQ0FBQTtJQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUEwQixDQUFBO0lBQzdDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUEy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LEtBQUMsY0FBYyxJQUNiLE9BQU8sRUFBRSxVQUFVLGdCQUNQLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQzNDLFNBQVMsRUFBQywwREFBMEQsWUFFbkUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUNSLEtBQUMsS0FBSyxJQUFDLFNBQVMsRUFBQyxVQUFVLEdBQUcsQ0FDL0IsQ0FBQyxDQUFDLENBQUMsQ0FDRixLQUFDLFNBQVMsSUFBQyxTQUFTLEVBQUMsVUFBVSxHQUFHLENBQ25DLEdBQ2MsRUFDakIsS0FBQyxjQUFjLGNBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBa0I7NEJBQzNEO29CQUNOLENBQ1AsRUFDRCxjQUNFLFNBQVMsRUFBQyw0RUFBNEUsRUFDdEYsS0FBSyxFQUFFO29CQUNMLFNBQVMsRUFBRSxlQUFlLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTztpQkFDcEUsWUFFRCxpQkFDTSxLQUFLLEVBQ1QsR0FBRyxFQUFFLE1BQU0sRUFDWCxLQUFLLEVBQUUsU0FBUyxFQUNoQixTQUFTLEVBQ1AsSUFBSTt3QkFDRixDQUFDLENBQUMsNEVBQTRFO3dCQUM5RSxDQUFDLENBQUMsa0RBQWtELEdBRXhELEdBQ0UsRUFDTCxlQUFlLElBQUksQ0FBQyxRQUFRLElBQUksQ0FDL0Isa0JBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUNoQyxTQUFTLEVBQUMsb0pBQW9KO29CQUU5SixLQUFDLFdBQVcsSUFBQyxTQUFTLEVBQUMsVUFBVSxHQUFHO2dDQUU3QixDQUNWLElBQ00sQ0FDVixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoZWNrLCBDaGV2cm9uRG93biwgQ2xpcGJvYXJkLCBXcmFwVGV4dCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1xuICBUb29sdGlwLFxuICBUb29sdGlwQ29udGVudCxcbiAgVG9vbHRpcFRyaWdnZXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy90b29sdGlwLnRzeFwiXG5cbmV4cG9ydCBmdW5jdGlvbiBDb2RlQmxvY2socHJvcHM6IFJlYWN0LkNvbXBvbmVudFByb3BzPFwicHJlXCI+KSB7XG4gIGNvbnN0IFtjb3BpZWQsIHNldENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3dyYXAsIHNldFdyYXBdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtleHBhbmRlZCwgc2V0RXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHByZVJlZiA9IHVzZVJlZjxIVE1MUHJlRWxlbWVudD4obnVsbClcbiAgY29uc3QgZXh0cmEgPSBwcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCBtZXRhID0gZXh0cmFbXCJkYXRhLW1ldGFcIl0gYXMgc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGNvbnN0IHRpdGxlID0gbWV0YT8ubWF0Y2goL3RpdGxlPVwiKFteXCJdKylcIi8pPy5bMV1cbiAgY29uc3QgbWF4TGluZXMgPSBtZXRhPy5tYXRjaCgvbWF4TGluZXM9KFxcZCspLyk/LlsxXVxuICBjb25zdCBpY29uID0gZXh0cmEuaWNvbiBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4gIGNvbnN0IGNvbGxhcHNlZEhlaWdodCA9IG1heExpbmVzXG4gICAgPyBgJHtOdW1iZXIobWF4TGluZXMpICogMS41ICsgMS43NX1yZW1gXG4gICAgOiB1bmRlZmluZWRcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIGNvbnN0IHRleHQgPSBwcmVSZWYuY3VycmVudD8udGV4dENvbnRlbnQgPz8gXCJcIlxuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpXG4gICAgc2V0Q29waWVkKHRydWUpXG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRDb3BpZWQoZmFsc2UpLCAyMDAwKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlV3JhcFRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRXcmFwKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxmaWd1cmVcbiAgICAgIGNsYXNzTmFtZT1cInNoaWtpIG5vdC1wcm9zZSBteS00IHJlbGF0aXZlIHJvdW5kZWQteGwgYm9yZGVyIHNoYWRvdy1zbSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbSBiZy1zaWRlYmFyIGRhcms6Ymctc2lkZWJhclwiXG4gICAgICBzdHlsZT17eyAuLi5zdHlsZSwgYmFja2dyb3VuZENvbG9yOiB1bmRlZmluZWQgfX1cbiAgICA+XG4gICAgICB7dGl0bGUgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgaC05LjUgYm9yZGVyLWIgcHgtNCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICB7aWNvbiAmJiAoXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaXplLTMuNSBbJj5zdmddOnNpemUtZnVsbFwiXG4gICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaWNvbiB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXgtMSB0cnVuY2F0ZSB0ZXh0LXhzIGZvbnQtbWVkaXVtXCI+e3RpdGxlfTwvc3Bhbj5cbiAgICAgICAgICA8VG9vbHRpcD5cbiAgICAgICAgICAgIDxUb29sdGlwVHJpZ2dlclxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVXcmFwVG9nZ2xlfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt3cmFwID8gXCJEaXNhYmxlIHdyYXBcIiA6IFwiRW5hYmxlIHdyYXBcIn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgLW1lLTIgcC0xLjUgcm91bmRlZC1tZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgJHt3cmFwID8gXCJ0ZXh0LWZvcmVncm91bmRcIiA6IFwiXCJ9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFdyYXBUZXh0IGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgICAgIHt3cmFwID8gXCJEaXNhYmxlIHdyYXBcIiA6IFwiRW5hYmxlIHdyYXBcIn1cbiAgICAgICAgICAgIDwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2NvcGllZCA/IFwiQ29waWVkXCIgOiBcIkNvcHkgY29kZVwifVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCItbWUtMiBwLTEuNSByb3VuZGVkLW1kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtjb3BpZWQgPyAoXG4gICAgICAgICAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8Q2xpcGJvYXJkIGNsYXNzTmFtZT1cInNpemUtMy41XCIgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVG9vbHRpcFRyaWdnZXI+XG4gICAgICAgICAgICA8VG9vbHRpcENvbnRlbnQ+e2NvcGllZCA/IFwiQ29waWVkIVwiIDogXCJDb3B5IGNvZGVcIn08L1Rvb2x0aXBDb250ZW50PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5OmhpZGRlbiBhYnNvbHV0ZSB0b3AtMiByaWdodC0yIHotMTAgYmFja2Ryb3AtYmx1ci1sZyByb3VuZGVkLWxnIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgIDxUb29sdGlwPlxuICAgICAgICAgICAgPFRvb2x0aXBUcmlnZ2VyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVdyYXBUb2dnbGV9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3dyYXAgPyBcIkRpc2FibGUgd3JhcFwiIDogXCJFbmFibGUgd3JhcFwifVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2BwLTEuNSByb3VuZGVkLW1kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyAke3dyYXAgPyBcInRleHQtZm9yZWdyb3VuZFwiIDogXCJcIn1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8V3JhcFRleHQgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD5cbiAgICAgICAgICAgICAge3dyYXAgPyBcIkRpc2FibGUgd3JhcFwiIDogXCJFbmFibGUgd3JhcFwifVxuICAgICAgICAgICAgPC9Ub29sdGlwQ29udGVudD5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXA+XG4gICAgICAgICAgICA8VG9vbHRpcFRyaWdnZXJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Y29waWVkID8gXCJDb3BpZWRcIiA6IFwiQ29weSBjb2RlXCJ9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMS41IHJvdW5kZWQtbWQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2NvcGllZCA/IChcbiAgICAgICAgICAgICAgICA8Q2hlY2sgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxDbGlwYm9hcmQgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ub29sdGlwVHJpZ2dlcj5cbiAgICAgICAgICAgIDxUb29sdGlwQ29udGVudD57Y29waWVkID8gXCJDb3BpZWQhXCIgOiBcIkNvcHkgY29kZVwifTwvVG9vbHRpcENvbnRlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cInRleHQtWzAuODEyNXJlbV0gcHktMy41IG92ZXJmbG93LWF1dG8gdHJhbnNpdGlvbi1bbWF4LWhlaWdodF0gZHVyYXRpb24tMzAwXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBtYXhIZWlnaHQ6IGNvbGxhcHNlZEhlaWdodCAmJiAhZXhwYW5kZWQgPyBjb2xsYXBzZWRIZWlnaHQgOiBcIjYwMHB4XCIsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxwcmVcbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgcmVmPXtwcmVSZWZ9XG4gICAgICAgICAgc3R5bGU9e3VuZGVmaW5lZH1cbiAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgd3JhcFxuICAgICAgICAgICAgICA/IFwibWluLXctZnVsbCB3aGl0ZXNwYWNlLXByZS13cmFwIGJyZWFrLXdvcmRzIFsmPmNvZGVdOmZsZXggWyY+Y29kZV06ZmxleC1jb2xcIlxuICAgICAgICAgICAgICA6IFwibWluLXctZnVsbCB3LW1heCBbJj5jb2RlXTpmbGV4IFsmPmNvZGVdOmZsZXgtY29sXCJcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtjb2xsYXBzZWRIZWlnaHQgJiYgIWV4cGFuZGVkICYmIChcbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEV4cGFuZGVkKHRydWUpfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xIHctZnVsbCBweS0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGJvcmRlci10IGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxDaGV2cm9uRG93biBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgRXhwYW5kXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKX1cbiAgICA8L2ZpZ3VyZT5cbiAgKVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ /** Tabbed code block component for grouping multiple code blocks with optional sync */
2
+ export declare function CodeTabs(props: {
3
+ tabs: string;
4
+ sync?: string;
5
+ children: React.ReactNode;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -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;