livemark 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -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 +12 -2
- 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 +2 -2
- 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 +4 -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/{build/website → source}/plugins/vite-livemark.ts +0 -7
- package/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +4 -3
- 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 +105 -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 +192 -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 +57 -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.d.ts +2 -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 +64 -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/program.js +0 -16
- 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 → 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}/routeTree.gen.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
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// biome-ignore-all lint: shadcn
|
|
3
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
4
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
import { Menu } from "lucide-react";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { cn } from "../utils/style.js";
|
|
9
|
+
import { isMobileNow, useIsMobile } from "../hooks/media.js";
|
|
10
|
+
import { Button } from "./button.js";
|
|
11
|
+
import { Input } from "./input.js";
|
|
12
|
+
import { Separator } from "./separator.js";
|
|
13
|
+
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from "./sheet.js";
|
|
14
|
+
import { Skeleton } from "./skeleton.js";
|
|
15
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "./tooltip.js";
|
|
16
|
+
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
17
|
+
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
18
|
+
const SIDEBAR_WIDTH = "16rem";
|
|
19
|
+
const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
20
|
+
const SIDEBAR_WIDTH_ICON = "3rem";
|
|
21
|
+
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
22
|
+
const SidebarContext = React.createContext(null);
|
|
23
|
+
function useSidebar() {
|
|
24
|
+
const context = React.useContext(SidebarContext);
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
27
|
+
}
|
|
28
|
+
return context;
|
|
29
|
+
}
|
|
30
|
+
function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }) {
|
|
31
|
+
const isMobile = useIsMobile();
|
|
32
|
+
const [openMobile, setOpenMobile] = React.useState(false);
|
|
33
|
+
// This is the internal state of the sidebar.
|
|
34
|
+
// We use openProp and setOpenProp for control from outside the component.
|
|
35
|
+
const [_open, _setOpen] = React.useState(defaultOpen);
|
|
36
|
+
const open = openProp ?? _open;
|
|
37
|
+
const setOpen = React.useCallback((value) => {
|
|
38
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
39
|
+
if (setOpenProp) {
|
|
40
|
+
setOpenProp(openState);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
_setOpen(openState);
|
|
44
|
+
}
|
|
45
|
+
// This sets the cookie to keep the sidebar state.
|
|
46
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
47
|
+
}, [setOpenProp, open]);
|
|
48
|
+
// Helper to toggle the sidebar.
|
|
49
|
+
// Reads matchMedia synchronously instead of relying on `isMobile` React
|
|
50
|
+
// state, which can be momentarily stale on the first click after a
|
|
51
|
+
// SidebarProvider key remount (e.g. landing → article navigation).
|
|
52
|
+
const toggleSidebar = React.useCallback(() => {
|
|
53
|
+
return isMobileNow() ? setOpenMobile(open => !open) : setOpen(open => !open);
|
|
54
|
+
}, [setOpen, setOpenMobile]);
|
|
55
|
+
// Adds a keyboard shortcut to toggle the sidebar.
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
const handleKeyDown = (event) => {
|
|
58
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT &&
|
|
59
|
+
(event.metaKey || event.ctrlKey)) {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
toggleSidebar();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
65
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
66
|
+
}, [toggleSidebar]);
|
|
67
|
+
// We add a state so that we can do data-state="expanded" or "collapsed".
|
|
68
|
+
// This makes it easier to style the sidebar with Tailwind classes.
|
|
69
|
+
const state = open ? "expanded" : "collapsed";
|
|
70
|
+
const contextValue = React.useMemo(() => ({
|
|
71
|
+
state,
|
|
72
|
+
open,
|
|
73
|
+
setOpen,
|
|
74
|
+
isMobile,
|
|
75
|
+
openMobile,
|
|
76
|
+
setOpenMobile,
|
|
77
|
+
toggleSidebar,
|
|
78
|
+
}), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]);
|
|
79
|
+
return (_jsx(SidebarContext.Provider, { value: contextValue, children: _jsx("div", { "data-slot": "sidebar-wrapper", style: {
|
|
80
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
81
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
82
|
+
...style,
|
|
83
|
+
}, className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className), ...props, children: children }) }));
|
|
84
|
+
}
|
|
85
|
+
function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }) {
|
|
86
|
+
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
87
|
+
if (collapsible === "none") {
|
|
88
|
+
return (_jsx("div", { "data-slot": "sidebar", className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", className), ...props, children: children }));
|
|
89
|
+
}
|
|
90
|
+
if (isMobile) {
|
|
91
|
+
return (_jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: _jsxs(SheetContent, { "data-sidebar": "sidebar", "data-slot": "sidebar", "data-mobile": "true", className: "bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden", style: {
|
|
92
|
+
"--sidebar-width": SIDEBAR_WIDTH_MOBILE,
|
|
93
|
+
}, side: side, children: [
|
|
94
|
+
_jsxs(SheetHeader, { className: "sr-only", children: [
|
|
95
|
+
_jsx(SheetTitle, { children: "Sidebar" }), _jsx(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
96
|
+
] }), _jsx("div", { className: "flex h-full w-full flex-col", children: children })
|
|
97
|
+
] }) }));
|
|
98
|
+
}
|
|
99
|
+
return (_jsxs("div", { className: "group peer text-sidebar-foreground hidden md:block", "data-state": state, "data-collapsible": state === "collapsed" ? collapsible : "", "data-variant": variant, "data-side": side, "data-slot": "sidebar", children: [
|
|
100
|
+
_jsx("div", { "data-slot": "sidebar-gap", className: cn("transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", variant === "floating" || variant === "inset"
|
|
101
|
+
? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
|
|
102
|
+
: "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }), _jsx("div", { "data-slot": "sidebar-container", className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex", side === "left"
|
|
103
|
+
? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
|
|
104
|
+
: "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
|
|
105
|
+
// Adjust the padding for floating and inset variants.
|
|
106
|
+
variant === "floating" || variant === "inset"
|
|
107
|
+
? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
|
|
108
|
+
: "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className), ...props, children: _jsx("div", { "data-sidebar": "sidebar", "data-slot": "sidebar-inner", className: "bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col", children: children }) })
|
|
109
|
+
] }));
|
|
110
|
+
}
|
|
111
|
+
function SidebarTrigger({ className, onClick, ...props }) {
|
|
112
|
+
const { toggleSidebar } = useSidebar();
|
|
113
|
+
return (_jsxs(Button, { "data-sidebar": "trigger", "data-slot": "sidebar-trigger", variant: "ghost", size: "icon-sm", className: cn(className), onClick: event => {
|
|
114
|
+
onClick?.(event);
|
|
115
|
+
toggleSidebar();
|
|
116
|
+
}, ...props, children: [
|
|
117
|
+
_jsx(Menu, {}), _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
118
|
+
] }));
|
|
119
|
+
}
|
|
120
|
+
function SidebarRail({ className, ...props }) {
|
|
121
|
+
const { toggleSidebar } = useSidebar();
|
|
122
|
+
return (_jsx("button", { "data-sidebar": "rail", "data-slot": "sidebar-rail", "aria-label": "Toggle Sidebar", tabIndex: -1, onClick: toggleSidebar, title: "Toggle Sidebar", className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className), ...props }));
|
|
123
|
+
}
|
|
124
|
+
function SidebarInset({ className, ...props }) {
|
|
125
|
+
return (_jsx("main", { "data-slot": "sidebar-inset", className: cn("bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 relative flex w-full flex-1 flex-col", className), ...props }));
|
|
126
|
+
}
|
|
127
|
+
function SidebarInput({ className, ...props }) {
|
|
128
|
+
return (_jsx(Input, { "data-slot": "sidebar-input", "data-sidebar": "input", className: cn("bg-background h-8 w-full shadow-none", className), ...props }));
|
|
129
|
+
}
|
|
130
|
+
function SidebarHeader({ className, ...props }) {
|
|
131
|
+
return (_jsx("div", { "data-slot": "sidebar-header", "data-sidebar": "header", className: cn("gap-2 p-2 flex flex-col", className), ...props }));
|
|
132
|
+
}
|
|
133
|
+
function SidebarFooter({ className, ...props }) {
|
|
134
|
+
return (_jsx("div", { "data-slot": "sidebar-footer", "data-sidebar": "footer", className: cn("gap-2 p-2 flex flex-col", className), ...props }));
|
|
135
|
+
}
|
|
136
|
+
function SidebarSeparator({ className, ...props }) {
|
|
137
|
+
return (_jsx(Separator, { "data-slot": "sidebar-separator", "data-sidebar": "separator", className: cn("bg-sidebar-border mx-2 w-auto", className), ...props }));
|
|
138
|
+
}
|
|
139
|
+
function SidebarContent({ className, ...props }) {
|
|
140
|
+
return (_jsx("div", { "data-slot": "sidebar-content", "data-sidebar": "content", className: cn("no-scrollbar gap-2 flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden", className), ...props }));
|
|
141
|
+
}
|
|
142
|
+
function SidebarGroup({ className, ...props }) {
|
|
143
|
+
return (_jsx("div", { "data-slot": "sidebar-group", "data-sidebar": "group", className: cn("p-2 relative flex w-full min-w-0 flex-col", className), ...props }));
|
|
144
|
+
}
|
|
145
|
+
function SidebarGroupLabel({ className, render, ...props }) {
|
|
146
|
+
return useRender({
|
|
147
|
+
defaultTagName: "div",
|
|
148
|
+
props: mergeProps({
|
|
149
|
+
className: cn("text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0", className),
|
|
150
|
+
}, props),
|
|
151
|
+
render,
|
|
152
|
+
state: {
|
|
153
|
+
slot: "sidebar-group-label",
|
|
154
|
+
sidebar: "group-label",
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
function SidebarGroupAction({ className, render, ...props }) {
|
|
159
|
+
return useRender({
|
|
160
|
+
defaultTagName: "button",
|
|
161
|
+
props: mergeProps({
|
|
162
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 w-5 rounded-md p-0 focus-visible:ring-2 [&>svg]:size-4 flex aspect-square items-center justify-center outline-hidden transition-transform [&>svg]:shrink-0 after:absolute after:-inset-2 md:after:hidden group-data-[collapsible=icon]:hidden", className),
|
|
163
|
+
}, props),
|
|
164
|
+
render,
|
|
165
|
+
state: {
|
|
166
|
+
slot: "sidebar-group-action",
|
|
167
|
+
sidebar: "group-action",
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function SidebarGroupContent({ className, ...props }) {
|
|
172
|
+
return (_jsx("div", { "data-slot": "sidebar-group-content", "data-sidebar": "group-content", className: cn("text-sm w-full", className), ...props }));
|
|
173
|
+
}
|
|
174
|
+
function SidebarMenu({ className, ...props }) {
|
|
175
|
+
return (_jsx("ul", { "data-slot": "sidebar-menu", "data-sidebar": "menu", className: cn("gap-1 flex w-full min-w-0 flex-col", className), ...props }));
|
|
176
|
+
}
|
|
177
|
+
function SidebarMenuItem({ className, ...props }) {
|
|
178
|
+
return (_jsx("li", { "data-slot": "sidebar-menu-item", "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props }));
|
|
179
|
+
}
|
|
180
|
+
const sidebarMenuButtonVariants = cva("ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-primary/2 dark:data-active:bg-primary/5 data-active:border data-active:border-primary/20 data-active:text-primary data-active:[&_svg]:stroke-[2.5] data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-md p-2 text-left text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium peer/menu-button flex w-full items-center overflow-hidden outline-hidden group/menu-button disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&_svg]:size-4 [&_svg]:shrink-0", {
|
|
181
|
+
variants: {
|
|
182
|
+
variant: {
|
|
183
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
184
|
+
outline: "bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
|
|
185
|
+
},
|
|
186
|
+
size: {
|
|
187
|
+
default: "h-8 text-sm",
|
|
188
|
+
sm: "h-7 text-xs",
|
|
189
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
defaultVariants: {
|
|
193
|
+
variant: "default",
|
|
194
|
+
size: "default",
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
function SidebarMenuButton({ render, isActive = false, variant = "default", size = "default", tooltip, className, ...props }) {
|
|
198
|
+
const { isMobile, state } = useSidebar();
|
|
199
|
+
const comp = useRender({
|
|
200
|
+
defaultTagName: "button",
|
|
201
|
+
props: mergeProps({
|
|
202
|
+
className: cn(sidebarMenuButtonVariants({ variant, size }), className),
|
|
203
|
+
}, props),
|
|
204
|
+
render: !tooltip ? render : TooltipTrigger,
|
|
205
|
+
state: {
|
|
206
|
+
slot: "sidebar-menu-button",
|
|
207
|
+
sidebar: "menu-button",
|
|
208
|
+
size,
|
|
209
|
+
active: isActive,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
if (!tooltip) {
|
|
213
|
+
return comp;
|
|
214
|
+
}
|
|
215
|
+
if (typeof tooltip === "string") {
|
|
216
|
+
tooltip = {
|
|
217
|
+
children: tooltip,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
return (_jsxs(Tooltip, { children: [comp, _jsx(TooltipContent, { side: "right", align: "center", hidden: state !== "collapsed" || isMobile, ...tooltip })
|
|
221
|
+
] }));
|
|
222
|
+
}
|
|
223
|
+
function SidebarMenuAction({ className, render, showOnHover = false, ...props }) {
|
|
224
|
+
return useRender({
|
|
225
|
+
defaultTagName: "button",
|
|
226
|
+
props: mergeProps({
|
|
227
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 aspect-square w-5 rounded-md p-0 peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-4 flex items-center justify-center outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 md:after:hidden [&>svg]:shrink-0", showOnHover &&
|
|
228
|
+
"peer-data-active/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-open:opacity-100 md:opacity-0", className),
|
|
229
|
+
}, props),
|
|
230
|
+
render,
|
|
231
|
+
state: {
|
|
232
|
+
slot: "sidebar-menu-action",
|
|
233
|
+
sidebar: "menu-action",
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function SidebarMenuBadge({ className, ...props }) {
|
|
238
|
+
return (_jsx("div", { "data-slot": "sidebar-menu-badge", "data-sidebar": "menu-badge", className: cn("text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 rounded-md px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 flex items-center justify-center tabular-nums select-none group-data-[collapsible=icon]:hidden", className), ...props }));
|
|
239
|
+
}
|
|
240
|
+
function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
241
|
+
// Random width between 50 to 90%.
|
|
242
|
+
const [width] = React.useState(() => {
|
|
243
|
+
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
244
|
+
});
|
|
245
|
+
return (_jsxs("div", { "data-slot": "sidebar-menu-skeleton", "data-sidebar": "menu-skeleton", className: cn("h-8 gap-2 rounded-md px-2 flex items-center", className), ...props, children: [showIcon && (_jsx(Skeleton, { className: "size-4 rounded-md", "data-sidebar": "menu-skeleton-icon" })), _jsx(Skeleton, { className: "h-4 max-w-(--skeleton-width) flex-1", "data-sidebar": "menu-skeleton-text", style: {
|
|
246
|
+
"--skeleton-width": width,
|
|
247
|
+
} })
|
|
248
|
+
] }));
|
|
249
|
+
}
|
|
250
|
+
function SidebarMenuSub({ className, ...props }) {
|
|
251
|
+
return (_jsx("ul", { "data-slot": "sidebar-menu-sub", "data-sidebar": "menu-sub", className: cn("border-sidebar-border mx-3.5 translate-x-px gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden flex min-w-0 flex-col", className), ...props }));
|
|
252
|
+
}
|
|
253
|
+
function SidebarMenuSubItem({ className, ...props }) {
|
|
254
|
+
return (_jsx("li", { "data-slot": "sidebar-menu-sub-item", "data-sidebar": "menu-sub-item", className: cn("group/menu-sub-item relative", className), ...props }));
|
|
255
|
+
}
|
|
256
|
+
function SidebarMenuSubButton({ render, size = "md", isActive = false, className, ...props }) {
|
|
257
|
+
return useRender({
|
|
258
|
+
defaultTagName: "a",
|
|
259
|
+
props: mergeProps({
|
|
260
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-primary/2 dark:data-active:bg-primary/5 data-active:border data-active:border-primary/20 data-active:text-primary data-active:font-medium h-7 gap-2 rounded-md px-2 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-4 flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden group-data-[collapsible=icon]:hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0", className),
|
|
261
|
+
}, props),
|
|
262
|
+
render,
|
|
263
|
+
state: {
|
|
264
|
+
slot: "sidebar-menu-sub-button",
|
|
265
|
+
sidebar: "menu-sub-button",
|
|
266
|
+
size,
|
|
267
|
+
active: isActive,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9lbGVtZW50cy9zaWRlYmFyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ25DLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQWEsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUNMLEtBQUssRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSxZQUFhLENBQUE7QUFDcEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBZSxDQUFBO0FBRXZFLE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFBO0FBQzNDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQy9DLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQTtBQUM3QixNQUFNLG9CQUFvQixHQUFHLE9B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SUFBSSxFQUFFLHlCQUF5QjtZQUMvQixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLElBQUk7WUFDSixNQUFNLEVBQUUsUUFBUTtTQUNqQjtLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLGNBQWMsRUFDZCxhQUFhLEVBQ2IsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1osWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxVQUFVLEdBQ1gsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGJpb21lLWlnbm9yZS1hbGwgbGludDogc2hhZGNuXG5pbXBvcnQgeyBtZXJnZVByb3BzIH0gZnJvbSBcIkBiYXNlLXVpL3JlYWN0L21lcmdlLXByb3BzXCJcbmltcG9ydCB7IHVzZVJlbmRlciB9IGZyb20gXCJAYmFzZS11aS9yZWFjdC91c2UtcmVuZGVyXCJcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tIFwiY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5XCJcbmltcG9ydCB7IE1lbnUgfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBjbiB9IGZyb20gXCIuLi91dGlscy9zdHlsZS50c1wiXG5pbXBvcnQgeyBpc01vYmlsZU5vdywgdXNlSXNNb2JpbGUgfSBmcm9tIFwiLi4vaG9va3MvbWVkaWEudHNcIlxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4vYnV0dG9uLnRzeFwiXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gXCIuL2lucHV0LnRzeFwiXG5pbXBvcnQgeyBTZXBhcmF0b3IgfSBmcm9tIFwiLi9zZXBhcmF0b3IudHN4XCJcbmltcG9ydCB7XG4gIFNoZWV0LFxuICBTaGVldENvbnRlbnQsXG4gIFNoZWV0RGVzY3JpcHRpb24sXG4gIFNoZWV0SGVhZGVyLFxuICBTaGVldFRpdGxlLFxufSBmcm9tIFwiLi9zaGVldC50c3hcIlxuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tIFwiLi9za2VsZXRvbi50c3hcIlxuaW1wb3J0IHsgVG9vbHRpcCwgVG9vbHRpcENvbnRlbnQsIFRvb2x0aXBUcmlnZ2VyIH0gZnJvbSBcIi4vdG9vbHRpcC50c3hcIlxuXG5jb25zdCBTSURFQkFSX0NPT0tJRV9OQU1FID0gXCJzaWRlYmFyX3N0YXRlXCJcbmNvbnN0IFNJREVCQVJfQ09PS0lFX01BWF9BR0UgPSA2MCAqIDYwICogMjQgKiA3XG5jb25zdCBTSURFQkFSX1dJRFRIID0gXCIxNnJlbVwiXG5jb25zdCBTSURFQkFSX1dJRFRIX01PQklMRSA9IFwiMThyZW1cIlxuY29uc3QgU0lERUJBUl9XSURUSF9JQ09OID0gXCIzcmVtXCJcbmNvbnN0IFNJREVCQVJfS0VZQk9BUkRfU0hPUlRDVVQgPSBcImJcIlxuXG50eXBlIFNpZGViYXJDb250ZXh0UHJvcHMgPSB7XG4gIHN0YXRlOiBcImV4cGFuZGVkXCIgfCBcImNvbGxhcHNlZFwiXG4gIG9wZW46IGJvb2xlYW5cbiAgc2V0T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWRcbiAgb3Blbk1vYmlsZTogYm9vbGVhblxuICBzZXRPcGVuTW9iaWxlOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxuICBpc01vYmlsZTogYm9vbGVhblxuICB0b2dnbGVTaWRlYmFyOiAoKSA9PiB2b2lkXG59XG5cbmNvbnN0IFNpZGViYXJDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxTaWRlYmFyQ29udGV4dFByb3BzIHwgbnVsbD4obnVsbClcblxuZnVuY3Rpb24gdXNlU2lkZWJhcigpIHtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU2lkZWJhckNvbnRleHQpXG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZVNpZGViYXIgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFNpZGViYXJQcm92aWRlci5cIilcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0XG59XG5cbmZ1bmN0aW9uIFNpZGViYXJQcm92aWRlcih7XG4gIGRlZmF1bHRPcGVuID0gdHJ1ZSxcbiAgb3Blbjogb3BlblByb3AsXG4gIG9uT3BlbkNoYW5nZTogc2V0T3BlblByb3AsXG4gIGNsYXNzTmFtZSxcbiAgc3R5bGUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4gJiB7XG4gIGRlZmF1bHRPcGVuPzogYm9vbGVhblxuICBvcGVuPzogYm9vbGVhblxuICBvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZFxufSkge1xuICBjb25zdCBpc01vYmlsZSA9IHVzZUlzTW9iaWxlKClcbiAgY29uc3QgW29wZW5Nb2JpbGUsIHNldE9wZW5Nb2JpbGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpXG5cbiAgLy8gVGhpcyBpcyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIHNpZGViYXIuXG4gIC8vIFdlIHVzZSBvcGVuUHJvcCBhbmQgc2V0T3BlblByb3AgZm9yIGNvbnRyb2wgZnJvbSBvdXRzaWRlIHRoZSBjb21wb25lbnQuXG4gIGNvbnN0IFtfb3BlbiwgX3NldE9wZW5dID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdE9wZW4pXG4gIGNvbnN0IG9wZW4gPSBvcGVuUHJvcCA/PyBfb3BlblxuICBjb25zdCBzZXRPcGVuID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHZhbHVlOiBib29sZWFuIHwgKCh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbikpID0+IHtcbiAgICAgIGNvbnN0IG9wZW5TdGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gdmFsdWUob3BlbikgOiB2YWx1ZVxuICAgICAgaWYgKHNldE9wZW5Qcm9wKSB7XG4gICAgICAgIHNldE9wZW5Qcm9wKG9wZW5TdGF0ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9zZXRPcGVuKG9wZW5TdGF0ZSlcbiAgICAgIH1cblxuICAgICAgLy8gVGhpcyBzZXRzIHRoZSBjb29raWUgdG8ga2VlcCB0aGUgc2lkZWJhciBzdGF0ZS5cbiAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke1NJREVCQVJfQ09PS0lFX05BTUV9PSR7b3BlblN0YXRlfTsgcGF0aD0vOyBtYXgtYWdlPSR7U0lERUJBUl9DT09LSUVfTUFYX0FHRX1gXG4gICAgfSxcbiAgICBbc2V0T3BlblByb3AsIG9wZW5dLFxuICApXG5cbiAgLy8gSGVscGVyIHRvIHRvZ2dsZSB0aGUgc2lkZWJhci5cbiAgLy8gUmVhZHMgbWF0Y2hNZWRpYSBzeW5jaHJvbm91c2x5IGluc3RlYWQgb2YgcmVseWluZyBvbiBgaXNNb2JpbGVgIFJlYWN0XG4gIC8vIHN0YXRlLCB3aGljaCBjYW4gYmUgbW9tZW50YXJpbHkgc3RhbGUgb24gdGhlIGZpcnN0IGNsaWNrIGFmdGVyIGFcbiAgLy8gU2lkZWJhclByb3ZpZGVyIGtleSByZW1vdW50IChlLmcuIGxhbmRpbmcg4oaSIGFydGljbGUgbmF2aWdhdGlvbikuXG4gIGNvbnN0IHRvZ2dsZVNpZGViYXIgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGlzTW9iaWxlTm93KCkgPyBzZXRPcGVuTW9iaWxlKG9wZW4gPT4gIW9wZW4pIDogc2V0T3BlbihvcGVuID0+ICFvcGVuKVxuICB9LCBbc2V0T3Blbiwgc2V0T3Blbk1vYmlsZV0pXG5cbiAgLy8gQWRkcyBhIGtleWJvYXJkIHNob3J0Y3V0IHRvIHRvZ2dsZSB0aGUgc2lkZWJhci5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmtleSA9PT0gU0lERUJBUl9LRVlCT0FSRF9TSE9SVENVVCAmJlxuICAgICAgICAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KVxuICAgICAgKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgdG9nZ2xlU2lkZWJhcigpXG4gICAgICB9XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKVxuICB9LCBbdG9nZ2xlU2lkZWJhcl0pXG5cbiAgLy8gV2UgYWRkIGEgc3RhdGUgc28gdGhhdCB3ZSBjYW4gZG8gZGF0YS1zdGF0ZT1cImV4cGFuZGVkXCIgb3IgXCJjb2xsYXBzZWRcIi5cbiAgLy8gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gc3R5bGUgdGhlIHNpZGViYXIgd2l0aCBUYWlsd2luZCBjbGFzc2VzLlxuICBjb25zdCBzdGF0ZSA9IG9wZW4gPyBcImV4cGFuZGVkXCIgOiBcImNvbGxhcHNlZFwiXG5cbiAgY29uc3QgY29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbzxTaWRlYmFyQ29udGV4dFByb3BzPihcbiAgICAoKSA9PiAoe1xuICAgICAgc3RhdGUsXG4gICAgICBvcGVuLFxuICAgICAgc2V0T3BlbixcbiAgICAgIGlzTW9iaWxlLFxuICAgICAgb3Blbk1vYmlsZSxcbiAgICAgIHNldE9wZW5Nb2JpbGUsXG4gICAgICB0b2dnbGVTaWRlYmFyLFxuICAgIH0pLFxuICAgIFtzdGF0ZSwgb3Blbiwgc2V0T3BlbiwgaXNNb2JpbGUsIG9wZW5Nb2JpbGUsIHNldE9wZW5Nb2JpbGUsIHRvZ2dsZVNpZGViYXJdLFxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U2lkZWJhckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItd3JhcHBlclwiXG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIi0tc2lkZWJhci13aWR0aFwiOiBTSURFQkFSX1dJRFRILFxuICAgICAgICAgICAgXCItLXNpZGViYXItd2lkdGgtaWNvblwiOiBTSURFQkFSX1dJRFRIX0lDT04sXG4gICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgICAgICAgfVxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwiZ3JvdXAvc2lkZWJhci13cmFwcGVyIGhhcy1kYXRhLVt2YXJpYW50PWluc2V0XTpiZy1zaWRlYmFyIGZsZXggbWluLWgtc3ZoIHctZnVsbFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICA8L1NpZGViYXJDb250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXIoe1xuICBzaWRlID0gXCJsZWZ0XCIsXG4gIHZhcmlhbnQgPSBcInNpZGViYXJcIixcbiAgY29sbGFwc2libGUgPSBcIm9mZmNhbnZhc1wiLFxuICBjbGFzc05hbWUsXG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4gJiB7XG4gIHNpZGU/OiBcImxlZnRcIiB8IFwicmlnaHRcIlxuICB2YXJpYW50PzogXCJzaWRlYmFyXCIgfCBcImZsb2F0aW5nXCIgfCBcImluc2V0XCJcbiAgY29sbGFwc2libGU/OiBcIm9mZmNhbnZhc1wiIHwgXCJpY29uXCIgfCBcIm5vbmVcIlxufSkge1xuICBjb25zdCB7IGlzTW9iaWxlLCBzdGF0ZSwgb3Blbk1vYmlsZSwgc2V0T3Blbk1vYmlsZSB9ID0gdXNlU2lkZWJhcigpXG5cbiAgaWYgKGNvbGxhcHNpYmxlID09PSBcIm5vbmVcIikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGRhdGEtc2xvdD1cInNpZGViYXJcIlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwiYmctc2lkZWJhciB0ZXh0LXNpZGViYXItZm9yZWdyb3VuZCBmbGV4IGgtZnVsbCB3LSgtLXNpZGViYXItd2lkdGgpIGZsZXgtY29sXCIsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxuXG4gIGlmIChpc01vYmlsZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8U2hlZXQgb3Blbj17b3Blbk1vYmlsZX0gb25PcGVuQ2hhbmdlPXtzZXRPcGVuTW9iaWxlfSB7Li4ucHJvcHN9PlxuICAgICAgICA8U2hlZXRDb250ZW50XG4gICAgICAgICAgZGF0YS1zaWRlYmFyPVwic2lkZWJhclwiXG4gICAgICAgICAgZGF0YS1zbG90PVwic2lkZWJhclwiXG4gICAgICAgICAgZGF0YS1tb2JpbGU9XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJiZy1zaWRlYmFyIHRleHQtc2lkZWJhci1mb3JlZ3JvdW5kIHctKC0tc2lkZWJhci13aWR0aCkgcC0wIFsmPmJ1dHRvbl06aGlkZGVuXCJcbiAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwiLS1zaWRlYmFyLXdpZHRoXCI6IFNJREVCQVJfV0lEVEhfTU9CSUxFLFxuICAgICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZGU9e3NpZGV9XG4gICAgICAgID5cbiAgICAgICAgICA8U2hlZXRIZWFkZXIgY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICAgICAgPFNoZWV0VGl0bGU+U2lkZWJhcjwvU2hlZXRUaXRsZT5cbiAgICAgICAgICAgIDxTaGVldERlc2NyaXB0aW9uPkRpc3BsYXlzIHRoZSBtb2JpbGUgc2lkZWJhci48L1NoZWV0RGVzY3JpcHRpb24+XG4gICAgICAgICAgPC9TaGVldEhlYWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIHctZnVsbCBmbGV4LWNvbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICAgPC9TaGVldENvbnRlbnQ+XG4gICAgICA8L1NoZWV0PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiZ3JvdXAgcGVlciB0ZXh0LXNpZGViYXItZm9yZWdyb3VuZCBoaWRkZW4gbWQ6YmxvY2tcIlxuICAgICAgZGF0YS1zdGF0ZT17c3RhdGV9XG4gICAgICBkYXRhLWNvbGxhcHNpYmxlPXtzdGF0ZSA9PT0gXCJjb2xsYXBzZWRcIiA/IGNvbGxhcHNpYmxlIDogXCJcIn1cbiAgICAgIGRhdGEtdmFyaWFudD17dmFyaWFudH1cbiAgICAgIGRhdGEtc2lkZT17c2lkZX1cbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXJcIlxuICAgID5cbiAgICAgIHsvKiBUaGlzIGlzIHdoYXQgaGFuZGxlcyB0aGUgc2lkZWJhciBnYXAgb24gZGVza3RvcCAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgZGF0YS1zbG90PVwic2lkZWJhci1nYXBcIlxuICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgIFwidHJhbnNpdGlvbi1bd2lkdGhdIGR1cmF0aW9uLTIwMCBlYXNlLWxpbmVhciByZWxhdGl2ZSB3LSgtLXNpZGViYXItd2lkdGgpIGJnLXRyYW5zcGFyZW50XCIsXG4gICAgICAgICAgXCJncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1vZmZjYW52YXNdOnctMFwiLFxuICAgICAgICAgIFwiZ3JvdXAtZGF0YS1bc2lkZT1yaWdodF06cm90YXRlLTE4MFwiLFxuICAgICAgICAgIHZhcmlhbnQgPT09IFwiZmxvYXRpbmdcIiB8fCB2YXJpYW50ID09PSBcImluc2V0XCJcbiAgICAgICAgICAgID8gXCJncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1pY29uXTp3LVtjYWxjKHZhcigtLXNpZGViYXItd2lkdGgtaWNvbikrKC0tc3BhY2luZyg0KSkpXVwiXG4gICAgICAgICAgICA6IFwiZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06dy0oLS1zaWRlYmFyLXdpZHRoLWljb24pXCIsXG4gICAgICAgICl9XG4gICAgICAvPlxuICAgICAgPGRpdlxuICAgICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLWNvbnRhaW5lclwiXG4gICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgXCJmaXhlZCBpbnNldC15LTAgei0xMCBoaWRkZW4gaC1zdmggdy0oLS1zaWRlYmFyLXdpZHRoKSB0cmFuc2l0aW9uLVtsZWZ0LHJpZ2h0LHdpZHRoXSBkdXJhdGlvbi0yMDAgZWFzZS1saW5lYXIgbWQ6ZmxleFwiLFxuICAgICAgICAgIHNpZGUgPT09IFwibGVmdFwiXG4gICAgICAgICAgICA/IFwibGVmdC0wIGdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPW9mZmNhbnZhc106bGVmdC1bY2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoKSotMSldXCJcbiAgICAgICAgICAgIDogXCJyaWdodC0wIGdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPW9mZmNhbnZhc106cmlnaHQtW2NhbGModmFyKC0tc2lkZWJhci13aWR0aCkqLTEpXVwiLFxuICAgICAgICAgIC8vIEFkanVzdCB0aGUgcGFkZGluZyBmb3IgZmxvYXRpbmcgYW5kIGluc2V0IHZhcmlhbnRzLlxuICAgICAgICAgIHZhcmlhbnQgPT09IFwiZmxvYXRpbmdcIiB8fCB2YXJpYW50ID09PSBcImluc2V0XCJcbiAgICAgICAgICAgID8gXCJwLTIgZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06dy1bY2FsYyh2YXIoLS1zaWRlYmFyLXdpZHRoLWljb24pKygtLXNwYWNpbmcoNCkpKzJweCldXCJcbiAgICAgICAgICAgIDogXCJncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1pY29uXTp3LSgtLXNpZGViYXItd2lkdGgtaWNvbikgZ3JvdXAtZGF0YS1bc2lkZT1sZWZ0XTpib3JkZXItciBncm91cC1kYXRhLVtzaWRlPXJpZ2h0XTpib3JkZXItbFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS1zaWRlYmFyPVwic2lkZWJhclwiXG4gICAgICAgICAgZGF0YS1zbG90PVwic2lkZWJhci1pbm5lclwiXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmctc2lkZWJhciBncm91cC1kYXRhLVt2YXJpYW50PWZsb2F0aW5nXTpyaW5nLXNpZGViYXItYm9yZGVyIGdyb3VwLWRhdGEtW3ZhcmlhbnQ9ZmxvYXRpbmddOnJvdW5kZWQtbGcgZ3JvdXAtZGF0YS1bdmFyaWFudD1mbG9hdGluZ106c2hhZG93LXNtIGdyb3VwLWRhdGEtW3ZhcmlhbnQ9ZmxvYXRpbmddOnJpbmctMSBmbGV4IHNpemUtZnVsbCBmbGV4LWNvbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhclRyaWdnZXIoe1xuICBjbGFzc05hbWUsXG4gIG9uQ2xpY2ssXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQnV0dG9uPikge1xuICBjb25zdCB7IHRvZ2dsZVNpZGViYXIgfSA9IHVzZVNpZGViYXIoKVxuXG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgZGF0YS1zaWRlYmFyPVwidHJpZ2dlclwiXG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLXRyaWdnZXJcIlxuICAgICAgdmFyaWFudD1cImdob3N0XCJcbiAgICAgIHNpemU9XCJpY29uLXNtXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oY2xhc3NOYW1lKX1cbiAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgb25DbGljaz8uKGV2ZW50KVxuICAgICAgICB0b2dnbGVTaWRlYmFyKClcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgPlxuICAgICAgPE1lbnUgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5Ub2dnbGUgU2lkZWJhcjwvc3Bhbj5cbiAgICA8L0J1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyUmFpbCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4pIHtcbiAgY29uc3QgeyB0b2dnbGVTaWRlYmFyIH0gPSB1c2VTaWRlYmFyKClcblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGRhdGEtc2lkZWJhcj1cInJhaWxcIlxuICAgICAgZGF0YS1zbG90PVwic2lkZWJhci1yYWlsXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUb2dnbGUgU2lkZWJhclwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBvbkNsaWNrPXt0b2dnbGVTaWRlYmFyfVxuICAgICAgdGl0bGU9XCJUb2dnbGUgU2lkZWJhclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImhvdmVyOmFmdGVyOmJnLXNpZGViYXItYm9yZGVyIGFic29sdXRlIGluc2V0LXktMCB6LTIwIGhpZGRlbiB3LTQgLXRyYW5zbGF0ZS14LTEvMiB0cmFuc2l0aW9uLWFsbCBlYXNlLWxpbmVhciBncm91cC1kYXRhLVtzaWRlPWxlZnRdOi1yaWdodC00IGdyb3VwLWRhdGEtW3NpZGU9cmlnaHRdOmxlZnQtMCBhZnRlcjphYnNvbHV0ZSBhZnRlcjppbnNldC15LTAgYWZ0ZXI6bGVmdC0xLzIgYWZ0ZXI6dy1bMnB4XSBzbTpmbGV4XCIsXG4gICAgICAgIFwiaW4tZGF0YS1bc2lkZT1sZWZ0XTpjdXJzb3Itdy1yZXNpemUgaW4tZGF0YS1bc2lkZT1yaWdodF06Y3Vyc29yLWUtcmVzaXplXCIsXG4gICAgICAgIFwiW1tkYXRhLXNpZGU9bGVmdF1bZGF0YS1zdGF0ZT1jb2xsYXBzZWRdXyZdOmN1cnNvci1lLXJlc2l6ZSBbW2RhdGEtc2lkZT1yaWdodF1bZGF0YS1zdGF0ZT1jb2xsYXBzZWRdXyZdOmN1cnNvci13LXJlc2l6ZVwiLFxuICAgICAgICBcImhvdmVyOmdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPW9mZmNhbnZhc106Ymctc2lkZWJhciBncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1vZmZjYW52YXNdOnRyYW5zbGF0ZS14LTAgZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9b2ZmY2FudmFzXTphZnRlcjpsZWZ0LWZ1bGxcIixcbiAgICAgICAgXCJbW2RhdGEtc2lkZT1sZWZ0XVtkYXRhLWNvbGxhcHNpYmxlPW9mZmNhbnZhc11fJl06LXJpZ2h0LTJcIixcbiAgICAgICAgXCJbW2RhdGEtc2lkZT1yaWdodF1bZGF0YS1jb2xsYXBzaWJsZT1vZmZjYW52YXNdXyZdOi1sZWZ0LTJcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJJbnNldCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJtYWluXCI+KSB7XG4gIHJldHVybiAoXG4gICAgPG1haW5cbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItaW5zZXRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJiZy1iYWNrZ3JvdW5kIG1kOnBlZXItZGF0YS1bdmFyaWFudD1pbnNldF06bS0yIG1kOnBlZXItZGF0YS1bdmFyaWFudD1pbnNldF06bWwtMCBtZDpwZWVyLWRhdGEtW3ZhcmlhbnQ9aW5zZXRdOnJvdW5kZWQteGwgbWQ6cGVlci1kYXRhLVt2YXJpYW50PWluc2V0XTpzaGFkb3ctc20gbWQ6cGVlci1kYXRhLVt2YXJpYW50PWluc2V0XTpwZWVyLWRhdGEtW3N0YXRlPWNvbGxhcHNlZF06bWwtMiByZWxhdGl2ZSBmbGV4IHctZnVsbCBmbGV4LTEgZmxleC1jb2xcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJJbnB1dCh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBJbnB1dD4pIHtcbiAgcmV0dXJuIChcbiAgICA8SW5wdXRcbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItaW5wdXRcIlxuICAgICAgZGF0YS1zaWRlYmFyPVwiaW5wdXRcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcImJnLWJhY2tncm91bmQgaC04IHctZnVsbCBzaGFkb3ctbm9uZVwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhckhlYWRlcih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLWhlYWRlclwiXG4gICAgICBkYXRhLXNpZGViYXI9XCJoZWFkZXJcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcImdhcC0yIHAtMiBmbGV4IGZsZXgtY29sXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyRm9vdGVyKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImRpdlwiPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItZm9vdGVyXCJcbiAgICAgIGRhdGEtc2lkZWJhcj1cImZvb3RlclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiZ2FwLTIgcC0yIGZsZXggZmxleC1jb2xcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJTZXBhcmF0b3Ioe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgU2VwYXJhdG9yPikge1xuICByZXR1cm4gKFxuICAgIDxTZXBhcmF0b3JcbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItc2VwYXJhdG9yXCJcbiAgICAgIGRhdGEtc2lkZWJhcj1cInNlcGFyYXRvclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiYmctc2lkZWJhci1ib3JkZXIgbXgtMiB3LWF1dG9cIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJDb250ZW50KHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImRpdlwiPikge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItY29udGVudFwiXG4gICAgICBkYXRhLXNpZGViYXI9XCJjb250ZW50XCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwibm8tc2Nyb2xsYmFyIGdhcC0yIGZsZXggbWluLWgtMCBmbGV4LTEgZmxleC1jb2wgb3ZlcmZsb3ctYXV0byBncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1pY29uXTpvdmVyZmxvdy1oaWRkZW5cIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJHcm91cCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLWdyb3VwXCJcbiAgICAgIGRhdGEtc2lkZWJhcj1cImdyb3VwXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXCJwLTIgcmVsYXRpdmUgZmxleCB3LWZ1bGwgbWluLXctMCBmbGV4LWNvbFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhckdyb3VwTGFiZWwoe1xuICBjbGFzc05hbWUsXG4gIHJlbmRlcixcbiAgLi4ucHJvcHNcbn06IHVzZVJlbmRlci5Db21wb25lbnRQcm9wczxcImRpdlwiPiAmIFJlYWN0LkNvbXBvbmVudFByb3BzPFwiZGl2XCI+KSB7XG4gIHJldHVybiB1c2VSZW5kZXIoe1xuICAgIGRlZmF1bHRUYWdOYW1lOiBcImRpdlwiLFxuICAgIHByb3BzOiBtZXJnZVByb3BzPFwiZGl2XCI+KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgICAgIFwidGV4dC1zaWRlYmFyLWZvcmVncm91bmQvNzAgcmluZy1zaWRlYmFyLXJpbmcgaC04IHJvdW5kZWQtbWQgcHgtMiB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tW21hcmdpbixvcGFjaXR5XSBkdXJhdGlvbi0yMDAgZWFzZS1saW5lYXIgZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06LW10LTggZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06b3BhY2l0eS0wIGZvY3VzLXZpc2libGU6cmluZy0yIFsmPnN2Z106c2l6ZS00IGZsZXggc2hyaW5rLTAgaXRlbXMtY2VudGVyIG91dGxpbmUtaGlkZGVuIFsmPnN2Z106c2hyaW5rLTBcIixcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgcHJvcHMsXG4gICAgKSxcbiAgICByZW5kZXIsXG4gICAgc3RhdGU6IHtcbiAgICAgIHNsb3Q6IFwic2lkZWJhci1ncm91cC1sYWJlbFwiLFxuICAgICAgc2lkZWJhcjogXCJncm91cC1sYWJlbFwiLFxuICAgIH0sXG4gIH0pXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJHcm91cEFjdGlvbih7XG4gIGNsYXNzTmFtZSxcbiAgcmVuZGVyLFxuICAuLi5wcm9wc1xufTogdXNlUmVuZGVyLkNvbXBvbmVudFByb3BzPFwiYnV0dG9uXCI+ICYgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4pIHtcbiAgcmV0dXJuIHVzZVJlbmRlcih7XG4gICAgZGVmYXVsdFRhZ05hbWU6IFwiYnV0dG9uXCIsXG4gICAgcHJvcHM6IG1lcmdlUHJvcHM8XCJidXR0b25cIj4oXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogY24oXG4gICAgICAgICAgXCJ0ZXh0LXNpZGViYXItZm9yZWdyb3VuZCByaW5nLXNpZGViYXItcmluZyBob3ZlcjpiZy1zaWRlYmFyLWFjY2VudCBob3Zlcjp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmQgYWJzb2x1dGUgdG9wLTMuNSByaWdodC0zIHctNSByb3VuZGVkLW1kIHAtMCBmb2N1cy12aXNpYmxlOnJpbmctMiBbJj5zdmddOnNpemUtNCBmbGV4IGFzcGVjdC1zcXVhcmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIG91dGxpbmUtaGlkZGVuIHRyYW5zaXRpb24tdHJhbnNmb3JtIFsmPnN2Z106c2hyaW5rLTAgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6LWluc2V0LTIgbWQ6YWZ0ZXI6aGlkZGVuIGdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPWljb25dOmhpZGRlblwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBwcm9wcyxcbiAgICApLFxuICAgIHJlbmRlcixcbiAgICBzdGF0ZToge1xuICAgICAgc2xvdDogXCJzaWRlYmFyLWdyb3VwLWFjdGlvblwiLFxuICAgICAgc2lkZWJhcjogXCJncm91cC1hY3Rpb25cIixcbiAgICB9LFxuICB9KVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyR3JvdXBDb250ZW50KHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLWdyb3VwLWNvbnRlbnRcIlxuICAgICAgZGF0YS1zaWRlYmFyPVwiZ3JvdXAtY29udGVudFwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1zbSB3LWZ1bGxcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJNZW51KHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcInVsXCI+KSB7XG4gIHJldHVybiAoXG4gICAgPHVsXG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLW1lbnVcIlxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudVwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiZ2FwLTEgZmxleCB3LWZ1bGwgbWluLXctMCBmbGV4LWNvbFwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhck1lbnVJdGVtKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImxpXCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGxpXG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLW1lbnUtaXRlbVwiXG4gICAgICBkYXRhLXNpZGViYXI9XCJtZW51LWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcImdyb3VwL21lbnUtaXRlbSByZWxhdGl2ZVwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuY29uc3Qgc2lkZWJhck1lbnVCdXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJyaW5nLXNpZGViYXItcmluZyBob3ZlcjpiZy1zaWRlYmFyLWFjY2VudCBob3Zlcjp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmQgYWN0aXZlOmJnLXNpZGViYXItYWNjZW50IGFjdGl2ZTp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmQgZGF0YS1hY3RpdmU6YmctcHJpbWFyeS8yIGRhcms6ZGF0YS1hY3RpdmU6YmctcHJpbWFyeS81IGRhdGEtYWN0aXZlOmJvcmRlciBkYXRhLWFjdGl2ZTpib3JkZXItcHJpbWFyeS8yMCBkYXRhLWFjdGl2ZTp0ZXh0LXByaW1hcnkgZGF0YS1hY3RpdmU6WyZfc3ZnXTpzdHJva2UtWzIuNV0gZGF0YS1vcGVuOmhvdmVyOmJnLXNpZGViYXItYWNjZW50IGRhdGEtb3Blbjpob3Zlcjp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmQgZ2FwLTIgcm91bmRlZC1tZCBwLTIgdGV4dC1sZWZ0IHRleHQtc20gdHJhbnNpdGlvbi1bd2lkdGgsaGVpZ2h0LHBhZGRpbmddIGdyb3VwLWhhcy1kYXRhLVtzaWRlYmFyPW1lbnUtYWN0aW9uXS9tZW51LWl0ZW06cHItOCBncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1pY29uXTpzaXplLTghIGdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPWljb25dOnAtMiEgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZGF0YS1hY3RpdmU6Zm9udC1tZWRpdW0gcGVlci9tZW51LWJ1dHRvbiBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIG91dGxpbmUtaGlkZGVuIGdyb3VwL21lbnUtYnV0dG9uIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MCBhcmlhLWRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgYXJpYS1kaXNhYmxlZDpvcGFjaXR5LTUwIFsmPnNwYW46bGFzdC1jaGlsZF06dHJ1bmNhdGUgWyZfc3ZnXTpzaXplLTQgWyZfc3ZnXTpzaHJpbmstMFwiLFxuICB7XG4gICAgdmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IHtcbiAgICAgICAgZGVmYXVsdDogXCJob3ZlcjpiZy1zaWRlYmFyLWFjY2VudCBob3Zlcjp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmRcIixcbiAgICAgICAgb3V0bGluZTpcbiAgICAgICAgICBcImJnLWJhY2tncm91bmQgaG92ZXI6Ymctc2lkZWJhci1hY2NlbnQgaG92ZXI6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kIHNoYWRvdy1bMF8wXzBfMXB4X2hzbCh2YXIoLS1zaWRlYmFyLWJvcmRlcikpXSBob3ZlcjpzaGFkb3ctWzBfMF8wXzFweF9oc2wodmFyKC0tc2lkZWJhci1hY2NlbnQpKV1cIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwiaC04IHRleHQtc21cIixcbiAgICAgICAgc206IFwiaC03IHRleHQteHNcIixcbiAgICAgICAgbGc6IFwiaC0xMiB0ZXh0LXNtIGdyb3VwLWRhdGEtW2NvbGxhcHNpYmxlPWljb25dOnAtMCFcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgICAgc2l6ZTogXCJkZWZhdWx0XCIsXG4gICAgfSxcbiAgfSxcbilcblxuZnVuY3Rpb24gU2lkZWJhck1lbnVCdXR0b24oe1xuICByZW5kZXIsXG4gIGlzQWN0aXZlID0gZmFsc2UsXG4gIHZhcmlhbnQgPSBcImRlZmF1bHRcIixcbiAgc2l6ZSA9IFwiZGVmYXVsdFwiLFxuICB0b29sdGlwLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiB1c2VSZW5kZXIuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJlxuICBSZWFjdC5Db21wb25lbnRQcm9wczxcImJ1dHRvblwiPiAmIHtcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW5cbiAgICB0b29sdGlwPzogc3RyaW5nIHwgUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRvb2x0aXBDb250ZW50PlxuICB9ICYgVmFyaWFudFByb3BzPHR5cGVvZiBzaWRlYmFyTWVudUJ1dHRvblZhcmlhbnRzPikge1xuICBjb25zdCB7IGlzTW9iaWxlLCBzdGF0ZSB9ID0gdXNlU2lkZWJhcigpXG4gIGNvbnN0IGNvbXAgPSB1c2VSZW5kZXIoe1xuICAgIGRlZmF1bHRUYWdOYW1lOiBcImJ1dHRvblwiLFxuICAgIHByb3BzOiBtZXJnZVByb3BzPFwiYnV0dG9uXCI+KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IGNuKHNpZGViYXJNZW51QnV0dG9uVmFyaWFudHMoeyB2YXJpYW50LCBzaXplIH0pLCBjbGFzc05hbWUpLFxuICAgICAgfSxcbiAgICAgIHByb3BzLFxuICAgICksXG4gICAgcmVuZGVyOiAhdG9vbHRpcCA/IHJlbmRlciA6IFRvb2x0aXBUcmlnZ2VyLFxuICAgIHN0YXRlOiB7XG4gICAgICBzbG90OiBcInNpZGViYXItbWVudS1idXR0b25cIixcbiAgICAgIHNpZGViYXI6IFwibWVudS1idXR0b25cIixcbiAgICAgIHNpemUsXG4gICAgICBhY3RpdmU6IGlzQWN0aXZlLFxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKCF0b29sdGlwKSB7XG4gICAgcmV0dXJuIGNvbXBcbiAgfVxuXG4gIGlmICh0eXBlb2YgdG9vbHRpcCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRvb2x0aXAgPSB7XG4gICAgICBjaGlsZHJlbjogdG9vbHRpcCxcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUb29sdGlwPlxuICAgICAge2NvbXB9XG4gICAgICA8VG9vbHRpcENvbnRlbnRcbiAgICAgICAgc2lkZT1cInJpZ2h0XCJcbiAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICBoaWRkZW49e3N0YXRlICE9PSBcImNvbGxhcHNlZFwiIHx8IGlzTW9iaWxlfVxuICAgICAgICB7Li4udG9vbHRpcH1cbiAgICAgIC8+XG4gICAgPC9Ub29sdGlwPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJNZW51QWN0aW9uKHtcbiAgY2xhc3NOYW1lLFxuICByZW5kZXIsXG4gIHNob3dPbkhvdmVyID0gZmFsc2UsXG4gIC4uLnByb3BzXG59OiB1c2VSZW5kZXIuQ29tcG9uZW50UHJvcHM8XCJidXR0b25cIj4gJlxuICBSZWFjdC5Db21wb25lbnRQcm9wczxcImJ1dHRvblwiPiAmIHtcbiAgICBzaG93T25Ib3Zlcj86IGJvb2xlYW5cbiAgfSkge1xuICByZXR1cm4gdXNlUmVuZGVyKHtcbiAgICBkZWZhdWx0VGFnTmFtZTogXCJidXR0b25cIixcbiAgICBwcm9wczogbWVyZ2VQcm9wczxcImJ1dHRvblwiPihcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbihcbiAgICAgICAgICBcInRleHQtc2lkZWJhci1mb3JlZ3JvdW5kIHJpbmctc2lkZWJhci1yaW5nIGhvdmVyOmJnLXNpZGViYXItYWNjZW50IGhvdmVyOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCBwZWVyLWhvdmVyL21lbnUtYnV0dG9uOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCBhYnNvbHV0ZSB0b3AtMS41IHJpZ2h0LTEgYXNwZWN0LXNxdWFyZSB3LTUgcm91bmRlZC1tZCBwLTAgcGVlci1kYXRhLVtzaXplPWRlZmF1bHRdL21lbnUtYnV0dG9uOnRvcC0xLjUgcGVlci1kYXRhLVtzaXplPWxnXS9tZW51LWJ1dHRvbjp0b3AtMi41IHBlZXItZGF0YS1bc2l6ZT1zbV0vbWVudS1idXR0b246dG9wLTEgZm9jdXMtdmlzaWJsZTpyaW5nLTIgWyY+c3ZnXTpzaXplLTQgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3V0bGluZS1oaWRkZW4gdHJhbnNpdGlvbi10cmFuc2Zvcm0gZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06aGlkZGVuIGFmdGVyOmFic29sdXRlIGFmdGVyOi1pbnNldC0yIG1kOmFmdGVyOmhpZGRlbiBbJj5zdmddOnNocmluay0wXCIsXG4gICAgICAgICAgc2hvd09uSG92ZXIgJiZcbiAgICAgICAgICAgIFwicGVlci1kYXRhLWFjdGl2ZS9tZW51LWJ1dHRvbjp0ZXh0LXNpZGViYXItYWNjZW50LWZvcmVncm91bmQgZ3JvdXAtZm9jdXMtd2l0aGluL21lbnUtaXRlbTpvcGFjaXR5LTEwMCBncm91cC1ob3Zlci9tZW51LWl0ZW06b3BhY2l0eS0xMDAgZGF0YS1vcGVuOm9wYWNpdHktMTAwIG1kOm9wYWNpdHktMFwiLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBwcm9wcyxcbiAgICApLFxuICAgIHJlbmRlcixcbiAgICBzdGF0ZToge1xuICAgICAgc2xvdDogXCJzaWRlYmFyLW1lbnUtYWN0aW9uXCIsXG4gICAgICBzaWRlYmFyOiBcIm1lbnUtYWN0aW9uXCIsXG4gICAgfSxcbiAgfSlcbn1cblxuZnVuY3Rpb24gU2lkZWJhck1lbnVCYWRnZSh7XG4gIGNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwiZGl2XCI+KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1zbG90PVwic2lkZWJhci1tZW51LWJhZGdlXCJcbiAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtYmFkZ2VcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJ0ZXh0LXNpZGViYXItZm9yZWdyb3VuZCBwZWVyLWhvdmVyL21lbnUtYnV0dG9uOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCBwZWVyLWRhdGEtYWN0aXZlL21lbnUtYnV0dG9uOnRleHQtc2lkZWJhci1hY2NlbnQtZm9yZWdyb3VuZCBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHJpZ2h0LTEgZmxleCBoLTUgbWluLXctNSByb3VuZGVkLW1kIHB4LTEgdGV4dC14cyBmb250LW1lZGl1bSBwZWVyLWRhdGEtW3NpemU9ZGVmYXVsdF0vbWVudS1idXR0b246dG9wLTEuNSBwZWVyLWRhdGEtW3NpemU9bGddL21lbnUtYnV0dG9uOnRvcC0yLjUgcGVlci1kYXRhLVtzaXplPXNtXS9tZW51LWJ1dHRvbjp0b3AtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0YWJ1bGFyLW51bXMgc2VsZWN0LW5vbmUgZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06aGlkZGVuXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBTaWRlYmFyTWVudVNrZWxldG9uKHtcbiAgY2xhc3NOYW1lLFxuICBzaG93SWNvbiA9IGZhbHNlLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4gJiB7XG4gIHNob3dJY29uPzogYm9vbGVhblxufSkge1xuICAvLyBSYW5kb20gd2lkdGggYmV0d2VlbiA1MCB0byA5MCUuXG4gIGNvbnN0IFt3aWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIGAke01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQwKSArIDUwfSVgXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJzaWRlYmFyLW1lbnUtc2tlbGV0b25cIlxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1za2VsZXRvblwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiaC04IGdhcC0yIHJvdW5kZWQtbWQgcHgtMiBmbGV4IGl0ZW1zLWNlbnRlclwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIHtzaG93SWNvbiAmJiAoXG4gICAgICAgIDxTa2VsZXRvblxuICAgICAgICAgIGNsYXNzTmFtZT1cInNpemUtNCByb3VuZGVkLW1kXCJcbiAgICAgICAgICBkYXRhLXNpZGViYXI9XCJtZW51LXNrZWxldG9uLWljb25cIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxTa2VsZXRvblxuICAgICAgICBjbGFzc05hbWU9XCJoLTQgbWF4LXctKC0tc2tlbGV0b24td2lkdGgpIGZsZXgtMVwiXG4gICAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtc2tlbGV0b24tdGV4dFwiXG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIi0tc2tlbGV0b24td2lkdGhcIjogd2lkdGgsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhck1lbnVTdWIoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidWxcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dWxcbiAgICAgIGRhdGEtc2xvdD1cInNpZGViYXItbWVudS1zdWJcIlxuICAgICAgZGF0YS1zaWRlYmFyPVwibWVudS1zdWJcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJib3JkZXItc2lkZWJhci1ib3JkZXIgbXgtMy41IHRyYW5zbGF0ZS14LXB4IGdhcC0xIGJvcmRlci1sIHB4LTIuNSBweS0wLjUgZ3JvdXAtZGF0YS1bY29sbGFwc2libGU9aWNvbl06aGlkZGVuIGZsZXggbWluLXctMCBmbGV4LWNvbFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gU2lkZWJhck1lbnVTdWJJdGVtKHtcbiAgY2xhc3NOYW1lLFxuICAuLi5wcm9wc1xufTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJsaVwiPikge1xuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgZGF0YS1zbG90PVwic2lkZWJhci1tZW51LXN1Yi1pdGVtXCJcbiAgICAgIGRhdGEtc2lkZWJhcj1cIm1lbnUtc3ViLWl0ZW1cIlxuICAgICAgY2xhc3NOYW1lPXtjbihcImdyb3VwL21lbnUtc3ViLWl0ZW0gcmVsYXRpdmVcIiwgY2xhc3NOYW1lKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApXG59XG5cbmZ1bmN0aW9uIFNpZGViYXJNZW51U3ViQnV0dG9uKHtcbiAgcmVuZGVyLFxuICBzaXplID0gXCJtZFwiLFxuICBpc0FjdGl2ZSA9IGZhbHNlLFxuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiB1c2VSZW5kZXIuQ29tcG9uZW50UHJvcHM8XCJhXCI+ICZcbiAgUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJhXCI+ICYge1xuICAgIHNpemU/OiBcInNtXCIgfCBcIm1kXCJcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW5cbiAgfSkge1xuICByZXR1cm4gdXNlUmVuZGVyKHtcbiAgICBkZWZhdWx0VGFnTmFtZTogXCJhXCIsXG4gICAgcHJvcHM6IG1lcmdlUHJvcHM8XCJhXCI+KFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IGNuKFxuICAgICAgICAgIFwidGV4dC1zaWRlYmFyLWZvcmVncm91bmQgcmluZy1zaWRlYmFyLXJpbmcgaG92ZXI6Ymctc2lkZWJhci1hY2NlbnQgaG92ZXI6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kIGFjdGl2ZTpiZy1zaWRlYmFyLWFjY2VudCBhY3RpdmU6dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kIFsmPnN2Z106dGV4dC1zaWRlYmFyLWFjY2VudC1mb3JlZ3JvdW5kIGRhdGEtYWN0aXZlOmJnLXByaW1hcnkvMiBkYXJrOmRhdGEtYWN0aXZlOmJnLXByaW1hcnkvNSBkYXRhLWFjdGl2ZTpib3JkZXIgZGF0YS1hY3RpdmU6Ym9yZGVyLXByaW1hcnkvMjAgZGF0YS1hY3RpdmU6dGV4dC1wcmltYXJ5IGRhdGEtYWN0aXZlOmZvbnQtbWVkaXVtIGgtNyBnYXAtMiByb3VuZGVkLW1kIHB4LTIgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZGF0YS1bc2l6ZT1tZF06dGV4dC1zbSBkYXRhLVtzaXplPXNtXTp0ZXh0LXhzIFsmPnN2Z106c2l6ZS00IGZsZXggbWluLXctMCAtdHJhbnNsYXRlLXgtcHggaXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBvdXRsaW5lLWhpZGRlbiBncm91cC1kYXRhLVtjb2xsYXBzaWJsZT1pY29uXTpoaWRkZW4gZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIGFyaWEtZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBhcmlhLWRpc2FibGVkOm9wYWNpdHktNTAgWyY+c3BhbjpsYXN0LWNoaWxkXTp0cnVuY2F0ZSBbJj5zdmddOnNocmluay0wXCIsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHByb3BzLFxuICAgICksXG4gICAgcmVuZGVyLFxuICAgIHN0YXRlOiB7XG4gICAgICBzbG90OiBcInNpZGViYXItbWVudS1zdWItYnV0dG9uXCIsXG4gICAgICBzaWRlYmFyOiBcIm1lbnUtc3ViLWJ1dHRvblwiLFxuICAgICAgc2l6ZSxcbiAgICAgIGFjdGl2ZTogaXNBY3RpdmUsXG4gICAgfSxcbiAgfSlcbn1cblxuZXhwb3J0IHtcbiAgU2lkZWJhcixcbiAgU2lkZWJhckNvbnRlbnQsXG4gIFNpZGViYXJGb290ZXIsXG4gIFNpZGViYXJHcm91cCxcbiAgU2lkZWJhckdyb3VwQWN0aW9uLFxuICBTaWRlYmFyR3JvdXBDb250ZW50LFxuICBTaWRlYmFyR3JvdXBMYWJlbCxcbiAgU2lkZWJhckhlYWRlcixcbiAgU2lkZWJhcklucHV0LFxuICBTaWRlYmFySW5zZXQsXG4gIFNpZGViYXJNZW51LFxuICBTaWRlYmFyTWVudUFjdGlvbixcbiAgU2lkZWJhck1lbnVCYWRnZSxcbiAgU2lkZWJhck1lbnVCdXR0b24sXG4gIFNpZGViYXJNZW51SXRlbSxcbiAgU2lkZWJhck1lbnVTa2VsZXRvbixcbiAgU2lkZWJhck1lbnVTdWIsXG4gIFNpZGViYXJNZW51U3ViQnV0dG9uLFxuICBTaWRlYmFyTWVudVN1Ykl0ZW0sXG4gIFNpZGViYXJQcm92aWRlcixcbiAgU2lkZWJhclJhaWwsXG4gIFNpZGViYXJTZXBhcmF0b3IsXG4gIFNpZGViYXJUcmlnZ2VyLFxuICB1c2VTaWRlYmFyLFxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../utils/style.js";
|
|
3
|
+
function Skeleton({ className, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "skeleton", className: cn("bg-muted rounded-md animate-pulse", className), ...props }));
|
|
5
|
+
}
|
|
6
|
+
export { Skeleton };
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZWxlbWVudHMvc2tlbGV0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdEMsU0FBUyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQStCO0lBQ3BFLE9BQU8sQ0FDTCwyQkFDWSxVQUFVLEVBQ3BCLFNBQVMsRUFBRSxFQUFFLENBQUMsbUNBQW1DLEVBQUUsU0FBUyxDQUFDLEtBQ3pELEtBQUssR0FDVCxDQUNILENBQUE7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vdXRpbHMvc3R5bGUudHNcIlxuXG5mdW5jdGlvbiBTa2VsZXRvbih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJkaXZcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJza2VsZXRvblwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiYmctbXV0ZWQgcm91bmRlZC1tZCBhbmltYXRlLXB1bHNlXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgeyBTa2VsZXRvbiB9XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Slider as SliderPrimitive } from "@base-ui/react/slider";
|
|
4
|
+
import { cn } from "../utils/style.js";
|
|
5
|
+
function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
|
|
6
|
+
const _values = React.useMemo(() => Array.isArray(value)
|
|
7
|
+
? value
|
|
8
|
+
: Array.isArray(defaultValue)
|
|
9
|
+
? defaultValue
|
|
10
|
+
: [min, max], [value, defaultValue, min, max]);
|
|
11
|
+
return (_jsx(SliderPrimitive.Root, { className: cn("data-horizontal:w-full data-vertical:h-full", className), "data-slot": "slider", defaultValue: defaultValue, value: value, min: min, max: max, thumbAlignment: "edge", ...props, children: _jsxs(SliderPrimitive.Control, { className: "relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col", children: [
|
|
12
|
+
_jsx(SliderPrimitive.Track, { "data-slot": "slider-track", className: "relative grow overflow-hidden rounded-full bg-muted select-none data-horizontal:h-1.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-1.5", children: _jsx(SliderPrimitive.Indicator, { "data-slot": "slider-range", className: "bg-primary select-none data-horizontal:h-full data-vertical:w-full" }) }), Array.from({ length: _values.length }, (_, index) => (_jsx(SliderPrimitive.Thumb, { "data-slot": "slider-thumb", className: "block size-4 shrink-0 rounded-full border border-primary bg-white shadow-sm ring-ring/50 transition-[color,box-shadow] select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50" }, index)))] }) }));
|
|
13
|
+
}
|
|
14
|
+
export { Slider };
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2VsZW1lbnRzL3NsaWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQzlCLE9BQU8sRUFBRSxNQUFNLElBQUksZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRDLFNBQVMsTUFBTSxDQUFDLEVBQ2QsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsR0FBRyxHQUFHLENBQUMsRUFDUCxHQUFHLEdBQUcsR0FBRyxFQUNULEdBQUcsS0FBSyxFQUNtQjtJQUMzQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUMzQixHQUFHLEVBQUUsQ0FDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNsQixDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDLENBQUMsWUFBWTtZQUNkLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDbEIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FDaEMsQ0FBQTtJQUVELE9BQU8sQ0FDTCxLQUFDLGVBQWUsQ0FBQyxJQUFJLElBQ25CLFNBQVMsRUFBRSxFQUFFLENBQUMsNkNBQTZDLEVBQUUsU0FBUyxDQUFDLGVBQzdELFFBQVEsRUFDbEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsS0FBSyxFQUFFLEtBQUssRUFDWixHQUFHLEVBQUUsR0FBRyxFQUNSLEdBQUcsRUFBRSxHQUFHLEVBQ1IsY0FBYyxFQUFDLE1BQU0sS0FDakIsS0FBSyxZQUVULE1BQUMsZUFBZSxDQUFDLE9BQU8sSUFBQyxTQUFTLEVBQUMsMktBQTJLO2dCQUM1TSxLQUFDLGVBQWUsQ0FBQyxLQUFLLGlCQUNWLGNBQWMsRUFDeEIsU0FBUyxFQUFDLHVKQUF1SixZQUVqSyxLQUFDLGVBQWUsQ0FBQyxTQUFTLGlCQUNkLGNBQWMsRUFDeEIsU0FBUyxFQUFDLG9FQUFvRSxHQUM5RSxHQUNvQixFQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3BELEtBQUMsZUFBZSxDQUFDLEtBQUssaUJBQ1YsY0FBYyxFQUV4QixTQUFTLEVBQUMsb1BBQW9QLElBRHpQLEtBQUssQ0FFVixDQUNILENBQUMsSUFDc0IsR0FDTCxDQUN4QixDQUFBO0FBQ0gsQ0FBQztBQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBTbGlkZXIgYXMgU2xpZGVyUHJpbWl0aXZlIH0gZnJvbSBcIkBiYXNlLXVpL3JlYWN0L3NsaWRlclwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL3V0aWxzL3N0eWxlLnRzXCJcblxuZnVuY3Rpb24gU2xpZGVyKHtcbiAgY2xhc3NOYW1lLFxuICBkZWZhdWx0VmFsdWUsXG4gIHZhbHVlLFxuICBtaW4gPSAwLFxuICBtYXggPSAxMDAsXG4gIC4uLnByb3BzXG59OiBTbGlkZXJQcmltaXRpdmUuUm9vdC5Qcm9wcykge1xuICBjb25zdCBfdmFsdWVzID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZVxuICAgICAgICA6IEFycmF5LmlzQXJyYXkoZGVmYXVsdFZhbHVlKVxuICAgICAgICAgID8gZGVmYXVsdFZhbHVlXG4gICAgICAgICAgOiBbbWluLCBtYXhdLFxuICAgIFt2YWx1ZSwgZGVmYXVsdFZhbHVlLCBtaW4sIG1heF0sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTbGlkZXJQcmltaXRpdmUuUm9vdFxuICAgICAgY2xhc3NOYW1lPXtjbihcImRhdGEtaG9yaXpvbnRhbDp3LWZ1bGwgZGF0YS12ZXJ0aWNhbDpoLWZ1bGxcIiwgY2xhc3NOYW1lKX1cbiAgICAgIGRhdGEtc2xvdD1cInNsaWRlclwiXG4gICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG1pbj17bWlufVxuICAgICAgbWF4PXttYXh9XG4gICAgICB0aHVtYkFsaWdubWVudD1cImVkZ2VcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxTbGlkZXJQcmltaXRpdmUuQ29udHJvbCBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IHctZnVsbCB0b3VjaC1ub25lIGl0ZW1zLWNlbnRlciBzZWxlY3Qtbm9uZSBkYXRhLWRpc2FibGVkOm9wYWNpdHktNTAgZGF0YS12ZXJ0aWNhbDpoLWZ1bGwgZGF0YS12ZXJ0aWNhbDptaW4taC00MCBkYXRhLXZlcnRpY2FsOnctYXV0byBkYXRhLXZlcnRpY2FsOmZsZXgtY29sXCI+XG4gICAgICAgIDxTbGlkZXJQcmltaXRpdmUuVHJhY2tcbiAgICAgICAgICBkYXRhLXNsb3Q9XCJzbGlkZXItdHJhY2tcIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGdyb3cgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1tdXRlZCBzZWxlY3Qtbm9uZSBkYXRhLWhvcml6b250YWw6aC0xLjUgZGF0YS1ob3Jpem9udGFsOnctZnVsbCBkYXRhLXZlcnRpY2FsOmgtZnVsbCBkYXRhLXZlcnRpY2FsOnctMS41XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTbGlkZXJQcmltaXRpdmUuSW5kaWNhdG9yXG4gICAgICAgICAgICBkYXRhLXNsb3Q9XCJzbGlkZXItcmFuZ2VcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctcHJpbWFyeSBzZWxlY3Qtbm9uZSBkYXRhLWhvcml6b250YWw6aC1mdWxsIGRhdGEtdmVydGljYWw6dy1mdWxsXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1NsaWRlclByaW1pdGl2ZS5UcmFjaz5cbiAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IF92YWx1ZXMubGVuZ3RoIH0sIChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxTbGlkZXJQcmltaXRpdmUuVGh1bWJcbiAgICAgICAgICAgIGRhdGEtc2xvdD1cInNsaWRlci10aHVtYlwiXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgc2l6ZS00IHNocmluay0wIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXByaW1hcnkgYmctd2hpdGUgc2hhZG93LXNtIHJpbmctcmluZy81MCB0cmFuc2l0aW9uLVtjb2xvcixib3gtc2hhZG93XSBzZWxlY3Qtbm9uZSBob3ZlcjpyaW5nLTQgZm9jdXMtdmlzaWJsZTpyaW5nLTQgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLWhpZGRlbiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTBcIlxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9TbGlkZXJQcmltaXRpdmUuQ29udHJvbD5cbiAgICA8L1NsaWRlclByaW1pdGl2ZS5Sb290PlxuICApXG59XG5cbmV4cG9ydCB7IFNsaWRlciB9XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, } from "lucide-react";
|
|
3
|
+
import { Toaster as Sonner } from "sonner";
|
|
4
|
+
const Toaster = ({ ...props }) => {
|
|
5
|
+
return (_jsx(Sonner, { theme: "dark", className: "toaster group", icons: {
|
|
6
|
+
success: _jsx(CircleCheckIcon, { className: "size-4" }),
|
|
7
|
+
info: _jsx(InfoIcon, { className: "size-4" }),
|
|
8
|
+
warning: _jsx(TriangleAlertIcon, { className: "size-4" }),
|
|
9
|
+
error: _jsx(OctagonXIcon, { className: "size-4" }),
|
|
10
|
+
loading: _jsx(Loader2Icon, { className: "size-4 animate-spin" }),
|
|
11
|
+
}, style: {
|
|
12
|
+
"--normal-bg": "var(--popover)",
|
|
13
|
+
"--normal-text": "var(--popover-foreground)",
|
|
14
|
+
"--normal-border": "var(--border)",
|
|
15
|
+
"--border-radius": "var(--radius)",
|
|
16
|
+
}, toastOptions: {
|
|
17
|
+
classNames: {
|
|
18
|
+
toast: "cn-toast",
|
|
19
|
+
},
|
|
20
|
+
}, ...props }));
|
|
21
|
+
};
|
|
22
|
+
export { Toaster };
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2VsZW1lbnRzL3Nvbm5lci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsUUFBUSxFQUNSLFdBQVcsRUFDWCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFxQixNQUFNLFFBQVEsQ0FBQTtBQUU3RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQWdCLEVBQUUsRUFBRTtJQUM3QyxPQUFPLENBQ0wsS0FBQyxNQUFNLElBQ0wsS0FBSyxFQUFDLE1BQU0sRUFDWixTQUFTLEVBQUMsZUFBZSxFQUN6QixLQUFLLEVBQUU7WUFDTCxPQUFPLEVBQUUsS0FBQyxlQUFlLElBQUMsU0FBUyxFQUFDLFFBQVEsR0FBRztZQUMvQyxJQUFJLEVBQUUsS0FBQyxRQUFRLElBQUMsU0FBUyxFQUFDLFFBQVEsR0FBRztZQUNyQyxPQUFPLEVBQUUsS0FBQyxpQkFBaUIsSUFBQyxTQUFTLEVBQUMsUUFBUSxHQUFHO1lBQ2pELEtBQUssRUFBRSxLQUFDLFlBQVksSUFBQyxTQUFTLEVBQUMsUUFBUSxHQUFHO1lBQzFDLE9BQU8sRUFBRSxLQUFDLFdBQVcsSUFBQyxTQUFTLEVBQUMscUJBQXFCLEdBQUc7U0FDekQsRUFDRCxLQUFLLEVBQ0g7WUFDRSxhQUFhLEVBQUUsZ0JBQWdCO1lBQy9CLGVBQWUsRUFBRSwyQkFBMkI7WUFDNUMsaUJBQWlCLEVBQUUsZUFBZTtZQUNsQyxpQkFBaUIsRUFBRSxlQUFlO1NBQ1osRUFFMUIsWUFBWSxFQUFFO1lBQ1osVUFBVSxFQUFFO2dCQUNWLEtBQUssRUFBRSxVQUFVO2FBQ2xCO1NBQ0YsS0FDRyxLQUFLLEdBQ1QsQ0FDSCxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2lyY2xlQ2hlY2tJY29uLFxuICBJbmZvSWNvbixcbiAgTG9hZGVyMkljb24sXG4gIE9jdGFnb25YSWNvbixcbiAgVHJpYW5nbGVBbGVydEljb24sXG59IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IHsgVG9hc3RlciBhcyBTb25uZXIsIHR5cGUgVG9hc3RlclByb3BzIH0gZnJvbSBcInNvbm5lclwiXG5cbmNvbnN0IFRvYXN0ZXIgPSAoeyAuLi5wcm9wcyB9OiBUb2FzdGVyUHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U29ubmVyXG4gICAgICB0aGVtZT1cImRhcmtcIlxuICAgICAgY2xhc3NOYW1lPVwidG9hc3RlciBncm91cFwiXG4gICAgICBpY29ucz17e1xuICAgICAgICBzdWNjZXNzOiA8Q2lyY2xlQ2hlY2tJY29uIGNsYXNzTmFtZT1cInNpemUtNFwiIC8+LFxuICAgICAgICBpbmZvOiA8SW5mb0ljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz4sXG4gICAgICAgIHdhcm5pbmc6IDxUcmlhbmdsZUFsZXJ0SWNvbiBjbGFzc05hbWU9XCJzaXplLTRcIiAvPixcbiAgICAgICAgZXJyb3I6IDxPY3RhZ29uWEljb24gY2xhc3NOYW1lPVwic2l6ZS00XCIgLz4sXG4gICAgICAgIGxvYWRpbmc6IDxMb2FkZXIySWNvbiBjbGFzc05hbWU9XCJzaXplLTQgYW5pbWF0ZS1zcGluXCIgLz4sXG4gICAgICB9fVxuICAgICAgc3R5bGU9e1xuICAgICAgICB7XG4gICAgICAgICAgXCItLW5vcm1hbC1iZ1wiOiBcInZhcigtLXBvcG92ZXIpXCIsXG4gICAgICAgICAgXCItLW5vcm1hbC10ZXh0XCI6IFwidmFyKC0tcG9wb3Zlci1mb3JlZ3JvdW5kKVwiLFxuICAgICAgICAgIFwiLS1ub3JtYWwtYm9yZGVyXCI6IFwidmFyKC0tYm9yZGVyKVwiLFxuICAgICAgICAgIFwiLS1ib3JkZXItcmFkaXVzXCI6IFwidmFyKC0tcmFkaXVzKVwiLFxuICAgICAgICB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXNcbiAgICAgIH1cbiAgICAgIHRvYXN0T3B0aW9ucz17e1xuICAgICAgICBjbGFzc05hbWVzOiB7XG4gICAgICAgICAgdG9hc3Q6IFwiY24tdG9hc3RcIixcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5leHBvcnQgeyBUb2FzdGVyIH1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Loader2Icon } from "lucide-react";
|
|
3
|
+
import { cn } from "../utils/style.js";
|
|
4
|
+
function Spinner({ className, ...props }) {
|
|
5
|
+
return (_jsx(Loader2Icon, { role: "status", "aria-label": "Loading", className: cn("size-4 animate-spin", className), ...props }));
|
|
6
|
+
}
|
|
7
|
+
export { Spinner };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9lbGVtZW50cy9zcGlubmVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdEMsU0FBUyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQStCO0lBQ25FLE9BQU8sQ0FDTCxLQUFDLFdBQVcsSUFDVixJQUFJLEVBQUMsUUFBUSxnQkFDRixTQUFTLEVBQ3BCLFNBQVMsRUFBRSxFQUFFLENBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLEtBQzNDLEtBQUssR0FDVCxDQUNILENBQUE7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9hZGVyMkljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCJcblxuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vdXRpbHMvc3R5bGUudHNcIlxuXG5mdW5jdGlvbiBTcGlubmVyKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcInN2Z1wiPikge1xuICByZXR1cm4gKFxuICAgIDxMb2FkZXIySWNvblxuICAgICAgcm9sZT1cInN0YXR1c1wiXG4gICAgICBhcmlhLWxhYmVsPVwiTG9hZGluZ1wiXG4gICAgICBjbGFzc05hbWU9e2NuKFwic2l6ZS00IGFuaW1hdGUtc3BpblwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZXhwb3J0IHsgU3Bpbm5lciB9XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
|
|
3
|
+
import { cn } from "../utils/style.js";
|
|
4
|
+
function Switch({ className, size = "default", ...props }) {
|
|
5
|
+
return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: cn("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground" }) }));
|
|
6
|
+
}
|
|
7
|
+
export { Switch };
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL2VsZW1lbnRzL3N3aXRjaC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFakUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRDLFNBQVMsTUFBTSxDQUFDLEVBQ2QsU0FBUyxFQUNULElBQUksR0FBRyxTQUFTLEVBQ2hCLEdBQUcsS0FBSyxFQUdUO0lBQ0MsT0FBTyxDQUNMLEtBQUMsZUFBZSxDQUFDLElBQUksaUJBQ1QsUUFBUSxlQUNQLElBQUksRUFDZixTQUFTLEVBQUUsRUFBRSxDQUNYLCtwQkFBK3BCLEVBQy9wQixTQUFTLENBQ1YsS0FDRyxLQUFLLFlBRVQsS0FBQyxlQUFlLENBQUMsS0FBSyxpQkFDVixjQUFjLEVBQ3hCLFNBQVMsRUFBQywrZUFBK2UsR0FDemYsR0FDbUIsQ0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTd2l0Y2ggYXMgU3dpdGNoUHJpbWl0aXZlIH0gZnJvbSBcIkBiYXNlLXVpL3JlYWN0L3N3aXRjaFwiXG5cbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL3V0aWxzL3N0eWxlLnRzXCJcblxuZnVuY3Rpb24gU3dpdGNoKHtcbiAgY2xhc3NOYW1lLFxuICBzaXplID0gXCJkZWZhdWx0XCIsXG4gIC4uLnByb3BzXG59OiBTd2l0Y2hQcmltaXRpdmUuUm9vdC5Qcm9wcyAmIHtcbiAgc2l6ZT86IFwic21cIiB8IFwiZGVmYXVsdFwiXG59KSB7XG4gIHJldHVybiAoXG4gICAgPFN3aXRjaFByaW1pdGl2ZS5Sb290XG4gICAgICBkYXRhLXNsb3Q9XCJzd2l0Y2hcIlxuICAgICAgZGF0YS1zaXplPXtzaXplfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwZWVyIGdyb3VwL3N3aXRjaCByZWxhdGl2ZSBpbmxpbmUtZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgc2hhZG93LXhzIHRyYW5zaXRpb24tYWxsIG91dGxpbmUtbm9uZSBhZnRlcjphYnNvbHV0ZSBhZnRlcjotaW5zZXQteC0zIGFmdGVyOi1pbnNldC15LTIgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctMyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlIGFyaWEtaW52YWxpZDpyaW5nLTMgYXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGF0YS1bc2l6ZT1kZWZhdWx0XTpoLVsxOC40cHhdIGRhdGEtW3NpemU9ZGVmYXVsdF06dy1bMzJweF0gZGF0YS1bc2l6ZT1zbV06aC1bMTRweF0gZGF0YS1bc2l6ZT1zbV06dy1bMjRweF0gZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgZGF0YS1jaGVja2VkOmJnLXByaW1hcnkgZGF0YS11bmNoZWNrZWQ6YmctaW5wdXQgZGFyazpkYXRhLXVuY2hlY2tlZDpiZy1pbnB1dC84MCBkYXRhLWRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkYXRhLWRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8U3dpdGNoUHJpbWl0aXZlLlRodW1iXG4gICAgICAgIGRhdGEtc2xvdD1cInN3aXRjaC10aHVtYlwiXG4gICAgICAgIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgYmxvY2sgcm91bmRlZC1mdWxsIGJnLWJhY2tncm91bmQgcmluZy0wIHRyYW5zaXRpb24tdHJhbnNmb3JtIGdyb3VwLWRhdGEtW3NpemU9ZGVmYXVsdF0vc3dpdGNoOnNpemUtNCBncm91cC1kYXRhLVtzaXplPXNtXS9zd2l0Y2g6c2l6ZS0zIGdyb3VwLWRhdGEtW3NpemU9ZGVmYXVsdF0vc3dpdGNoOmRhdGEtY2hlY2tlZDp0cmFuc2xhdGUteC1bY2FsYygxMDAlLTJweCldIGdyb3VwLWRhdGEtW3NpemU9c21dL3N3aXRjaDpkYXRhLWNoZWNrZWQ6dHJhbnNsYXRlLXgtW2NhbGMoMTAwJS0ycHgpXSBkYXJrOmRhdGEtY2hlY2tlZDpiZy1wcmltYXJ5LWZvcmVncm91bmQgZ3JvdXAtZGF0YS1bc2l6ZT1kZWZhdWx0XS9zd2l0Y2g6ZGF0YS11bmNoZWNrZWQ6dHJhbnNsYXRlLXgtMCBncm91cC1kYXRhLVtzaXplPXNtXS9zd2l0Y2g6ZGF0YS11bmNoZWNrZWQ6dHJhbnNsYXRlLXgtMCBkYXJrOmRhdGEtdW5jaGVja2VkOmJnLWZvcmVncm91bmRcIlxuICAgICAgLz5cbiAgICA8L1N3aXRjaFByaW1pdGl2ZS5Sb290PlxuICApXG59XG5cbmV4cG9ydCB7IFN3aXRjaCB9XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare function Table({ className, ...props }: React.ComponentProps<"table">): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
declare function TableHeader({ className, ...props }: React.ComponentProps<"thead">): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function TableRow({ className, ...props }: React.ComponentProps<"tr">): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function TableHead({ className, ...props }: React.ComponentProps<"th">): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function TableCell({ className, ...props }: React.ComponentProps<"td">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../utils/style.js";
|
|
3
|
+
function Table({ className, ...props }) {
|
|
4
|
+
return (_jsx("div", { "data-slot": "table-container", className: "relative w-full overflow-x-auto", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }));
|
|
5
|
+
}
|
|
6
|
+
function TableHeader({ className, ...props }) {
|
|
7
|
+
return (_jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
function TableBody({ className, ...props }) {
|
|
10
|
+
return (_jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function TableFooter({ className, ...props }) {
|
|
13
|
+
return (_jsx("tfoot", { "data-slot": "table-footer", className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function TableRow({ className, ...props }) {
|
|
16
|
+
return (_jsx("tr", { "data-slot": "table-row", className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function TableHead({ className, ...props }) {
|
|
19
|
+
return (_jsx("th", { "data-slot": "table-head", className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
function TableCell({ className, ...props }) {
|
|
22
|
+
return (_jsx("td", { "data-slot": "table-cell", className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function TableCaption({ className, ...props }) {
|
|
25
|
+
return (_jsx("caption", { "data-slot": "table-caption", className: cn("text-muted-foreground mt-4 text-sm", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvZWxlbWVudHMvdGFibGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdEMsU0FBUyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLEVBQWlDO0lBQ25FLE9BQU8sQ0FDTCwyQkFDWSxpQkFBaUIsRUFDM0IsU0FBUyxFQUFDLGlDQUFpQyxZQUUzQyw2QkFDWSxPQUFPLEVBQ2pCLFNBQVMsRUFBRSxFQUFFLENBQUMsK0JBQStCLEVBQUUsU0FBUyxDQUFDLEtBQ3JELEtBQUssR0FDVCxHQUNFLENBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDekUsT0FBTyxDQUNMLDZCQUNZLGNBQWMsRUFDeEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FDdkMsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDdkUsT0FBTyxDQUNMLDZCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUMsS0FDbEQsS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBaUM7SUFDekUsT0FBTyxDQUNMLDZCQUNZLGNBQWMsRUFDeEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCx5REFBeUQsRUFDekQsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDbkUsT0FBTyxDQUNMLDBCQUNZLFdBQVcsRUFDckIsU0FBUyxFQUFFLEVBQUUsQ0FDWCw2RUFBNkUsRUFDN0UsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDcEUsT0FBTyxDQUNMLDBCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCw4R0FBOEcsRUFDOUcsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssRUFBOEI7SUFDcEUsT0FBTyxDQUNMLDBCQUNZLFlBQVksRUFDdEIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxrRUFBa0UsRUFDbEUsU0FBUyxDQUNWLEtBQ0csS0FBSyxHQUNULENBQ0gsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxFQUNwQixTQUFTLEVBQ1QsR0FBRyxLQUFLLEVBQ3dCO0lBQ2hDLE9BQU8sQ0FDTCwrQkFDWSxlQUFlLEVBQ3pCLFNBQVMsRUFBRSxFQUFFLENBQUMsb0NBQW9DLEVBQUUsU0FBUyxDQUFDLEtBQzFELEtBQUssR0FDVCxDQUNILENBQUE7QUFDSCxDQUFDO0FBRUQsT0FBTyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxZQUFZLEdBQ2IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNuIH0gZnJvbSBcIi4uL3V0aWxzL3N0eWxlLnRzXCJcblxuZnVuY3Rpb24gVGFibGUoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGFibGVcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBkYXRhLXNsb3Q9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgICAgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LXgtYXV0b1wiXG4gICAgPlxuICAgICAgPHRhYmxlXG4gICAgICAgIGRhdGEtc2xvdD1cInRhYmxlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtjbihcInctZnVsbCBjYXB0aW9uLWJvdHRvbSB0ZXh0LXNtXCIsIGNsYXNzTmFtZSl9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gVGFibGVIZWFkZXIoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGhlYWRcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGhlYWRcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWhlYWRlclwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwiWyZfdHJdOmJvcmRlci1iXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUJvZHkoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGJvZHlcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGJvZHlcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWJvZHlcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcIlsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wXCIsIGNsYXNzTmFtZSl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUZvb3Rlcih7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfTogUmVhY3QuQ29tcG9uZW50UHJvcHM8XCJ0Zm9vdFwiPikge1xuICByZXR1cm4gKFxuICAgIDx0Zm9vdFxuICAgICAgZGF0YS1zbG90PVwidGFibGUtZm9vdGVyXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwiYmctbXV0ZWQvNTAgYm9yZGVyLXQgZm9udC1tZWRpdW0gWyY+dHJdOmxhc3Q6Ym9yZGVyLWItMFwiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gVGFibGVSb3coeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidHJcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dHJcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLXJvd1wiXG4gICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICBcImhvdmVyOmJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpiZy1tdXRlZCBib3JkZXItYiB0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZnVuY3Rpb24gVGFibGVIZWFkKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9OiBSZWFjdC5Db21wb25lbnRQcm9wczxcInRoXCI+KSB7XG4gIHJldHVybiAoXG4gICAgPHRoXG4gICAgICBkYXRhLXNsb3Q9XCJ0YWJsZS1oZWFkXCJcbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgIFwidGV4dC1mb3JlZ3JvdW5kIGgtMTAgcHgtMiB0ZXh0LWxlZnQgYWxpZ24tbWlkZGxlIGZvbnQtbWVkaXVtIHdoaXRlc3BhY2Utbm93cmFwIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUNlbGwoeyBjbGFzc05hbWUsIC4uLnByb3BzIH06IFJlYWN0LkNvbXBvbmVudFByb3BzPFwidGRcIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8dGRcbiAgICAgIGRhdGEtc2xvdD1cInRhYmxlLWNlbGxcIlxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgXCJwLTIgYWxpZ24tbWlkZGxlIHdoaXRlc3BhY2Utbm93cmFwIFsmOmhhcyhbcm9sZT1jaGVja2JveF0pXTpwci0wXCIsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICl9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuXG5mdW5jdGlvbiBUYWJsZUNhcHRpb24oe1xuICBjbGFzc05hbWUsXG4gIC4uLnByb3BzXG59OiBSZWFjdC5Db21wb25lbnRQcm9wczxcImNhcHRpb25cIj4pIHtcbiAgcmV0dXJuIChcbiAgICA8Y2FwdGlvblxuICAgICAgZGF0YS1zbG90PVwidGFibGUtY2FwdGlvblwiXG4gICAgICBjbGFzc05hbWU9e2NuKFwidGV4dC1tdXRlZC1mb3JlZ3JvdW5kIG10LTQgdGV4dC1zbVwiLCBjbGFzc05hbWUpfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gIClcbn1cblxuZXhwb3J0IHtcbiAgVGFibGUsXG4gIFRhYmxlSGVhZGVyLFxuICBUYWJsZUJvZHksXG4gIFRhYmxlRm9vdGVyLFxuICBUYWJsZUhlYWQsXG4gIFRhYmxlUm93LFxuICBUYWJsZUNlbGwsXG4gIFRhYmxlQ2FwdGlvbixcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare function Tabs({ className, orientation, ...props }: TabsPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare const tabsListVariants: (props?: ({
|
|
5
|
+
variant?: "default" | "line" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
declare function TabsList({ className, variant, ...props }: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };
|