@lonik/prestige 0.11.0 → 0.11.1

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/dist/ui.js CHANGED
@@ -469,10 +469,10 @@ function ContentNavigations({ prev, next }) {
469
469
  className: "flex gap-6",
470
470
  children: [/* @__PURE__ */ jsxs("div", {
471
471
  className: "lg:flex flex-row items-center gap-2 mt-2 lg:mt-8 lg:w-web-content w-full",
472
- children: [prev && /* @__PURE__ */ jsx(ContentNavigation, { navigation: prev }), next && /* @__PURE__ */ jsx(ContentNavigation, {
472
+ children: [prev ? /* @__PURE__ */ jsx(ContentNavigation, { navigation: prev }) : /* @__PURE__ */ jsx("div", { className: "flex-1 hidden lg:block " }), next ? /* @__PURE__ */ jsx(ContentNavigation, {
473
473
  navigation: next,
474
474
  isNext: true
475
- })]
475
+ }) : /* @__PURE__ */ jsx("div", { className: "flex-1 hidden lg:block" })]
476
476
  }), /* @__PURE__ */ jsx("div", { className: "lg:w-web-table-of-content h-1" })]
477
477
  });
478
478
  }
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","names":["typeMap: Record<AsideType, string>","defaultTitles: Record<AsideType, string>","TabsPrimitive","MANAGERS: PackageManager[]","parts: string[]","currentTheme: ThemeValue","metas: Array<\n | { name?: string; content?: string; title?: string }\n | Record<string, any>\n >"],"sources":["../src/ui/components/aside/aside.tsx","../src/ui/components/code/code.tsx","../src/ui/components/tabs/tabs.tsx","../src/ui/components/package-managers/package-managers.tsx","../src/ui/core/github/github.tsx","../src/ui/core/search/search.tsx","../src/ui/core/theme/theme.tsx","../src/ui/core/header/header.tsx","../src/ui/routes/content/table-of-contents/use-table-of-contents.ts","../src/ui/routes/content/table-of-contents/mobile-table-of-contents.tsx","../src/ui/routes/content/table-of-contents/web-table-of-contents.tsx","../src/ui/core/prestige-page.tsx","../src/ui/routes/content/content-navigations.tsx","../src/ui/utils.ts","../src/ui/routes/collection/sidebar.tsx","../src/ui/routes/collection/mobile-sidebar.tsx","../src/ui/routes/collection/collection.route.tsx","../src/ui/routes/content/content.route.tsx","../src/ui/routes/not-found.tsx","../src/ui/core/footer/footer.tsx","../src/ui/routes/prestige-shell.tsx","../src/ui/components/steps/step-item.tsx","../src/ui/components/steps/steps.tsx"],"sourcesContent":["import React from \"react\";\n\nexport type AsideType = \"note\" | \"tip\" | \"caution\" | \"danger\";\n\nexport interface AsideProps extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n type?: AsideType;\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst typeMap: Record<AsideType, string> = {\n note: \"bg-blue-50/50 dark:bg-blue-900/20 border-blue-500 text-blue-900 dark:text-blue-200\",\n tip: \"bg-purple-50/50 dark:bg-purple-900/20 border-purple-500 text-purple-900 dark:text-purple-200\",\n caution:\n \"bg-yellow-50/50 dark:bg-yellow-900/20 border-yellow-500 text-yellow-900 dark:text-yellow-200\",\n danger:\n \"bg-red-50/50 dark:bg-red-900/20 border-red-500 text-red-900 dark:text-red-200\",\n};\n\nconst defaultTitles: Record<AsideType, string> = {\n note: \"Note\",\n tip: \"Tip\",\n caution: \"Caution\",\n danger: \"Danger\",\n};\n\nexport function Aside({\n type = \"note\",\n title,\n children,\n className,\n ...props\n}: AsideProps) {\n const iconProps = {\n className: \"w-5 h-5 flex-shrink-0\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n };\n\n const Icon = () => {\n switch (type) {\n case \"note\":\n return (\n <svg {...iconProps}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n case \"tip\":\n return (\n <svg {...iconProps}>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\" />\n <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n </svg>\n );\n case \"caution\":\n return (\n <svg {...iconProps}>\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n case \"danger\":\n return (\n <svg {...iconProps}>\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n </svg>\n );\n default:\n return null;\n }\n };\n\n return (\n <aside\n aria-label={defaultTitles[type]}\n className={`relative my-6 px-4 py-3 border-l-4 rounded-lg ${typeMap[type]} ${className || \"\"}`}\n {...props}\n >\n <p className=\"flex items-center gap-2 mb-2 mt-0 font-bold text-lg\">\n <span>\n <Icon />\n </span>\n {title || defaultTitles[type]}\n </p>\n <section className=\"[&>p]:mt-0 [&>p]:mb-2 [&>p:last-child]:mb-0\">\n {children}\n </section>\n </aside>\n );\n}\n","import clsx from \"clsx\";\nimport { Highlight } from \"prism-react-renderer\";\n\nexport interface CodeProps {\n code: string;\n language?: string;\n}\n\nexport function Code({ code, language = \"tsx\" }: CodeProps) {\n // Use a fragment or div, but ensure `render` actually exists before injecting\n return (\n <Highlight code={code} language={language}>\n {({ className, tokens, getLineProps, getTokenProps }) => (\n <pre className={clsx(\"not-prose\", className)}>\n <code className={clsx(\"code-highlight\", className)}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })} style={undefined}>\n {line.map((token, key) => (\n <span\n key={key}\n {...getTokenProps({ token })}\n style={undefined}\n />\n ))}\n </div>\n ))}\n </code>\n </pre>\n )}\n </Highlight>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\n\nfunction Tabs({\n orientation = \"horizontal\",\n className,\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={`w-full ${className || \"\"}`}\n {...props}\n />\n );\n}\n\nfunction TabsList({ className, ...props }: TabsPrimitive.List.Props) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={`flex w-full overflow-x-auto border-b border-default-200 no-scrollbar ${\n className || \"\"\n }`}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={`\n -mb-px flex items-center justify-center whitespace-nowrap border-b-2 border-transparent \n px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer\n text-default-600 hover:text-default-900 hover:border-default-300\n aria-selected:border-primary-500 aria-selected:text-primary-500 \n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\n disabled:pointer-events-none disabled:opacity-50\n ${className || \"\"}\n `}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={`mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 ${\n className || \"\"\n }`}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { Code } from \"../code/code\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../tabs/tabs\"; // Adjust import path\n\ntype PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\ntype CommandType = \"add\" | \"create\" | \"exec\" | \"run\";\n\nexport interface PackageManagersProps {\n /** The name of the package (e.g., \"@lonik/themer\") */\n pkg?: string;\n /** The type of command to generate. Defaults to \"add\" */\n type?: CommandType;\n /** Whether this is a development dependency (-D) */\n dev?: boolean;\n /** Additional arguments to append to the command */\n args?: string;\n className?: string;\n}\n\nconst MANAGERS: PackageManager[] = [\"npm\", \"pnpm\", \"yarn\", \"bun\"];\n\nfunction generateCommand(\n pm: PackageManager,\n type: CommandType,\n pkg?: string,\n dev?: boolean,\n args?: string,\n) {\n const parts: string[] = [];\n\n switch (type) {\n case \"add\":\n parts.push(pm === \"npm\" ? \"npm install\" : `${pm} add`);\n if (dev) parts.push(\"-D\");\n if (pkg) parts.push(pkg);\n break;\n case \"create\":\n parts.push(`${pm} create`);\n if (pkg) parts.push(pkg);\n break;\n case \"exec\":\n if (pm === \"npm\") parts.push(\"npx\");\n else if (pm === \"bun\") parts.push(\"bun x\");\n else parts.push(`${pm} dlx`);\n if (pkg) parts.push(pkg);\n break;\n case \"run\":\n parts.push(pm === \"yarn\" ? \"yarn\" : `${pm} run`);\n if (pkg) parts.push(pkg);\n break;\n }\n\n if (args) {\n // If it's npm and we are passing args to an exec/run script, we often need '--'\n if (pm === \"npm\" && (type === \"exec\" || type === \"run\")) {\n parts.push(\"--\");\n }\n parts.push(args);\n }\n\n return parts.join(\" \");\n}\n\nexport function PackageManagers({\n pkg,\n type = \"add\",\n dev = false,\n args,\n className,\n}: PackageManagersProps) {\n return (\n <Tabs defaultValue=\"npm\" className={`my-6 ${className || \"\"}`}>\n <TabsList>\n {MANAGERS.map((pm) => (\n <TabsTrigger key={pm} value={pm}>\n {pm.toLowerCase()}\n </TabsTrigger>\n ))}\n </TabsList>\n\n {MANAGERS.map((pm) => {\n const command = generateCommand(pm, type, pkg, dev, args);\n\n return (\n <TabsContent keepMounted={true} key={pm} value={pm}>\n <Code code={command} language=\"bash\"></Code>\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","import { Github } from \"lucide-react\";\n\nexport function GitHub({ github }: { github: string | undefined }) {\n if (!github) {\n return null;\n }\n\n return (\n <a\n href={github}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"GitHub repository\"\n title=\"GitHub repository\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded border border-default-200 bg-default-50 text-default-500 hover:bg-default-100\"\n >\n <Github size={16} />\n </a>\n );\n}\n","import \"@docsearch/css\";\nimport { DocSearch } from \"@docsearch/react\";\nimport { AlgoliaOptions } from \"../../routes/prestige-shell\";\n\nexport function Search({\n algolia,\n}: {\n // 2. Add 'typeof' to extract the type from the value\n algolia: AlgoliaOptions | undefined;\n}) {\n if (!algolia) {\n return null;\n }\n\n return (\n <div className=\"prestige-search\">\n <DocSearch\n appId={algolia.appId}\n apiKey={algolia.apiKey}\n indices={algolia.indices}\n />\n </div>\n );\n}\n","import { useTheme } from \"@lonik/themer\";\nimport { useHydrated } from \"@tanstack/react-router\";\nimport { Moon, Sun, SunMoon } from \"lucide-react\";\n\nconst themeOrder = [\"system\", \"light\", \"dark\"] as const;\ntype ThemeValue = (typeof themeOrder)[number];\n\nexport function Theme() {\n const { theme, setTheme } = useTheme();\n const currentTheme: ThemeValue = (theme as ThemeValue) ?? \"system\";\n const hydrated = useHydrated();\n\n const nextTheme = (value: ThemeValue): ThemeValue => {\n const index = themeOrder.indexOf(value);\n return themeOrder[(index + 1) % themeOrder.length]!;\n };\n\n const icon =\n currentTheme === \"light\" ? (\n <Sun size={16} />\n ) : currentTheme === \"dark\" ? (\n <Moon size={16} />\n ) : (\n <SunMoon size={16} />\n );\n\n return (\n <button\n suppressHydrationWarning\n type=\"button\"\n aria-label={`Theme: ${currentTheme}. Click to switch theme`}\n title={`Theme: ${currentTheme}`}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-default-200 bg-default-50 text-default-500 hover:bg-default-100 cursor-pointer\"\n onClick={() => setTheme(nextTheme(currentTheme))}\n >\n {hydrated && icon}\n </button>\n );\n}\n","import { Link, useLocation } from \"@tanstack/react-router\";\nimport collections from \"virtual:prestige/collection-all\";\nimport config from \"virtual:prestige/config\";\nimport { PrestigeShellProps } from \"../../routes/prestige-shell\";\nimport { GitHub } from \"../github/github\";\nimport { Search } from \"../search/search\";\nimport { Theme } from \"../theme/theme\";\n\nexport type HeaderProps = Pick<\n PrestigeShellProps,\n \"customHeaderTitle\" | \"algolia\" | \"github\"\n>;\n\nexport default function Header({\n customHeaderTitle,\n algolia,\n github,\n}: HeaderProps) {\n const location = useLocation();\n\n return (\n <header className=\"sticky top-0 z-40 flex h-header border-b border-default-200 bg-default-50/80 px-4 backdrop-blur-md\">\n <div className=\"container mx-auto flex items-center justify-between\">\n <div className=\"flex gap-4 items-baseline\">\n <Link\n activeProps={{\n className: \"border-default-800 text-default-800 font-medium\",\n }}\n className=\"text-sm rounded hover:bg-default-100 text-default-500\"\n to={\"/\"}\n >\n {customHeaderTitle ? (\n customHeaderTitle()\n ) : (\n <span>{config.title}</span>\n )}\n </Link>\n {collections.map((collection) => {\n const isActive =\n location.pathname === `/${collection.id}` ||\n location.pathname.startsWith(`/${collection.id}/`);\n\n return (\n <Link\n key={collection.id}\n to={`/${collection.defaultLink}` as any}\n className={`border-b-2 text-sm rounded hover:bg-default-100 active:bg-default-200 capitalize ${\n isActive\n ? \"border-default-800 text-default-800 font-medium\"\n : \"border-b-transparent text-default-500\"\n }`}\n >\n {collection.label}\n </Link>\n );\n })}\n </div>\n <div className=\"flex items-center gap-2\">\n <Search algolia={algolia} />\n <GitHub github={github} />\n <Theme />\n </div>\n </div>\n </header>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\n\nexport function useTableOfContents(toc: TocItem[]) {\n const [activeId, setActiveId] = useState<string>(\"\");\n\n useEffect(() => {\n if (toc.length === 0) return;\n\n const handleScroll = () => {\n const headingElements = toc\n .map((item) => {\n const id = item.href.startsWith(\"#\") ? item.href.slice(1) : item.href;\n return document.getElementById(id);\n })\n .filter((el): el is HTMLElement => el !== null);\n\n // Add a slight offset to account for sticky headers or top padding\n const scrollPosition = window.scrollY + 100;\n\n let currentActiveId = \"\";\n for (let i = headingElements.length - 1; i >= 0; i--) {\n const element = headingElements[i];\n if (element && element.offsetTop <= scrollPosition) {\n currentActiveId = element.id;\n break;\n }\n }\n\n // If we haven't scrolled past the first heading, highlight the first one\n if (!currentActiveId && headingElements.length > 0 && headingElements[0]) {\n currentActiveId = headingElements[0].id;\n }\n\n setActiveId(currentActiveId ? `#${currentActiveId}` : \"\");\n };\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n // setTimeout to ensure DOM is fully rendered when checking initial offsets\n setTimeout(handleScroll, 100);\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [toc]);\n\n const handleLinkClick = (e: React.MouseEvent<HTMLAnchorElement>, href: string) => {\n e.preventDefault();\n const id = href.startsWith(\"#\") ? href.slice(1) : href;\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" });\n // Update URL hash without jumping\n window.history.pushState(null, \"\", href.startsWith(\"#\") ? href : `#${href}`);\n }\n };\n\n return { activeId, handleLinkClick };\n}\n","import clsx from \"clsx\";\nimport { ChevronRight } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { useTableOfContents } from \"./use-table-of-contents\";\n\nexport function MobileTableOfContent({ toc }: { toc: TocItem[] }) {\n const [isOpen, setIsOpen] = useState(false);\n const { activeId, handleLinkClick } = useTableOfContents(toc);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const activeItem = toc.find((item) => {\n const itemHref = item.href.startsWith(\"#\") ? item.href : `#${item.href}`;\n return itemHref === activeId;\n });\n\n /* pl-12 is needed for mobile sidebar, because sidebar button is fixed position */\n return (\n <div\n ref={containerRef}\n className=\"sticky top-header z-30 bg-default-50/95 backdrop-blur border-b border-default-200 dark:border-default-800 lg:hidden px-6 pl-12\"\n >\n <div className=\"relative\">\n <button\n onClick={() => setIsOpen((prev) => !prev)}\n className=\"flex w-full items-center justify-between gap-4 px-6 py-3 text-sm text-default-500 font-medium cursor-pointer\"\n >\n <div className=\"flex items-center gap-2\">\n <span>On this page</span>\n <ChevronRight\n className={clsx(\n \"w-4 h-4 transition-transform duration-200\",\n isOpen && \"rotate-90\",\n )}\n />\n </div>\n {activeItem && (\n <span className=\"truncate font-normal max-w-[50%] text-right\">\n {activeItem.value}\n </span>\n )}\n </button>\n\n {isOpen && (\n <div className=\"absolute left-6 right-6 top-full mt-2 max-h-[60vh] overflow-y-auto rounded-lg border border-default-200 bg-default-50 shadow-xl\">\n <ul className=\"p-4 space-y-2.5 text-sm\">\n {toc.map((item) => {\n const itemHref = item.href.startsWith(\"#\")\n ? item.href\n : `#${item.href}`;\n const isActive = activeId === itemHref;\n return (\n <li\n key={itemHref}\n style={{ paddingLeft: `${(item.depth - 1) * 0.75}rem` }}\n >\n <a\n href={itemHref}\n className={clsx(\n \"block transition-colors duration-200 line-clamp-2\",\n isActive\n ? \"text-primary-600 font-medium\"\n : \"text-default-600\",\n )}\n onClick={(e) => {\n handleLinkClick(e, item.href);\n setIsOpen(false);\n }}\n >\n {item.value}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import clsx from \"clsx\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { useTableOfContents } from \"./use-table-of-contents\";\n\nexport function WebTableOfContent({ toc }: { toc: TocItem[] }) {\n const { activeId, handleLinkClick } = useTableOfContents(toc);\n\n return (\n <nav className=\"sticky top-header pt-4 overflow-y-auto w-web-table-of-content hidden lg:block\">\n <span className=\"text-xs font-mono tracking-widest\">ON THIS PAGE</span>\n <ul className=\"text-sm my-4\">\n {toc.map((item) => (\n <li key={item.href}>\n <a\n style={{ paddingLeft: `${(item.depth - 1) * 0.75}rem` }}\n href={`${item.href}`}\n className={clsx(\n \"border-l py-1 px-4 block hover:text-default-700 dark:hover:text-slate-100 transition-colors duration-200 line-clamp-2\",\n activeId === item.href\n ? \"text-default-700 border-default-600 font-medium\"\n : \"text-default-500 border-default-200 \",\n )}\n onClick={(e) => handleLinkClick(e, item.href)}\n >\n {item.value}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n","import React from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { MobileTableOfContent } from \"../routes/content/table-of-contents/mobile-table-of-contents\";\nimport { WebTableOfContent } from \"../routes/content/table-of-contents/web-table-of-contents\";\n\nexport interface PrestigePageProps {\n children: React.ReactNode;\n toc?: TocItem[];\n}\n\nexport function PrestigePage({ children, toc = [] }: PrestigePageProps) {\n return (\n <div className=\"flex lg:gap-6 items-start max-w-[100vw]\">\n <div className=\"flex-1 min-w-0\">\n <MobileTableOfContent toc={toc} />\n <article className=\"prose wrap-break-word py-15 px-6 max-w-none lg:w-web-content\">\n {children}\n </article>\n </div>\n <WebTableOfContent toc={toc} />\n </div>\n );\n}\n","import { Link } from \"@tanstack/react-router\";\nimport clsx from \"clsx\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\nimport { SiblingNavigationType } from \"../../../vite/core/content/content.types\";\n\nfunction ContentNavigation({\n isNext,\n navigation,\n}: {\n isNext?: boolean;\n navigation: SiblingNavigationType;\n}) {\n const label = isNext ? \"Next\" : \"Previous\";\n return (\n <Link\n to={navigation.link}\n className={clsx(\n \" flex-1 h-20 mb-4 border border-default-200 hover:bg-default-50 rounded-md cursor-pointer flex items-center px-4\",\n isNext ? \"justify-end\" : \"justify-start\",\n )}\n >\n <div\n className={clsx(\n \"flex items-center gap-4\",\n isNext && \"flex-row-reverse\",\n )}\n >\n {isNext ? (\n <ArrowRight className=\"text-default-400\" />\n ) : (\n <ArrowLeft className=\"text-default-400\" />\n )}\n <div className={clsx(\"flex flex-col\", isNext && \"items-end\")}>\n <span className=\"text-xs tracking-widest font-mono\">\n {label.toLocaleUpperCase()}\n </span>\n <span className=\"text-2xl font-li text-default-700\">\n {navigation.label}\n </span>\n </div>\n </div>\n </Link>\n );\n}\n\nexport default function ContentNavigations({\n prev,\n next,\n}: {\n prev: SiblingNavigationType | null | undefined;\n next: SiblingNavigationType | null | undefined;\n}) {\n if (!prev && !next) return null;\n // width of content navigation must match with content route content width, so we manually\n // add empty div with table-of-content width and add proper gap to match the size\n return (\n <div className=\"flex gap-6\">\n <div className=\"lg:flex flex-row items-center gap-2 mt-2 lg:mt-8 lg:w-web-content w-full\">\n {prev && <ContentNavigation navigation={prev} />}\n {next && <ContentNavigation navigation={next} isNext />}\n </div>\n <div className=\"lg:w-web-table-of-content h-1\"></div>\n </div>\n );\n}\n","export function isExternalURL(str: string) {\n try {\n const url = new URL(str);\n // This ensures it starts with http or https, filtering out\n // things like 'javascript:alert(1)' or 'mailto:test@test.com'\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n","import { Link } from \"@tanstack/react-router\";\nimport clsx from \"clsx\";\nimport { BookOpen, ChevronRight, ExternalLink } from \"lucide-react\";\nimport { useState } from \"react\";\nimport {\n ExternalSidebarLinkType,\n InternalSidebarLinkType,\n SidebarGroupType,\n SidebarType,\n} from \"../../../vite/core/content/content.types\";\nimport { isExternalURL } from \"../../utils\";\n\nexport interface SidebarProps {\n sidebar: SidebarType;\n onLinkClick?: (() => void) | undefined;\n}\n\nfunction SidebarGroup({\n group,\n onLinkClick,\n}: {\n group: SidebarGroupType;\n onLinkClick?: (() => void) | undefined;\n}) {\n const [open, setIsOpen] = useState(!group.collapsed);\n return (\n <div className=\"mt-4 flex flex-col gap-1\">\n <button\n className=\"flex items-center w-full gap-2\"\n onClick={() => setIsOpen((prev) => !prev)}\n >\n <ChevronRight\n size={18}\n className={clsx(\n \"transform transition cursor-pointer ml-1\",\n open && \"rotate-90\",\n )}\n />\n <span className=\"font-mono text-xs tracking-widest\">\n {group.label.toUpperCase()}\n </span>\n </button>\n {open && (\n <div className=\"mb-2 pl-5\">\n {group.items.map((item) => {\n if (\"slug\" in item || \"link\" in item) {\n const key = \"slug\" in item ? item.slug : item.link;\n return (\n <SidebarLink\n showIcon={false}\n key={key}\n link={item}\n onLinkClick={onLinkClick}\n />\n );\n }\n return <SidebarGroup key={item.label} group={item} onLinkClick={onLinkClick} />;\n })}\n </div>\n )}\n </div>\n );\n}\n\nfunction SidebarLink({\n link,\n onLinkClick,\n showIcon,\n}: {\n link: InternalSidebarLinkType | ExternalSidebarLinkType;\n onLinkClick?: (() => void) | undefined;\n showIcon: boolean;\n}) {\n if (\"slug\" in link || !isExternalURL(link.link)) {\n const slug = \"slug\" in link ? `/${link.slug}` : link.link;\n return (\n <div className=\"flex items-center \">\n <Link\n onClick={onLinkClick}\n activeProps={{ className: \"text-default-700 font-medium\" }}\n className=\"w-full inline-flex gap-2 py-1 px-2 rounded hover:bg-default-100 text-sm mr-2 items-center text-default-500\"\n to={slug}\n >\n {showIcon && <BookOpen className=\"w-4\" />}\n {link.label}\n </Link>\n </div>\n );\n } else {\n return (\n <div className=\"flex items-center \">\n <a\n className=\"w-full inline-flex gap-2 py-1 px-2 rounded hover:bg-default-100 text-sm mr-2 items-center text-default-500\"\n href={link.link}\n target=\"_blank\"\n onClick={onLinkClick}\n rel=\"noreferrer\"\n >\n {showIcon && <ExternalLink className=\"w-4\" />}\n {link.label}\n </a>\n </div>\n );\n }\n}\n\nexport default function Sidebar({ sidebar, onLinkClick }: SidebarProps) {\n return (\n <div className=\"w-full lg:w-sidebar border-r border-default-200 h-full overflow-auto lg:h-main lg:sticky top-header pt-4 pb-10\">\n {sidebar.items.map((item) => {\n if (\"slug\" in item || \"link\" in item) {\n const key = \"slug\" in item ? item.slug : item.link;\n return (\n <SidebarLink\n showIcon={true}\n onLinkClick={onLinkClick}\n key={key}\n link={item}\n />\n );\n }\n return <SidebarGroup key={item.label} group={item} onLinkClick={onLinkClick} />;\n })}\n </div>\n );\n}\n","import { Menu, X } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { SidebarType } from \"../../../vite/core/content/content.types\";\nimport Sidebar from \"./sidebar\";\n\nfunction SidebarOverlay({ sidebar }: { sidebar: SidebarType }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div className=\"lg:hidden\">\n {/* Mobile sidebar button is placed on the start of mobile of content tab, we have to position is via fixed because table of content lives inside content.route */}\n <button\n className=\"bg-transparent p-3 -mt-[2px] text-default-700 top-header left-0 fixed z-50\"\n onClick={() => setIsOpen((prev) => !prev)}\n >\n {isOpen ? <X /> : <Menu />}\n </button>\n {isOpen && (\n <div className=\"fixed top-[calc(var(--spacing-header)+44 )] shadow-xl left-0 overflow-auto z-10 bg-default-50 w-full h-screen\">\n <Sidebar onLinkClick={() => setIsOpen(false)} sidebar={sidebar} />\n </div>\n )}\n </div>\n );\n}\n\nexport default function MobileSidebar({ sidebar }: { sidebar: SidebarType }) {\n return <SidebarOverlay sidebar={sidebar} />;\n}\n","import { Outlet, useLocation } from \"@tanstack/react-router\";\nimport { SidebarType } from \"../../../vite/core/content/content.types\";\nimport ContentNavigations from \"../content/content-navigations\";\nimport MobileSidebar from \"./mobile-sidebar\";\nimport Sidebar from \"./sidebar\";\n\nexport function CollectionRoute(sidebar: SidebarType, id: string) {\n return {\n component: () => {\n const location = useLocation();\n const navigation = sidebar?.navigation?.[location.pathname] || {\n prev: null,\n next: null,\n };\n const { prev, next } = navigation;\n\n return (\n <div className=\"mx-auto flex container lg:gap-6\">\n <MobileSidebar sidebar={sidebar} />\n <div className=\"hidden lg:block\">\n {sidebar && <Sidebar sidebar={sidebar} />}\n </div>\n <div className=\"flex-1 pb-20\">\n <Outlet />\n <div className=\"mt-8 px-6 lg:px-0\">\n <ContentNavigations prev={prev} next={next} />\n </div>\n </div>\n </div>\n );\n },\n };\n}\n","import { FunctionComponent } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport config from \"virtual:prestige/config\";\nimport { ContentFrontmatterType } from \"../../../vite/core/content/content.types\";\nimport { PrestigePage } from \"../../core/prestige-page\";\nimport { type AnyRouteMatch } from \"@tanstack/react-router\";\nfunction resolveContentData(inlineData: any) {\n return inlineData as {\n toc: TocItem[];\n default: FunctionComponent;\n frontmatter: ContentFrontmatterType;\n };\n}\n\nexport function ContentRoute(inlineData: any): any {\n const { frontmatter } = resolveContentData(inlineData);\n\n return {\n head: () => {\n const metas: Array<\n | { name?: string; content?: string; title?: string }\n | Record<string, any>\n > = [];\n const description = frontmatter.description;\n const title = frontmatter.title;\n const head = frontmatter.head;\n\n if (title) {\n metas.push({\n title: title + \" | \" + config.title,\n });\n }\n\n if (description) {\n metas.push({\n name: \"description\",\n content: description,\n });\n }\n\n const mergedMeta = head?.meta ? [...metas, ...head.meta] : metas;\n return {\n meta: mergedMeta.length > 0 ? mergedMeta : undefined,\n links: head?.links,\n styles: head?.styles,\n scripts: head?.scripts,\n } as { scripts: AnyRouteMatch[\"scripts\"] };\n },\n };\n}\n\nexport function LazyContentRoute(inlineData: any): any {\n const { toc, default: Component } = resolveContentData(inlineData);\n\n return {\n component: () => {\n return (\n <PrestigePage toc={toc}>\n <Component />\n </PrestigePage>\n );\n },\n };\n}\n","export function PrestigeNotFound() {\n return (\n <div className=\"w-full h-full flex justify-center pt-15 lg:pt-30 \">\n <div className=\"flex flex-col gap-3 items-center\">\n <h1 className=\"text-3xl lg:text-7xl\">404</h1>\n <h2 className=\"text-3xl lg:text-5xl\">Page Not Found</h2>\n </div>\n </div>\n );\n}\n","import config from \"virtual:prestige/config\";\nimport { PrestigeShellProps } from \"../../routes/prestige-shell\";\n\nfunction License() {\n if (!config.license) {\n return null;\n }\n return (\n <a target=\"_blank\" href={config.license.url}>\n Released under: {config.license.label}\n </a>\n );\n}\n\nfunction Copyright({ copyright }: Pick<PrestigeShellProps, \"copyright\">) {\n if (!copyright) {\n return null;\n }\n return copyright();\n}\n\nexport default function Footer({\n copyright,\n}: Pick<PrestigeShellProps, \"copyright\">) {\n return (\n <footer className=\"mt-10 flex items-center justify-center flex-col gap-2 px-4 border-t border-t-default-100 pt-10 bg-default-50 text-sm py-10 text-default-700\">\n <License />\n <Copyright copyright={copyright} />\n </footer>\n );\n}\n","import { ThemeProvider } from \"@lonik/themer\";\nimport { ReactNode } from \"react\";\nimport Footer from \"../core/footer/footer\";\nimport Header from \"../core/header/header\";\n\ntype RenderNode = () => ReactNode;\n\nexport interface AlgoliaOptions {\n appId: string;\n apiKey: string;\n indices: string[];\n}\nexport interface LicenseOptions {\n label: string;\n url: string;\n}\nexport interface PrestigeShellProps {\n customHeaderTitle?: RenderNode | undefined;\n copyright?: RenderNode | undefined;\n github?: string | undefined;\n algolia?: AlgoliaOptions | undefined;\n license?: LicenseOptions | undefined;\n}\nexport function PrestigeShell({\n children,\n options,\n}: {\n children: ReactNode;\n options?: PrestigeShellProps;\n}) {\n return (\n <ThemeProvider attribute=\"data-theme\" defaultTheme=\"system\">\n <Header\n algolia={options?.algolia}\n customHeaderTitle={options?.customHeaderTitle}\n {...options}\n />\n <main className=\"min-h-[calc(100vh-var(--spacing-header))]\">\n {children}\n </main>\n <Footer copyright={options?.copyright} />\n </ThemeProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nexport type StepItemProps = PropsWithChildren<{\n index: number | string;\n label: string;\n}>;\n\nexport function StepItem({ children, label, index }: StepItemProps) {\n return (\n <li className=\"group list-none\">\n <div className=\"flex items-start gap-2\">\n <div className=\"rounded-full flex justify-center items-center text-base font-medium w-8 h-8 bg-primary-50 text-primary-400 border-2 border-primary-400\">\n {index}\n </div>\n <h3 className=\"text-default-600 mt-1\">{label}</h3>\n </div>\n <div className=\"pb-6 group-last:pb-0 border-l-2 border-l-default-200 pl-6 ml-4 mt-1 mb-4 text-default-600\">\n {children}\n </div>\n </li>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nexport type StepsProps = PropsWithChildren;\n\nexport function Steps({ children }: StepsProps) {\n return <ul>{children}</ul>;\n}\n"],"mappings":";;;;;;;;;;;;;;AAUA,MAAMA,UAAqC;CACzC,MAAM;CACN,KAAK;CACL,SACE;CACF,QACE;CACH;AAED,MAAMC,gBAA2C;CAC/C,MAAM;CACN,KAAK;CACL,SAAS;CACT,QAAQ;CACT;AAED,SAAgB,MAAM,EACpB,OAAO,QACP,OACA,UACA,WACA,GAAG,SACU;CACb,MAAM,YAAY;EAChB,WAAW;EACX,OAAO;EACP,OAAO;EACP,QAAQ;EACR,SAAS;EACT,MAAM;EACN,QAAQ;EACR,aAAa;EACb,eAAe;EACf,gBAAgB;EACjB;CAED,MAAM,aAAa;AACjB,UAAQ,MAAR;GACE,KAAK,OACH,QACE,qBAAC;IAAI,GAAI;;KACP,oBAAC;MAAO,IAAG;MAAK,IAAG;MAAK,GAAE;OAAO;KACjC,oBAAC,UAAK,GAAE,cAAc;KACtB,oBAAC,UAAK,GAAE,cAAc;;KAClB;GAEV,KAAK,MACH,QACE,qBAAC;IAAI,GAAI;;KACP,oBAAC,UAAK,GAAE,8FAA8F;KACtG,oBAAC,UAAK,GAAE,oGAAoG;KAC5G,oBAAC,UAAK,GAAE,2CAA2C;KACnD,oBAAC,UAAK,GAAE,4CAA4C;;KAChD;GAEV,KAAK,UACH,QACE,qBAAC;IAAI,GAAI;;KACP,oBAAC,UAAK,GAAE,8EAA8E;KACtF,oBAAC,UAAK,GAAE,YAAY;KACpB,oBAAC,UAAK,GAAE,eAAe;;KACnB;GAEV,KAAK,SACH,QACE,qBAAC;IAAI,GAAI;;KACP,oBAAC,aAAQ,QAAO,2EAA2E;KAC3F,oBAAC,UAAK,GAAE,YAAY;KACpB,oBAAC,UAAK,GAAE,eAAe;;KACnB;GAEV,QACE,QAAO;;;AAIb,QACE,qBAAC;EACC,cAAY,cAAc;EAC1B,WAAW,iDAAiD,QAAQ,MAAM,GAAG,aAAa;EAC1F,GAAI;aAEJ,qBAAC;GAAE,WAAU;cACX,oBAAC,oBACC,oBAAC,SAAO,GACH,EACN,SAAS,cAAc;IACtB,EACJ,oBAAC;GAAQ,WAAU;GAChB;IACO;GACJ;;;;;AC7FZ,SAAgB,KAAK,EAAE,MAAM,WAAW,SAAoB;AAE1D,QACE,oBAAC;EAAgB;EAAgB;aAC7B,EAAE,WAAW,QAAQ,cAAc,oBACnC,oBAAC;GAAI,WAAW,KAAK,aAAa,UAAU;aAC1C,oBAAC;IAAK,WAAW,KAAK,kBAAkB,UAAU;cAC/C,OAAO,KAAK,MAAM,MACjB,oBAAC;KAAY,GAAI,aAAa,EAAE,MAAM,CAAC;KAAE,OAAO;eAC7C,KAAK,KAAK,OAAO,QAChB,oBAAC;MAEC,GAAI,cAAc,EAAE,OAAO,CAAC;MAC5B,OAAO;QAFF,IAGL,CACF;OAPM,EAQJ,CACN;KACG;IACH;GAEE;;;;;AC3BhB,SAAS,KAAK,EACZ,cAAc,cACd,WACA,GAAG,SACwB;AAC3B,QACE,oBAACC,OAAc;EACb,aAAU;EACV,oBAAkB;EAClB,WAAW,UAAU,aAAa;EAClC,GAAI;GACJ;;AAIN,SAAS,SAAS,EAAE,WAAW,GAAG,SAAmC;AACnE,QACE,oBAACA,OAAc;EACb,aAAU;EACV,WAAW,wEACT,aAAa;EAEf,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAkC;AACrE,QACE,oBAACA,OAAc;EACb,aAAU;EACV,WAAW;;;;;;;UAOP,aAAa,GAAG;;EAEpB,GAAI;GACJ;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAoC;AACvE,QACE,oBAACA,OAAc;EACb,aAAU;EACV,WAAW,mHACT,aAAa;EAEf,GAAI;GACJ;;;;;ACrCN,MAAMC,WAA6B;CAAC;CAAO;CAAQ;CAAQ;CAAM;AAEjE,SAAS,gBACP,IACA,MACA,KACA,KACA,MACA;CACA,MAAMC,QAAkB,EAAE;AAE1B,SAAQ,MAAR;EACE,KAAK;AACH,SAAM,KAAK,OAAO,QAAQ,gBAAgB,GAAG,GAAG,MAAM;AACtD,OAAI,IAAK,OAAM,KAAK,KAAK;AACzB,OAAI,IAAK,OAAM,KAAK,IAAI;AACxB;EACF,KAAK;AACH,SAAM,KAAK,GAAG,GAAG,SAAS;AAC1B,OAAI,IAAK,OAAM,KAAK,IAAI;AACxB;EACF,KAAK;AACH,OAAI,OAAO,MAAO,OAAM,KAAK,MAAM;YAC1B,OAAO,MAAO,OAAM,KAAK,QAAQ;OACrC,OAAM,KAAK,GAAG,GAAG,MAAM;AAC5B,OAAI,IAAK,OAAM,KAAK,IAAI;AACxB;EACF,KAAK;AACH,SAAM,KAAK,OAAO,SAAS,SAAS,GAAG,GAAG,MAAM;AAChD,OAAI,IAAK,OAAM,KAAK,IAAI;AACxB;;AAGJ,KAAI,MAAM;AAER,MAAI,OAAO,UAAU,SAAS,UAAU,SAAS,OAC/C,OAAM,KAAK,KAAK;AAElB,QAAM,KAAK,KAAK;;AAGlB,QAAO,MAAM,KAAK,IAAI;;AAGxB,SAAgB,gBAAgB,EAC9B,KACA,OAAO,OACP,MAAM,OACN,MACA,aACuB;AACvB,QACE,qBAAC;EAAK,cAAa;EAAM,WAAW,QAAQ,aAAa;aACvD,oBAAC,sBACE,SAAS,KAAK,OACb,oBAAC;GAAqB,OAAO;aAC1B,GAAG,aAAa;KADD,GAEJ,CACd,GACO,EAEV,SAAS,KAAK,OAAO;AAGpB,UACE,oBAAC;IAAY,aAAa;IAAe,OAAO;cAC9C,oBAAC;KAAK,MAJM,gBAAgB,IAAI,MAAM,KAAK,KAAK,KAAK;KAIhC,UAAS;MAAc;MADT,GAEvB;IAEhB;GACG;;;;;ACtFX,SAAgB,OAAO,EAAE,UAA0C;AACjE,KAAI,CAAC,OACH,QAAO;AAGT,QACE,oBAAC;EACC,MAAM;EACN,QAAO;EACP,KAAI;EACJ,cAAW;EACX,OAAM;EACN,WAAU;YAEV,oBAAC,UAAO,MAAM,KAAM;GAClB;;;;;ACbR,SAAgB,OAAO,EACrB,WAIC;AACD,KAAI,CAAC,QACH,QAAO;AAGT,QACE,oBAAC;EAAI,WAAU;YACb,oBAAC;GACC,OAAO,QAAQ;GACf,QAAQ,QAAQ;GAChB,SAAS,QAAQ;IACjB;GACE;;;;;ACjBV,MAAM,aAAa;CAAC;CAAU;CAAS;CAAO;AAG9C,SAAgB,QAAQ;CACtB,MAAM,EAAE,OAAO,aAAa,UAAU;CACtC,MAAMC,eAA4B,SAAwB;CAC1D,MAAM,WAAW,aAAa;CAE9B,MAAM,aAAa,UAAkC;AAEnD,SAAO,YADO,WAAW,QAAQ,MAAM,GACZ,KAAK,WAAW;;CAG7C,MAAM,OACJ,iBAAiB,UACf,oBAAC,OAAI,MAAM,KAAM,GACf,iBAAiB,SACnB,oBAAC,QAAK,MAAM,KAAM,GAElB,oBAAC,WAAQ,MAAM,KAAM;AAGzB,QACE,oBAAC;EACC;EACA,MAAK;EACL,cAAY,UAAU,aAAa;EACnC,OAAO,UAAU;EACjB,WAAU;EACV,eAAe,SAAS,UAAU,aAAa,CAAC;YAE/C,YAAY;GACN;;;;;ACvBb,SAAwB,OAAO,EAC7B,mBACA,SACA,UACc;CACd,MAAM,WAAW,aAAa;AAE9B,QACE,oBAAC;EAAO,WAAU;YAChB,qBAAC;GAAI,WAAU;cACb,qBAAC;IAAI,WAAU;eACb,oBAAC;KACC,aAAa,EACX,WAAW,mDACZ;KACD,WAAU;KACV,IAAI;eAEH,oBACC,mBAAmB,GAEnB,oBAAC,oBAAM,OAAO,QAAa;MAExB,EACN,YAAY,KAAK,eAAe;KAC/B,MAAM,WACJ,SAAS,aAAa,IAAI,WAAW,QACrC,SAAS,SAAS,WAAW,IAAI,WAAW,GAAG,GAAG;AAEpD,YACE,oBAAC;MAEC,IAAI,IAAI,WAAW;MACnB,WAAW,oFACT,WACI,oDACA;gBAGL,WAAW;QARP,WAAW,GASX;MAET;KACE,EACN,qBAAC;IAAI,WAAU;;KACb,oBAAC,UAAgB,UAAW;KAC5B,oBAAC,UAAe,SAAU;KAC1B,oBAAC,UAAQ;;KACL;IACF;GACC;;;;;AC5Db,SAAgB,mBAAmB,KAAgB;CACjD,MAAM,CAAC,UAAU,eAAe,SAAiB,GAAG;AAEpD,iBAAgB;AACd,MAAI,IAAI,WAAW,EAAG;EAEtB,MAAM,qBAAqB;GACzB,MAAM,kBAAkB,IACrB,KAAK,SAAS;IACb,MAAM,KAAK,KAAK,KAAK,WAAW,IAAI,GAAG,KAAK,KAAK,MAAM,EAAE,GAAG,KAAK;AACjE,WAAO,SAAS,eAAe,GAAG;KAClC,CACD,QAAQ,OAA0B,OAAO,KAAK;GAGjD,MAAM,iBAAiB,OAAO,UAAU;GAExC,IAAI,kBAAkB;AACtB,QAAK,IAAI,IAAI,gBAAgB,SAAS,GAAG,KAAK,GAAG,KAAK;IACpD,MAAM,UAAU,gBAAgB;AAChC,QAAI,WAAW,QAAQ,aAAa,gBAAgB;AAClD,uBAAkB,QAAQ;AAC1B;;;AAKJ,OAAI,CAAC,mBAAmB,gBAAgB,SAAS,KAAK,gBAAgB,GACpE,mBAAkB,gBAAgB,GAAG;AAGvC,eAAY,kBAAkB,IAAI,oBAAoB,GAAG;;AAG3D,SAAO,iBAAiB,UAAU,cAAc,EAAE,SAAS,MAAM,CAAC;AAElE,aAAW,cAAc,IAAI;AAE7B,eAAa,OAAO,oBAAoB,UAAU,aAAa;IAC9D,CAAC,IAAI,CAAC;CAET,MAAM,mBAAmB,GAAwC,SAAiB;AAChF,IAAE,gBAAgB;EAClB,MAAM,KAAK,KAAK,WAAW,IAAI,GAAG,KAAK,MAAM,EAAE,GAAG;EAClD,MAAM,UAAU,SAAS,eAAe,GAAG;AAC3C,MAAI,SAAS;AACX,WAAQ,eAAe,EAAE,UAAU,UAAU,CAAC;AAE9C,UAAO,QAAQ,UAAU,MAAM,IAAI,KAAK,WAAW,IAAI,GAAG,OAAO,IAAI,OAAO;;;AAIhF,QAAO;EAAE;EAAU;EAAiB;;;;;ACjDtC,SAAgB,qBAAqB,EAAE,OAA2B;CAChE,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAC3C,MAAM,EAAE,UAAU,oBAAoB,mBAAmB,IAAI;CAC7D,MAAM,eAAe,OAAuB,KAAK;AAEjD,iBAAgB;EACd,SAAS,mBAAmB,OAAmB;AAC7C,OACE,aAAa,WACb,CAAC,aAAa,QAAQ,SAAS,MAAM,OAAe,CAEpD,WAAU,MAAM;;AAGpB,WAAS,iBAAiB,aAAa,mBAAmB;AAC1D,eAAa;AACX,YAAS,oBAAoB,aAAa,mBAAmB;;IAE9D,EAAE,CAAC;CAEN,MAAM,aAAa,IAAI,MAAM,SAAS;AAEpC,UADiB,KAAK,KAAK,WAAW,IAAI,GAAG,KAAK,OAAO,IAAI,KAAK,YAC9C;GACpB;AAGF,QACE,oBAAC;EACC,KAAK;EACL,WAAU;YAEV,qBAAC;GAAI,WAAU;cACb,qBAAC;IACC,eAAe,WAAW,SAAS,CAAC,KAAK;IACzC,WAAU;eAEV,qBAAC;KAAI,WAAU;gBACb,oBAAC,oBAAK,iBAAmB,EACzB,oBAAC,gBACC,WAAW,KACT,6CACA,UAAU,YACX,GACD;MACE,EACL,cACC,oBAAC;KAAK,WAAU;eACb,WAAW;MACP;KAEF,EAER,UACC,oBAAC;IAAI,WAAU;cACb,oBAAC;KAAG,WAAU;eACX,IAAI,KAAK,SAAS;MACjB,MAAM,WAAW,KAAK,KAAK,WAAW,IAAI,GACtC,KAAK,OACL,IAAI,KAAK;MACb,MAAM,WAAW,aAAa;AAC9B,aACE,oBAAC;OAEC,OAAO,EAAE,aAAa,IAAI,KAAK,QAAQ,KAAK,IAAK,MAAM;iBAEvD,oBAAC;QACC,MAAM;QACN,WAAW,KACT,qDACA,WACI,iCACA,mBACL;QACD,UAAU,MAAM;AACd,yBAAgB,GAAG,KAAK,KAAK;AAC7B,mBAAU,MAAM;;kBAGjB,KAAK;SACJ;SAjBC,SAkBF;OAEP;MACC;KACD;IAEJ;GACF;;;;;ACzFV,SAAgB,kBAAkB,EAAE,OAA2B;CAC7D,MAAM,EAAE,UAAU,oBAAoB,mBAAmB,IAAI;AAE7D,QACE,qBAAC;EAAI,WAAU;aACb,oBAAC;GAAK,WAAU;aAAoC;IAAmB,EACvE,oBAAC;GAAG,WAAU;aACX,IAAI,KAAK,SACR,oBAAC,kBACC,oBAAC;IACC,OAAO,EAAE,aAAa,IAAI,KAAK,QAAQ,KAAK,IAAK,MAAM;IACvD,MAAM,GAAG,KAAK;IACd,WAAW,KACT,yHACA,aAAa,KAAK,OACd,oDACA,wCACL;IACD,UAAU,MAAM,gBAAgB,GAAG,KAAK,KAAK;cAE5C,KAAK;KACJ,IAbG,KAAK,KAcT,CACL;IACC;GACD;;;;;ACnBV,SAAgB,aAAa,EAAE,UAAU,MAAM,EAAE,IAAuB;AACtE,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACb,oBAAC,wBAA0B,MAAO,EAClC,oBAAC;IAAQ,WAAU;IAChB;KACO;IACN,EACN,oBAAC,qBAAuB,MAAO;GAC3B;;;;;ACfV,SAAS,kBAAkB,EACzB,QACA,cAIC;CACD,MAAM,QAAQ,SAAS,SAAS;AAChC,QACE,oBAAC;EACC,IAAI,WAAW;EACf,WAAW,KACT,oHACA,SAAS,gBAAgB,gBAC1B;YAED,qBAAC;GACC,WAAW,KACT,2BACA,UAAU,mBACX;cAEA,SACC,oBAAC,cAAW,WAAU,qBAAqB,GAE3C,oBAAC,aAAU,WAAU,qBAAqB,EAE5C,qBAAC;IAAI,WAAW,KAAK,iBAAiB,UAAU,YAAY;eAC1D,oBAAC;KAAK,WAAU;eACb,MAAM,mBAAmB;MACrB,EACP,oBAAC;KAAK,WAAU;eACb,WAAW;MACP;KACH;IACF;GACD;;AAIX,SAAwB,mBAAmB,EACzC,MACA,QAIC;AACD,KAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAG3B,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GAAI,WAAU;cACZ,QAAQ,oBAAC,qBAAkB,YAAY,OAAQ,EAC/C,QAAQ,oBAAC;IAAkB,YAAY;IAAM;KAAS;IACnD,EACN,oBAAC,SAAI,WAAU,kCAAsC;GACjD;;;;;AC9DV,SAAgB,cAAc,KAAa;AACzC,KAAI;EACF,MAAM,MAAM,IAAI,IAAI,IAAI;AAGxB,SAAO,IAAI,aAAa,WAAW,IAAI,aAAa;SAC9C;AACN,SAAO;;;;;;ACUX,SAAS,aAAa,EACpB,OACA,eAIC;CACD,MAAM,CAAC,MAAM,aAAa,SAAS,CAAC,MAAM,UAAU;AACpD,QACE,qBAAC;EAAI,WAAU;aACb,qBAAC;GACC,WAAU;GACV,eAAe,WAAW,SAAS,CAAC,KAAK;cAEzC,oBAAC;IACC,MAAM;IACN,WAAW,KACT,4CACA,QAAQ,YACT;KACD,EACF,oBAAC;IAAK,WAAU;cACb,MAAM,MAAM,aAAa;KACrB;IACA,EACR,QACC,oBAAC;GAAI,WAAU;aACZ,MAAM,MAAM,KAAK,SAAS;AACzB,QAAI,UAAU,QAAQ,UAAU,MAAM;KACpC,MAAM,MAAM,UAAU,OAAO,KAAK,OAAO,KAAK;AAC9C,YACE,oBAAC;MACC,UAAU;MAEV,MAAM;MACO;QAFR,IAGL;;AAGN,WAAO,oBAAC;KAA8B,OAAO;KAAmB;OAAtC,KAAK,MAAgD;KAC/E;IACE;GAEJ;;AAIV,SAAS,YAAY,EACnB,MACA,aACA,YAKC;AACD,KAAI,UAAU,QAAQ,CAAC,cAAc,KAAK,KAAK,CAE7C,QACE,oBAAC;EAAI,WAAU;YACb,qBAAC;GACC,SAAS;GACT,aAAa,EAAE,WAAW,gCAAgC;GAC1D,WAAU;GACV,IAPO,UAAU,OAAO,IAAI,KAAK,SAAS,KAAK;cAS9C,YAAY,oBAAC,YAAS,WAAU,QAAQ,EACxC,KAAK;IACD;GACH;KAGR,QACE,oBAAC;EAAI,WAAU;YACb,qBAAC;GACC,WAAU;GACV,MAAM,KAAK;GACX,QAAO;GACP,SAAS;GACT,KAAI;cAEH,YAAY,oBAAC,gBAAa,WAAU,QAAQ,EAC5C,KAAK;IACJ;GACA;;AAKZ,SAAwB,QAAQ,EAAE,SAAS,eAA6B;AACtE,QACE,oBAAC;EAAI,WAAU;YACZ,QAAQ,MAAM,KAAK,SAAS;AAC3B,OAAI,UAAU,QAAQ,UAAU,MAAM;IACpC,MAAM,MAAM,UAAU,OAAO,KAAK,OAAO,KAAK;AAC9C,WACE,oBAAC;KACC,UAAU;KACG;KAEb,MAAM;OADD,IAEL;;AAGN,UAAO,oBAAC;IAA8B,OAAO;IAAmB;MAAtC,KAAK,MAAgD;IAC/E;GACE;;;;;ACtHV,SAAS,eAAe,EAAE,WAAqC;CAC7D,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;AAC3C,QACE,qBAAC;EAAI,WAAU;aAEb,oBAAC;GACC,WAAU;GACV,eAAe,WAAW,SAAS,CAAC,KAAK;aAExC,SAAS,oBAAC,MAAI,GAAG,oBAAC,SAAO;IACnB,EACR,UACC,oBAAC;GAAI,WAAU;aACb,oBAAC;IAAQ,mBAAmB,UAAU,MAAM;IAAW;KAAW;IAC9D;GAEJ;;AAIV,SAAwB,cAAc,EAAE,WAAqC;AAC3E,QAAO,oBAAC,kBAAwB,UAAW;;;;;ACpB7C,SAAgB,gBAAgB,SAAsB,IAAY;AAChE,QAAO,EACL,iBAAiB;EACf,MAAM,WAAW,aAAa;EAK9B,MAAM,EAAE,MAAM,SAJK,SAAS,aAAa,SAAS,aAAa;GAC7D,MAAM;GACN,MAAM;GACP;AAGD,SACE,qBAAC;GAAI,WAAU;;IACb,oBAAC,iBAAuB,UAAW;IACnC,oBAAC;KAAI,WAAU;eACZ,WAAW,oBAAC,WAAiB,UAAW;MACrC;IACN,qBAAC;KAAI,WAAU;gBACb,oBAAC,WAAS,EACV,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAyB;OAAY;QAAQ;OAC1C;MACF;;IACF;IAGX;;;;;ACzBH,SAAS,mBAAmB,YAAiB;AAC3C,QAAO;;AAOT,SAAgB,aAAa,YAAsB;CACjD,MAAM,EAAE,gBAAgB,mBAAmB,WAAW;AAEtD,QAAO,EACL,YAAY;EACV,MAAMC,QAGF,EAAE;EACN,MAAM,cAAc,YAAY;EAChC,MAAM,QAAQ,YAAY;EAC1B,MAAM,OAAO,YAAY;AAEzB,MAAI,MACF,OAAM,KAAK,EACT,OAAO,QAAQ,QAAQ,OAAO,OAC/B,CAAC;AAGJ,MAAI,YACF,OAAM,KAAK;GACT,MAAM;GACN,SAAS;GACV,CAAC;EAGJ,MAAM,aAAa,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,KAAK,GAAG;AAC3D,SAAO;GACL,MAAM,WAAW,SAAS,IAAI,aAAa;GAC3C,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,SAAS,MAAM;GAChB;IAEJ;;AAGH,SAAgB,iBAAiB,YAAsB;CACrD,MAAM,EAAE,KAAK,SAAS,cAAc,mBAAmB,WAAW;AAElE,QAAO,EACL,iBAAiB;AACf,SACE,oBAAC;GAAkB;aACjB,oBAAC,cAAY;IACA;IAGpB;;;;;AC9DH,SAAgB,mBAAmB;AACjC,QACE,oBAAC;EAAI,WAAU;YACb,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAG,WAAU;cAAuB;KAAQ,EAC7C,oBAAC;IAAG,WAAU;cAAuB;KAAmB;IACpD;GACF;;;;;ACJV,SAAS,UAAU;AACjB,KAAI,CAAC,OAAO,QACV,QAAO;AAET,QACE,qBAAC;EAAE,QAAO;EAAS,MAAM,OAAO,QAAQ;aAAK,oBAC1B,OAAO,QAAQ;GAC9B;;AAIR,SAAS,UAAU,EAAE,aAAoD;AACvE,KAAI,CAAC,UACH,QAAO;AAET,QAAO,WAAW;;AAGpB,SAAwB,OAAO,EAC7B,aACwC;AACxC,QACE,qBAAC;EAAO,WAAU;aAChB,oBAAC,YAAU,EACX,oBAAC,aAAqB,YAAa;GAC5B;;;;;ACLb,SAAgB,cAAc,EAC5B,UACA,WAIC;AACD,QACE,qBAAC;EAAc,WAAU;EAAa,cAAa;;GACjD,oBAAC;IACC,SAAS,SAAS;IAClB,mBAAmB,SAAS;IAC5B,GAAI;KACJ;GACF,oBAAC;IAAK,WAAU;IACb;KACI;GACP,oBAAC,UAAO,WAAW,SAAS,YAAa;;GAC3B;;;;;AClCpB,SAAgB,SAAS,EAAE,UAAU,OAAO,SAAwB;AAClE,QACE,qBAAC;EAAG,WAAU;aACZ,qBAAC;GAAI,WAAU;cACb,oBAAC;IAAI,WAAU;cACZ;KACG,EACN,oBAAC;IAAG,WAAU;cAAyB;KAAW;IAC9C,EACN,oBAAC;GAAI,WAAU;GACZ;IACG;GACH;;;;;ACfT,SAAgB,MAAM,EAAE,YAAwB;AAC9C,QAAO,oBAAC,QAAI,WAAc"}
1
+ {"version":3,"file":"ui.js","names":["typeMap: Record<AsideType, string>","defaultTitles: Record<AsideType, string>","TabsPrimitive","MANAGERS: PackageManager[]","parts: string[]","currentTheme: ThemeValue","metas: Array<\n | { name?: string; content?: string; title?: string }\n | Record<string, any>\n >"],"sources":["../src/ui/components/aside/aside.tsx","../src/ui/components/code/code.tsx","../src/ui/components/tabs/tabs.tsx","../src/ui/components/package-managers/package-managers.tsx","../src/ui/core/github/github.tsx","../src/ui/core/search/search.tsx","../src/ui/core/theme/theme.tsx","../src/ui/core/header/header.tsx","../src/ui/routes/content/table-of-contents/use-table-of-contents.ts","../src/ui/routes/content/table-of-contents/mobile-table-of-contents.tsx","../src/ui/routes/content/table-of-contents/web-table-of-contents.tsx","../src/ui/core/prestige-page.tsx","../src/ui/routes/content/content-navigations.tsx","../src/ui/utils.ts","../src/ui/routes/collection/sidebar.tsx","../src/ui/routes/collection/mobile-sidebar.tsx","../src/ui/routes/collection/collection.route.tsx","../src/ui/routes/content/content.route.tsx","../src/ui/routes/not-found.tsx","../src/ui/core/footer/footer.tsx","../src/ui/routes/prestige-shell.tsx","../src/ui/components/steps/step-item.tsx","../src/ui/components/steps/steps.tsx"],"sourcesContent":["import React from \"react\";\n\nexport type AsideType = \"note\" | \"tip\" | \"caution\" | \"danger\";\n\nexport interface AsideProps extends Omit<React.HTMLAttributes<HTMLElement>, \"title\"> {\n type?: AsideType;\n title?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst typeMap: Record<AsideType, string> = {\n note: \"bg-blue-50/50 dark:bg-blue-900/20 border-blue-500 text-blue-900 dark:text-blue-200\",\n tip: \"bg-purple-50/50 dark:bg-purple-900/20 border-purple-500 text-purple-900 dark:text-purple-200\",\n caution:\n \"bg-yellow-50/50 dark:bg-yellow-900/20 border-yellow-500 text-yellow-900 dark:text-yellow-200\",\n danger:\n \"bg-red-50/50 dark:bg-red-900/20 border-red-500 text-red-900 dark:text-red-200\",\n};\n\nconst defaultTitles: Record<AsideType, string> = {\n note: \"Note\",\n tip: \"Tip\",\n caution: \"Caution\",\n danger: \"Danger\",\n};\n\nexport function Aside({\n type = \"note\",\n title,\n children,\n className,\n ...props\n}: AsideProps) {\n const iconProps = {\n className: \"w-5 h-5 flex-shrink-0\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\" as const,\n strokeLinejoin: \"round\" as const,\n };\n\n const Icon = () => {\n switch (type) {\n case \"note\":\n return (\n <svg {...iconProps}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n case \"tip\":\n return (\n <svg {...iconProps}>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\" />\n <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n </svg>\n );\n case \"caution\":\n return (\n <svg {...iconProps}>\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n case \"danger\":\n return (\n <svg {...iconProps}>\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n </svg>\n );\n default:\n return null;\n }\n };\n\n return (\n <aside\n aria-label={defaultTitles[type]}\n className={`relative my-6 px-4 py-3 border-l-4 rounded-lg ${typeMap[type]} ${className || \"\"}`}\n {...props}\n >\n <p className=\"flex items-center gap-2 mb-2 mt-0 font-bold text-lg\">\n <span>\n <Icon />\n </span>\n {title || defaultTitles[type]}\n </p>\n <section className=\"[&>p]:mt-0 [&>p]:mb-2 [&>p:last-child]:mb-0\">\n {children}\n </section>\n </aside>\n );\n}\n","import clsx from \"clsx\";\nimport { Highlight } from \"prism-react-renderer\";\n\nexport interface CodeProps {\n code: string;\n language?: string;\n}\n\nexport function Code({ code, language = \"tsx\" }: CodeProps) {\n // Use a fragment or div, but ensure `render` actually exists before injecting\n return (\n <Highlight code={code} language={language}>\n {({ className, tokens, getLineProps, getTokenProps }) => (\n <pre className={clsx(\"not-prose\", className)}>\n <code className={clsx(\"code-highlight\", className)}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })} style={undefined}>\n {line.map((token, key) => (\n <span\n key={key}\n {...getTokenProps({ token })}\n style={undefined}\n />\n ))}\n </div>\n ))}\n </code>\n </pre>\n )}\n </Highlight>\n );\n}\n","import { Tabs as TabsPrimitive } from \"@base-ui/react/tabs\";\n\nfunction Tabs({\n orientation = \"horizontal\",\n className,\n ...props\n}: TabsPrimitive.Root.Props) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={`w-full ${className || \"\"}`}\n {...props}\n />\n );\n}\n\nfunction TabsList({ className, ...props }: TabsPrimitive.List.Props) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={`flex w-full overflow-x-auto border-b border-default-200 no-scrollbar ${\n className || \"\"\n }`}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={`\n -mb-px flex items-center justify-center whitespace-nowrap border-b-2 border-transparent \n px-4 py-2.5 text-sm font-medium transition-colors cursor-pointer\n text-default-600 hover:text-default-900 hover:border-default-300\n aria-selected:border-primary-500 aria-selected:text-primary-500 \n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\n disabled:pointer-events-none disabled:opacity-50\n ${className || \"\"}\n `}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={`mt-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 ${\n className || \"\"\n }`}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { Code } from \"../code/code\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../tabs/tabs\"; // Adjust import path\n\ntype PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\ntype CommandType = \"add\" | \"create\" | \"exec\" | \"run\";\n\nexport interface PackageManagersProps {\n /** The name of the package (e.g., \"@lonik/themer\") */\n pkg?: string;\n /** The type of command to generate. Defaults to \"add\" */\n type?: CommandType;\n /** Whether this is a development dependency (-D) */\n dev?: boolean;\n /** Additional arguments to append to the command */\n args?: string;\n className?: string;\n}\n\nconst MANAGERS: PackageManager[] = [\"npm\", \"pnpm\", \"yarn\", \"bun\"];\n\nfunction generateCommand(\n pm: PackageManager,\n type: CommandType,\n pkg?: string,\n dev?: boolean,\n args?: string,\n) {\n const parts: string[] = [];\n\n switch (type) {\n case \"add\":\n parts.push(pm === \"npm\" ? \"npm install\" : `${pm} add`);\n if (dev) parts.push(\"-D\");\n if (pkg) parts.push(pkg);\n break;\n case \"create\":\n parts.push(`${pm} create`);\n if (pkg) parts.push(pkg);\n break;\n case \"exec\":\n if (pm === \"npm\") parts.push(\"npx\");\n else if (pm === \"bun\") parts.push(\"bun x\");\n else parts.push(`${pm} dlx`);\n if (pkg) parts.push(pkg);\n break;\n case \"run\":\n parts.push(pm === \"yarn\" ? \"yarn\" : `${pm} run`);\n if (pkg) parts.push(pkg);\n break;\n }\n\n if (args) {\n // If it's npm and we are passing args to an exec/run script, we often need '--'\n if (pm === \"npm\" && (type === \"exec\" || type === \"run\")) {\n parts.push(\"--\");\n }\n parts.push(args);\n }\n\n return parts.join(\" \");\n}\n\nexport function PackageManagers({\n pkg,\n type = \"add\",\n dev = false,\n args,\n className,\n}: PackageManagersProps) {\n return (\n <Tabs defaultValue=\"npm\" className={`my-6 ${className || \"\"}`}>\n <TabsList>\n {MANAGERS.map((pm) => (\n <TabsTrigger key={pm} value={pm}>\n {pm.toLowerCase()}\n </TabsTrigger>\n ))}\n </TabsList>\n\n {MANAGERS.map((pm) => {\n const command = generateCommand(pm, type, pkg, dev, args);\n\n return (\n <TabsContent keepMounted={true} key={pm} value={pm}>\n <Code code={command} language=\"bash\"></Code>\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","import { Github } from \"lucide-react\";\n\nexport function GitHub({ github }: { github: string | undefined }) {\n if (!github) {\n return null;\n }\n\n return (\n <a\n href={github}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label=\"GitHub repository\"\n title=\"GitHub repository\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded border border-default-200 bg-default-50 text-default-500 hover:bg-default-100\"\n >\n <Github size={16} />\n </a>\n );\n}\n","import \"@docsearch/css\";\nimport { DocSearch } from \"@docsearch/react\";\nimport { AlgoliaOptions } from \"../../routes/prestige-shell\";\n\nexport function Search({\n algolia,\n}: {\n // 2. Add 'typeof' to extract the type from the value\n algolia: AlgoliaOptions | undefined;\n}) {\n if (!algolia) {\n return null;\n }\n\n return (\n <div className=\"prestige-search\">\n <DocSearch\n appId={algolia.appId}\n apiKey={algolia.apiKey}\n indices={algolia.indices}\n />\n </div>\n );\n}\n","import { useTheme } from \"@lonik/themer\";\nimport { useHydrated } from \"@tanstack/react-router\";\nimport { Moon, Sun, SunMoon } from \"lucide-react\";\n\nconst themeOrder = [\"system\", \"light\", \"dark\"] as const;\ntype ThemeValue = (typeof themeOrder)[number];\n\nexport function Theme() {\n const { theme, setTheme } = useTheme();\n const currentTheme: ThemeValue = (theme as ThemeValue) ?? \"system\";\n const hydrated = useHydrated();\n\n const nextTheme = (value: ThemeValue): ThemeValue => {\n const index = themeOrder.indexOf(value);\n return themeOrder[(index + 1) % themeOrder.length]!;\n };\n\n const icon =\n currentTheme === \"light\" ? (\n <Sun size={16} />\n ) : currentTheme === \"dark\" ? (\n <Moon size={16} />\n ) : (\n <SunMoon size={16} />\n );\n\n return (\n <button\n suppressHydrationWarning\n type=\"button\"\n aria-label={`Theme: ${currentTheme}. Click to switch theme`}\n title={`Theme: ${currentTheme}`}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md border border-default-200 bg-default-50 text-default-500 hover:bg-default-100 cursor-pointer\"\n onClick={() => setTheme(nextTheme(currentTheme))}\n >\n {hydrated && icon}\n </button>\n );\n}\n","import { Link, useLocation } from \"@tanstack/react-router\";\nimport collections from \"virtual:prestige/collection-all\";\nimport config from \"virtual:prestige/config\";\nimport { PrestigeShellProps } from \"../../routes/prestige-shell\";\nimport { GitHub } from \"../github/github\";\nimport { Search } from \"../search/search\";\nimport { Theme } from \"../theme/theme\";\n\nexport type HeaderProps = Pick<\n PrestigeShellProps,\n \"customHeaderTitle\" | \"algolia\" | \"github\"\n>;\n\nexport default function Header({\n customHeaderTitle,\n algolia,\n github,\n}: HeaderProps) {\n const location = useLocation();\n\n return (\n <header className=\"sticky top-0 z-40 flex h-header border-b border-default-200 bg-default-50/80 px-4 backdrop-blur-md\">\n <div className=\"container mx-auto flex items-center justify-between\">\n <div className=\"flex gap-4 items-baseline\">\n <Link\n activeProps={{\n className: \"border-default-800 text-default-800 font-medium\",\n }}\n className=\"text-sm rounded hover:bg-default-100 text-default-500\"\n to={\"/\"}\n >\n {customHeaderTitle ? (\n customHeaderTitle()\n ) : (\n <span>{config.title}</span>\n )}\n </Link>\n {collections.map((collection) => {\n const isActive =\n location.pathname === `/${collection.id}` ||\n location.pathname.startsWith(`/${collection.id}/`);\n\n return (\n <Link\n key={collection.id}\n to={`/${collection.defaultLink}` as any}\n className={`border-b-2 text-sm rounded hover:bg-default-100 active:bg-default-200 capitalize ${\n isActive\n ? \"border-default-800 text-default-800 font-medium\"\n : \"border-b-transparent text-default-500\"\n }`}\n >\n {collection.label}\n </Link>\n );\n })}\n </div>\n <div className=\"flex items-center gap-2\">\n <Search algolia={algolia} />\n <GitHub github={github} />\n <Theme />\n </div>\n </div>\n </header>\n );\n}\n","import { useEffect, useState } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\n\nexport function useTableOfContents(toc: TocItem[]) {\n const [activeId, setActiveId] = useState<string>(\"\");\n\n useEffect(() => {\n if (toc.length === 0) return;\n\n const handleScroll = () => {\n const headingElements = toc\n .map((item) => {\n const id = item.href.startsWith(\"#\") ? item.href.slice(1) : item.href;\n return document.getElementById(id);\n })\n .filter((el): el is HTMLElement => el !== null);\n\n // Add a slight offset to account for sticky headers or top padding\n const scrollPosition = window.scrollY + 100;\n\n let currentActiveId = \"\";\n for (let i = headingElements.length - 1; i >= 0; i--) {\n const element = headingElements[i];\n if (element && element.offsetTop <= scrollPosition) {\n currentActiveId = element.id;\n break;\n }\n }\n\n // If we haven't scrolled past the first heading, highlight the first one\n if (!currentActiveId && headingElements.length > 0 && headingElements[0]) {\n currentActiveId = headingElements[0].id;\n }\n\n setActiveId(currentActiveId ? `#${currentActiveId}` : \"\");\n };\n\n window.addEventListener(\"scroll\", handleScroll, { passive: true });\n // setTimeout to ensure DOM is fully rendered when checking initial offsets\n setTimeout(handleScroll, 100);\n\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, [toc]);\n\n const handleLinkClick = (e: React.MouseEvent<HTMLAnchorElement>, href: string) => {\n e.preventDefault();\n const id = href.startsWith(\"#\") ? href.slice(1) : href;\n const element = document.getElementById(id);\n if (element) {\n element.scrollIntoView({ behavior: \"smooth\" });\n // Update URL hash without jumping\n window.history.pushState(null, \"\", href.startsWith(\"#\") ? href : `#${href}`);\n }\n };\n\n return { activeId, handleLinkClick };\n}\n","import clsx from \"clsx\";\nimport { ChevronRight } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { useTableOfContents } from \"./use-table-of-contents\";\n\nexport function MobileTableOfContent({ toc }: { toc: TocItem[] }) {\n const [isOpen, setIsOpen] = useState(false);\n const { activeId, handleLinkClick } = useTableOfContents(toc);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const activeItem = toc.find((item) => {\n const itemHref = item.href.startsWith(\"#\") ? item.href : `#${item.href}`;\n return itemHref === activeId;\n });\n\n /* pl-12 is needed for mobile sidebar, because sidebar button is fixed position */\n return (\n <div\n ref={containerRef}\n className=\"sticky top-header z-30 bg-default-50/95 backdrop-blur border-b border-default-200 dark:border-default-800 lg:hidden px-6 pl-12\"\n >\n <div className=\"relative\">\n <button\n onClick={() => setIsOpen((prev) => !prev)}\n className=\"flex w-full items-center justify-between gap-4 px-6 py-3 text-sm text-default-500 font-medium cursor-pointer\"\n >\n <div className=\"flex items-center gap-2\">\n <span>On this page</span>\n <ChevronRight\n className={clsx(\n \"w-4 h-4 transition-transform duration-200\",\n isOpen && \"rotate-90\",\n )}\n />\n </div>\n {activeItem && (\n <span className=\"truncate font-normal max-w-[50%] text-right\">\n {activeItem.value}\n </span>\n )}\n </button>\n\n {isOpen && (\n <div className=\"absolute left-6 right-6 top-full mt-2 max-h-[60vh] overflow-y-auto rounded-lg border border-default-200 bg-default-50 shadow-xl\">\n <ul className=\"p-4 space-y-2.5 text-sm\">\n {toc.map((item) => {\n const itemHref = item.href.startsWith(\"#\")\n ? item.href\n : `#${item.href}`;\n const isActive = activeId === itemHref;\n return (\n <li\n key={itemHref}\n style={{ paddingLeft: `${(item.depth - 1) * 0.75}rem` }}\n >\n <a\n href={itemHref}\n className={clsx(\n \"block transition-colors duration-200 line-clamp-2\",\n isActive\n ? \"text-primary-600 font-medium\"\n : \"text-default-600\",\n )}\n onClick={(e) => {\n handleLinkClick(e, item.href);\n setIsOpen(false);\n }}\n >\n {item.value}\n </a>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import clsx from \"clsx\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { useTableOfContents } from \"./use-table-of-contents\";\n\nexport function WebTableOfContent({ toc }: { toc: TocItem[] }) {\n const { activeId, handleLinkClick } = useTableOfContents(toc);\n\n return (\n <nav className=\"sticky top-header pt-4 overflow-y-auto w-web-table-of-content hidden lg:block\">\n <span className=\"text-xs font-mono tracking-widest\">ON THIS PAGE</span>\n <ul className=\"text-sm my-4\">\n {toc.map((item) => (\n <li key={item.href}>\n <a\n style={{ paddingLeft: `${(item.depth - 1) * 0.75}rem` }}\n href={`${item.href}`}\n className={clsx(\n \"border-l py-1 px-4 block hover:text-default-700 dark:hover:text-slate-100 transition-colors duration-200 line-clamp-2\",\n activeId === item.href\n ? \"text-default-700 border-default-600 font-medium\"\n : \"text-default-500 border-default-200 \",\n )}\n onClick={(e) => handleLinkClick(e, item.href)}\n >\n {item.value}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n","import React from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport { MobileTableOfContent } from \"../routes/content/table-of-contents/mobile-table-of-contents\";\nimport { WebTableOfContent } from \"../routes/content/table-of-contents/web-table-of-contents\";\n\nexport interface PrestigePageProps {\n children: React.ReactNode;\n toc?: TocItem[];\n}\n\nexport function PrestigePage({ children, toc = [] }: PrestigePageProps) {\n return (\n <div className=\"flex lg:gap-6 items-start max-w-[100vw]\">\n <div className=\"flex-1 min-w-0\">\n <MobileTableOfContent toc={toc} />\n <article className=\"prose wrap-break-word py-15 px-6 max-w-none lg:w-web-content\">\n {children}\n </article>\n </div>\n <WebTableOfContent toc={toc} />\n </div>\n );\n}\n","import { Link } from \"@tanstack/react-router\";\nimport clsx from \"clsx\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\nimport { SiblingNavigationType } from \"../../../vite/core/content/content.types\";\n\nfunction ContentNavigation({\n isNext,\n navigation,\n}: {\n isNext?: boolean;\n navigation: SiblingNavigationType;\n}) {\n const label = isNext ? \"Next\" : \"Previous\";\n return (\n <Link\n to={navigation.link}\n className={clsx(\n \" flex-1 h-20 mb-4 border border-default-200 hover:bg-default-50 rounded-md cursor-pointer flex items-center px-4\",\n isNext ? \"justify-end\" : \"justify-start\",\n )}\n >\n <div\n className={clsx(\n \"flex items-center gap-4\",\n isNext && \"flex-row-reverse\",\n )}\n >\n {isNext ? (\n <ArrowRight className=\"text-default-400\" />\n ) : (\n <ArrowLeft className=\"text-default-400\" />\n )}\n <div className={clsx(\"flex flex-col\", isNext && \"items-end\")}>\n <span className=\"text-xs tracking-widest font-mono\">\n {label.toLocaleUpperCase()}\n </span>\n <span className=\"text-2xl font-li text-default-700\">\n {navigation.label}\n </span>\n </div>\n </div>\n </Link>\n );\n}\n\nexport default function ContentNavigations({\n prev,\n next,\n}: {\n prev: SiblingNavigationType | null | undefined;\n next: SiblingNavigationType | null | undefined;\n}) {\n if (!prev && !next) return null;\n // width of content navigation must match with content route content width, so we manually\n // add empty div with table-of-content width and add proper gap to match the size\n return (\n <div className=\"flex gap-6\">\n <div className=\"lg:flex flex-row items-center gap-2 mt-2 lg:mt-8 lg:w-web-content w-full\">\n {prev ? (\n <ContentNavigation navigation={prev} />\n ) : (\n <div className=\"flex-1 hidden lg:block \"></div>\n )}\n {next ? (\n <ContentNavigation navigation={next} isNext />\n ) : (\n <div className=\"flex-1 hidden lg:block\"></div>\n )}\n </div>\n <div className=\"lg:w-web-table-of-content h-1\"></div>\n </div>\n );\n}\n","export function isExternalURL(str: string) {\n try {\n const url = new URL(str);\n // This ensures it starts with http or https, filtering out\n // things like 'javascript:alert(1)' or 'mailto:test@test.com'\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n","import { Link } from \"@tanstack/react-router\";\nimport clsx from \"clsx\";\nimport { BookOpen, ChevronRight, ExternalLink } from \"lucide-react\";\nimport { useState } from \"react\";\nimport {\n ExternalSidebarLinkType,\n InternalSidebarLinkType,\n SidebarGroupType,\n SidebarType,\n} from \"../../../vite/core/content/content.types\";\nimport { isExternalURL } from \"../../utils\";\n\nexport interface SidebarProps {\n sidebar: SidebarType;\n onLinkClick?: (() => void) | undefined;\n}\n\nfunction SidebarGroup({\n group,\n onLinkClick,\n}: {\n group: SidebarGroupType;\n onLinkClick?: (() => void) | undefined;\n}) {\n const [open, setIsOpen] = useState(!group.collapsed);\n return (\n <div className=\"mt-4 flex flex-col gap-1\">\n <button\n className=\"flex items-center w-full gap-2\"\n onClick={() => setIsOpen((prev) => !prev)}\n >\n <ChevronRight\n size={18}\n className={clsx(\n \"transform transition cursor-pointer ml-1\",\n open && \"rotate-90\",\n )}\n />\n <span className=\"font-mono text-xs tracking-widest\">\n {group.label.toUpperCase()}\n </span>\n </button>\n {open && (\n <div className=\"mb-2 pl-5\">\n {group.items.map((item) => {\n if (\"slug\" in item || \"link\" in item) {\n const key = \"slug\" in item ? item.slug : item.link;\n return (\n <SidebarLink\n showIcon={false}\n key={key}\n link={item}\n onLinkClick={onLinkClick}\n />\n );\n }\n return <SidebarGroup key={item.label} group={item} onLinkClick={onLinkClick} />;\n })}\n </div>\n )}\n </div>\n );\n}\n\nfunction SidebarLink({\n link,\n onLinkClick,\n showIcon,\n}: {\n link: InternalSidebarLinkType | ExternalSidebarLinkType;\n onLinkClick?: (() => void) | undefined;\n showIcon: boolean;\n}) {\n if (\"slug\" in link || !isExternalURL(link.link)) {\n const slug = \"slug\" in link ? `/${link.slug}` : link.link;\n return (\n <div className=\"flex items-center \">\n <Link\n onClick={onLinkClick}\n activeProps={{ className: \"text-default-700 font-medium\" }}\n className=\"w-full inline-flex gap-2 py-1 px-2 rounded hover:bg-default-100 text-sm mr-2 items-center text-default-500\"\n to={slug}\n >\n {showIcon && <BookOpen className=\"w-4\" />}\n {link.label}\n </Link>\n </div>\n );\n } else {\n return (\n <div className=\"flex items-center \">\n <a\n className=\"w-full inline-flex gap-2 py-1 px-2 rounded hover:bg-default-100 text-sm mr-2 items-center text-default-500\"\n href={link.link}\n target=\"_blank\"\n onClick={onLinkClick}\n rel=\"noreferrer\"\n >\n {showIcon && <ExternalLink className=\"w-4\" />}\n {link.label}\n </a>\n </div>\n );\n }\n}\n\nexport default function Sidebar({ sidebar, onLinkClick }: SidebarProps) {\n return (\n <div className=\"w-full lg:w-sidebar border-r border-default-200 h-full overflow-auto lg:h-main lg:sticky top-header pt-4 pb-10\">\n {sidebar.items.map((item) => {\n if (\"slug\" in item || \"link\" in item) {\n const key = \"slug\" in item ? item.slug : item.link;\n return (\n <SidebarLink\n showIcon={true}\n onLinkClick={onLinkClick}\n key={key}\n link={item}\n />\n );\n }\n return <SidebarGroup key={item.label} group={item} onLinkClick={onLinkClick} />;\n })}\n </div>\n );\n}\n","import { Menu, X } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { SidebarType } from \"../../../vite/core/content/content.types\";\nimport Sidebar from \"./sidebar\";\n\nfunction SidebarOverlay({ sidebar }: { sidebar: SidebarType }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div className=\"lg:hidden\">\n {/* Mobile sidebar button is placed on the start of mobile of content tab, we have to position is via fixed because table of content lives inside content.route */}\n <button\n className=\"bg-transparent p-3 -mt-[2px] text-default-700 top-header left-0 fixed z-50\"\n onClick={() => setIsOpen((prev) => !prev)}\n >\n {isOpen ? <X /> : <Menu />}\n </button>\n {isOpen && (\n <div className=\"fixed top-[calc(var(--spacing-header)+44 )] shadow-xl left-0 overflow-auto z-10 bg-default-50 w-full h-screen\">\n <Sidebar onLinkClick={() => setIsOpen(false)} sidebar={sidebar} />\n </div>\n )}\n </div>\n );\n}\n\nexport default function MobileSidebar({ sidebar }: { sidebar: SidebarType }) {\n return <SidebarOverlay sidebar={sidebar} />;\n}\n","import { Outlet, useLocation } from \"@tanstack/react-router\";\nimport { SidebarType } from \"../../../vite/core/content/content.types\";\nimport ContentNavigations from \"../content/content-navigations\";\nimport MobileSidebar from \"./mobile-sidebar\";\nimport Sidebar from \"./sidebar\";\n\nexport function CollectionRoute(sidebar: SidebarType, id: string) {\n return {\n component: () => {\n const location = useLocation();\n const navigation = sidebar?.navigation?.[location.pathname] || {\n prev: null,\n next: null,\n };\n const { prev, next } = navigation;\n\n return (\n <div className=\"mx-auto flex container lg:gap-6\">\n <MobileSidebar sidebar={sidebar} />\n <div className=\"hidden lg:block\">\n {sidebar && <Sidebar sidebar={sidebar} />}\n </div>\n <div className=\"flex-1 pb-20\">\n <Outlet />\n <div className=\"mt-8 px-6 lg:px-0\">\n <ContentNavigations prev={prev} next={next} />\n </div>\n </div>\n </div>\n );\n },\n };\n}\n","import { FunctionComponent } from \"react\";\nimport { TocItem } from \"remark-flexible-toc\";\nimport config from \"virtual:prestige/config\";\nimport { ContentFrontmatterType } from \"../../../vite/core/content/content.types\";\nimport { PrestigePage } from \"../../core/prestige-page\";\nimport { type AnyRouteMatch } from \"@tanstack/react-router\";\nfunction resolveContentData(inlineData: any) {\n return inlineData as {\n toc: TocItem[];\n default: FunctionComponent;\n frontmatter: ContentFrontmatterType;\n };\n}\n\nexport function ContentRoute(inlineData: any): any {\n const { frontmatter } = resolveContentData(inlineData);\n\n return {\n head: () => {\n const metas: Array<\n | { name?: string; content?: string; title?: string }\n | Record<string, any>\n > = [];\n const description = frontmatter.description;\n const title = frontmatter.title;\n const head = frontmatter.head;\n\n if (title) {\n metas.push({\n title: title + \" | \" + config.title,\n });\n }\n\n if (description) {\n metas.push({\n name: \"description\",\n content: description,\n });\n }\n\n const mergedMeta = head?.meta ? [...metas, ...head.meta] : metas;\n return {\n meta: mergedMeta.length > 0 ? mergedMeta : undefined,\n links: head?.links,\n styles: head?.styles,\n scripts: head?.scripts,\n } as { scripts: AnyRouteMatch[\"scripts\"] };\n },\n };\n}\n\nexport function LazyContentRoute(inlineData: any): any {\n const { toc, default: Component } = resolveContentData(inlineData);\n\n return {\n component: () => {\n return (\n <PrestigePage toc={toc}>\n <Component />\n </PrestigePage>\n );\n },\n };\n}\n","export function PrestigeNotFound() {\n return (\n <div className=\"w-full h-full flex justify-center pt-15 lg:pt-30 \">\n <div className=\"flex flex-col gap-3 items-center\">\n <h1 className=\"text-3xl lg:text-7xl\">404</h1>\n <h2 className=\"text-3xl lg:text-5xl\">Page Not Found</h2>\n </div>\n </div>\n );\n}\n","import config from \"virtual:prestige/config\";\nimport { PrestigeShellProps } from \"../../routes/prestige-shell\";\n\nfunction License() {\n if (!config.license) {\n return null;\n }\n return (\n <a target=\"_blank\" href={config.license.url}>\n Released under: {config.license.label}\n </a>\n );\n}\n\nfunction Copyright({ copyright }: Pick<PrestigeShellProps, \"copyright\">) {\n if (!copyright) {\n return null;\n }\n return copyright();\n}\n\nexport default function Footer({\n copyright,\n}: Pick<PrestigeShellProps, \"copyright\">) {\n return (\n <footer className=\"mt-10 flex items-center justify-center flex-col gap-2 px-4 border-t border-t-default-100 pt-10 bg-default-50 text-sm py-10 text-default-700\">\n <License />\n <Copyright copyright={copyright} />\n </footer>\n );\n}\n","import { ThemeProvider } from \"@lonik/themer\";\nimport { ReactNode } from \"react\";\nimport Footer from \"../core/footer/footer\";\nimport Header from \"../core/header/header\";\n\ntype RenderNode = () => ReactNode;\n\nexport interface AlgoliaOptions {\n appId: string;\n apiKey: string;\n indices: string[];\n}\nexport interface LicenseOptions {\n label: string;\n url: string;\n}\nexport interface PrestigeShellProps {\n customHeaderTitle?: RenderNode | undefined;\n copyright?: RenderNode | undefined;\n github?: string | undefined;\n algolia?: AlgoliaOptions | undefined;\n license?: LicenseOptions | undefined;\n}\nexport function PrestigeShell({\n children,\n options,\n}: {\n children: ReactNode;\n options?: PrestigeShellProps;\n}) {\n return (\n <ThemeProvider attribute=\"data-theme\" defaultTheme=\"system\">\n <Header\n algolia={options?.algolia}\n customHeaderTitle={options?.customHeaderTitle}\n {...options}\n />\n <main className=\"min-h-[calc(100vh-var(--spacing-header))]\">\n {children}\n </main>\n <Footer copyright={options?.copyright} />\n </ThemeProvider>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nexport type StepItemProps = PropsWithChildren<{\n index: number | string;\n label: string;\n}>;\n\nexport function StepItem({ children, label, index }: StepItemProps) {\n return (\n <li className=\"group list-none\">\n <div className=\"flex items-start gap-2\">\n <div className=\"rounded-full flex justify-center items-center text-base font-medium w-8 h-8 bg-primary-50 text-primary-400 border-2 border-primary-400\">\n {index}\n </div>\n <h3 className=\"text-default-600 mt-1\">{label}</h3>\n </div>\n <div className=\"pb-6 group-last:pb-0 border-l-2 border-l-default-200 pl-6 ml-4 mt-1 mb-4 text-default-600\">\n {children}\n </div>\n </li>\n );\n}\n","import { PropsWithChildren } from \"react\";\n\nexport type StepsProps = PropsWithChildren;\n\nexport function Steps({ children }: StepsProps) {\n return <ul>{children}</ul>;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lonik/prestige",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Static Site Generator for Tanstack Start",
5
5
  "homepage": "https://github.com/lukonik/prestige#readme",
6
6
  "bugs": {