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.
- package/README.md +115 -4
- package/package.json +15 -14
- package/source/actions/changelog/build.ts +245 -0
- package/source/actions/changelog/build.unit.ts +69 -0
- package/source/actions/config/define.ts +11 -0
- package/source/actions/config/define.unit.ts +33 -0
- package/source/actions/config/load.ts +22 -0
- package/source/actions/config/load.unit.ts +30 -0
- package/source/commands/build.ts +21 -0
- package/source/commands/escape.ts +77 -0
- package/source/commands/preview.ts +25 -0
- package/source/commands/start.ts +26 -0
- package/{build/website → source}/components/Article.tsx +44 -44
- package/{build/website → source}/components/Callout.tsx +1 -1
- package/{build/website → source}/components/Layout.tsx +3 -14
- package/{build/website → source}/components/LinkButton.tsx +1 -1
- package/{build/website → source}/components/PageToolbar.tsx +21 -8
- package/{build/website → source}/components/Section.tsx +1 -1
- package/{build/website → source}/components/SectionHeader.tsx +1 -1
- package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
- package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
- package/source/components/SidebarPosts.tsx +129 -0
- package/source/components/SidebarReleases.tsx +85 -0
- package/{build/website → source}/content-collections.ts +12 -3
- package/{build/website → source}/elements/accordion.tsx +1 -1
- package/{build/website → source}/elements/alert-dialog.tsx +1 -1
- package/{build/website → source}/elements/alert.tsx +1 -1
- package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
- package/{build/website → source}/elements/avatar.tsx +1 -1
- package/{build/website → source}/elements/badge.tsx +1 -1
- package/{build/website → source}/elements/breadcrumb.tsx +1 -1
- package/{build/website → source}/elements/button-group.tsx +1 -1
- package/{build/website → source}/elements/button.tsx +1 -1
- package/{build/website → source}/elements/calendar.tsx +1 -1
- package/{build/website → source}/elements/card.tsx +1 -1
- package/{build/website → source}/elements/carousel.tsx +1 -1
- package/{build/website → source}/elements/chart.tsx +1 -1
- package/{build/website → source}/elements/checkbox.tsx +1 -1
- package/{build/website → source}/elements/command.tsx +1 -1
- package/{build/website → source}/elements/context-menu.tsx +1 -1
- package/{build/website → source}/elements/dialog.tsx +1 -1
- package/{build/website → source}/elements/drawer.tsx +1 -1
- package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
- package/{build/website → source}/elements/empty.tsx +1 -1
- package/{build/website → source}/elements/field.tsx +1 -1
- package/{build/website → source}/elements/hover-card.tsx +1 -1
- package/{build/website → source}/elements/input-group.tsx +1 -1
- package/{build/website → source}/elements/input-otp.tsx +1 -1
- package/{build/website → source}/elements/input.tsx +1 -1
- package/{build/website → source}/elements/item.tsx +1 -1
- package/{build/website → source}/elements/kbd.tsx +1 -1
- package/{build/website → source}/elements/label.tsx +1 -1
- package/{build/website → source}/elements/menubar.tsx +1 -1
- package/{build/website → source}/elements/native-select.tsx +1 -1
- package/{build/website → source}/elements/navigation-menu.tsx +1 -1
- package/{build/website → source}/elements/pagination.tsx +1 -1
- package/{build/website → source}/elements/popover.tsx +1 -1
- package/{build/website → source}/elements/progress.tsx +1 -1
- package/{build/website → source}/elements/radio-group.tsx +1 -1
- package/{build/website → source}/elements/resizable.tsx +1 -1
- package/{build/website → source}/elements/scroll-area.tsx +1 -1
- package/{build/website → source}/elements/select.tsx +1 -1
- package/{build/website → source}/elements/separator.tsx +1 -1
- package/{build/website → source}/elements/sheet.tsx +1 -1
- package/{build/website → source}/elements/sidebar.tsx +7 -4
- package/{build/website → source}/elements/skeleton.tsx +1 -1
- package/{build/website → source}/elements/slider.tsx +1 -1
- package/{build/website → source}/elements/spinner.tsx +1 -1
- package/{build/website → source}/elements/switch.tsx +1 -1
- package/{build/website → source}/elements/table.tsx +1 -1
- package/{build/website → source}/elements/tabs.tsx +1 -1
- package/{build/website → source}/elements/textarea.tsx +1 -1
- package/{build/website → source}/elements/toggle-group.tsx +1 -1
- package/{build/website → source}/elements/toggle.tsx +1 -1
- package/{build/website → source}/elements/tooltip.tsx +1 -1
- package/source/entrypoints/main.ts +12 -0
- package/{build/website → source}/env.d.ts +1 -1
- package/source/helpers/program.ts +6 -0
- package/{build/website → source}/helpers/section.ts +1 -1
- package/source/hooks/media.ts +29 -0
- package/source/index.ts +1 -0
- package/{build/website → source}/models/article.ts +5 -0
- package/source/models/config.ts +51 -0
- package/source/models/link.ts +11 -0
- package/source/models/patch.ts +9 -0
- package/source/models/section.ts +45 -0
- package/source/models/theme.ts +74 -0
- package/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +14 -9
- package/{build → target}/actions/changelog/build.d.ts +1 -0
- package/target/actions/changelog/build.js +187 -0
- package/target/actions/changelog/build.unit.js +66 -0
- package/target/actions/config/define.js +8 -0
- package/target/actions/config/define.unit.js +29 -0
- package/target/actions/config/load.js +25 -0
- package/target/actions/config/load.unit.js +23 -0
- package/target/client.d.ts +1 -0
- package/target/client.js +6 -0
- package/target/commands/build.js +14 -0
- package/target/commands/escape.js +56 -0
- package/target/commands/preview.js +18 -0
- package/target/commands/start.js +19 -0
- package/target/components/Abbr.d.ts +5 -0
- package/target/components/Abbr.js +9 -0
- package/target/components/AnsiCode.d.ts +4 -0
- package/target/components/AnsiCode.js +6 -0
- package/target/components/Article.d.ts +5 -0
- package/target/components/Article.js +104 -0
- package/target/components/BackToTop.d.ts +3 -0
- package/target/components/BackToTop.js +19 -0
- package/target/components/Banner.d.ts +2 -0
- package/target/components/Banner.js +12 -0
- package/target/components/BlogIndex.d.ts +4 -0
- package/target/components/BlogIndex.js +62 -0
- package/target/components/Breadcrumbs.d.ts +1 -0
- package/target/components/Breadcrumbs.js +13 -0
- package/target/components/Callout.d.ts +8 -0
- package/target/components/Callout.js +43 -0
- package/target/components/Card.d.ts +7 -0
- package/target/components/Card.js +17 -0
- package/target/components/Cards.d.ts +4 -0
- package/target/components/Cards.js +6 -0
- package/target/components/ChangelogIndex.d.ts +4 -0
- package/target/components/ChangelogIndex.js +57 -0
- package/target/components/CodeBlock.d.ts +1 -0
- package/target/components/CodeBlock.js +47 -0
- package/target/components/CodeTabs.d.ts +6 -0
- package/target/components/CodeTabs.js +49 -0
- package/target/components/Column.d.ts +4 -0
- package/target/components/Column.js +6 -0
- package/target/components/Columns.d.ts +5 -0
- package/target/components/Columns.js +10 -0
- package/target/components/Content.d.ts +3 -0
- package/target/components/Content.js +5 -0
- package/target/components/ContentTab.d.ts +5 -0
- package/target/components/ContentTab.js +6 -0
- package/target/components/ContentTabs.d.ts +5 -0
- package/target/components/ContentTabs.js +47 -0
- package/target/components/DefaultCatchBoundary.d.ts +2 -0
- package/target/components/DefaultCatchBoundary.js +20 -0
- package/target/components/DefinitionList.d.ts +7 -0
- package/target/components/DefinitionList.js +14 -0
- package/target/components/Details.d.ts +5 -0
- package/target/components/Details.js +13 -0
- package/target/components/FileTree.d.ts +4 -0
- package/target/components/FileTree.js +17 -0
- package/target/components/Footer.d.ts +2 -0
- package/target/components/Footer.js +9 -0
- package/target/components/FootnoteRef.d.ts +3 -0
- package/target/components/FootnoteRef.js +31 -0
- package/target/components/Heading.d.ts +8 -0
- package/target/components/Heading.js +18 -0
- package/target/components/InlineBadge.d.ts +5 -0
- package/target/components/InlineBadge.js +7 -0
- package/target/components/InlineIcon.d.ts +5 -0
- package/target/components/InlineIcon.js +10 -0
- package/target/components/InlineToc.d.ts +4 -0
- package/target/components/InlineToc.js +14 -0
- package/target/components/Layout.d.ts +4 -0
- package/target/components/Layout.js +65 -0
- package/target/components/LinkButton.d.ts +7 -0
- package/target/components/LinkButton.js +11 -0
- package/target/components/Mermaid.d.ts +4 -0
- package/target/components/Mermaid.js +8 -0
- package/target/components/MermaidRenderer.d.ts +4 -0
- package/target/components/MermaidRenderer.js +32 -0
- package/target/components/NotFound.d.ts +3 -0
- package/target/components/NotFound.js +10 -0
- package/target/components/PackageTabs.d.ts +9 -0
- package/target/components/PackageTabs.js +28 -0
- package/target/components/PageToolbar.d.ts +7 -0
- package/target/components/PageToolbar.js +34 -0
- package/target/components/PrevNext.d.ts +4 -0
- package/target/components/PrevNext.js +34 -0
- package/target/components/Search.d.ts +2 -0
- package/target/components/Search.js +16 -0
- package/target/components/SearchDialog.d.ts +5 -0
- package/target/components/SearchDialog.js +139 -0
- package/target/components/Section.d.ts +5 -0
- package/target/components/Section.js +8 -0
- package/target/components/SectionHeader.d.ts +7 -0
- package/target/components/SectionHeader.js +7 -0
- package/target/components/Sidebar.d.ts +4 -0
- package/target/components/Sidebar.js +33 -0
- package/target/components/SidebarArticles.d.ts +2 -0
- package/target/components/SidebarArticles.js +45 -0
- package/target/components/SidebarLinks.d.ts +4 -0
- package/target/components/SidebarLinks.js +26 -0
- package/target/components/SidebarPosts.d.ts +2 -0
- package/target/components/SidebarPosts.js +53 -0
- package/target/components/SidebarReleases.d.ts +2 -0
- package/target/components/SidebarReleases.js +35 -0
- package/target/components/SidebarSections.d.ts +4 -0
- package/target/components/SidebarSections.js +36 -0
- package/target/components/SiteTitle.d.ts +2 -0
- package/target/components/SiteTitle.js +12 -0
- package/target/components/SortableTable.d.ts +5 -0
- package/target/components/SortableTable.js +63 -0
- package/target/components/SoundCloud.d.ts +4 -0
- package/target/components/SoundCloud.js +7 -0
- package/target/components/TagIndex.d.ts +5 -0
- package/target/components/TagIndex.js +64 -0
- package/target/components/Theme.d.ts +1 -0
- package/target/components/Theme.js +21 -0
- package/target/components/Toc.d.ts +12 -0
- package/target/components/Toc.js +128 -0
- package/target/components/YouTube.d.ts +4 -0
- package/target/components/YouTube.js +6 -0
- package/target/components/ZoomImage.d.ts +4 -0
- package/target/components/ZoomImage.js +26 -0
- package/target/content/article.d.ts +43 -0
- package/target/content/article.js +54 -0
- package/target/content/tag.d.ts +2 -0
- package/target/content/tag.js +30 -0
- package/target/content-collections.d.ts +2 -0
- package/target/content-collections.js +200 -0
- package/target/elements/accordion.d.ts +6 -0
- package/target/elements/accordion.js +19 -0
- package/target/elements/alert-dialog.d.ts +18 -0
- package/target/elements/alert-dialog.js +44 -0
- package/target/elements/alert.d.ts +9 -0
- package/target/elements/alert.js +28 -0
- package/target/elements/aspect-ratio.d.ts +4 -0
- package/target/elements/aspect-ratio.js +9 -0
- package/target/elements/avatar.d.ts +11 -0
- package/target/elements/avatar.js +23 -0
- package/target/elements/badge.d.ts +7 -0
- package/target/elements/badge.js +34 -0
- package/target/elements/breadcrumb.d.ts +9 -0
- package/target/elements/breadcrumb.js +39 -0
- package/target/elements/button-group.d.ts +10 -0
- package/target/elements/button-group.js +37 -0
- package/target/elements/button.d.ts +8 -0
- package/target/elements/button.js +35 -0
- package/target/elements/calendar.d.ts +10 -0
- package/target/elements/calendar.js +76 -0
- package/target/elements/card.d.ts +11 -0
- package/target/elements/card.js +25 -0
- package/target/elements/carousel.d.ts +28 -0
- package/target/elements/carousel.js +95 -0
- package/target/elements/chart.d.ts +44 -0
- package/target/elements/chart.js +140 -0
- package/target/elements/checkbox.d.ts +3 -0
- package/target/elements/checkbox.js +9 -0
- package/target/elements/collapsible.d.ts +5 -0
- package/target/elements/collapsible.js +13 -0
- package/target/elements/command.d.ts +23 -0
- package/target/elements/command.js +42 -0
- package/target/elements/context-menu.d.ts +29 -0
- package/target/elements/context-menu.js +54 -0
- package/target/elements/dialog.d.ts +16 -0
- package/target/elements/dialog.js +41 -0
- package/target/elements/direction.d.ts +1 -0
- package/target/elements/direction.js +2 -0
- package/target/elements/drawer.d.ts +12 -0
- package/target/elements/drawer.js +38 -0
- package/target/elements/dropdown-menu.d.ts +24 -0
- package/target/elements/dropdown-menu.js +54 -0
- package/target/elements/empty.d.ts +11 -0
- package/target/elements/empty.js +34 -0
- package/target/elements/field.d.ts +24 -0
- package/target/elements/field.js +69 -0
- package/target/elements/hover-card.d.ts +5 -0
- package/target/elements/hover-card.js +14 -0
- package/target/elements/input-group.d.ts +18 -0
- package/target/elements/input-group.js +60 -0
- package/target/elements/input-otp.d.ts +11 -0
- package/target/elements/input-otp.js +21 -0
- package/target/elements/input.d.ts +2 -0
- package/target/elements/input.js +8 -0
- package/target/elements/item.d.ts +21 -0
- package/target/elements/item.js +79 -0
- package/target/elements/kbd.d.ts +3 -0
- package/target/elements/kbd.js +10 -0
- package/target/elements/label.d.ts +2 -0
- package/target/elements/label.js +8 -0
- package/target/elements/menubar.d.ts +29 -0
- package/target/elements/menubar.js +58 -0
- package/target/elements/native-select.d.ts +8 -0
- package/target/elements/native-select.js +16 -0
- package/target/elements/navigation-menu.d.ts +11 -0
- package/target/elements/navigation-menu.js +34 -0
- package/target/elements/pagination.d.ts +17 -0
- package/target/elements/pagination.js +33 -0
- package/target/elements/popover.d.ts +9 -0
- package/target/elements/popover.js +23 -0
- package/target/elements/progress.d.ts +7 -0
- package/target/elements/progress.js +21 -0
- package/target/elements/radio-group.d.ts +5 -0
- package/target/elements/radio-group.js +12 -0
- package/target/elements/resizable.d.ts +7 -0
- package/target/elements/resizable.js +14 -0
- package/target/elements/scroll-area.d.ts +4 -0
- package/target/elements/scroll-area.js +13 -0
- package/target/elements/select.d.ts +15 -0
- package/target/elements/select.js +39 -0
- package/target/elements/separator.d.ts +3 -0
- package/target/elements/separator.js +8 -0
- package/target/elements/sheet.d.ts +13 -0
- package/target/elements/sheet.js +41 -0
- package/target/elements/sidebar.d.ts +63 -0
- package/target/elements/sidebar.js +272 -0
- package/target/elements/skeleton.d.ts +2 -0
- package/target/elements/skeleton.js +7 -0
- package/target/elements/slider.d.ts +3 -0
- package/target/elements/slider.js +15 -0
- package/target/elements/sonner.d.ts +3 -0
- package/target/elements/sonner.js +23 -0
- package/target/elements/spinner.d.ts +2 -0
- package/target/elements/spinner.js +8 -0
- package/target/elements/switch.d.ts +5 -0
- package/target/elements/switch.js +8 -0
- package/target/elements/table.d.ts +9 -0
- package/target/elements/table.js +28 -0
- package/target/elements/tabs.d.ts +10 -0
- package/target/elements/tabs.js +29 -0
- package/target/elements/textarea.d.ts +2 -0
- package/target/elements/textarea.js +7 -0
- package/target/elements/toggle-group.d.ts +10 -0
- package/target/elements/toggle-group.js +24 -0
- package/target/elements/toggle.d.ts +8 -0
- package/target/elements/toggle.js +26 -0
- package/target/elements/tooltip.d.ts +6 -0
- package/target/elements/tooltip.js +18 -0
- package/target/entrypoints/main.js +12 -0
- package/target/helpers/article-icon.d.ts +3 -0
- package/target/helpers/article-icon.js +34 -0
- package/target/helpers/article.d.ts +24 -0
- package/target/helpers/article.js +73 -0
- package/target/helpers/changelog-source.d.ts +7 -0
- package/target/helpers/changelog-source.js +16 -0
- package/target/helpers/changelog-source.unit.d.ts +1 -0
- package/target/helpers/changelog-source.unit.js +33 -0
- package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
- package/target/helpers/dynamic-icon-resolver.js +17 -0
- package/target/helpers/dynamic-icon.d.ts +5 -0
- package/target/helpers/dynamic-icon.js +8 -0
- package/target/helpers/favicon.d.ts +2 -0
- package/target/helpers/favicon.js +11 -0
- package/target/helpers/model.d.ts +3 -0
- package/target/helpers/model.js +4 -0
- package/target/helpers/program.js +5 -0
- package/target/helpers/resolve-asset-path.d.ts +2 -0
- package/target/helpers/resolve-asset-path.js +9 -0
- package/target/helpers/resolve-includes.d.ts +2 -0
- package/target/helpers/resolve-includes.js +113 -0
- package/target/helpers/resolve-includes.unit.d.ts +1 -0
- package/target/helpers/resolve-includes.unit.js +76 -0
- package/target/helpers/search-text.d.ts +2 -0
- package/target/helpers/search-text.js +16 -0
- package/target/helpers/section.d.ts +13 -0
- package/target/helpers/section.js +39 -0
- package/target/helpers/section.unit.d.ts +1 -0
- package/target/helpers/section.unit.js +62 -0
- package/target/helpers/theme.d.ts +5 -0
- package/target/helpers/theme.js +23 -0
- package/target/helpers/toc-context.d.ts +5 -0
- package/target/helpers/toc-context.js +8 -0
- package/target/helpers/toc.d.ts +3 -0
- package/target/helpers/toc.js +41 -0
- package/target/helpers/toc.unit.d.ts +1 -0
- package/target/helpers/toc.unit.js +65 -0
- package/target/hooks/in-view.d.ts +4 -0
- package/target/hooks/in-view.js +23 -0
- package/target/hooks/media.d.ts +6 -0
- package/target/hooks/media.js +25 -0
- package/target/index.js +2 -0
- package/target/models/article.d.ts +58 -0
- package/target/models/article.js +21 -0
- package/{build → target}/models/config.d.ts +10 -0
- package/target/models/config.js +34 -0
- package/target/models/link.js +9 -0
- package/{build → target}/models/patch.d.ts +5 -0
- package/target/models/patch.js +7 -0
- package/target/models/section.js +26 -0
- package/target/models/theme.js +73 -0
- package/target/models/toc.d.ts +5 -0
- package/target/models/toc.js +2 -0
- package/target/plugins/rehype-inline-code.d.ts +19 -0
- package/target/plugins/rehype-inline-code.js +55 -0
- package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
- package/target/plugins/rehype-task-list-a11y.js +29 -0
- package/target/plugins/remark-abbr.d.ts +6 -0
- package/target/plugins/remark-abbr.js +39 -0
- package/target/plugins/remark-abbr.unit.d.ts +1 -0
- package/target/plugins/remark-abbr.unit.js +79 -0
- package/target/plugins/remark-ansi.d.ts +8 -0
- package/target/plugins/remark-ansi.js +239 -0
- package/target/plugins/remark-ansi.unit.d.ts +1 -0
- package/target/plugins/remark-ansi.unit.js +134 -0
- package/target/plugins/remark-badge.d.ts +6 -0
- package/target/plugins/remark-badge.js +43 -0
- package/target/plugins/remark-badge.unit.d.ts +1 -0
- package/target/plugins/remark-badge.unit.js +76 -0
- package/target/plugins/remark-button.d.ts +6 -0
- package/target/plugins/remark-button.js +52 -0
- package/target/plugins/remark-button.unit.d.ts +1 -0
- package/target/plugins/remark-button.unit.js +105 -0
- package/target/plugins/remark-callout.d.ts +4 -0
- package/target/plugins/remark-callout.js +39 -0
- package/target/plugins/remark-card.d.ts +4 -0
- package/target/plugins/remark-card.js +66 -0
- package/target/plugins/remark-code-tabs.d.ts +4 -0
- package/target/plugins/remark-code-tabs.js +72 -0
- package/target/plugins/remark-columns.d.ts +4 -0
- package/target/plugins/remark-columns.js +54 -0
- package/target/plugins/remark-custom-heading-id.d.ts +14 -0
- package/target/plugins/remark-custom-heading-id.js +54 -0
- package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
- package/target/plugins/remark-custom-heading-id.unit.js +91 -0
- package/target/plugins/remark-deflist.d.ts +4 -0
- package/target/plugins/remark-deflist.js +31 -0
- package/target/plugins/remark-details.d.ts +4 -0
- package/target/plugins/remark-details.js +33 -0
- package/target/plugins/remark-filetree.d.ts +12 -0
- package/target/plugins/remark-filetree.js +61 -0
- package/target/plugins/remark-filetree.unit.d.ts +1 -0
- package/target/plugins/remark-filetree.unit.js +87 -0
- package/target/plugins/remark-github-callout.d.ts +4 -0
- package/target/plugins/remark-github-callout.js +62 -0
- package/target/plugins/remark-icon.d.ts +4 -0
- package/target/plugins/remark-icon.js +36 -0
- package/target/plugins/remark-image.d.ts +9 -0
- package/target/plugins/remark-image.js +26 -0
- package/target/plugins/remark-media.d.ts +6 -0
- package/target/plugins/remark-media.js +52 -0
- package/target/plugins/remark-media.unit.d.ts +1 -0
- package/target/plugins/remark-media.unit.js +54 -0
- package/target/plugins/remark-mermaid.d.ts +4 -0
- package/target/plugins/remark-mermaid.js +20 -0
- package/target/plugins/remark-npm.d.ts +4 -0
- package/target/plugins/remark-npm.js +32 -0
- package/target/plugins/remark-steps.d.ts +6 -0
- package/target/plugins/remark-steps.js +30 -0
- package/target/plugins/remark-steps.unit.d.ts +1 -0
- package/target/plugins/remark-steps.unit.js +65 -0
- package/target/plugins/remark-tab.d.ts +6 -0
- package/target/plugins/remark-tab.js +76 -0
- package/target/plugins/remark-tab.unit.d.ts +1 -0
- package/target/plugins/remark-tab.unit.js +156 -0
- package/target/plugins/remark-toc.d.ts +6 -0
- package/target/plugins/remark-toc.js +33 -0
- package/target/plugins/remark-toc.unit.d.ts +1 -0
- package/target/plugins/remark-toc.unit.js +57 -0
- package/target/plugins/shiki-icon.d.ts +16 -0
- package/target/plugins/shiki-icon.js +66 -0
- package/target/plugins/shiki-line-highlight.d.ts +27 -0
- package/target/plugins/shiki-line-highlight.js +140 -0
- package/target/plugins/vite-livemark.d.ts +13 -0
- package/target/plugins/vite-livemark.js +76 -0
- package/target/program.js +18 -0
- package/target/routeTree.gen.d.ts +57 -0
- package/target/routeTree.gen.js +27 -0
- package/target/router.d.ts +6 -0
- package/target/router.js +26 -0
- package/target/routes/$.d.ts +1 -0
- package/target/routes/$.js +85 -0
- package/target/routes/__root.d.ts +1 -0
- package/target/routes/__root.js +69 -0
- package/target/server.d.ts +2 -0
- package/target/server.js +7 -0
- package/target/settings.js +7 -0
- package/target/utils/style.d.ts +2 -0
- package/target/utils/style.js +6 -0
- package/target/vite.config.d.ts +2 -0
- package/target/vite.config.js +67 -0
- package/build/actions/changelog/build.js +0 -158
- package/build/actions/changelog/build.unit.js +0 -66
- package/build/actions/config/define.js +0 -8
- package/build/actions/config/define.unit.js +0 -29
- package/build/actions/config/load.js +0 -25
- package/build/actions/config/load.unit.js +0 -23
- package/build/commands/build.js +0 -14
- package/build/commands/escape.js +0 -56
- package/build/commands/preview.js +0 -18
- package/build/commands/start.js +0 -19
- package/build/docs/markdown/includes/example.d.ts +0 -58
- package/build/docs/markdown/includes/example.js +0 -5
- package/build/entrypoints/main.js +0 -12
- package/build/helpers/program.js +0 -5
- package/build/index.js +0 -2
- package/build/livemark.config.d.ts +0 -58
- package/build/livemark.config.js +0 -25
- package/build/models/config.js +0 -34
- package/build/models/link.js +0 -9
- package/build/models/patch.js +0 -7
- package/build/models/section.js +0 -26
- package/build/models/theme.js +0 -73
- package/build/package.json +0 -138
- package/build/program.js +0 -18
- package/build/settings.js +0 -7
- package/build/vite.config.d.ts +0 -2
- package/build/vite.config.js +0 -48
- package/build/website/components/BlogSidebar.tsx +0 -162
- package/build/website/components/ChangelogSidebar.tsx +0 -120
- package/build/website/hooks/media.ts +0 -19
- package/build/website/routeTree.gen.ts +0 -86
- /package/{build/website → source}/assets/logo.svg +0 -0
- /package/{build/website → source}/client.tsx +0 -0
- /package/{build/website → source}/components/Abbr.tsx +0 -0
- /package/{build/website → source}/components/AnsiCode.tsx +0 -0
- /package/{build/website → source}/components/BackToTop.tsx +0 -0
- /package/{build/website → source}/components/Banner.tsx +0 -0
- /package/{build/website → source}/components/BlogIndex.tsx +0 -0
- /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
- /package/{build/website → source}/components/Card.tsx +0 -0
- /package/{build/website → source}/components/Cards.tsx +0 -0
- /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
- /package/{build/website → source}/components/CodeBlock.tsx +0 -0
- /package/{build/website → source}/components/CodeTabs.tsx +0 -0
- /package/{build/website → source}/components/Column.tsx +0 -0
- /package/{build/website → source}/components/Columns.tsx +0 -0
- /package/{build/website → source}/components/Content.tsx +0 -0
- /package/{build/website → source}/components/ContentTab.tsx +0 -0
- /package/{build/website → source}/components/ContentTabs.tsx +0 -0
- /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
- /package/{build/website → source}/components/DefinitionList.tsx +0 -0
- /package/{build/website → source}/components/Details.tsx +0 -0
- /package/{build/website → source}/components/FileTree.tsx +0 -0
- /package/{build/website → source}/components/Footer.tsx +0 -0
- /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
- /package/{build/website → source}/components/Heading.tsx +0 -0
- /package/{build/website → source}/components/InlineBadge.tsx +0 -0
- /package/{build/website → source}/components/InlineIcon.tsx +0 -0
- /package/{build/website → source}/components/InlineToc.tsx +0 -0
- /package/{build/website → source}/components/Mermaid.tsx +0 -0
- /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
- /package/{build/website → source}/components/NotFound.tsx +0 -0
- /package/{build/website → source}/components/PackageTabs.tsx +0 -0
- /package/{build/website → source}/components/PrevNext.tsx +0 -0
- /package/{build/website → source}/components/Search.tsx +0 -0
- /package/{build/website → source}/components/SearchDialog.tsx +0 -0
- /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
- /package/{build/website → source}/components/SidebarSections.tsx +0 -0
- /package/{build/website → source}/components/SiteTitle.tsx +0 -0
- /package/{build/website → source}/components/SortableTable.tsx +0 -0
- /package/{build/website → source}/components/SoundCloud.tsx +0 -0
- /package/{build/website → source}/components/TagIndex.tsx +0 -0
- /package/{build/website → source}/components/Theme.tsx +0 -0
- /package/{build/website → source}/components/Toc.tsx +0 -0
- /package/{build/website → source}/components/YouTube.tsx +0 -0
- /package/{build/website → source}/components/ZoomImage.tsx +0 -0
- /package/{build/website → source}/content/article.ts +0 -0
- /package/{build/website → source}/content/tag.ts +0 -0
- /package/{build/website → source}/elements/collapsible.tsx +0 -0
- /package/{build/website → source}/elements/direction.tsx +0 -0
- /package/{build/website → source}/elements/sonner.tsx +0 -0
- /package/{build/website → source}/helpers/article-icon.ts +0 -0
- /package/{build/website → source}/helpers/article.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
- /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
- /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
- /package/{build/website → source}/helpers/favicon.ts +0 -0
- /package/{build/website → source}/helpers/model.ts +0 -0
- /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
- /package/{build/website → source}/helpers/search-text.ts +0 -0
- /package/{build/website → source}/helpers/section.unit.ts +0 -0
- /package/{build/website → source}/helpers/theme.ts +0 -0
- /package/{build/website → source}/helpers/toc-context.ts +0 -0
- /package/{build/website → source}/helpers/toc.ts +0 -0
- /package/{build/website → source}/helpers/toc.unit.ts +0 -0
- /package/{build/website → source}/hooks/in-view.ts +0 -0
- /package/{build/website → source}/models/toc.ts +0 -0
- /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
- /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-card.ts +0 -0
- /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
- /package/{build/website → source}/plugins/remark-columns.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
- /package/{build/website → source}/plugins/remark-details.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-icon.ts +0 -0
- /package/{build/website → source}/plugins/remark-image.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
- /package/{build/website → source}/plugins/remark-npm.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
- /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
- /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
- /package/{build/website → source}/plugins/vite-livemark.ts +0 -0
- /package/{build/website → source}/router.tsx +0 -0
- /package/{build/website → source}/routes/$.tsx +0 -0
- /package/{build/website → source}/routes/__root.tsx +0 -0
- /package/{build/website → source}/server.ts +0 -0
- /package/{build/website → source}/styles/general.css +0 -0
- /package/{build/website → source}/styles/markdown.css +0 -0
- /package/{build/website/helpers → source/utils}/style.ts +0 -0
- /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
- /package/{build → target}/actions/config/define.d.ts +0 -0
- /package/{build → target}/actions/config/define.unit.d.ts +0 -0
- /package/{build → target}/actions/config/load.d.ts +0 -0
- /package/{build → target}/actions/config/load.unit.d.ts +0 -0
- /package/{build → target}/commands/build.d.ts +0 -0
- /package/{build → target}/commands/escape.d.ts +0 -0
- /package/{build → target}/commands/preview.d.ts +0 -0
- /package/{build → target}/commands/start.d.ts +0 -0
- /package/{build → target}/entrypoints/main.d.ts +0 -0
- /package/{build → target}/helpers/program.d.ts +0 -0
- /package/{build → target}/index.d.ts +0 -0
- /package/{build → target}/models/link.d.ts +0 -0
- /package/{build → target}/models/section.d.ts +0 -0
- /package/{build → target}/models/theme.d.ts +0 -0
- /package/{build → target}/program.d.ts +0 -0
- /package/{build → target}/settings.d.ts +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ErrorComponent, Link, rootRouteId, useMatch, useRouter, } from "@tanstack/react-router";
|
|
3
|
+
export function DefaultCatchBoundary({ error }) {
|
|
4
|
+
const router = useRouter();
|
|
5
|
+
const isRoot = useMatch({
|
|
6
|
+
strict: false,
|
|
7
|
+
select: state => state.id === rootRouteId,
|
|
8
|
+
});
|
|
9
|
+
console.error(error);
|
|
10
|
+
return (_jsxs("div", { className: "min-h-[60vh] flex flex-col items-center justify-center gap-6 px-4", children: [
|
|
11
|
+
_jsx(ErrorComponent, { error: error }), _jsxs("div", { className: "flex gap-3 items-center flex-wrap", children: [
|
|
12
|
+
_jsx("button", { type: "button", onClick: () => {
|
|
13
|
+
router.invalidate();
|
|
14
|
+
}, className: "bg-primary text-primary-foreground px-4 py-2 text-sm font-medium hover:bg-primary/80 transition-colors", children: "Try Again" }), isRoot ? (_jsx(Link, { to: "/", className: "border border-border px-4 py-2 text-sm font-medium hover:bg-card transition-colors", children: "Home" })) : (_jsx(Link, { to: "/", className: "border border-border px-4 py-2 text-sm font-medium hover:bg-card transition-colors", onClick: (e) => {
|
|
15
|
+
e.preventDefault();
|
|
16
|
+
window.history.back();
|
|
17
|
+
}, children: "Go Back" }))] })
|
|
18
|
+
] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdENhdGNoQm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9EZWZhdWx0Q2F0Y2hCb3VuZGFyeS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsSUFBSSxFQUNKLFdBQVcsRUFDWCxRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sd0JBQXdCLENBQUE7QUFFL0IsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUF1QjtJQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdEIsTUFBTSxFQUFFLEtBQUs7UUFDYixNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLFdBQVc7S0FDMUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVwQixPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsbUVBQW1FO1lBQ2hGLEtBQUMsY0FBYyxJQUFDLEtBQUssRUFBRSxLQUFLLEdBQUksRUFDaEMsZUFBSyxTQUFTLEVBQUMsbUNBQW1DO29CQUNoRCxpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLE9BQU8sRUFBRSxHQUFHLEVBQUU7NEJBQ1osTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO3dCQUNyQixDQUFDLEVBQ0QsU0FBUyxFQUFDLHdHQUF3RywwQkFHM0csRUFDUixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ1IsS0FBQyxJQUFJLElBQ0gsRUFBRSxFQUFDLEdBQUcsRUFDTixTQUFTLEVBQUMsb0ZBQW9GLHFCQUd6RixDQUNSLENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxJQUFJLElBQ0gsRUFBRSxFQUFDLEdBQUcsRUFDTixTQUFTLEVBQUMsb0ZBQW9GLEVBQzlGLE9BQU8sRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFOzRCQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7NEJBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7d0JBQ3ZCLENBQUMsd0JBR0ksQ0FDUixJQUNHO1lBQ0YsQ0FDUCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXJyb3JDb21wb25lbnRQcm9wcyB9IGZyb20gXCJAdGFuc3RhY2svcmVhY3Qtcm91dGVyXCJcbmltcG9ydCB7XG4gIEVycm9yQ29tcG9uZW50LFxuICBMaW5rLFxuICByb290Um91dGVJZCxcbiAgdXNlTWF0Y2gsXG4gIHVzZVJvdXRlcixcbn0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1yb3V0ZXJcIlxuXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdENhdGNoQm91bmRhcnkoeyBlcnJvciB9OiBFcnJvckNvbXBvbmVudFByb3BzKSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXG4gIGNvbnN0IGlzUm9vdCA9IHVzZU1hdGNoKHtcbiAgICBzdHJpY3Q6IGZhbHNlLFxuICAgIHNlbGVjdDogc3RhdGUgPT4gc3RhdGUuaWQgPT09IHJvb3RSb3V0ZUlkLFxuICB9KVxuXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLVs2MHZoXSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtNiBweC00XCI+XG4gICAgICA8RXJyb3JDb21wb25lbnQgZXJyb3I9e2Vycm9yfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0zIGl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHJvdXRlci5pbnZhbGlkYXRlKClcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6YmctcHJpbWFyeS84MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgID5cbiAgICAgICAgICBUcnkgQWdhaW5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIHtpc1Jvb3QgPyAoXG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIHRvPVwiL1wiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLWJvcmRlciBweC00IHB5LTIgdGV4dC1zbSBmb250LW1lZGl1bSBob3ZlcjpiZy1jYXJkIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBIb21lXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICB0bz1cIi9cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ib3JkZXIgcHgtNCBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gaG92ZXI6YmctY2FyZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBvbkNsaWNrPXsoZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgR28gQmFja1xuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentProps } from "react";
|
|
2
|
+
/** Styled wrapper for definition lists produced by remark-definition-list */
|
|
3
|
+
export declare function DefinitionList(props: ComponentProps<"dl">): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
/** Styled definition term rendered as bold text */
|
|
5
|
+
export declare function DefinitionTerm(props: ComponentProps<"dt">): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
/** Styled definition detail with a left border accent */
|
|
7
|
+
export declare function DefinitionDetail(props: ComponentProps<"dd">): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Styled wrapper for definition lists produced by remark-definition-list */
|
|
3
|
+
export function DefinitionList(props) {
|
|
4
|
+
return _jsx("dl", { ...props, className: "not-prose space-y-4" });
|
|
5
|
+
}
|
|
6
|
+
/** Styled definition term rendered as bold text */
|
|
7
|
+
export function DefinitionTerm(props) {
|
|
8
|
+
return _jsx("dt", { ...props, className: "text-foreground font-semibold" });
|
|
9
|
+
}
|
|
10
|
+
/** Styled definition detail with a left border accent */
|
|
11
|
+
export function DefinitionDetail(props) {
|
|
12
|
+
return (_jsx("dd", { ...props, className: "ml-0 pl-4 border-l-2 border-border text-muted-foreground" }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmaW5pdGlvbkxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9EZWZpbml0aW9uTGlzdC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLDZFQUE2RTtBQUM3RSxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQTJCO0lBQ3hELE9BQU8sZ0JBQVEsS0FBSyxFQUFFLFNBQVMsRUFBQyxxQkFBcUIsR0FBRyxDQUFBO0FBQzFELENBQUM7QUFFRCxtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUEyQjtJQUN4RCxPQUFPLGdCQUFRLEtBQUssRUFBRSxTQUFTLEVBQUMsK0JBQStCLEdBQUcsQ0FBQTtBQUNwRSxDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUEyQjtJQUMxRCxPQUFPLENBQ0wsZ0JBQ00sS0FBSyxFQUNULFNBQVMsRUFBQywwREFBMEQsR0FDcEUsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50UHJvcHMgfSBmcm9tIFwicmVhY3RcIlxuXG4vKiogU3R5bGVkIHdyYXBwZXIgZm9yIGRlZmluaXRpb24gbGlzdHMgcHJvZHVjZWQgYnkgcmVtYXJrLWRlZmluaXRpb24tbGlzdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmluaXRpb25MaXN0KHByb3BzOiBDb21wb25lbnRQcm9wczxcImRsXCI+KSB7XG4gIHJldHVybiA8ZGwgey4uLnByb3BzfSBjbGFzc05hbWU9XCJub3QtcHJvc2Ugc3BhY2UteS00XCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIHRlcm0gcmVuZGVyZWQgYXMgYm9sZCB0ZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvblRlcm0ocHJvcHM6IENvbXBvbmVudFByb3BzPFwiZHRcIj4pIHtcbiAgcmV0dXJuIDxkdCB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LXNlbWlib2xkXCIgLz5cbn1cblxuLyoqIFN0eWxlZCBkZWZpbml0aW9uIGRldGFpbCB3aXRoIGEgbGVmdCBib3JkZXIgYWNjZW50ICovXG5leHBvcnQgZnVuY3Rpb24gRGVmaW5pdGlvbkRldGFpbChwcm9wczogQ29tcG9uZW50UHJvcHM8XCJkZFwiPikge1xuICByZXR1cm4gKFxuICAgIDxkZFxuICAgICAgey4uLnByb3BzfVxuICAgICAgY2xhc3NOYW1lPVwibWwtMCBwbC00IGJvcmRlci1sLTIgYm9yZGVyLWJvcmRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIlxuICAgIC8+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { ChevronRight } from "lucide-react";
|
|
4
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent, } from "../elements/collapsible.js";
|
|
5
|
+
/** Collapsible content section with a summary label */
|
|
6
|
+
export function Details(props) {
|
|
7
|
+
const [open, setOpen] = useState(false);
|
|
8
|
+
return (_jsxs(Collapsible, { open: open, onOpenChange: setOpen, className: "not-prose my-4 rounded-xl border border-border bg-card px-4 py-3", children: [
|
|
9
|
+
_jsxs(CollapsibleTrigger, { className: "flex w-full cursor-pointer items-center gap-2 text-sm font-semibold select-none", children: [
|
|
10
|
+
_jsx(ChevronRight, { className: `size-4 shrink-0 transition-transform ${open ? "rotate-90" : ""}` }), props.summary] }), _jsx(CollapsibleContent, { className: "mt-3 text-sm [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", children: props.children })
|
|
11
|
+
] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0RldGFpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sNEJBQTZCLENBQUE7QUFFcEMsdURBQXVEO0FBQ3ZELE1BQU0sVUFBVSxPQUFPLENBQUMsS0FBcUQ7SUFDM0UsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdkMsT0FBTyxDQUNMLE1BQUMsV0FBVyxJQUNWLElBQUksRUFBRSxJQUFJLEVBQ1YsWUFBWSxFQUFFLE9BQU8sRUFDckIsU0FBUyxFQUFDLGtFQUFrRTtZQUU1RSxNQUFDLGtCQUFrQixJQUFDLFNBQVMsRUFBQyxpRkFBaUY7b0JBQzdHLEtBQUMsWUFBWSxJQUNYLFNBQVMsRUFBRSx3Q0FBd0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUM1RSxFQUNELEtBQUssQ0FBQyxPQUFPLElBQ0ssRUFDckIsS0FBQyxrQkFBa0IsSUFBQyxTQUFTLEVBQUMsc0VBQXNFLFlBQ2pHLEtBQUssQ0FBQyxRQUFRLEdBQ0k7WUFDVCxDQUNmLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgQ2hldnJvblJpZ2h0IH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxuICBDb2xsYXBzaWJsZUNvbnRlbnQsXG59IGZyb20gXCIuLi9lbGVtZW50cy9jb2xsYXBzaWJsZS50c3hcIlxuXG4vKiogQ29sbGFwc2libGUgY29udGVudCBzZWN0aW9uIHdpdGggYSBzdW1tYXJ5IGxhYmVsICovXG5leHBvcnQgZnVuY3Rpb24gRGV0YWlscyhwcm9wczogeyBzdW1tYXJ5OiBzdHJpbmc7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICByZXR1cm4gKFxuICAgIDxDb2xsYXBzaWJsZVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17c2V0T3Blbn1cbiAgICAgIGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJvdW5kZWQteGwgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctY2FyZCBweC00IHB5LTNcIlxuICAgID5cbiAgICAgIDxDb2xsYXBzaWJsZVRyaWdnZXIgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gZm9udC1zZW1pYm9sZCBzZWxlY3Qtbm9uZVwiPlxuICAgICAgICA8Q2hldnJvblJpZ2h0XG4gICAgICAgICAgY2xhc3NOYW1lPXtgc2l6ZS00IHNocmluay0wIHRyYW5zaXRpb24tdHJhbnNmb3JtICR7b3BlbiA/IFwicm90YXRlLTkwXCIgOiBcIlwifWB9XG4gICAgICAgIC8+XG4gICAgICAgIHtwcm9wcy5zdW1tYXJ5fVxuICAgICAgPC9Db2xsYXBzaWJsZVRyaWdnZXI+XG4gICAgICA8Q29sbGFwc2libGVDb250ZW50IGNsYXNzTmFtZT1cIm10LTMgdGV4dC1zbSBbJj5wXTpteS0xIFsmPnA6Zmlyc3QtY2hpbGRdOm10LTAgWyY+cDpsYXN0LWNoaWxkXTptYi0wXCI+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvQ29sbGFwc2libGVDb250ZW50PlxuICAgIDwvQ29sbGFwc2libGU+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { File, Folder } from "lucide-react";
|
|
3
|
+
/** Renders a file/directory tree from a JSON-serialized tree structure */
|
|
4
|
+
export function FileTree(props) {
|
|
5
|
+
const items = JSON.parse(props.tree);
|
|
6
|
+
return (_jsx("div", { className: "not-prose my-4 rounded-xl border border-border bg-card p-4 font-mono text-sm", children: _jsx(TreeItems, { items: items, depth: 0 }) }));
|
|
7
|
+
}
|
|
8
|
+
function TreeItems(props) {
|
|
9
|
+
return (_jsx("ul", { className: props.depth > 0 ? "ml-4 border-l border-border pl-2" : "", children: props.items.map((item, index) => (_jsx(TreeNode, { item: item, depth: props.depth }, `${item.name}-${index}`))) }));
|
|
10
|
+
}
|
|
11
|
+
function TreeNode(props) {
|
|
12
|
+
const { item, depth } = props;
|
|
13
|
+
return (_jsxs("li", { className: "py-0.5", children: [
|
|
14
|
+
_jsxs("span", { className: "inline-flex items-center gap-2", children: [item.isDir ? (_jsx(Folder, { className: "size-4 shrink-0 text-primary" })) : (_jsx(File, { className: "size-4 shrink-0 text-muted-foreground" })), _jsx("span", { className: item.isDir ? "font-semibold" : "", children: item.name })
|
|
15
|
+
] }), item.children && item.children.length > 0 && (_jsx(TreeItems, { items: item.children, depth: depth + 1 }))] }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZVRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9GaWxlVHJlZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBUTNDLDBFQUEwRTtBQUMxRSxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQXVCO0lBQzlDLE1BQU0sS0FBSyxHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWhELE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBQyw4RUFBOEUsWUFDM0YsS0FBQyxTQUFTLElBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFJLEdBQ2pDLENBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUEyQztJQUM1RCxPQUFPLENBQ0wsYUFBSSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQ3JFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDaEMsS0FBQyxRQUFRLElBRVAsSUFBSSxFQUFFLElBQUksRUFDVixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFGYixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFFLENBRzVCLENBQ0gsQ0FBQyxHQUNDLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxLQUF3QztJQUN4RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU3QixPQUFPLENBQ0wsY0FBSSxTQUFTLEVBQUMsUUFBUTtZQUNwQixnQkFBTSxTQUFTLEVBQUMsZ0NBQWdDLGFBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1osS0FBQyxNQUFNLElBQUMsU0FBUyxFQUFDLDhCQUE4QixHQUFHLENBQ3BELENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLHVDQUF1QyxHQUFHLENBQzNELEVBQ0QsZUFBTSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQUcsSUFBSSxDQUFDLElBQUksR0FBUTtvQkFDakUsRUFDTixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUM1QyxLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBSSxDQUN0RCxJQUNFLENBQ04sQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlLCBGb2xkZXIgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuaW50ZXJmYWNlIFRyZWVJdGVtIHtcbiAgbmFtZTogc3RyaW5nXG4gIGlzRGlyOiBib29sZWFuXG4gIGNoaWxkcmVuPzogVHJlZUl0ZW1bXVxufVxuXG4vKiogUmVuZGVycyBhIGZpbGUvZGlyZWN0b3J5IHRyZWUgZnJvbSBhIEpTT04tc2VyaWFsaXplZCB0cmVlIHN0cnVjdHVyZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZpbGVUcmVlKHByb3BzOiB7IHRyZWU6IHN0cmluZyB9KSB7XG4gIGNvbnN0IGl0ZW1zOiBUcmVlSXRlbVtdID0gSlNPTi5wYXJzZShwcm9wcy50cmVlKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJub3QtcHJvc2UgbXktNCByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgcC00IGZvbnQtbW9ubyB0ZXh0LXNtXCI+XG4gICAgICA8VHJlZUl0ZW1zIGl0ZW1zPXtpdGVtc30gZGVwdGg9ezB9IC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gVHJlZUl0ZW1zKHByb3BzOiB7IGl0ZW1zOiBUcmVlSXRlbVtdOyBkZXB0aDogbnVtYmVyIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8dWwgY2xhc3NOYW1lPXtwcm9wcy5kZXB0aCA+IDAgPyBcIm1sLTQgYm9yZGVyLWwgYm9yZGVyLWJvcmRlciBwbC0yXCIgOiBcIlwifT5cbiAgICAgIHtwcm9wcy5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXG4gICAgICAgIDxUcmVlTm9kZVxuICAgICAgICAgIGtleT17YCR7aXRlbS5uYW1lfS0ke2luZGV4fWB9XG4gICAgICAgICAgaXRlbT17aXRlbX1cbiAgICAgICAgICBkZXB0aD17cHJvcHMuZGVwdGh9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8L3VsPlxuICApXG59XG5cbmZ1bmN0aW9uIFRyZWVOb2RlKHByb3BzOiB7IGl0ZW06IFRyZWVJdGVtOyBkZXB0aDogbnVtYmVyIH0pIHtcbiAgY29uc3QgeyBpdGVtLCBkZXB0aCB9ID0gcHJvcHNcblxuICByZXR1cm4gKFxuICAgIDxsaSBjbGFzc05hbWU9XCJweS0wLjVcIj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICB7aXRlbS5pc0RpciA/IChcbiAgICAgICAgICA8Rm9sZGVyIGNsYXNzTmFtZT1cInNpemUtNCBzaHJpbmstMCB0ZXh0LXByaW1hcnlcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxGaWxlIGNsYXNzTmFtZT1cInNpemUtNCBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiAvPlxuICAgICAgICApfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2l0ZW0uaXNEaXIgPyBcImZvbnQtc2VtaWJvbGRcIiA6IFwiXCJ9PntpdGVtLm5hbWV9PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAge2l0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPFRyZWVJdGVtcyBpdGVtcz17aXRlbS5jaGlsZHJlbn0gZGVwdGg9e2RlcHRoICsgMX0gLz5cbiAgICAgICl9XG4gICAgPC9saT5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** Footer shown below article content */
|
|
3
|
+
export function Footer() {
|
|
4
|
+
return (_jsxs("p", { className: "mt-12 text-center text-sm text-muted-foreground", children: ["Created with ",
|
|
5
|
+
_jsx("span", { className: "text-red-500", children: "\u2764" }),
|
|
6
|
+
" and", " ", _jsx("a", { href: "https://github.com/datisthq/livemark", target: "_blank", rel: "noopener noreferrer", className: "font-medium hover:text-foreground transition-colors", children: "Livemark" })
|
|
7
|
+
] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvRm9vdGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUNBQXlDO0FBQ3pDLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE9BQU8sQ0FDTCxhQUFHLFNBQVMsRUFBQyxpREFBaUQ7WUFDL0MsZUFBTSxTQUFTLEVBQUMsY0FBYyx1QkFBUztvQkFBSyxHQUFHLEVBQzVELFlBQ0UsSUFBSSxFQUFDLHNDQUFzQyxFQUMzQyxNQUFNLEVBQUMsUUFBUSxFQUNmLEdBQUcsRUFBQyxxQkFBcUIsRUFDekIsU0FBUyxFQUFDLHFEQUFxRCx5QkFHN0Q7WUFDRixDQUNMLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEZvb3RlciBzaG93biBiZWxvdyBhcnRpY2xlIGNvbnRlbnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBGb290ZXIoKSB7XG4gIHJldHVybiAoXG4gICAgPHAgY2xhc3NOYW1lPVwibXQtMTIgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgIENyZWF0ZWQgd2l0aCA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC01MDBcIj7inaQ8L3NwYW4+IGFuZHtcIiBcIn1cbiAgICAgIDxhXG4gICAgICAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vZGF0aXN0aHEvbGl2ZW1hcmtcIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiZm9udC1tZWRpdW0gaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgID5cbiAgICAgICAgTGl2ZW1hcmtcbiAgICAgIDwvYT5cbiAgICA8L3A+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { HoverCard, HoverCardContent, HoverCardTrigger, } from "../elements/hover-card.js";
|
|
4
|
+
const FOOTNOTE_PREFIX = "#user-content-fn-";
|
|
5
|
+
/** Wraps footnote reference links in a HoverCard that previews footnote content inline */
|
|
6
|
+
export function FootnoteRef(props) {
|
|
7
|
+
const href = props.href ?? "";
|
|
8
|
+
if (!href.startsWith(FOOTNOTE_PREFIX)) {
|
|
9
|
+
return _jsx("a", { ...props });
|
|
10
|
+
}
|
|
11
|
+
return _jsx(FootnoteHoverCard, { ...props, href: href });
|
|
12
|
+
}
|
|
13
|
+
function FootnoteHoverCard(props) {
|
|
14
|
+
const [footnoteHtml, setFootnoteHtml] = useState("");
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const targetId = props.href.slice(1);
|
|
17
|
+
const el = document.getElementById(targetId);
|
|
18
|
+
if (!el)
|
|
19
|
+
return;
|
|
20
|
+
const wrapper = document.createElement("div");
|
|
21
|
+
wrapper.innerHTML = el.innerHTML;
|
|
22
|
+
for (const backref of wrapper.querySelectorAll("[data-footnote-backref]")) {
|
|
23
|
+
backref.remove();
|
|
24
|
+
}
|
|
25
|
+
setFootnoteHtml(wrapper.innerHTML);
|
|
26
|
+
}, [props.href]);
|
|
27
|
+
return (_jsxs(HoverCard, { children: [
|
|
28
|
+
_jsx(HoverCardTrigger, { render: _jsx("a", { ...props }) }), _jsx(HoverCardContent, { className: "prose dark:prose-invert text-sm w-80 [&>p]:my-1 [&>p:first-child]:mt-0 [&>p:last-child]:mb-0", side: "top", sideOffset: 8, children: footnoteHtml ? (_jsx("div", { dangerouslySetInnerHTML: { __html: footnoteHtml } })) : (_jsx("p", { className: "text-muted-foreground", children: "Footnote not found" })) })
|
|
29
|
+
] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdG5vdGVSZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Gb290bm90ZVJlZi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBdUIsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUNoRSxPQUFPLEVBQ0wsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSwyQkFBNEIsQ0FBQTtBQUVuQyxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQTtBQUUzQywwRkFBMEY7QUFDMUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUEwQjtJQUNwRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sZUFBTyxLQUFLLEdBQUksQ0FBQTtJQUN6QixDQUFDO0lBRUQsT0FBTyxLQUFDLGlCQUFpQixPQUFLLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFJLENBQUE7QUFDckQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBNkM7SUFDdEUsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFcEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3BDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFNO1FBRWYsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUE7UUFDaEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUVoQixPQUFPLENBQ0wsTUFBQyxTQUFTO1lBQ1IsS0FBQyxnQkFBZ0IsSUFBQyxNQUFNLEVBQUUsZUFBTyxLQUFLLEdBQUksR0FBSSxFQUM5QyxLQUFDLGdCQUFnQixJQUNmLFNBQVMsRUFBQyw4RkFBOEYsRUFDeEcsSUFBSSxFQUFDLEtBQUssRUFDVixVQUFVLEVBQUUsQ0FBQyxZQUVaLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDZCxjQUFLLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFJLENBQzNELENBQUMsQ0FBQyxDQUFDLENBQ0YsWUFBRyxTQUFTLEVBQUMsdUJBQXVCLG1DQUF1QixDQUM1RCxHQUNnQjtZQUNULENBQ2IsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbXBvbmVudFByb3BzLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7XG4gIEhvdmVyQ2FyZCxcbiAgSG92ZXJDYXJkQ29udGVudCxcbiAgSG92ZXJDYXJkVHJpZ2dlcixcbn0gZnJvbSBcIi4uL2VsZW1lbnRzL2hvdmVyLWNhcmQudHN4XCJcblxuY29uc3QgRk9PVE5PVEVfUFJFRklYID0gXCIjdXNlci1jb250ZW50LWZuLVwiXG5cbi8qKiBXcmFwcyBmb290bm90ZSByZWZlcmVuY2UgbGlua3MgaW4gYSBIb3ZlckNhcmQgdGhhdCBwcmV2aWV3cyBmb290bm90ZSBjb250ZW50IGlubGluZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZvb3Rub3RlUmVmKHByb3BzOiBDb21wb25lbnRQcm9wczxcImFcIj4pIHtcbiAgY29uc3QgaHJlZiA9IHByb3BzLmhyZWYgPz8gXCJcIlxuICBpZiAoIWhyZWYuc3RhcnRzV2l0aChGT09UTk9URV9QUkVGSVgpKSB7XG4gICAgcmV0dXJuIDxhIHsuLi5wcm9wc30gLz5cbiAgfVxuXG4gIHJldHVybiA8Rm9vdG5vdGVIb3ZlckNhcmQgey4uLnByb3BzfSBocmVmPXtocmVmfSAvPlxufVxuXG5mdW5jdGlvbiBGb290bm90ZUhvdmVyQ2FyZChwcm9wczogQ29tcG9uZW50UHJvcHM8XCJhXCI+ICYgeyBocmVmOiBzdHJpbmcgfSkge1xuICBjb25zdCBbZm9vdG5vdGVIdG1sLCBzZXRGb290bm90ZUh0bWxdID0gdXNlU3RhdGUoXCJcIilcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldElkID0gcHJvcHMuaHJlZi5zbGljZSgxKVxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SWQpXG4gICAgaWYgKCFlbCkgcmV0dXJuXG5cbiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKVxuICAgIHdyYXBwZXIuaW5uZXJIVE1MID0gZWwuaW5uZXJIVE1MXG4gICAgZm9yIChjb25zdCBiYWNrcmVmIG9mIHdyYXBwZXIucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLWZvb3Rub3RlLWJhY2tyZWZdXCIpKSB7XG4gICAgICBiYWNrcmVmLnJlbW92ZSgpXG4gICAgfVxuICAgIHNldEZvb3Rub3RlSHRtbCh3cmFwcGVyLmlubmVySFRNTClcbiAgfSwgW3Byb3BzLmhyZWZdKVxuXG4gIHJldHVybiAoXG4gICAgPEhvdmVyQ2FyZD5cbiAgICAgIDxIb3ZlckNhcmRUcmlnZ2VyIHJlbmRlcj17PGEgey4uLnByb3BzfSAvPn0gLz5cbiAgICAgIDxIb3ZlckNhcmRDb250ZW50XG4gICAgICAgIGNsYXNzTmFtZT1cInByb3NlIGRhcms6cHJvc2UtaW52ZXJ0IHRleHQtc20gdy04MCBbJj5wXTpteS0xIFsmPnA6Zmlyc3QtY2hpbGRdOm10LTAgWyY+cDpsYXN0LWNoaWxkXTptYi0wXCJcbiAgICAgICAgc2lkZT1cInRvcFwiXG4gICAgICAgIHNpZGVPZmZzZXQ9ezh9XG4gICAgICA+XG4gICAgICAgIHtmb290bm90ZUh0bWwgPyAoXG4gICAgICAgICAgPGRpdiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGZvb3Rub3RlSHRtbCB9fSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPkZvb3Rub3RlIG5vdCBmb3VuZDwvcD5cbiAgICAgICAgKX1cbiAgICAgIDwvSG92ZXJDYXJkQ29udGVudD5cbiAgICA8L0hvdmVyQ2FyZD5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const headingComponents: {
|
|
2
|
+
h1: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
h2: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
h3: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
h4: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
h5: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
h6: (props: import("react").HTMLAttributes<HTMLHeadingElement>) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Heading component that wraps content in an anchor link to itself */
|
|
3
|
+
function createHeading(Tag) {
|
|
4
|
+
return function Heading(props) {
|
|
5
|
+
if (!props.id)
|
|
6
|
+
return _jsx(Tag, { ...props });
|
|
7
|
+
return (_jsx(Tag, { ...props, children: _jsx("a", { href: `#${props.id}`, children: props.children }) }));
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export const headingComponents = {
|
|
11
|
+
h1: createHeading("h1"),
|
|
12
|
+
h2: createHeading("h2"),
|
|
13
|
+
h3: createHeading("h3"),
|
|
14
|
+
h4: createHeading("h4"),
|
|
15
|
+
h5: createHeading("h5"),
|
|
16
|
+
h6: createHeading("h6"),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVhZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0hlYWRpbmcudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RUFBdUU7QUFDdkUsU0FBUyxhQUFhLENBQUMsR0FBNEM7SUFDakUsT0FBTyxTQUFTLE9BQU8sQ0FBQyxLQUErQztRQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUMsR0FBRyxPQUFLLEtBQUssR0FBSSxDQUFBO1FBQ3hDLE9BQU8sQ0FDTCxLQUFDLEdBQUcsT0FBSyxLQUFLLFlBQ1osWUFBRyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLFlBQUcsS0FBSyxDQUFDLFFBQVEsR0FBSyxHQUN6QyxDQUNQLENBQUE7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUM7Q0FDeEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBIZWFkaW5nIGNvbXBvbmVudCB0aGF0IHdyYXBzIGNvbnRlbnQgaW4gYW4gYW5jaG9yIGxpbmsgdG8gaXRzZWxmICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkaW5nKFRhZzogXCJoMVwiIHwgXCJoMlwiIHwgXCJoM1wiIHwgXCJoNFwiIHwgXCJoNVwiIHwgXCJoNlwiKSB7XG4gIHJldHVybiBmdW5jdGlvbiBIZWFkaW5nKHByb3BzOiBSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MSGVhZGluZ0VsZW1lbnQ+KSB7XG4gICAgaWYgKCFwcm9wcy5pZCkgcmV0dXJuIDxUYWcgey4uLnByb3BzfSAvPlxuICAgIHJldHVybiAoXG4gICAgICA8VGFnIHsuLi5wcm9wc30+XG4gICAgICAgIDxhIGhyZWY9e2AjJHtwcm9wcy5pZH1gfT57cHJvcHMuY2hpbGRyZW59PC9hPlxuICAgICAgPC9UYWc+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBoZWFkaW5nQ29tcG9uZW50cyA9IHtcbiAgaDE6IGNyZWF0ZUhlYWRpbmcoXCJoMVwiKSxcbiAgaDI6IGNyZWF0ZUhlYWRpbmcoXCJoMlwiKSxcbiAgaDM6IGNyZWF0ZUhlYWRpbmcoXCJoM1wiKSxcbiAgaDQ6IGNyZWF0ZUhlYWRpbmcoXCJoNFwiKSxcbiAgaDU6IGNyZWF0ZUhlYWRpbmcoXCJoNVwiKSxcbiAgaDY6IGNyZWF0ZUhlYWRpbmcoXCJoNlwiKSxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Badge } from "../elements/badge.js";
|
|
3
|
+
/** Inline badge rendered from :badge text directives */
|
|
4
|
+
export function InlineBadge(props) {
|
|
5
|
+
return _jsx(Badge, { variant: props.variant, children: props.label });
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lQmFkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9JbmxpbmVCYWRnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBdUIsQ0FBQTtBQUU3Qyx3REFBd0Q7QUFDeEQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUczQjtJQUNDLE9BQU8sS0FBQyxLQUFLLElBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLFlBQUcsS0FBSyxDQUFDLEtBQUssR0FBUyxDQUFBO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYWRnZSB9IGZyb20gXCIuLi9lbGVtZW50cy9iYWRnZS50c3hcIlxuXG4vKiogSW5saW5lIGJhZGdlIHJlbmRlcmVkIGZyb20gOmJhZGdlIHRleHQgZGlyZWN0aXZlcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIElubGluZUJhZGdlKHByb3BzOiB7XG4gIGxhYmVsOiBzdHJpbmdcbiAgdmFyaWFudD86IFwiZGVmYXVsdFwiIHwgXCJzZWNvbmRhcnlcIiB8IFwiZGVzdHJ1Y3RpdmVcIiB8IFwib3V0bGluZVwiXG59KSB7XG4gIHJldHVybiA8QmFkZ2UgdmFyaWFudD17cHJvcHMudmFyaWFudH0+e3Byb3BzLmxhYmVsfTwvQmFkZ2U+XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DynamicIcon } from "../helpers/dynamic-icon.js";
|
|
3
|
+
/** Renders a Lucide icon inline by name */
|
|
4
|
+
export function InlineIcon(props) {
|
|
5
|
+
const className = props.className
|
|
6
|
+
? `inline-block size-4 align-text-bottom ${props.className}`
|
|
7
|
+
: "inline-block size-4 align-text-bottom";
|
|
8
|
+
return _jsx(DynamicIcon, { name: props.name, className: className });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lSWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0lubGluZUljb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTZCLENBQUE7QUFFekQsMkNBQTJDO0FBQzNDLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBMkM7SUFDcEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVM7UUFDL0IsQ0FBQyxDQUFDLHlDQUF5QyxLQUFLLENBQUMsU0FBUyxFQUFFO1FBQzVELENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQTtJQUUzQyxPQUFPLEtBQUMsV0FBVyxJQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUksQ0FBQTtBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcblxuLyoqIFJlbmRlcnMgYSBMdWNpZGUgaWNvbiBpbmxpbmUgYnkgbmFtZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIElubGluZUljb24ocHJvcHM6IHsgbmFtZTogc3RyaW5nOyBjbGFzc05hbWU/OiBzdHJpbmcgfSkge1xuICBjb25zdCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWVcbiAgICA/IGBpbmxpbmUtYmxvY2sgc2l6ZS00IGFsaWduLXRleHQtYm90dG9tICR7cHJvcHMuY2xhc3NOYW1lfWBcbiAgICA6IFwiaW5saW5lLWJsb2NrIHNpemUtNCBhbGlnbi10ZXh0LWJvdHRvbVwiXG5cbiAgcmV0dXJuIDxEeW5hbWljSWNvbiBuYW1lPXtwcm9wcy5uYW1lfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gLz5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useTocItems } from "../helpers/toc-context.js";
|
|
3
|
+
/** Renders the page's table of contents inline within the content */
|
|
4
|
+
export function InlineToc(props) {
|
|
5
|
+
const allItems = useTocItems();
|
|
6
|
+
const maxDepth = props.maxLevel ? Number(props.maxLevel) : 4;
|
|
7
|
+
const items = allItems.filter(item => item.depth <= maxDepth);
|
|
8
|
+
if (items.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
return (_jsxs("nav", { className: "not-prose my-8 rounded-xl border border-border bg-card p-6", children: [
|
|
11
|
+
_jsx("p", { className: "text-base font-semibold mb-4", children: "Table of Contents" }), _jsx("ul", { className: "text-base space-y-2.5", children: items.map(item => (_jsx("li", { style: { paddingLeft: `${(item.depth - 2) * 1.25}rem` }, children: _jsx("a", { href: item.url, className: "text-muted-foreground hover:text-primary transition-colors", children: item.title }) }, item.url))) })
|
|
12
|
+
] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5saW5lVG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvSW5saW5lVG9jLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXZELHFFQUFxRTtBQUNyRSxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQTRCO0lBQ3BELE1BQU0sUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBQzlCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQTtJQUU3RCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRW5DLE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQyw0REFBNEQ7WUFDekUsWUFBRyxTQUFTLEVBQUMsOEJBQThCLGtDQUFzQixFQUNqRSxhQUFJLFNBQVMsRUFBQyx1QkFBdUIsWUFDbEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ2pCLGFBRUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLFlBRXZELFlBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQ2QsU0FBUyxFQUFDLDREQUE0RCxZQUVyRSxJQUFJLENBQUMsS0FBSyxHQUNULElBUkMsSUFBSSxDQUFDLEdBQUcsQ0FTVixDQUNOLENBQUMsR0FDQztZQUNELENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUb2NJdGVtcyB9IGZyb20gXCIuLi9oZWxwZXJzL3RvYy1jb250ZXh0LnRzXCJcblxuLyoqIFJlbmRlcnMgdGhlIHBhZ2UncyB0YWJsZSBvZiBjb250ZW50cyBpbmxpbmUgd2l0aGluIHRoZSBjb250ZW50ICovXG5leHBvcnQgZnVuY3Rpb24gSW5saW5lVG9jKHByb3BzOiB7IG1heExldmVsPzogc3RyaW5nIH0pIHtcbiAgY29uc3QgYWxsSXRlbXMgPSB1c2VUb2NJdGVtcygpXG4gIGNvbnN0IG1heERlcHRoID0gcHJvcHMubWF4TGV2ZWwgPyBOdW1iZXIocHJvcHMubWF4TGV2ZWwpIDogNFxuICBjb25zdCBpdGVtcyA9IGFsbEl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uZGVwdGggPD0gbWF4RGVwdGgpXG5cbiAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxuYXYgY2xhc3NOYW1lPVwibm90LXByb3NlIG15LTggcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkIHAtNlwiPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGQgbWItNFwiPlRhYmxlIG9mIENvbnRlbnRzPC9wPlxuICAgICAgPHVsIGNsYXNzTmFtZT1cInRleHQtYmFzZSBzcGFjZS15LTIuNVwiPlxuICAgICAgICB7aXRlbXMubWFwKGl0ZW0gPT4gKFxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAga2V5PXtpdGVtLnVybH1cbiAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBgJHsoaXRlbS5kZXB0aCAtIDIpICogMS4yNX1yZW1gIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj17aXRlbS51cmx9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aXRlbS50aXRsZX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApKX1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link, useLocation, useMatch } from "@tanstack/react-router";
|
|
3
|
+
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
4
|
+
import { ExternalLink } from "lucide-react";
|
|
5
|
+
import { currentSection, sectionFirstArticle, sectionFlatArticles, sortedArticles, } from "../content/article.js";
|
|
6
|
+
import { DynamicIcon } from "../helpers/dynamic-icon.js";
|
|
7
|
+
import { sectionIcon } from "../helpers/section.js";
|
|
8
|
+
import { SidebarInset, SidebarProvider, SidebarTrigger, useSidebar, } from "../elements/sidebar.js";
|
|
9
|
+
import { BackToTop } from "./BackToTop.js";
|
|
10
|
+
import { Banner } from "./Banner.js";
|
|
11
|
+
import { Sidebar } from "./Sidebar.js";
|
|
12
|
+
import { SiteTitle } from "./SiteTitle.js";
|
|
13
|
+
function splatFor(pathname) {
|
|
14
|
+
return { _splat: pathname.replace(/^\/|\/$/g, "") };
|
|
15
|
+
}
|
|
16
|
+
export function Layout(props) {
|
|
17
|
+
const pathname = useLocation({ select: l => l.pathname });
|
|
18
|
+
const articleRoute = useMatch({ from: "/$", shouldThrow: false });
|
|
19
|
+
const activeSection = articleRoute
|
|
20
|
+
? currentSection(`/${pathname.replace(/^\/|\/$/g, "")}/`)
|
|
21
|
+
: undefined;
|
|
22
|
+
useHotkey("J", () => window.scrollBy({ top: window.innerHeight * 0.8, behavior: "smooth" }));
|
|
23
|
+
useHotkey("K", () => window.scrollBy({ top: -window.innerHeight * 0.8, behavior: "smooth" }));
|
|
24
|
+
const sections = import.meta.env.CONFIG.sections;
|
|
25
|
+
const header = (_jsxs("header", { className: "sticky top-0 z-20 flex h-16 shrink-0 items-center border-b bg-background", children: [
|
|
26
|
+
_jsx("div", { className: `flex items-center self-stretch pl-4 ${props.withSidebar ? "pr-4" : "md:pr-20"}`, children: props.withSidebar ? (_jsxs(_Fragment, { children: [
|
|
27
|
+
_jsx("div", { className: "hidden md:flex", children: _jsx(SidebarTrigger, {}) }), _jsx(Link, { to: "/", className: "md:hidden flex items-center gap-2", children: _jsx(SiteTitle, {}) })
|
|
28
|
+
] })) : (_jsx(Link, { to: "/", className: "flex items-center gap-2", children: _jsx(SiteTitle, {}) })) }), _jsxs("div", { className: "hidden md:flex flex-1 items-center gap-8 self-stretch px-6 text-sm", children: [sections?.length ? (sections
|
|
29
|
+
.filter(section => section.position === "header")
|
|
30
|
+
.map(section => {
|
|
31
|
+
const isActive = activeSection?.prefix === section.prefix;
|
|
32
|
+
const target = section.type === "blog" || section.type === "changelog"
|
|
33
|
+
? section.prefix
|
|
34
|
+
: sectionFirstArticle.get(section.prefix);
|
|
35
|
+
const latestVersion = section.type === "changelog" && section.version
|
|
36
|
+
? sortedArticles.find(a => a.path === sectionFlatArticles.get(section.prefix)?.[0])?.title
|
|
37
|
+
: undefined;
|
|
38
|
+
return (_jsxs(Link, { to: target === "/" ? "/" : "/$", params: target && target !== "/" ? splatFor(target) : {}, className: `inline-flex items-center gap-1.5 text-foreground ${isActive
|
|
39
|
+
? "font-medium border-b-2 border-foreground pb-0.5 -mb-0.5"
|
|
40
|
+
: "opacity-80 hover:opacity-100 transition-opacity"}`, children: [
|
|
41
|
+
_jsx(DynamicIcon, { name: sectionIcon(section), className: "size-3.5" }), _jsxs("span", { children: [section.title, latestVersion && (_jsxs("span", { className: "opacity-80", children: [" (", latestVersion, ")"] }))] })
|
|
42
|
+
] }, section.prefix));
|
|
43
|
+
})) : (_jsx(Link, { to: "/", className: "text-foreground font-medium underline underline-offset-4", children: "Docs" })), import.meta.env.CONFIG.links
|
|
44
|
+
?.filter(link => link.position === "header" &&
|
|
45
|
+
(!link.prefix || link.prefix === activeSection?.prefix))
|
|
46
|
+
.map(link => (_jsxs("a", { href: link.url, target: "_blank", rel: "noopener noreferrer", className: "text-foreground opacity-80 hover:opacity-100 transition-opacity", children: [link.icon && (_jsx(DynamicIcon, { name: link.icon, className: "inline size-3.5 align-[-0.125em]" })), " ", link.title, " ", _jsx(ExternalLink, { className: "inline size-3 align-[-0.125em]" })
|
|
47
|
+
] }, link.url))), _jsx(Banner, {})
|
|
48
|
+
] }), _jsx("div", { className: "md:hidden ml-auto pr-2", children: _jsx(SidebarTrigger, {}) })
|
|
49
|
+
] }));
|
|
50
|
+
return (_jsx(SidebarProvider, { defaultOpen: !!props.withSidebar, children: _jsx(SidebarShell, { withSidebar: props.withSidebar, header: header, children: props.children }) }, props.withSidebar ? "sidebar" : "mini"));
|
|
51
|
+
}
|
|
52
|
+
function SidebarShell(props) {
|
|
53
|
+
const { isMobile, setOpenMobile } = useSidebar();
|
|
54
|
+
const onClick = (event) => {
|
|
55
|
+
if (!isMobile)
|
|
56
|
+
return;
|
|
57
|
+
if (event.target.closest("a"))
|
|
58
|
+
setOpenMobile(false);
|
|
59
|
+
};
|
|
60
|
+
return (_jsxs("div", { style: { display: "contents" }, onClick: onClick, children: [
|
|
61
|
+
_jsx(Sidebar, { withSidebar: props.withSidebar }), _jsxs(SidebarInset, { children: [props.header, _jsx("main", { className: "flex-1", children: props.children }), _jsx(BackToTop, {})
|
|
62
|
+
] })
|
|
63
|
+
] }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTGF5b3V0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUNMLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFBO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNkIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUNMLFlBQVksRUFDWixlQUFlLEVBQ2YsY0FBYyxFQUNkLFVBQVUsR0FDWCxNQUFNLHdCQUF5QixDQUFBO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFpQixDQUFBO0FBRTNDLFNBQVMsUUFBUSxDQUFDLFFBQWdCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQTtBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxLQUd0QjtJQUNDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVB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S0FBSyxDQUFDLFFBQVEsR0FBUSxFQUNoRCxLQUFDLFNBQVMsS0FBRztvQkFDQTtZQUNYLENBQ1AsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2ggfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5pbXBvcnQgeyB1c2VIb3RrZXkgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LWhvdGtleXNcIlxuaW1wb3J0IHsgRXh0ZXJuYWxMaW5rIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQge1xuICBjdXJyZW50U2VjdGlvbixcbiAgc2VjdGlvbkZpcnN0QXJ0aWNsZSxcbiAgc2VjdGlvbkZsYXRBcnRpY2xlcyxcbiAgc29ydGVkQXJ0aWNsZXMsXG59IGZyb20gXCIuLi9jb250ZW50L2FydGljbGUudHNcIlxuaW1wb3J0IHsgRHluYW1pY0ljb24gfSBmcm9tIFwiLi4vaGVscGVycy9keW5hbWljLWljb24udHN4XCJcbmltcG9ydCB7IHNlY3Rpb25JY29uIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2VjdGlvbi50c1wiXG5pbXBvcnQge1xuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclRyaWdnZXIsXG4gIHVzZVNpZGViYXIsXG59IGZyb20gXCIuLi9lbGVtZW50cy9zaWRlYmFyLnRzeFwiXG5pbXBvcnQgeyBCYWNrVG9Ub3AgfSBmcm9tIFwiLi9CYWNrVG9Ub3AudHN4XCJcbmltcG9ydCB7IEJhbm5lciB9IGZyb20gXCIuL0Jhbm5lci50c3hcIlxuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gXCIuL1NpZGViYXIudHN4XCJcbmltcG9ydCB7IFNpdGVUaXRsZSB9IGZyb20gXCIuL1NpdGVUaXRsZS50c3hcIlxuXG5mdW5jdGlvbiBzcGxhdEZvcihwYXRobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IF9zcGxhdDogcGF0aG5hbWUucmVwbGFjZSgvXlxcL3xcXC8kL2csIFwiXCIpIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dChwcm9wczoge1xuICB3aXRoU2lkZWJhcj86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbn0pIHtcbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VMb2NhdGlvbih7IHNlbGVjdDogbCA9PiBsLnBhdGhuYW1lIH0pXG4gIGNvbnN0IGFydGljbGVSb3V0ZSA9IHVzZU1hdGNoKHsgZnJvbTogXCIvJFwiLCBzaG91bGRUaHJvdzogZmFsc2UgfSlcbiAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IGFydGljbGVSb3V0ZVxuICAgID8gY3VycmVudFNlY3Rpb24oYC8ke3BhdGhuYW1lLnJlcGxhY2UoL15cXC98XFwvJC9nLCBcIlwiKX0vYClcbiAgICA6IHVuZGVmaW5lZFxuXG4gIHVzZUhvdGtleShcIkpcIiwgKCkgPT5cbiAgICB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcbiAgdXNlSG90a2V5KFwiS1wiLCAoKSA9PlxuICAgIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogLXdpbmRvdy5pbm5lckhlaWdodCAqIDAuOCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSksXG4gIClcblxuICBjb25zdCBzZWN0aW9ucyA9IGltcG9ydC5tZXRhLmVudi5DT05GSUcuc2VjdGlvbnNcblxuICBjb25zdCBoZWFkZXIgPSAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJzdGlja3kgdG9wLTAgei0yMCBmbGV4IGgtMTYgc2hyaW5rLTAgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJnLWJhY2tncm91bmRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgc2VsZi1zdHJldGNoIHBsLTQgJHtwcm9wcy53aXRoU2lkZWJhciA/IFwicHItNFwiIDogXCJtZDpwci0yMFwifWB9XG4gICAgICA+XG4gICAgICAgIHtwcm9wcy53aXRoU2lkZWJhciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleFwiPlxuICAgICAgICAgICAgICA8U2lkZWJhclRyaWdnZXIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPExpbmsgdG89XCIvXCIgY2xhc3NOYW1lPVwibWQ6aGlkZGVuIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxTaXRlVGl0bGUgLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGluayB0bz1cIi9cIiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPFNpdGVUaXRsZSAvPlxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LTEgaXRlbXMtY2VudGVyIGdhcC04IHNlbGYtc3RyZXRjaCBweC02IHRleHQtc21cIj5cbiAgICAgICAge3NlY3Rpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoc2VjdGlvbiA9PiBzZWN0aW9uLnBvc2l0aW9uID09PSBcImhlYWRlclwiKVxuICAgICAgICAgICAgLm1hcChzZWN0aW9uID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVTZWN0aW9uPy5wcmVmaXggPT09IHNlY3Rpb24ucHJlZml4XG4gICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbi50eXBlID09PSBcImJsb2dcIiB8fCBzZWN0aW9uLnR5cGUgPT09IFwiY2hhbmdlbG9nXCJcbiAgICAgICAgICAgICAgICAgID8gc2VjdGlvbi5wcmVmaXhcbiAgICAgICAgICAgICAgICAgIDogc2VjdGlvbkZpcnN0QXJ0aWNsZS5nZXQoc2VjdGlvbi5wcmVmaXgpXG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdFZlcnNpb24gPVxuICAgICAgICAgICAgICAgIHNlY3Rpb24udHlwZSA9PT0gXCJjaGFuZ2Vsb2dcIiAmJiBzZWN0aW9uLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgID8gc29ydGVkQXJ0aWNsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICBhID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhLnBhdGggPT09IHNlY3Rpb25GbGF0QXJ0aWNsZXMuZ2V0KHNlY3Rpb24ucHJlZml4KT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICApPy50aXRsZVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgICAga2V5PXtzZWN0aW9uLnByZWZpeH1cbiAgICAgICAgICAgICAgICAgIHRvPXt0YXJnZXQgPT09IFwiL1wiID8gXCIvXCIgOiBcIi8kXCJ9XG4gICAgICAgICAgICAgICAgICBwYXJhbXM9e3RhcmdldCAmJiB0YXJnZXQgIT09IFwiL1wiID8gc3BsYXRGb3IodGFyZ2V0KSA6IHt9fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1mb3JlZ3JvdW5kICR7XG4gICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImZvbnQtbWVkaXVtIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmQgcGItMC41IC1tYi0wLjVcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RHluYW1pY0ljb25cbiAgICAgICAgICAgICAgICAgICAgbmFtZT17c2VjdGlvbkljb24oc2VjdGlvbil9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpemUtMy41XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3NlY3Rpb24udGl0bGV9XG4gICAgICAgICAgICAgICAgICAgIHtsYXRlc3RWZXJzaW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJvcGFjaXR5LTgwXCI+ICh7bGF0ZXN0VmVyc2lvbn0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgdG89XCIvXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBmb250LW1lZGl1bSB1bmRlcmxpbmUgdW5kZXJsaW5lLW9mZnNldC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEb2NzXG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICApfVxuICAgICAgICB7aW1wb3J0Lm1ldGEuZW52LkNPTkZJRy5saW5rc1xuICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgbGluayA9PlxuICAgICAgICAgICAgICBsaW5rLnBvc2l0aW9uID09PSBcImhlYWRlclwiICYmXG4gICAgICAgICAgICAgICghbGluay5wcmVmaXggfHwgbGluay5wcmVmaXggPT09IGFjdGl2ZVNlY3Rpb24/LnByZWZpeCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAobGluayA9PiAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBrZXk9e2xpbmsudXJsfVxuICAgICAgICAgICAgICBocmVmPXtsaW5rLnVybH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtZm9yZWdyb3VuZCBvcGFjaXR5LTgwIGhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsaW5rLmljb24gJiYgKFxuICAgICAgICAgICAgICAgIDxEeW5hbWljSWNvblxuICAgICAgICAgICAgICAgICAgbmFtZT17bGluay5pY29ufVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMy41IGFsaWduLVstMC4xMjVlbV1cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9e1wiIFwifVxuICAgICAgICAgICAgICB7bGluay50aXRsZX17XCIgXCJ9XG4gICAgICAgICAgICAgIDxFeHRlcm5hbExpbmsgY2xhc3NOYW1lPVwiaW5saW5lIHNpemUtMyBhbGlnbi1bLTAuMTI1ZW1dXCIgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPEJhbm5lciAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1kOmhpZGRlbiBtbC1hdXRvIHByLTJcIj5cbiAgICAgICAgPFNpZGViYXJUcmlnZ2VyIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNpZGViYXJQcm92aWRlclxuICAgICAga2V5PXtwcm9wcy53aXRoU2lkZWJhciA/IFwic2lkZWJhclwiIDogXCJtaW5pXCJ9XG4gICAgICBkZWZhdWx0T3Blbj17ISFwcm9wcy53aXRoU2lkZWJhcn1cbiAgICA+XG4gICAgICA8U2lkZWJhclNoZWxsIHdpdGhTaWRlYmFyPXtwcm9wcy53aXRoU2lkZWJhcn0gaGVhZGVyPXtoZWFkZXJ9PlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1NpZGViYXJTaGVsbD5cbiAgICA8L1NpZGViYXJQcm92aWRlcj5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyU2hlbGwocHJvcHM6IHtcbiAgd2l0aFNpZGViYXI/OiBib29sZWFuXG4gIGhlYWRlcjogUmVhY3QuUmVhY3ROb2RlXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlXG59KSB7XG4gIGNvbnN0IHsgaXNNb2JpbGUsIHNldE9wZW5Nb2JpbGUgfSA9IHVzZVNpZGViYXIoKVxuICBjb25zdCBvbkNsaWNrID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNNb2JpbGUpIHJldHVyblxuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFwiYVwiKSkgc2V0T3Blbk1vYmlsZShmYWxzZSlcbiAgfVxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJjb250ZW50c1wiIH19IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPFNpZGViYXIgd2l0aFNpZGViYXI9e3Byb3BzLndpdGhTaWRlYmFyfSAvPlxuICAgICAgPFNpZGViYXJJbnNldD5cbiAgICAgICAge3Byb3BzLmhlYWRlcn1cbiAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwiZmxleC0xXCI+e3Byb3BzLmNoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPEJhY2tUb1RvcCAvPlxuICAgICAgPC9TaWRlYmFySW5zZXQ+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Styled link button rendered from ::button leaf directives */
|
|
2
|
+
export declare function LinkButton(props: {
|
|
3
|
+
href: string;
|
|
4
|
+
label: string;
|
|
5
|
+
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link";
|
|
6
|
+
size?: "default" | "sm" | "lg";
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { buttonVariants } from "../elements/button.js";
|
|
3
|
+
import { cn } from "../utils/style.js";
|
|
4
|
+
/** Styled link button rendered from ::button leaf directives */
|
|
5
|
+
export function LinkButton(props) {
|
|
6
|
+
return (_jsx("a", { href: props.href, className: cn(buttonVariants({
|
|
7
|
+
variant: props.variant,
|
|
8
|
+
size: props.size,
|
|
9
|
+
}), "no-underline"), children: props.label }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlua0J1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL0xpbmtCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRDLGdFQUFnRTtBQUNoRSxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBVzFCO0lBQ0MsT0FBTyxDQUNMLFlBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQ2hCLFNBQVMsRUFBRSxFQUFFLENBQ1gsY0FBYyxDQUFDO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNqQixDQUFDLEVBQ0YsY0FBYyxDQUNmLFlBRUEsS0FBSyxDQUFDLEtBQUssR0FDVixDQUNMLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnV0dG9uVmFyaWFudHMgfSBmcm9tIFwiLi4vZWxlbWVudHMvYnV0dG9uLnRzeFwiXG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi91dGlscy9zdHlsZS50c1wiXG5cbi8qKiBTdHlsZWQgbGluayBidXR0b24gcmVuZGVyZWQgZnJvbSA6OmJ1dHRvbiBsZWFmIGRpcmVjdGl2ZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBMaW5rQnV0dG9uKHByb3BzOiB7XG4gIGhyZWY6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIHZhcmlhbnQ/OlxuICAgIHwgXCJkZWZhdWx0XCJcbiAgICB8IFwib3V0bGluZVwiXG4gICAgfCBcInNlY29uZGFyeVwiXG4gICAgfCBcImdob3N0XCJcbiAgICB8IFwiZGVzdHJ1Y3RpdmVcIlxuICAgIHwgXCJsaW5rXCJcbiAgc2l6ZT86IFwiZGVmYXVsdFwiIHwgXCJzbVwiIHwgXCJsZ1wiXG59KSB7XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e3Byb3BzLmhyZWZ9XG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBidXR0b25WYXJpYW50cyh7XG4gICAgICAgICAgdmFyaWFudDogcHJvcHMudmFyaWFudCxcbiAgICAgICAgICBzaXplOiBwcm9wcy5zaXplLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJuby11bmRlcmxpbmVcIixcbiAgICAgICl9XG4gICAgPlxuICAgICAge3Byb3BzLmxhYmVsfVxuICAgIDwvYT5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Suspense, lazy } from "react";
|
|
3
|
+
const MermaidRenderer = lazy(() => import("./MermaidRenderer.js"));
|
|
4
|
+
/** Lazily loads and renders a Mermaid diagram */
|
|
5
|
+
export function Mermaid(props) {
|
|
6
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { className: "not-prose mermaid flex justify-center", children: "Loading diagram\u2026" }), children: _jsx(MermaidRenderer, { children: props.children }) }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVybWFpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9jb21wb25lbnRzL01lcm1haWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUV0QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHNCQUF1QixDQUFDLENBQUMsQ0FBQTtBQUVuRSxpREFBaUQ7QUFDakQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUEyQjtJQUNqRCxPQUFPLENBQ0wsS0FBQyxRQUFRLElBQ1AsUUFBUSxFQUNOLGNBQUssU0FBUyxFQUFDLHVDQUF1QyxzQ0FFaEQsWUFHUixLQUFDLGVBQWUsY0FBRSxLQUFLLENBQUMsUUFBUSxHQUFtQixHQUMxQyxDQUNaLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3VzcGVuc2UsIGxhenkgfSBmcm9tIFwicmVhY3RcIlxuXG5jb25zdCBNZXJtYWlkUmVuZGVyZXIgPSBsYXp5KCgpID0+IGltcG9ydChcIi4vTWVybWFpZFJlbmRlcmVyLnRzeFwiKSlcblxuLyoqIExhemlseSBsb2FkcyBhbmQgcmVuZGVycyBhIE1lcm1haWQgZGlhZ3JhbSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1lcm1haWQocHJvcHM6IHsgY2hpbGRyZW46IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPFN1c3BlbnNlXG4gICAgICBmYWxsYmFjaz17XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm90LXByb3NlIG1lcm1haWQgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIExvYWRpbmcgZGlhZ3JhbeKAplxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA+XG4gICAgICA8TWVybWFpZFJlbmRlcmVyPntwcm9wcy5jaGlsZHJlbn08L01lcm1haWRSZW5kZXJlcj5cbiAgICA8L1N1c3BlbnNlPlxuICApXG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import mermaid from "mermaid";
|
|
4
|
+
mermaid.initialize({ startOnLoad: false });
|
|
5
|
+
/** Renders a Mermaid diagram from a chart definition string */
|
|
6
|
+
export default function MermaidRenderer(props) {
|
|
7
|
+
const ref = useRef(null);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const el = ref.current;
|
|
10
|
+
if (!el)
|
|
11
|
+
return;
|
|
12
|
+
const render = () => {
|
|
13
|
+
const isDark = document.documentElement.classList.contains("dark");
|
|
14
|
+
mermaid.initialize({
|
|
15
|
+
startOnLoad: false,
|
|
16
|
+
theme: isDark ? "dark" : "default",
|
|
17
|
+
});
|
|
18
|
+
el.textContent = props.children;
|
|
19
|
+
el.removeAttribute("data-processed");
|
|
20
|
+
mermaid.run({ nodes: [el] });
|
|
21
|
+
};
|
|
22
|
+
render();
|
|
23
|
+
const observer = new MutationObserver(render);
|
|
24
|
+
observer.observe(document.documentElement, {
|
|
25
|
+
attributes: true,
|
|
26
|
+
attributeFilter: ["class"],
|
|
27
|
+
});
|
|
28
|
+
return () => observer.disconnect();
|
|
29
|
+
}, [props.children]);
|
|
30
|
+
return _jsx("div", { ref: ref, className: "not-prose mermaid flex justify-center" });
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVybWFpZFJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2NvbXBvbmVudHMvTWVybWFpZFJlbmRlcmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDekMsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBRTdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtBQUUxQywrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sVUFBVSxlQUFlLENBQUMsS0FBMkI7SUFDakUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQTtJQUV4QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU07UUFFZixNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2xFLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ2pCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDbkMsQ0FBQyxDQUFBO1lBQ0YsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFBO1lBQy9CLEVBQUUsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzlCLENBQUMsQ0FBQTtRQUVELE1BQU0sRUFBRSxDQUFBO1FBRVIsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFDekMsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQzNCLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3BDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBRXBCLE9BQU8sY0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyx1Q0FBdUMsR0FBRyxDQUFBO0FBQzVFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgbWVybWFpZCBmcm9tIFwibWVybWFpZFwiXG5cbm1lcm1haWQuaW5pdGlhbGl6ZSh7IHN0YXJ0T25Mb2FkOiBmYWxzZSB9KVxuXG4vKiogUmVuZGVycyBhIE1lcm1haWQgZGlhZ3JhbSBmcm9tIGEgY2hhcnQgZGVmaW5pdGlvbiBzdHJpbmcgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1lcm1haWRSZW5kZXJlcihwcm9wczogeyBjaGlsZHJlbjogc3RyaW5nIH0pIHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSByZWYuY3VycmVudFxuICAgIGlmICghZWwpIHJldHVyblxuXG4gICAgY29uc3QgcmVuZGVyID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNEYXJrID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImRhcmtcIilcbiAgICAgIG1lcm1haWQuaW5pdGlhbGl6ZSh7XG4gICAgICAgIHN0YXJ0T25Mb2FkOiBmYWxzZSxcbiAgICAgICAgdGhlbWU6IGlzRGFyayA/IFwiZGFya1wiIDogXCJkZWZhdWx0XCIsXG4gICAgICB9KVxuICAgICAgZWwudGV4dENvbnRlbnQgPSBwcm9wcy5jaGlsZHJlblxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1wcm9jZXNzZWRcIilcbiAgICAgIG1lcm1haWQucnVuKHsgbm9kZXM6IFtlbF0gfSlcbiAgICB9XG5cbiAgICByZW5kZXIoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihyZW5kZXIpXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFtcImNsYXNzXCJdLFxuICAgIH0pXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtwcm9wcy5jaGlsZHJlbl0pXG5cbiAgcmV0dXJuIDxkaXYgcmVmPXtyZWZ9IGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBtZXJtYWlkIGZsZXgganVzdGlmeS1jZW50ZXJcIiAvPlxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Link } from "@tanstack/react-router";
|
|
3
|
+
export function NotFound({ children }) {
|
|
4
|
+
return (_jsxs("div", { className: "min-h-[60vh] flex flex-col items-center justify-center text-center px-4", children: [
|
|
5
|
+
_jsx("h1", { className: "font-sans text-6xl font-semibold mb-4", children: "404" }), _jsx("div", { className: "text-muted-foreground mb-6", children: children || _jsx("p", { children: "The page you're looking for doesn't exist." }) }), _jsxs("div", { className: "flex items-center gap-4", children: [
|
|
6
|
+
_jsx("button", { type: "button", onClick: () => window.history.back(), className: "bg-primary text-primary-foreground px-4 py-2 text-sm font-medium hover:bg-primary/80 transition-colors", children: "Go Back" }), _jsx(Link, { to: "/", className: "border border-border px-4 py-2 text-sm font-medium hover:bg-card transition-colors", children: "Home" })
|
|
7
|
+
] })
|
|
8
|
+
] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90Rm91bmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9Ob3RGb3VuZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUU3QyxNQUFNLFVBQVUsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFzQjtJQUN2RCxPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMseUVBQXlFO1lBQ3RGLGFBQUksU0FBUyxFQUFDLHVDQUF1QyxvQkFBUyxFQUM5RCxjQUFLLFNBQVMsRUFBQyw0QkFBNEIsWUFDeEMsUUFBUSxJQUFJLHFFQUFpRCxHQUMxRCxFQUNOLGVBQUssU0FBUyxFQUFDLHlCQUF5QjtvQkFDdEMsaUJBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFDcEMsU0FBUyxFQUFDLHdHQUF3Ryx3QkFHM0csRUFDVCxLQUFDLElBQUksSUFDSCxFQUFFLEVBQUMsR0FBRyxFQUNOLFNBQVMsRUFBQyxvRkFBb0YscUJBR3pGO29CQUNIO1lBQ0YsQ0FDUCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmsgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXJvdXRlclwiXG5cbmV4cG9ydCBmdW5jdGlvbiBOb3RGb3VuZCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBhbnkgfSkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLWgtWzYwdmhdIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtY2VudGVyIHB4LTRcIj5cbiAgICAgIDxoMSBjbGFzc05hbWU9XCJmb250LXNhbnMgdGV4dC02eGwgZm9udC1zZW1pYm9sZCBtYi00XCI+NDA0PC9oMT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG1iLTZcIj5cbiAgICAgICAge2NoaWxkcmVuIHx8IDxwPlRoZSBwYWdlIHlvdSdyZSBsb29raW5nIGZvciBkb2Vzbid0IGV4aXN0LjwvcD59XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHdpbmRvdy5oaXN0b3J5LmJhY2soKX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOmJnLXByaW1hcnkvODAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICA+XG4gICAgICAgICAgR28gQmFja1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPExpbmtcbiAgICAgICAgICB0bz1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYm9yZGVyIHB4LTQgcHktMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOmJnLWNhcmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICA+XG4gICAgICAgICAgSG9tZVxuICAgICAgICA8L0xpbms+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface PackageTabsProps {
|
|
2
|
+
npm: string;
|
|
3
|
+
pnpm: string;
|
|
4
|
+
yarn: string;
|
|
5
|
+
bun: string;
|
|
6
|
+
}
|
|
7
|
+
/** Tabbed code block showing a command for each package manager */
|
|
8
|
+
export declare function PackageTabs(props: PackageTabsProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Check, Clipboard } from "lucide-react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
const managers = ["npm", "pnpm", "yarn", "bun"];
|
|
5
|
+
/** Tabbed code block showing a command for each package manager */
|
|
6
|
+
export function PackageTabs(props) {
|
|
7
|
+
const [active, setActive] = useState("npm");
|
|
8
|
+
const [copied, setCopied] = useState(false);
|
|
9
|
+
const commands = {
|
|
10
|
+
npm: props.npm,
|
|
11
|
+
pnpm: props.pnpm,
|
|
12
|
+
yarn: props.yarn,
|
|
13
|
+
bun: props.bun,
|
|
14
|
+
};
|
|
15
|
+
const handleCopy = () => {
|
|
16
|
+
navigator.clipboard.writeText(commands[active]);
|
|
17
|
+
setCopied(true);
|
|
18
|
+
setTimeout(() => setCopied(false), 2000);
|
|
19
|
+
};
|
|
20
|
+
return (_jsxs("figure", { className: "not-prose my-4 relative rounded-xl border shadow-sm overflow-hidden text-sm bg-sidebar dark:bg-sidebar", children: [
|
|
21
|
+
_jsxs("div", { className: "flex items-center border-b", children: [
|
|
22
|
+
_jsx("div", { className: "flex flex-1 items-center", children: managers.map(pm => (_jsx("button", { type: "button", onClick: () => setActive(pm), className: `px-3 py-2 text-xs font-medium transition-colors ${pm === active
|
|
23
|
+
? "text-foreground border-b-2 border-foreground"
|
|
24
|
+
: "text-muted-foreground hover:text-foreground"}`, children: pm }, pm))) }), _jsx("button", { type: "button", onClick: handleCopy, className: "me-2 p-1 rounded-md text-muted-foreground hover:text-foreground transition-colors", "aria-label": "Copy code", children: copied ? (_jsx(Check, { className: "size-3.5" })) : (_jsx(Clipboard, { className: "size-3.5" })) })
|
|
25
|
+
] }), _jsx("div", { className: "text-[0.8125rem] py-3.5 overflow-auto max-h-[600px]", children: _jsx("pre", { className: "min-w-full w-max", children: _jsx("code", { className: "flex flex-col", children: _jsx("span", { className: "px-4", children: commands[active] }) }) }) })
|
|
26
|
+
] }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZVRhYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvY29tcG9uZW50cy9QYWNrYWdlVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFJaEMsTUFBTSxRQUFRLEdBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQVMxRCxtRUFBbUU7QUFDbkUsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUF1QjtJQUNqRCxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBVSxLQUFLLENBQUMsQ0FBQTtJQUNwRCxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUUzQyxNQUFNLFFBQVEsR0FBNEI7UUFDeEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1FBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7S0FDZixDQUFBO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO1FBQ3RCLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUMsQ0FBQyxDQUFBO0lBRUQsT0FBTyxDQUNMLGtCQUFRLFNBQVMsRUFBQyx3R0FBd0c7WUFDeEgsZUFBSyxTQUFTLEVBQUMsNEJBQTRCO29CQUN6QyxjQUFLLFNBQVMsRUFBQywwQkFBMEIsWUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ2xCLGlCQUVFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDNUIsU0FBUyxFQUFFLG1EQUNULEVBQUUsS0FBSyxNQUFNO2dDQUNYLENBQUMsQ0FBQyw4Q0FBOEM7Z0NBQ2hELENBQUMsQ0FBQyw2Q0FDTixFQUFFLFlBRUQsRUFBRSxJQVRFLEVBQUUsQ0FVQSxDQUNWLENBQUMsR0FDRSxFQUNOLGlCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsT0FBTyxFQUFFLFVBQVUsRUFDbkIsU0FBUyxFQUFDLG1GQUFtRixnQkFDbEYsV0FBVyxZQUVyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQ1IsS0FBQyxLQUFLLElBQUMsU0FBUyxFQUFDLFVBQVUsR0FBRyxDQUMvQixDQUFDLENBQUMsQ0FBQyxDQUNGLEtBQUMsU0FBUyxJQUFDLFNBQVMsRUFBQyxVQUFVLEdBQUcsQ0FDbkMsR0FDTTtvQkFDTCxFQUNOLGNBQUssU0FBUyxFQUFDLHFEQUFxRCxZQUNsRSxjQUFLLFNBQVMsRUFBQyxrQkFBa0IsWUFDL0IsZUFBTSxTQUFTLEVBQUMsZUFBZSxZQUM3QixlQUFNLFNBQVMsRUFBQyxNQUFNLFlBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFRLEdBQzNDLEdBQ0gsR0FDRjtZQUNDLENBQ1YsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVjaywgQ2xpcGJvYXJkIH0gZnJvbSBcImx1Y2lkZS1yZWFjdFwiXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5cbnR5cGUgTWFuYWdlciA9IFwibnBtXCIgfCBcInBucG1cIiB8IFwieWFyblwiIHwgXCJidW5cIlxuXG5jb25zdCBtYW5hZ2VyczogTWFuYWdlcltdID0gW1wibnBtXCIsIFwicG5wbVwiLCBcInlhcm5cIiwgXCJidW5cIl1cblxuaW50ZXJmYWNlIFBhY2thZ2VUYWJzUHJvcHMge1xuICBucG06IHN0cmluZ1xuICBwbnBtOiBzdHJpbmdcbiAgeWFybjogc3RyaW5nXG4gIGJ1bjogc3RyaW5nXG59XG5cbi8qKiBUYWJiZWQgY29kZSBibG9jayBzaG93aW5nIGEgY29tbWFuZCBmb3IgZWFjaCBwYWNrYWdlIG1hbmFnZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBQYWNrYWdlVGFicyhwcm9wczogUGFja2FnZVRhYnNQcm9wcykge1xuICBjb25zdCBbYWN0aXZlLCBzZXRBY3RpdmVdID0gdXNlU3RhdGU8TWFuYWdlcj4oXCJucG1cIilcbiAgY29uc3QgW2NvcGllZCwgc2V0Q29waWVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGNvbW1hbmRzOiBSZWNvcmQ8TWFuYWdlciwgc3RyaW5nPiA9IHtcbiAgICBucG06IHByb3BzLm5wbSxcbiAgICBwbnBtOiBwcm9wcy5wbnBtLFxuICAgIHlhcm46IHByb3BzLnlhcm4sXG4gICAgYnVuOiBwcm9wcy5idW4sXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvbW1hbmRzW2FjdGl2ZV0pXG4gICAgc2V0Q29waWVkKHRydWUpXG4gICAgc2V0VGltZW91dCgoKSA9PiBzZXRDb3BpZWQoZmFsc2UpLCAyMDAwKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZmlndXJlIGNsYXNzTmFtZT1cIm5vdC1wcm9zZSBteS00IHJlbGF0aXZlIHJvdW5kZWQteGwgYm9yZGVyIHNoYWRvdy1zbSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1zbSBiZy1zaWRlYmFyIGRhcms6Ymctc2lkZWJhclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC0xIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIHttYW5hZ2Vycy5tYXAocG0gPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e3BtfVxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QWN0aXZlKHBtKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1jb2xvcnMgJHtcbiAgICAgICAgICAgICAgICBwbSA9PT0gYWN0aXZlXG4gICAgICAgICAgICAgICAgICA/IFwidGV4dC1mb3JlZ3JvdW5kIGJvcmRlci1iLTIgYm9yZGVyLWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICAgICAgOiBcInRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRcIlxuICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3BtfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICBjbGFzc05hbWU9XCJtZS0yIHAtMSByb3VuZGVkLW1kIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb3B5IGNvZGVcIlxuICAgICAgICA+XG4gICAgICAgICAge2NvcGllZCA/IChcbiAgICAgICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJzaXplLTMuNVwiIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxDbGlwYm9hcmQgY2xhc3NOYW1lPVwic2l6ZS0zLjVcIiAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzAuODEyNXJlbV0gcHktMy41IG92ZXJmbG93LWF1dG8gbWF4LWgtWzYwMHB4XVwiPlxuICAgICAgICA8cHJlIGNsYXNzTmFtZT1cIm1pbi13LWZ1bGwgdy1tYXhcIj5cbiAgICAgICAgICA8Y29kZSBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJweC00XCI+e2NvbW1hbmRzW2FjdGl2ZV19PC9zcGFuPlxuICAgICAgICAgIDwvY29kZT5cbiAgICAgICAgPC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZ3VyZT5cbiAgKVxufVxuIl19
|