semajsx 0.5.1 → 0.5.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-theme.d.mts","names":[],"sources":["../../../../ssg/src/plugins/llms/types.ts","../../../../ssg/src/plugins/docs-theme/types.ts","../../../../ui/src/components/callout/callout.tsx","../../../../ui/src/components/badge/badge.tsx","../../../../ui/src/components/card/card.tsx","../../../../ui/src/components/tabs/tabs.tsx","../../../../ui/src/components/steps/steps.tsx","../../../../ui/src/components/button/button.tsx","../../../../ui/src/components/separator/separator.tsx","../../../../ui/src/components/input/input.tsx","../../../../ui/src/components/avatar/avatar.tsx","../../../../ui/src/components/kbd/kbd.tsx","../../../../ui/src/components/switch/switch.tsx","../../../../ssg/src/plugins/docs-theme/components.tsx","../../../../ssg/src/plugins/docs-theme/index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docs-theme.d.mts","names":[],"sources":["../../../../ssg/src/plugins/llms/types.ts","../../../../ssg/src/plugins/docs-theme/types.ts","../../../../ui/src/components/callout/callout.tsx","../../../../ui/src/components/badge/badge.tsx","../../../../ui/src/components/card/card.tsx","../../../../ui/src/components/tabs/tabs.tsx","../../../../ui/src/components/steps/steps.tsx","../../../../ui/src/components/button/button.tsx","../../../../ui/src/components/separator/separator.tsx","../../../../ui/src/components/input/input.tsx","../../../../ui/src/components/avatar/avatar.tsx","../../../../ui/src/components/kbd/kbd.tsx","../../../../ui/src/components/switch/switch.tsx","../../../../ssg/src/plugins/docs-theme/components.tsx","../../../../ssg/src/plugins/docs-theme/index.ts"],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { n as Icon, t as lucide } from "../../lucide-CVtHepGM.mjs";
|
|
|
12
12
|
import { dirname, join } from "path";
|
|
13
13
|
import { mkdir, writeFile } from "fs/promises";
|
|
14
14
|
import { z } from "zod";
|
|
15
|
+
import remarkGfm from "remark-gfm";
|
|
15
16
|
|
|
16
17
|
//#region ../ssg/src/plugins/docs-theme/styles.ts
|
|
17
18
|
/**
|
|
@@ -3345,7 +3346,7 @@ function docsTheme(options) {
|
|
|
3345
3346
|
collections,
|
|
3346
3347
|
routes,
|
|
3347
3348
|
mdx: {
|
|
3348
|
-
remarkPlugins: options.mdx?.remarkPlugins,
|
|
3349
|
+
remarkPlugins: [remarkGfm, ...options.mdx?.remarkPlugins ?? []],
|
|
3349
3350
|
rehypePlugins: options.mdx?.rehypePlugins,
|
|
3350
3351
|
components: mdxComponents
|
|
3351
3352
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-theme.mjs","names":["c","root","title","icon","content","styles.root","styles.title","styles.icon","styles.content","c","root","styles.root","c","root","icon","styles.icon","styles.heading","styles.headingLink","styles.desc","styles.descLink","styles.root","styles.link","styles.linkStates","styles.feature","styles.featureStates","c","root","styles.root","styles.list","styles.trigger","styles.triggerStates","styles.panel","c","root","styles.root","styles.item","styles.number","styles.content","styles.title","styles.body","c","root","rootStates","sm","md","lg","c","root","c","root","c","label","root","sm","md","lg","c","root","c","root","buttonStyles","cardStyles","calloutStyles","badgeStyles","codeBlockStyles","tabsStyles","stepsStyles","separatorStyles","inputStyles","avatarStyles","kbdStyles","switchStyles","styles.solid","styles.solidStates","styles.outline","styles.outlineStates","styles.ghost","styles.ghostStates","sizeStyles","styles.sm","styles.md","styles.lg","styles.root","styles.rootStates","styles.danger","styles.dangerStates","styles.root","styles.horizontal","styles.vertical","sizeStyles","styles.sm","styles.md","styles.lg","styles.root","styles.rootStates","styles.wrapper","styles.label","styles.sm","styles.md","styles.lg","styles.root","styles.image","styles.fallback","styles.root","styles.root","styles.rootDisabled","styles.track","styles.trackOn","styles.thumb","styles.thumbOn","styles.label","lucidePlugin","llmsPlugin"],"sources":["../../../../ssg/src/plugins/docs-theme/styles.ts","../../../../ui/src/theme/tokens.ts","../../../../ui/src/components/callout/callout.style.ts","../../../../ui/src/components/callout/callout.tsx","../../../../ui/src/components/badge/badge.style.ts","../../../../ui/src/components/badge/badge.tsx","../../../../ui/src/components/card/card.style.ts","../../../../ui/src/components/card/card.tsx","../../../../ui/src/components/tabs/tabs.style.ts","../../../../ui/src/components/tabs/tabs.tsx","../../../../ui/src/components/steps/steps.style.ts","../../../../ui/src/components/steps/steps.tsx","../../../../ui/src/theme/themes.ts","../../../../ui/src/components/button/button.style.ts","../../../../ui/src/components/code-block/code-block.style.ts","../../../../ui/src/components/separator/separator.style.ts","../../../../ui/src/components/input/input.style.ts","../../../../ui/src/components/avatar/avatar.style.ts","../../../../ui/src/components/kbd/kbd.style.ts","../../../../ui/src/components/switch/switch.style.ts","../../../../ui/src/css.ts","../../../../ui/src/components/button/button.tsx","../../../../ui/src/components/separator/separator.tsx","../../../../ui/src/components/input/input.tsx","../../../../ui/src/components/avatar/avatar.tsx","../../../../ui/src/components/kbd/kbd.tsx","../../../../ui/src/components/switch/switch.tsx","../../../../ssg/src/plugins/docs-theme/components.tsx","../../../../ssg/src/plugins/llms/index.ts","../../../../ssg/src/plugins/docs-theme/index.ts"],"sourcesContent":["/**\n * Apple-inspired theme CSS for the docs-theme plugin.\n *\n * All class names are prefixed with `dt-` to avoid collisions.\n * Component styles (Card, Callout, Badge) come from @semajsx/ui via componentCSS.\n * This file contains layout, navigation, hero, typography, animations, and responsive styles.\n */\n\nexport const THEME_CSS = /* css */ `\n/* ==============================================\n * Keyframes\n * ============================================== */\n\n@keyframes dt-fade-in-up {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes dt-fade-in-scale {\n from { opacity: 0; transform: scale(0.96) translateY(8px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n}\n\n/* ==============================================\n * Global Reset & Base\n * ============================================== */\n\n* { margin: 0; padding: 0; box-sizing: border-box; }\n\nhtml { scroll-behavior: smooth; }\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\",\n Inter, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n line-height: 1.6;\n color: #1d1d1f;\n background: #fbfbfd;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\n::selection {\n background: rgba(0, 113, 227, 0.2);\n color: #1d1d1f;\n}\n\n/* ==============================================\n * Frosted Glass Navigation\n * ============================================== */\n\n.dt-glass-nav {\n position: sticky;\n top: 0;\n z-index: 50;\n background: rgba(251, 251, 253, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-nav-inner {\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 2rem;\n height: 52px;\n}\n\n.dt-nav-logo {\n color: #1d1d1f;\n font-size: 1.25rem;\n font-weight: 600;\n letter-spacing: -0.02em;\n text-decoration: none;\n}\n\n.dt-nav-links {\n display: flex;\n list-style: none;\n margin: 0;\n gap: 2rem;\n}\n\n.dt-nav-link {\n color: #1d1d1f;\n text-decoration: none;\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: -0.005em;\n transition: color 0.2s ease;\n}\n\n.dt-nav-link:hover {\n color: #0071e3;\n}\n\n/* ==============================================\n * Layout\n * ============================================== */\n\n.dt-root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n background: #fbfbfd;\n}\n\n.dt-main {\n flex: 1 1 0%;\n width: 100%;\n max-width: 1200px;\n margin: 0 auto;\n padding: 2rem 2rem 4rem;\n}\n\n/* ==============================================\n * Footer\n * ============================================== */\n\n.dt-footer {\n border-top: 0.5px solid rgba(0, 0, 0, 0.08);\n background: #f5f5f7;\n}\n\n.dt-footer-inner {\n max-width: 1200px;\n margin: 0 auto;\n padding: 2rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n\n.dt-footer-links {\n display: flex;\n gap: 2rem;\n align-items: center;\n}\n\n.dt-footer-link {\n color: #6e6e73;\n text-decoration: none;\n font-size: 0.8125rem;\n transition: color 0.2s;\n}\n\n.dt-footer-link:hover {\n color: #0071e3;\n}\n\n.dt-footer-copy {\n color: #86868b;\n font-size: 0.8125rem;\n margin: 0;\n}\n\n/* ==============================================\n * Hero Section\n * ============================================== */\n\n.dt-hero-bg {\n background: linear-gradient(180deg, #fbfbfd 0%, #f5f5f7 40%, #fbfbfd 100%);\n position: relative;\n}\n\n.dt-hero-bg::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n width: 100%;\n height: 100%;\n background: radial-gradient(\n ellipse 60% 50% at 50% 40%,\n rgba(0, 113, 227, 0.06) 0%,\n rgba(251, 251, 253, 0) 70%\n );\n pointer-events: none;\n}\n\n.dt-hero-title {\n font-size: clamp(3rem, 8vw, 5rem);\n font-weight: 700;\n line-height: 1.05;\n letter-spacing: -0.03em;\n background: linear-gradient(135deg, #1d1d1f 30%, #6e6e73 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 1.25rem;\n}\n\n.dt-hero-subtitle {\n font-size: clamp(1.25rem, 2.5vw, 1.5rem);\n font-weight: 400;\n line-height: 1.5;\n color: #6e6e73;\n max-width: 40rem;\n margin: 0 auto 2.5rem;\n letter-spacing: -0.005em;\n}\n\n.dt-hero-cta {\n display: flex;\n gap: 1rem;\n justify-content: center;\n margin-top: 2rem;\n}\n\n/* ==============================================\n * Section Typography\n * ============================================== */\n\n.dt-section-title {\n font-size: clamp(2rem, 4vw, 2.75rem);\n font-weight: 700;\n letter-spacing: -0.02em;\n line-height: 1.1;\n color: #1d1d1f;\n margin-bottom: 0.75rem;\n}\n\n.dt-section-subtitle {\n font-size: clamp(1rem, 2vw, 1.25rem);\n font-weight: 400;\n line-height: 1.5;\n color: #6e6e73;\n max-width: 36rem;\n margin: 0 auto 3rem;\n}\n\n/* ==============================================\n * Buttons\n * ============================================== */\n\n.dt-primary-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.875rem 1.75rem;\n background: #0071e3;\n color: white;\n border-radius: 980px;\n font-size: 1.0625rem;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n border: none;\n cursor: pointer;\n letter-spacing: -0.005em;\n}\n\n.dt-primary-btn:hover {\n background: #0077ed;\n transform: scale(1.02);\n box-shadow: 0 4px 16px rgba(0, 113, 227, 0.3);\n}\n\n.dt-secondary-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.875rem 1.75rem;\n background: transparent;\n color: #0071e3;\n border: 1.5px solid #0071e3;\n border-radius: 980px;\n font-size: 1.0625rem;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n cursor: pointer;\n letter-spacing: -0.005em;\n}\n\n.dt-secondary-btn:hover {\n background: #0071e3;\n color: white;\n transform: scale(1.02);\n}\n\n/* ==============================================\n * Animations\n * ============================================== */\n\n.dt-anim-slide-up {\n animation: dt-fade-in-up 0.8s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-anim-scale-in {\n animation: dt-fade-in-scale 0.6s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-fade-in {\n animation: dt-fade-in-up 0.6s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-stagger-1 { animation-delay: 0.1s; }\n.dt-stagger-2 { animation-delay: 0.2s; }\n.dt-stagger-3 { animation-delay: 0.35s; }\n.dt-stagger-4 { animation-delay: 0.5s; }\n.dt-stagger-5 { animation-delay: 0.65s; }\n\n/* ==============================================\n * Page Layout\n * ============================================== */\n\n.dt-page-container {\n max-width: 720px;\n}\n\n.dt-page-title {\n font-size: 2.25rem;\n font-weight: 700;\n color: #1d1d1f;\n letter-spacing: -0.02em;\n margin-bottom: 0.5rem;\n}\n\n.dt-page-desc {\n font-size: 1.125rem;\n color: #6e6e73;\n line-height: 1.5;\n}\n\n.dt-category-heading {\n font-size: 0.8125rem;\n font-weight: 600;\n color: #86868b;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n margin-bottom: 1rem;\n}\n\n.dt-card-title {\n font-size: 1.0625rem;\n font-weight: 600;\n color: #1d1d1f;\n letter-spacing: -0.01em;\n margin-bottom: 0.25rem;\n}\n\n.dt-card-desc {\n color: #6e6e73;\n font-size: 0.875rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.dt-content-desc {\n font-size: 1.125rem;\n color: #6e6e73;\n line-height: 1.5;\n padding-bottom: 1.5rem;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n/* ==============================================\n * Content Typography\n * ============================================== */\n\n.dt-content {\n line-height: 1.75;\n color: #1d1d1f;\n}\n\n.dt-content h1 {\n font-size: 1.875rem;\n font-weight: 700;\n margin-top: 3rem;\n margin-bottom: 0.75rem;\n color: #1d1d1f;\n letter-spacing: -0.02em;\n line-height: 1.2;\n}\n\n.dt-content h2 {\n font-size: 1.5rem;\n font-weight: 600;\n margin-top: 2.5rem;\n margin-bottom: 0.75rem;\n color: #1d1d1f;\n letter-spacing: -0.015em;\n line-height: 1.25;\n padding-top: 1.5rem;\n border-top: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n.dt-content h2:first-child,\n.dt-content hr + h2 {\n border-top: none;\n padding-top: 0;\n margin-top: 0;\n}\n\n.dt-content h3 {\n font-size: 1.25rem;\n font-weight: 600;\n margin-top: 2rem;\n margin-bottom: 0.5rem;\n color: #1d1d1f;\n letter-spacing: -0.01em;\n line-height: 1.3;\n}\n\n.dt-content p {\n margin-bottom: 1.25rem;\n font-size: 1rem;\n color: #1d1d1f;\n}\n\n.dt-content ul,\n.dt-content ol {\n margin-left: 1.5rem;\n margin-bottom: 1.25rem;\n}\n\n.dt-content li {\n margin-bottom: 0.375rem;\n font-size: 1rem;\n line-height: 1.65;\n}\n\n.dt-content code {\n background: rgba(0, 0, 0, 0.04);\n padding: 0.15rem 0.4rem;\n border-radius: 5px;\n font-family: \"SF Mono\", \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;\n font-size: 0.875em;\n color: #1d1d1f;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n.dt-content pre {\n background: #1d1d1f;\n color: #e5e5ea;\n padding: 1.25rem 1.5rem;\n border-radius: 12px;\n overflow-x: auto;\n margin-bottom: 1.25rem;\n font-size: 0.875rem;\n line-height: 1.65;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n}\n\n.dt-content pre code {\n background: none;\n color: inherit;\n padding: 0;\n border: none;\n font-size: inherit;\n}\n\n.dt-content a {\n color: #0071e3;\n text-decoration: none;\n transition: color 0.2s ease;\n}\n\n.dt-content a:hover {\n text-decoration: underline;\n}\n\n.dt-content strong {\n font-weight: 600;\n color: #1d1d1f;\n}\n\n.dt-content blockquote {\n border-left: 3px solid rgba(0, 0, 0, 0.08);\n padding: 0.75rem 1.25rem;\n margin: 1.5rem 0;\n color: #6e6e73;\n background: rgba(0, 0, 0, 0.02);\n border-radius: 0 10px 10px 0;\n}\n\n.dt-content hr {\n border: none;\n border-top: 0.5px solid rgba(0, 0, 0, 0.06);\n margin: 2.5rem 0;\n}\n\n/* Tables */\n\n.dt-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 1.5rem 0;\n font-size: 0.9375rem;\n line-height: 1.5;\n border-radius: 10px;\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-content thead {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.dt-content th {\n font-weight: 600;\n color: #1d1d1f;\n text-align: left;\n padding: 0.75rem 1rem;\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-content td {\n padding: 0.75rem 1rem;\n color: #1d1d1f;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.04);\n}\n\n.dt-content tbody tr:last-child td {\n border-bottom: none;\n}\n\n.dt-content tbody tr:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n/* ==============================================\n * Code Blocks\n * ============================================== */\n\n.dt-code-block {\n margin: 1.5rem 0;\n border-radius: 12px;\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n}\n\n.dt-code-header {\n background: #161617;\n padding: 0.5rem 1.25rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.dt-code-lang {\n color: #86868b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.04em;\n}\n\n.dt-code-block pre {\n margin: 0;\n border-radius: 0;\n border: none;\n}\n\n.dt-code-header + pre {\n border-radius: 0;\n}\n\n/* Shiki integration */\n\n.dt-content pre.shiki {\n position: relative;\n padding: 2.25rem 1.5rem 1.25rem;\n}\n\n.dt-content pre.shiki[data-language]::before {\n content: attr(data-language);\n position: absolute;\n top: 0.625rem;\n right: 1rem;\n color: #636e7b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.04em;\n pointer-events: none;\n user-select: none;\n}\n\n.dt-content pre.shiki code {\n display: block;\n}\n\n.dt-content pre.shiki .line {\n display: inline;\n}\n\n/* ==============================================\n * 404 Page\n * ============================================== */\n\n.dt-not-found-title {\n font-size: clamp(4rem, 12vw, 8rem);\n font-weight: 700;\n line-height: 1;\n letter-spacing: -0.04em;\n background: linear-gradient(135deg, #1d1d1f 30%, #6e6e73 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 1.25rem;\n}\n\n/* ==============================================\n * Responsive\n * ============================================== */\n\n@media (max-width: 768px) {\n .dt-nav-inner {\n padding: 12px 1rem !important;\n height: 48px !important;\n }\n\n .dt-nav-logo { font-size: 1.125rem !important; }\n .dt-nav-links { gap: 1.25rem !important; }\n .dt-nav-link { font-size: 0.8125rem; }\n\n .dt-main {\n padding: 1.25rem 1rem 2.5rem !important;\n }\n\n .dt-hero-section {\n padding: 60px 16px 48px !important;\n }\n\n .dt-hero-cta {\n flex-direction: column !important;\n align-items: center !important;\n gap: 0.75rem !important;\n }\n\n .dt-section-features {\n padding: 48px 16px !important;\n }\n\n .dt-section-links {\n padding: 0 16px 60px !important;\n }\n\n .dt-section-links-inner {\n padding-top: 48px !important;\n }\n\n .dt-features-grid {\n grid-template-columns: 1fr !important;\n gap: 1rem !important;\n }\n\n .dt-links-grid {\n grid-template-columns: 1fr !important;\n }\n\n .dt-page-title {\n font-size: 1.75rem !important;\n }\n\n .dt-page-desc {\n font-size: 1rem !important;\n }\n\n .dt-page-container {\n max-width: 100%;\n }\n\n .dt-footer-inner {\n flex-direction: column !important;\n align-items: center !important;\n text-align: center;\n padding: 1.5rem 1rem !important;\n }\n\n .dt-footer-links {\n justify-content: center !important;\n gap: 1.5rem !important;\n }\n\n .dt-not-found-section {\n padding: 60px 16px 48px !important;\n }\n\n .dt-not-found-cta {\n flex-direction: column !important;\n align-items: center !important;\n gap: 0.75rem !important;\n }\n\n .dt-content { line-height: 1.7; }\n .dt-content h1 { font-size: 1.5rem; margin-top: 2rem; }\n .dt-content h2 { font-size: 1.25rem; margin-top: 2rem; padding-top: 1.25rem; }\n .dt-content h3 { font-size: 1.125rem; margin-top: 1.5rem; }\n .dt-content pre { padding: 1rem; font-size: 0.8125rem; border-radius: 10px; }\n .dt-content ul, .dt-content ol { margin-left: 1.25rem; }\n\n .dt-content table {\n font-size: 0.8125rem;\n display: block;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n .dt-content th, .dt-content td { padding: 0.625rem 0.75rem; }\n\n .dt-code-block { border-radius: 10px; }\n .dt-code-header { padding: 0.375rem 1rem; }\n\n .dt-ui-grid {\n grid-template-columns: 1fr !important;\n }\n\n .dt-preview-box {\n padding: 2rem 1rem !important;\n }\n}\n\n/* ==============================================\n * Component Preview (shadcn-style showcase)\n * ============================================== */\n\n.dt-preview {\n margin: 1.5rem 0;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n border-radius: 12px;\n overflow: hidden;\n background: white;\n}\n\n.dt-preview-box {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 3.5rem 2.5rem;\n min-height: 120px;\n background: white;\n position: relative;\n}\n\n.dt-preview-box > * {\n pointer-events: none;\n}\n\n.dt-preview-box::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image:\n radial-gradient(circle, rgba(0, 0, 0, 0.04) 1px, transparent 1px);\n background-size: 20px 20px;\n pointer-events: none;\n}\n\n.dt-preview-label {\n position: absolute;\n top: 0.75rem;\n left: 1rem;\n font-size: 0.6875rem;\n font-weight: 600;\n color: #86868b;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n z-index: 1;\n}\n\n/* ==============================================\n * UI Components Section\n * ============================================== */\n\n.dt-ui-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: 1rem;\n}\n\n.dt-ui-card {\n display: block;\n padding: 1.5rem;\n background: white;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n border-radius: 12px;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);\n}\n\n.dt-ui-card:hover {\n border-color: rgba(0, 113, 227, 0.3);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n transform: translateY(-2px);\n}\n\n.dt-ui-card-preview {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 80px;\n margin-bottom: 1rem;\n background: #f9f9fb;\n border-radius: 8px;\n overflow: hidden;\n position: relative;\n}\n\n.dt-ui-card-preview > * {\n pointer-events: none;\n}\n\n.dt-ui-card-preview::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image:\n radial-gradient(circle, rgba(0, 0, 0, 0.03) 1px, transparent 1px);\n background-size: 16px 16px;\n pointer-events: none;\n}\n\n.dt-ui-card-name {\n font-size: 0.9375rem;\n font-weight: 600;\n color: #1d1d1f;\n margin: 0 0 0.25rem;\n letter-spacing: -0.01em;\n}\n\n.dt-ui-card-desc {\n font-size: 0.8125rem;\n color: #6e6e73;\n margin: 0;\n line-height: 1.4;\n}\n\n.dt-ui-badge-new {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n background: rgba(0, 113, 227, 0.08);\n color: #0071e3;\n font-size: 0.6875rem;\n font-weight: 600;\n border-radius: 4px;\n margin-left: 0.5rem;\n vertical-align: middle;\n}\n`;\n","/**\n * Default design tokens for @semajsx/ui\n *\n * These tokens define the visual language of the component library.\n * All components reference these tokens via CSS custom properties,\n * enabling runtime theme switching.\n *\n * @example\n * ```ts\n * import { tokens } from \"@semajsx/ui/theme\";\n *\n * // Use in custom styles\n * const myRule = rule`${c.box} {\n * color: ${tokens.colors.text};\n * padding: ${tokens.space.md};\n * }`;\n * ```\n */\n\nimport { defineTokens } from \"@semajsx/style\";\nimport type { TokenRefs } from \"@semajsx/style\";\n\nconst tokenDefinition = {\n colors: {\n // Brand (Apple blue)\n primary: \"#0071e3\",\n primaryHover: \"#0077ed\",\n primaryActive: \"#0068d6\",\n\n // Neutral\n background: \"#fbfbfd\",\n surface: \"#f5f5f7\",\n border: \"rgba(0, 0, 0, 0.08)\",\n text: \"#1d1d1f\",\n textMuted: \"#6e6e73\",\n textTertiary: \"#86868b\",\n\n // Semantic\n danger: \"#ff453a\",\n dangerHover: \"#ff6961\",\n success: \"#34c759\",\n warning: \"#ff9f0a\",\n info: \"#007aff\",\n tip: \"#af52de\",\n\n // Inverse (for solid buttons, etc.)\n onPrimary: \"#ffffff\",\n onDanger: \"#ffffff\",\n },\n\n space: {\n xs: \"0.25rem\",\n sm: \"0.5rem\",\n md: \"0.75rem\",\n lg: \"1rem\",\n xl: \"1.5rem\",\n xxl: \"2rem\",\n },\n\n radii: {\n sm: \"10px\",\n md: \"12px\",\n lg: \"16px\",\n xl: \"20px\",\n pill: \"980px\",\n },\n\n fonts: {\n base: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\", Inter, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n mono: '\"SF Mono\", \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace',\n },\n\n fontSizes: {\n xs: \"0.8125rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.0625rem\",\n },\n\n fontWeights: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n\n lineHeights: {\n tight: \"1.25\",\n normal: \"1.6\",\n },\n\n shadows: {\n sm: \"0 1px 3px rgba(0, 0, 0, 0.03)\",\n md: \"0 1px 4px rgba(0, 0, 0, 0.04)\",\n lg: \"0 8px 28px rgba(0, 0, 0, 0.08)\",\n primaryGlow: \"0 4px 16px rgba(0, 113, 227, 0.3)\",\n },\n\n transitions: {\n fast: \"0.2s ease\",\n normal: \"0.3s cubic-bezier(0.25, 0.1, 0.25, 1)\",\n },\n} as const;\n\nexport const tokens: TokenRefs<typeof tokenDefinition> = defineTokens(tokenDefinition);\n","/**\n * Callout component styles\n *\n * Five semantic variants: info, warning, success, error, tip\n * Matching the docs site callout design.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"title\", \"icon\", \"content\"] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n padding: 1.25rem 1.5rem;\n margin: 1.5rem 0;\n border-radius: 14px;\n border: 0.5px solid rgba(0, 0, 0, 0.04);\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const title = rule`${c.title} {\n font-weight: ${tokens.fontWeights.semibold};\n font-size: 0.9375rem;\n margin: 0 0 0.5rem;\n display: flex;\n align-items: center;\n gap: ${tokens.space.sm};\n letter-spacing: -0.005em;\n}`;\n\nexport const icon = rule`${c.icon} {\n width: 18px;\n height: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}`;\n\nexport const content = rule`${c.content} {\n color: ${tokens.colors.text};\n font-size: 0.9375rem;\n line-height: ${tokens.lineHeights.normal};\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Callout component\n *\n * A styled box for highlighting important content with semantic variants.\n *\n * @example\n * ```tsx\n * import { Callout } from \"@semajsx/ui/callout\";\n *\n * <Callout type=\"info\" title=\"Note\">This is informational.</Callout>\n * <Callout type=\"warning\">Be careful with this.</Callout>\n * <Callout type=\"tip\" title=\"Pro tip\">Use signals for reactivity.</Callout>\n * ```\n */\n\nimport type { JSXNode, VNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./callout.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport type CalloutType = \"info\" | \"warning\" | \"success\" | \"error\" | \"tip\";\n\nexport interface CalloutProps {\n /** Semantic type controlling color and icon */\n type?: CalloutType;\n /** Optional title displayed above content */\n title?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nconst SVG_ATTRS = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n};\n\nfunction InfoIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n\nfunction WarningIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\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}\n\nfunction SuccessIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <path d=\"m9 11 3 3L22 4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </svg>\n );\n}\n\nfunction TipIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\" />\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n </svg>\n );\n}\n\nconst calloutConfig: Record<CalloutType, { bg: string; accent: string; icon: () => VNode }> = {\n info: { bg: \"rgba(0, 122, 255, 0.06)\", accent: \"#007aff\", icon: InfoIcon },\n warning: { bg: \"rgba(255, 159, 10, 0.08)\", accent: \"#ff9f0a\", icon: WarningIcon },\n success: { bg: \"rgba(52, 199, 89, 0.08)\", accent: \"#34c759\", icon: SuccessIcon },\n error: { bg: \"rgba(255, 69, 58, 0.08)\", accent: \"#ff453a\", icon: ErrorIcon },\n tip: { bg: \"rgba(175, 82, 222, 0.06)\", accent: \"#af52de\", icon: TipIcon },\n};\n\nexport function Callout(props: CalloutProps): JSXNode {\n const type = props.type ?? \"info\";\n const config = calloutConfig[type];\n const IconComponent = config.icon;\n\n return (\n <div class={[styles.root, props.class]} style={`background: ${config.bg}`} role=\"note\">\n {props.title && (\n <div class={styles.title} style={`color: ${config.accent}`}>\n <span class={styles.icon}>\n <IconComponent />\n </span>\n {props.title}\n </div>\n )}\n <div class={styles.content}>{props.children}</div>\n </div>\n );\n}\n","/**\n * Badge component styles\n *\n * Pill-shaped labels with semantic color variants.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n font-size: 0.6875rem;\n font-weight: ${tokens.fontWeights.semibold};\n font-family: ${tokens.fonts.base};\n padding: 0.125rem 0.5rem;\n border-radius: ${tokens.radii.pill};\n letter-spacing: 0.02em;\n text-transform: uppercase;\n white-space: nowrap;\n line-height: 1.6;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Badge component\n *\n * A small pill-shaped label for status, category, or metadata.\n *\n * @example\n * ```tsx\n * import { Badge } from \"@semajsx/ui/badge\";\n *\n * <Badge color=\"success\">Beginner</Badge>\n * <Badge color=\"warning\">Intermediate</Badge>\n * <Badge color=\"danger\">Advanced</Badge>\n * <Badge>Default</Badge>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./badge.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport type BadgeColor = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"tip\";\n\nexport interface BadgeProps {\n /** Semantic color */\n color?: BadgeColor;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nconst badgeColors: Record<BadgeColor, { bg: string; fg: string }> = {\n default: { bg: \"rgba(0, 0, 0, 0.06)\", fg: \"#1d1d1f\" },\n success: { bg: \"rgba(52, 199, 89, 0.12)\", fg: \"#248a3d\" },\n warning: { bg: \"rgba(255, 159, 10, 0.12)\", fg: \"#b25000\" },\n danger: { bg: \"rgba(255, 69, 58, 0.12)\", fg: \"#d70015\" },\n info: { bg: \"rgba(0, 122, 255, 0.1)\", fg: \"#0055b3\" },\n tip: { bg: \"rgba(175, 82, 222, 0.1)\", fg: \"#8944ab\" },\n};\n\nexport function Badge(props: BadgeProps): JSXNode {\n const color = props.color ?? \"default\";\n const config = badgeColors[color];\n\n return (\n <span\n class={[styles.root, props.class]}\n style={`background: ${config.bg}; color: ${config.fg}`}\n >\n {props.children}\n </span>\n );\n}\n","/**\n * Card component styles\n *\n * Two variants matching the docs site design:\n * - feature: Large card with icon, heading, description\n * - link: Smaller clickable card for navigation\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"feature\", \"link\", \"icon\", \"heading\", \"desc\"] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n background: white;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n font-family: ${tokens.fonts.base};\n transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);\n}`;\n\n// --- Feature variant ---\n\nexport const feature = rule`${c.feature} {\n border-radius: ${tokens.radii.xl};\n padding: 2.5rem;\n box-shadow: ${tokens.shadows.md};\n}`;\n\nexport const featureStates = rule`${c.feature}:hover {\n transform: translateY(-4px) scale(1.01);\n box-shadow: ${tokens.shadows.lg};\n}`;\n\n// --- Link variant ---\n\nexport const link = rule`${c.link} {\n display: block;\n border-radius: ${tokens.radii.lg};\n padding: 1.75rem;\n box-shadow: ${tokens.shadows.sm};\n text-decoration: none;\n cursor: pointer;\n}`;\n\nexport const linkStates = rules(\n rule`${c.link}:hover {\n border-color: rgba(0, 113, 227, 0.3);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n transform: translateY(-2px);\n }`,\n);\n\n// --- Slots ---\n\nexport const icon = rule`${c.icon} {\n font-size: 2rem;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${tokens.colors.surface};\n border-radius: ${tokens.radii.md};\n margin-bottom: 1.25rem;\n}`;\n\nexport const heading = rule`${c.heading} {\n font-size: 1.375rem;\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.text};\n margin: 0 0 0.5rem;\n letter-spacing: -0.01em;\n}`;\n\nexport const headingLink = rule`${c.link} ${c.heading} {\n font-size: ${tokens.fontSizes.lg};\n margin-bottom: 0.25rem;\n}`;\n\nexport const desc = rule`${c.desc} {\n color: ${tokens.colors.textMuted};\n line-height: ${tokens.lineHeights.normal};\n font-size: 0.9375rem;\n margin: 0;\n}`;\n\nexport const descLink = rule`${c.link} ${c.desc} {\n font-size: ${tokens.fontSizes.sm};\n line-height: 1.5;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Card component\n *\n * A content container with two variants matching the docs design:\n * - `feature` (default): Large card with icon, heading, and description\n * - `link`: Smaller clickable card for navigation\n *\n * @example\n * ```tsx\n * import { Card } from \"@semajsx/ui/card\";\n *\n * <Card icon=\"⚡\" heading=\"Fast\" description=\"Built for speed\" />\n * <Card variant=\"link\" heading=\"Guide\" description=\"Get started\" href=\"/docs\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./card.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface CardProps {\n /** Card variant */\n variant?: \"feature\" | \"link\";\n /** Icon content (emoji or JSX) */\n icon?: JSXNode;\n /** Card heading */\n heading?: string;\n /** Card description */\n description?: string;\n /** Link URL (for \"link\" variant) */\n href?: string;\n /** Inline style string */\n style?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nexport function Card(props: CardProps): JSXNode {\n const variant = props.variant ?? \"feature\";\n\n const content = (\n <>\n {props.icon && <div class={styles.icon}>{props.icon}</div>}\n {props.heading && (\n <h3 class={[styles.heading, variant === \"link\" && styles.headingLink]}>{props.heading}</h3>\n )}\n {props.description && (\n <p class={[styles.desc, variant === \"link\" && styles.descLink]}>{props.description}</p>\n )}\n {props.children}\n </>\n );\n\n if (variant === \"link\") {\n return (\n <a\n href={props.href}\n class={[styles.root, styles.link, styles.linkStates, props.class]}\n style={props.style}\n >\n {content}\n </a>\n );\n }\n\n return (\n <div\n class={[styles.root, styles.feature, styles.featureStates, props.class]}\n style={props.style}\n >\n {content}\n </div>\n );\n}\n","/**\n * Tabs component styles\n *\n * A tab bar with active indicator and content panels.\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"list\", \"trigger\", \"active\", \"panel\"] as const);\n\n// --- Container ---\n\nexport const root = rule`${c.root} {\n margin: 1.5rem 0;\n font-family: ${tokens.fonts.base};\n}`;\n\n// --- Tab List ---\n\nexport const list = rule`${c.list} {\n display: flex;\n gap: 0;\n border-bottom: 1px solid ${tokens.colors.border};\n margin-bottom: 0;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}`;\n\n// --- Trigger ---\n\nexport const trigger = rule`${c.trigger} {\n padding: 0.625rem 1rem;\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n font-family: ${tokens.fonts.base};\n color: ${tokens.colors.textMuted};\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n white-space: nowrap;\n transition: color ${tokens.transitions.fast}, border-color ${tokens.transitions.fast};\n margin-bottom: -1px;\n}`;\n\nexport const triggerStates = rules(\n rule`${c.trigger}:hover {\n color: ${tokens.colors.text};\n }`,\n rule`${c.trigger}:focus-visible {\n outline: 2px solid ${tokens.colors.primary};\n outline-offset: -2px;\n }`,\n);\n\n// --- Active Trigger ---\n\nexport const active = rule`${c.active} {\n color: ${tokens.colors.primary};\n border-bottom-color: ${tokens.colors.primary};\n}`;\n\n// --- Panel ---\n\nexport const panel = rule`${c.panel} {\n padding: 1rem 0;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Tabs component\n *\n * A tabbed interface for switching between content panels.\n * Designed for SSG (static) usage - all panels are rendered,\n * visibility is controlled via inline styles.\n *\n * @example\n * ```tsx\n * import { Tabs, TabList, Tab, TabPanel } from \"@semajsx/ui/tabs\";\n *\n * <Tabs defaultValue=\"npm\">\n * <TabList>\n * <Tab value=\"npm\">npm</Tab>\n * <Tab value=\"bun\">Bun</Tab>\n * </TabList>\n * <TabPanel value=\"npm\">npm install semajsx</TabPanel>\n * <TabPanel value=\"bun\">bun add semajsx</TabPanel>\n * </Tabs>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./tabs.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface TabsProps {\n /** The initially active tab value */\n defaultValue: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content (TabList and TabPanels) */\n children?: JSXNode;\n}\n\nexport interface TabListProps {\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Tab triggers */\n children?: JSXNode;\n}\n\nexport interface TabProps {\n /** Value matching a TabPanel */\n value: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Tab label */\n children?: JSXNode;\n}\n\nexport interface TabPanelProps {\n /** Value matching a Tab */\n value: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Panel content */\n children?: JSXNode;\n}\n\nexport function Tabs(props: TabsProps): JSXNode {\n return (\n <div class={[styles.root, props.class]} data-tabs={props.defaultValue}>\n {props.children}\n </div>\n );\n}\n\nexport function TabList(props: TabListProps): JSXNode {\n return (\n <div class={[styles.list, props.class]} role=\"tablist\">\n {props.children}\n </div>\n );\n}\n\nexport function Tab(props: TabProps): JSXNode {\n return (\n <button\n class={[styles.trigger, styles.triggerStates, props.class]}\n role=\"tab\"\n data-tab-value={props.value}\n >\n {props.children}\n </button>\n );\n}\n\nexport function TabPanel(props: TabPanelProps): JSXNode {\n return (\n <div class={[styles.panel, props.class]} role=\"tabpanel\" data-tab-panel={props.value}>\n {props.children}\n </div>\n );\n}\n","/**\n * Steps component styles\n *\n * Numbered step indicators for tutorials and guides.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"item\", \"number\", \"content\", \"title\", \"body\"] as const);\n\nexport const root = rule`${c.root} {\n display: flex;\n flex-direction: column;\n gap: 0;\n margin: 1.5rem 0;\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const item = rule`${c.item} {\n display: flex;\n gap: 1rem;\n padding: 1.25rem 0;\n border-bottom: 0.5px solid ${tokens.colors.border};\n}`;\n\nexport const number = rule`${c.number} {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.semibold};\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 0.125rem;\n}`;\n\nexport const content = rule`${c.content} {\n flex: 1;\n min-width: 0;\n}`;\n\nexport const title = rule`${c.title} {\n font-size: ${tokens.fontSizes.md};\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.text};\n margin: 0 0 0.375rem;\n letter-spacing: -0.005em;\n}`;\n\nexport const body = rule`${c.body} {\n color: ${tokens.colors.textMuted};\n font-size: ${tokens.fontSizes.sm};\n line-height: ${tokens.lineHeights.normal};\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Steps component\n *\n * A numbered step list for tutorials and walkthroughs.\n *\n * @example\n * ```tsx\n * import { Steps, Step } from \"@semajsx/ui/steps\";\n *\n * <Steps>\n * <Step title=\"Install\">Run bun add semajsx</Step>\n * <Step title=\"Create component\">Write your first JSX component</Step>\n * <Step title=\"Render\">Call render() to mount your app</Step>\n * </Steps>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./steps.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface StepsProps {\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Step items */\n children?: JSXNode;\n}\n\nexport interface StepProps {\n /** Step title */\n title: string;\n /** Step number (auto-assigned if omitted) */\n number?: number;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Step description/content */\n children?: JSXNode;\n}\n\nexport function Steps(props: StepsProps): JSXNode {\n return <div class={[styles.root, props.class]}>{props.children}</div>;\n}\n\nexport function Step(props: StepProps): JSXNode {\n return (\n <div class={[styles.item, props.class]}>\n {props.number !== undefined && <div class={styles.number}>{props.number}</div>}\n <div class={styles.content}>\n <h4 class={styles.title}>{props.title}</h4>\n <div class={styles.body}>{props.children}</div>\n </div>\n </div>\n );\n}\n","/**\n * Built-in themes for @semajsx/ui\n *\n * Provides light (default) and dark themes. Custom themes can be\n * created using createTheme() from @semajsx/style.\n *\n * @example\n * ```tsx\n * import { lightTheme, darkTheme } from \"@semajsx/ui/theme\";\n * import { inject } from \"@semajsx/style\";\n *\n * // Apply default (light) theme to :root\n * inject(lightTheme);\n *\n * // Scope dark theme to an element\n * <div class={darkTheme}>\n * <Button>Dark button</Button>\n * </div>\n * ```\n */\n\nimport { createTheme } from \"@semajsx/style\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport { tokens } from \"./tokens\";\n\n/**\n * Light theme - applies token defaults to :root\n */\nexport const lightTheme: StyleToken = createTheme(tokens);\n\n/**\n * Dark theme - scoped to a CSS class\n */\nexport const darkTheme: StyleToken = createTheme(tokens, {\n colors: {\n primary: \"#2997ff\",\n primaryHover: \"#5ab4ff\",\n primaryActive: \"#0071e3\",\n\n background: \"#000000\",\n surface: \"#1c1c1e\",\n border: \"rgba(255, 255, 255, 0.12)\",\n text: \"#f5f5f7\",\n textMuted: \"#a1a1a6\",\n textTertiary: \"#6e6e73\",\n\n danger: \"#ff453a\",\n dangerHover: \"#ff6961\",\n success: \"#30d158\",\n warning: \"#ffd60a\",\n info: \"#0a84ff\",\n tip: \"#bf5af2\",\n\n onPrimary: \"#ffffff\",\n onDanger: \"#ffffff\",\n },\n\n shadows: {\n sm: \"0 1px 3px rgba(0, 0, 0, 0.2)\",\n md: \"0 1px 4px rgba(0, 0, 0, 0.3)\",\n lg: \"0 8px 28px rgba(0, 0, 0, 0.4)\",\n primaryGlow: \"0 4px 16px rgba(41, 151, 255, 0.3)\",\n },\n});\n","/**\n * Button component styles\n *\n * All styles reference theme tokens via CSS custom properties,\n * so they respond to theme changes automatically.\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\n \"root\",\n \"solid\",\n \"outline\",\n \"ghost\",\n \"sm\",\n \"md\",\n \"lg\",\n \"danger\",\n \"icon\",\n] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ${tokens.space.sm};\n border: 1.5px solid transparent;\n border-radius: ${tokens.radii.pill};\n font-family: ${tokens.fonts.base};\n font-weight: ${tokens.fontWeights.medium};\n line-height: ${tokens.lineHeights.tight};\n letter-spacing: -0.005em;\n cursor: pointer;\n user-select: none;\n transition: all ${tokens.transitions.normal};\n}`;\n\nexport const rootStates = rules(\n rule`${c.root}:focus-visible {\n outline: 2px solid ${tokens.colors.primary};\n outline-offset: 2px;\n }`,\n rule`${c.root}:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }`,\n);\n\n// --- Variants ---\n\nexport const solid = rule`${c.solid} {\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n border-color: ${tokens.colors.primary};\n}`;\n\nexport const solidStates = rules(\n rule`${c.solid}:hover:not(:disabled) {\n background: ${tokens.colors.primaryHover};\n border-color: ${tokens.colors.primaryHover};\n transform: scale(1.02);\n box-shadow: ${tokens.shadows.primaryGlow};\n }`,\n rule`${c.solid}:active:not(:disabled) {\n background: ${tokens.colors.primaryActive};\n border-color: ${tokens.colors.primaryActive};\n transform: scale(0.98);\n box-shadow: none;\n }`,\n);\n\nexport const outline = rule`${c.outline} {\n background: transparent;\n color: ${tokens.colors.primary};\n border-color: ${tokens.colors.primary};\n}`;\n\nexport const outlineStates = rules(\n rule`${c.outline}:hover:not(:disabled) {\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n transform: scale(1.02);\n }`,\n rule`${c.outline}:active:not(:disabled) {\n background: ${tokens.colors.primaryActive};\n color: ${tokens.colors.onPrimary};\n transform: scale(0.98);\n }`,\n);\n\nexport const ghost = rule`${c.ghost} {\n background: transparent;\n color: ${tokens.colors.text};\n border-color: transparent;\n}`;\n\nexport const ghostStates = rules(\n rule`${c.ghost}:hover:not(:disabled) {\n background: ${tokens.colors.surface};\n }`,\n rule`${c.ghost}:active:not(:disabled) {\n background: ${tokens.colors.border};\n }`,\n);\n\n// --- Danger ---\n\nexport const danger = rule`${c.danger} {\n background: ${tokens.colors.danger};\n color: ${tokens.colors.onDanger};\n border-color: ${tokens.colors.danger};\n}`;\n\nexport const dangerStates = rules(\n rule`${c.danger}:hover:not(:disabled) {\n background: ${tokens.colors.dangerHover};\n border-color: ${tokens.colors.dangerHover};\n transform: scale(1.02);\n }`,\n rule`${c.danger}:focus-visible {\n outline-color: ${tokens.colors.danger};\n }`,\n);\n\n// --- Sizes ---\n\nexport const sm = rule`${c.sm} {\n padding: ${tokens.space.sm} ${tokens.space.lg};\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const md = rule`${c.md} {\n padding: ${tokens.space.md} ${tokens.space.xl};\n font-size: ${tokens.fontSizes.md};\n}`;\n\nexport const lg = rule`${c.lg} {\n padding: 0.875rem 1.75rem;\n font-size: ${tokens.fontSizes.lg};\n}`;\n\n// --- Icon slot ---\n\nexport const icon = rule`${c.icon} {\n display: inline-flex;\n flex-shrink: 0;\n}`;\n","/**\n * CodeBlock component styles\n *\n * Dark-themed code display with optional language header.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"header\", \"lang\", \"pre\", \"inline\"] as const);\n\n// --- Block ---\n\nexport const root = rule`${c.root} {\n margin: 1.5rem 0;\n border-radius: ${tokens.radii.md};\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n font-family: ${tokens.fonts.mono};\n}`;\n\nexport const header = rule`${c.header} {\n background: #161617;\n padding: 0.5rem 1.25rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}`;\n\nexport const lang = rule`${c.lang} {\n color: #86868b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: ${tokens.fontWeights.semibold};\n letter-spacing: 0.04em;\n font-family: ${tokens.fonts.mono};\n}`;\n\nexport const pre = rule`${c.pre} {\n background: #1d1d1f;\n color: #e5e5ea;\n padding: 1.25rem 1.5rem;\n overflow-x: auto;\n margin: 0;\n font-size: ${tokens.fontSizes.sm};\n line-height: 1.65;\n font-family: ${tokens.fonts.mono};\n}`;\n\n// --- Inline code ---\n\nexport const inline = rule`${c.inline} {\n background: rgba(0, 0, 0, 0.04);\n padding: 0.15rem 0.4rem;\n border-radius: 5px;\n font-size: 0.875em;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n font-family: ${tokens.fonts.mono};\n}`;\n","/**\n * Separator component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"vertical\"] as const);\n\nexport const root = rule`${c.root} {\n border: none;\n background: ${tokens.colors.border};\n flex-shrink: 0;\n}`;\n\nexport const horizontal = rule`${c.root}:not(${c.vertical}) {\n height: 0.5px;\n width: 100%;\n margin: ${tokens.space.lg} 0;\n}`;\n\nexport const vertical = rule`${c.vertical} {\n width: 0.5px;\n height: auto;\n align-self: stretch;\n margin: 0 ${tokens.space.lg};\n}`;\n","/**\n * Input component styles\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"wrapper\", \"label\", \"sm\", \"md\", \"lg\"] as const);\n\nexport const wrapper = rule`${c.wrapper} {\n display: flex;\n flex-direction: column;\n gap: ${tokens.space.sm};\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const label = rule`${c.label} {\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n letter-spacing: -0.005em;\n}`;\n\nexport const root = rule`${c.root} {\n display: block;\n width: 100%;\n border: 1.5px solid ${tokens.colors.border};\n border-radius: ${tokens.radii.sm};\n background: white;\n color: ${tokens.colors.text};\n font-family: ${tokens.fonts.base};\n font-size: ${tokens.fontSizes.md};\n line-height: ${tokens.lineHeights.normal};\n transition: all ${tokens.transitions.fast};\n outline: none;\n}`;\n\nexport const rootStates = rules(\n rule`${c.root}:focus {\n border-color: ${tokens.colors.primary};\n box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.15);\n }`,\n rule`${c.root}:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: ${tokens.colors.surface};\n }`,\n rule`${c.root}::placeholder {\n color: ${tokens.colors.textTertiary};\n }`,\n);\n\nexport const sm = rule`${c.sm} {\n padding: ${tokens.space.sm} ${tokens.space.md};\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const md = rule`${c.md} {\n padding: ${tokens.space.md} ${tokens.space.lg};\n font-size: ${tokens.fontSizes.md};\n}`;\n\nexport const lg = rule`${c.lg} {\n padding: ${tokens.space.lg} ${tokens.space.xl};\n font-size: ${tokens.fontSizes.lg};\n}`;\n","/**\n * Avatar component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"image\", \"fallback\", \"sm\", \"md\", \"lg\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n overflow: hidden;\n background: ${tokens.colors.surface};\n border: 1.5px solid ${tokens.colors.border};\n flex-shrink: 0;\n font-family: ${tokens.fonts.base};\n user-select: none;\n}`;\n\nexport const image = rule`${c.image} {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}`;\n\nexport const fallback = rule`${c.fallback} {\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.textMuted};\n text-transform: uppercase;\n letter-spacing: 0.02em;\n}`;\n\nexport const sm = rule`${c.sm} {\n width: 32px;\n height: 32px;\n font-size: 0.75rem;\n}`;\n\nexport const md = rule`${c.md} {\n width: 40px;\n height: 40px;\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const lg = rule`${c.lg} {\n width: 48px;\n height: 48px;\n font-size: ${tokens.fontSizes.md};\n}`;\n","/**\n * Kbd (keyboard) component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n padding: 0.15rem 0.4rem;\n background: ${tokens.colors.surface};\n border: 0.5px solid ${tokens.colors.border};\n border-bottom-width: 2px;\n border-radius: 6px;\n font-family: ${tokens.fonts.base};\n font-size: 0.8125rem;\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n line-height: 1.4;\n white-space: nowrap;\n user-select: none;\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);\n}`;\n","/**\n * Switch component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"track\", \"trackOn\", \"thumb\", \"thumbOn\", \"label\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n gap: ${tokens.space.md};\n cursor: pointer;\n font-family: ${tokens.fonts.base};\n user-select: none;\n}`;\n\nexport const rootDisabled = rule`${c.root}[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}`;\n\nexport const track = rule`${c.track} {\n position: relative;\n width: 44px;\n height: 24px;\n background: ${tokens.colors.border};\n border-radius: 12px;\n transition: background ${tokens.transitions.fast};\n flex-shrink: 0;\n}`;\n\nexport const trackOn = rule`${c.trackOn} {\n background: ${tokens.colors.primary};\n}`;\n\nexport const thumb = rule`${c.thumb} {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n transition: transform ${tokens.transitions.fast};\n}`;\n\nexport const thumbOn = rule`${c.thumbOn} {\n transform: translateX(20px);\n}`;\n\nexport const label = rule`${c.label} {\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n letter-spacing: -0.005em;\n}`;\n","/**\n * Pre-collected CSS for SSG/SSR usage\n *\n * Since @semajsx/style's inject() requires a DOM, this module provides\n * all component CSS as a static string for server-side rendering.\n *\n * @example\n * ```tsx\n * import { componentCSS } from \"@semajsx/ui/css\";\n *\n * // Include in a <style> tag for SSG output\n * <style>{componentCSS}</style>\n * ```\n */\n\nimport { isStyleToken } from \"@semajsx/style\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport { lightTheme } from \"./theme/themes\";\nimport * as buttonStyles from \"./components/button/button.style\";\nimport * as cardStyles from \"./components/card/card.style\";\nimport * as calloutStyles from \"./components/callout/callout.style\";\nimport * as badgeStyles from \"./components/badge/badge.style\";\nimport * as codeBlockStyles from \"./components/code-block/code-block.style\";\nimport * as tabsStyles from \"./components/tabs/tabs.style\";\nimport * as stepsStyles from \"./components/steps/steps.style\";\nimport * as separatorStyles from \"./components/separator/separator.style\";\nimport * as inputStyles from \"./components/input/input.style\";\nimport * as avatarStyles from \"./components/avatar/avatar.style\";\nimport * as kbdStyles from \"./components/kbd/kbd.style\";\nimport * as switchStyles from \"./components/switch/switch.style\";\n\nfunction collectCSS(styles: Record<string, unknown>): string {\n return Object.values(styles)\n .filter((v): v is StyleToken => isStyleToken(v))\n .map((t) => t.__cssTemplate)\n .join(\"\\n\");\n}\n\n/** All @semajsx/ui component CSS (theme variables + component rules) */\nexport const componentCSS: string = [\n lightTheme.__cssTemplate,\n collectCSS(buttonStyles),\n collectCSS(cardStyles),\n collectCSS(calloutStyles),\n collectCSS(badgeStyles),\n collectCSS(codeBlockStyles),\n collectCSS(tabsStyles),\n collectCSS(stepsStyles),\n collectCSS(separatorStyles),\n collectCSS(inputStyles),\n collectCSS(avatarStyles),\n collectCSS(kbdStyles),\n collectCSS(switchStyles),\n].join(\"\\n\");\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Button component\n *\n * A polymorphic button with variant, size, and color support.\n * All styles are driven by theme tokens for automatic theme switching.\n *\n * @example\n * ```tsx\n * import { Button } from \"@semajsx/ui/button\";\n *\n * <Button>Default</Button>\n * <Button variant=\"outline\">Outline</Button>\n * <Button variant=\"ghost\" size=\"sm\">Small Ghost</Button>\n * <Button color=\"danger\">Delete</Button>\n * <Button disabled>Disabled</Button>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./button.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface ButtonProps {\n /** Visual variant */\n variant?: \"solid\" | \"outline\" | \"ghost\";\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Color scheme - \"danger\" applies destructive styling */\n color?: \"default\" | \"danger\";\n /** Disabled state */\n disabled?: boolean;\n /** HTML button type attribute */\n type?: \"button\" | \"submit\" | \"reset\";\n /** Click handler */\n onClick?: (e: Event) => void;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Accessible label when button content isn't descriptive */\n \"aria-label\"?: string;\n /** Content */\n children?: JSXNode;\n}\n\nconst variantStyles = {\n solid: [styles.solid, styles.solidStates],\n outline: [styles.outline, styles.outlineStates],\n ghost: [styles.ghost, styles.ghostStates],\n} as const;\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Button(props: ButtonProps): JSXNode {\n const variant = props.variant ?? \"solid\";\n const size = props.size ?? \"md\";\n const color = props.color ?? \"default\";\n\n return (\n <button\n type={props.type ?? \"button\"}\n disabled={props.disabled}\n class={[\n styles.root,\n styles.rootStates,\n ...variantStyles[variant],\n sizeStyles[size],\n color === \"danger\" && [styles.danger, styles.dangerStates],\n props.class,\n ]}\n onClick={props.onClick}\n aria-label={props[\"aria-label\"]}\n >\n {props.children}\n </button>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Separator component\n *\n * A visual divider between content sections.\n *\n * @example\n * ```tsx\n * import { Separator } from \"@semajsx/ui/components/separator\";\n *\n * <Separator />\n * <Separator orientation=\"vertical\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./separator.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface SeparatorProps {\n /** Orientation of the separator */\n orientation?: \"horizontal\" | \"vertical\";\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Inline style string */\n style?: string;\n}\n\nexport function Separator(props: SeparatorProps): JSXNode {\n const orientation = props.orientation ?? \"horizontal\";\n\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n class={[\n styles.root,\n styles.horizontal,\n orientation === \"vertical\" && styles.vertical,\n props.class,\n ]}\n style={props.style}\n />\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Input component\n *\n * A text input field with optional label and size variants.\n *\n * @example\n * ```tsx\n * import { Input } from \"@semajsx/ui/components/input\";\n *\n * <Input placeholder=\"Enter your name\" />\n * <Input label=\"Email\" type=\"email\" size=\"lg\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./input.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface InputProps {\n /** Input type */\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"search\" | \"url\" | \"tel\";\n /** Label text displayed above the input */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Current value */\n value?: string;\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Disabled state */\n disabled?: boolean;\n /** Read-only state */\n readOnly?: boolean;\n /** HTML name attribute */\n name?: string;\n /** HTML id attribute */\n id?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Input(props: InputProps): JSXNode {\n const size = props.size ?? \"md\";\n const inputId = props.id ?? props.name;\n\n const input = (\n <input\n type={props.type ?? \"text\"}\n id={inputId}\n name={props.name}\n placeholder={props.placeholder}\n value={props.value}\n disabled={props.disabled}\n readOnly={props.readOnly}\n class={[styles.root, styles.rootStates, sizeStyles[size], props.class]}\n />\n );\n\n if (props.label) {\n return (\n <div class={styles.wrapper}>\n <label class={styles.label} for={inputId}>\n {props.label}\n </label>\n {input}\n </div>\n );\n }\n\n return input;\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Avatar component\n *\n * Displays a user avatar with image or initials fallback.\n *\n * @example\n * ```tsx\n * import { Avatar } from \"@semajsx/ui/components/avatar\";\n *\n * <Avatar src=\"/photo.jpg\" alt=\"John\" />\n * <Avatar initials=\"JD\" />\n * <Avatar initials=\"AB\" size=\"lg\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./avatar.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface AvatarProps {\n /** Image source URL */\n src?: string;\n /** Alt text for the image */\n alt?: string;\n /** Initials to display when no image is provided */\n initials?: string;\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Avatar(props: AvatarProps): JSXNode {\n const size = props.size ?? \"md\";\n\n return (\n <div\n class={[styles.root, sizeStyles[size], props.class]}\n role=\"img\"\n aria-label={props.alt ?? props.initials ?? \"Avatar\"}\n >\n {props.src ? (\n <img class={styles.image} src={props.src} alt={props.alt ?? \"\"} />\n ) : (\n <span class={styles.fallback}>{props.initials ?? \"?\"}</span>\n )}\n </div>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Kbd component\n *\n * Displays a keyboard key or shortcut.\n *\n * @example\n * ```tsx\n * import { Kbd } from \"@semajsx/ui/components/kbd\";\n *\n * <Kbd>Ctrl</Kbd>\n * <p>Press <Kbd>Cmd</Kbd> + <Kbd>K</Kbd> to search</p>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./kbd.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface KbdProps {\n /** Key label */\n children?: JSXNode;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nexport function Kbd(props: KbdProps): JSXNode {\n return <kbd class={[styles.root, props.class]}>{props.children}</kbd>;\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Switch component\n *\n * A toggle switch for boolean settings.\n *\n * @example\n * ```tsx\n * import { Switch } from \"@semajsx/ui/components/switch\";\n *\n * <Switch label=\"Dark mode\" />\n * <Switch label=\"Notifications\" checked />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./switch.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface SwitchProps {\n /** Label text */\n label?: string;\n /** Checked state */\n checked?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** HTML name attribute */\n name?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nexport function Switch(props: SwitchProps): JSXNode {\n const checked = props.checked ?? false;\n\n return (\n <div\n role=\"switch\"\n aria-checked={checked ? \"true\" : \"false\"}\n aria-disabled={props.disabled ? \"true\" : undefined}\n class={[styles.root, styles.rootDisabled, props.class]}\n >\n <div class={[styles.track, checked && styles.trackOn]}>\n <div class={[styles.thumb, checked && styles.thumbOn]} />\n </div>\n {props.label && <span class={styles.label}>{props.label}</span>}\n </div>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\nimport type { VNode, JSXNode } from \"@semajsx/core\";\nimport type { DocumentProps } from \"../../types\";\nimport type { DocsThemeOptions, NavLink } from \"./types\";\nimport { THEME_CSS } from \"./styles\";\nimport { Icon } from \"../lucide/component\";\n\nimport { Callout } from \"@semajsx/ui/components/callout\";\nimport { Badge } from \"@semajsx/ui/components/badge\";\nimport { Card } from \"@semajsx/ui/components/card\";\nimport { Tabs, TabList, Tab, TabPanel } from \"@semajsx/ui/components/tabs\";\nimport { Steps, Step } from \"@semajsx/ui/components/steps\";\nimport { componentCSS } from \"@semajsx/ui/css\";\n\nimport type { BadgeColor } from \"@semajsx/ui/components/badge\";\n\nimport { Button } from \"@semajsx/ui/components/button\";\nimport { Separator } from \"@semajsx/ui/components/separator\";\nimport { Input } from \"@semajsx/ui/components/input\";\nimport { Avatar } from \"@semajsx/ui/components/avatar\";\nimport { Kbd } from \"@semajsx/ui/components/kbd\";\nimport { Switch } from \"@semajsx/ui/components/switch\";\n\n/** Concatenate class names, filtering falsy values */\nfunction cx(...args: (string | false | null | undefined)[]): string {\n return args.filter(Boolean).join(\" \");\n}\n\n// =============================================================================\n// ComponentPreview — MDX component for showcasing UI components\n// =============================================================================\n\ninterface ComponentPreviewProps {\n /** Optional label shown above the preview */\n label?: string;\n children?: JSXNode;\n}\n\nexport function ComponentPreview({ label, children }: ComponentPreviewProps): VNode {\n return (\n <div class=\"dt-preview\">\n <div class=\"dt-preview-box\">\n {label && <span class=\"dt-preview-label\">{label}</span>}\n {children}\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// CodeBlock — MDX component (kept custom for Shiki className integration)\n// =============================================================================\n\ninterface CodeBlockProps {\n children: string;\n className?: string;\n language?: string;\n}\n\nexport function CodeBlock({ children, className, language }: CodeBlockProps): VNode {\n const lang = language || (className?.replace(/^language-/, \"\") ?? \"text\");\n return (\n <div class=\"dt-code-block\">\n {lang && lang !== \"text\" && (\n <div class=\"dt-code-header\">\n <span class=\"dt-code-lang\">{lang}</span>\n </div>\n )}\n <pre class={className}>\n <code>{children}</code>\n </pre>\n </div>\n );\n}\n\n// =============================================================================\n// Difficulty → Badge color mapping\n// =============================================================================\n\nconst DIFFICULTY_COLORS: Record<string, BadgeColor> = {\n beginner: \"success\",\n intermediate: \"warning\",\n advanced: \"danger\",\n};\n\nconst DIFFICULTY_LABELS: Record<string, string> = {\n beginner: \"Beginner\",\n intermediate: \"Intermediate\",\n advanced: \"Advanced\",\n};\n\n// =============================================================================\n// Component factory — creates all page components bound to theme options\n// =============================================================================\n\ninterface DocsIndexProps {\n docs: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n}\n\ninterface DocPageProps {\n doc: { data: { title: string; description?: string } };\n content: VNode;\n}\n\ninterface GuidesIndexProps {\n guides: Array<{\n slug: string;\n data: { title: string; description?: string; difficulty: string; order: number };\n }>;\n}\n\ninterface GuidePageProps {\n guide: { data: { title: string; description?: string; difficulty: string } };\n content: VNode;\n}\n\ninterface UIIndexProps {\n components: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n}\n\ninterface UIPageProps {\n component: { data: { title: string; description?: string } };\n content: VNode;\n}\n\n/** Props for the DocsIndexHome preset */\ninterface DocsIndexHomeProps {\n docs: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n guides: Array<{\n slug: string;\n data: { title: string; description?: string; difficulty: string; order: number };\n }>;\n}\n\n/** Component map returned by createComponents */\nexport interface DocsThemeComponents {\n Document: (props: DocumentProps) => VNode;\n Layout: (props: { children: JSXNode }) => VNode;\n HomePage: () => VNode;\n DocsIndexHome: (props: DocsIndexHomeProps) => VNode;\n DocsIndex: (props: DocsIndexProps) => VNode;\n DocPage: (props: DocPageProps) => VNode;\n GuidesIndex: (props: GuidesIndexProps) => VNode;\n GuidePage: (props: GuidePageProps) => VNode;\n UIIndex: (props: UIIndexProps) => VNode;\n UIPage: (props: UIPageProps) => VNode;\n NotFound: () => VNode;\n ComponentPreview: typeof ComponentPreview;\n Callout: typeof Callout;\n CodeBlock: typeof CodeBlock;\n Tabs: typeof Tabs;\n TabList: typeof TabList;\n Tab: typeof Tab;\n TabPanel: typeof TabPanel;\n Steps: typeof Steps;\n Step: typeof Step;\n Button: typeof Button;\n Badge: typeof Badge;\n Card: typeof Card;\n Separator: typeof Separator;\n Input: typeof Input;\n Avatar: typeof Avatar;\n Kbd: typeof Kbd;\n Switch: typeof Switch;\n}\n\nexport function createComponents(options: DocsThemeOptions): DocsThemeComponents {\n // --------------------------------------------------\n // Document\n // --------------------------------------------------\n function Document(props: DocumentProps): VNode {\n const { children, title, scripts, css } = props;\n const defaultTitle = options.title;\n const pageTitle = title ?? defaultTitle;\n const desc = options.description ?? \"\";\n\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n {desc && <meta name=\"description\" content={desc} />}\n <meta name=\"theme-color\" content=\"#fbfbfd\" />\n <meta name=\"color-scheme\" content=\"light\" />\n <title>{pageTitle}</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossOrigin=\"\" />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\"\n rel=\"stylesheet\"\n />\n {css?.map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} />\n ))}\n </head>\n <body>\n {children}\n {scripts}\n </body>\n </html>\n );\n }\n\n // --------------------------------------------------\n // Layout (nav + main + footer)\n // --------------------------------------------------\n function Layout({ children }: { children: JSXNode }): VNode {\n const footerLinks = options.footer?.links ?? options.nav.links;\n const copyrightName = options.footer?.copyright ?? options.title;\n\n return (\n <div class=\"dt-root\">\n <style>{componentCSS}</style>\n <style>{THEME_CSS}</style>\n\n {/* Navigation */}\n <nav class=\"dt-glass-nav\">\n <div class=\"dt-nav-inner\">\n <a href=\"/\" class=\"dt-nav-logo\">\n {options.nav.logo}\n </a>\n <ul class=\"dt-nav-links\">\n {options.nav.links.map((link: NavLink) => (\n <li key={link.href}>\n <a\n href={link.href}\n class=\"dt-nav-link\"\n {...(link.external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </nav>\n\n <main class=\"dt-main\">{children}</main>\n\n {/* Footer */}\n <footer class=\"dt-footer\">\n <div class=\"dt-footer-inner\">\n <div class=\"dt-footer-links\">\n {footerLinks.map((link: NavLink) => (\n <a\n key={link.href}\n href={link.href}\n class=\"dt-footer-link\"\n {...(link.external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {link.label}\n </a>\n ))}\n </div>\n <p class=\"dt-footer-copy\">\n {`\\u00A9 ${new Date().getFullYear()} ${copyrightName}`}. MIT License.\n </p>\n </div>\n </footer>\n </div>\n );\n }\n\n // --------------------------------------------------\n // Home Page\n // --------------------------------------------------\n function HomePage(): VNode {\n return (\n <Layout>\n {/* Hero */}\n {options.hero && (\n <div\n class={cx(\"dt-hero-bg\", \"dt-hero-section\")}\n style=\"padding: 100px 24px 80px; position: relative;\"\n >\n <div style=\"max-width: 680px; margin: 0 auto; position: relative; z-index: 1; text-align: center;\">\n <h1 class={cx(\"dt-hero-title\", \"dt-anim-slide-up\")}>{options.hero.title}</h1>\n <p class={cx(\"dt-hero-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.hero.subtitle}\n </p>\n {options.hero.actions && options.hero.actions.length > 0 && (\n <div class={cx(\"dt-hero-cta\", \"dt-anim-slide-up\", \"dt-stagger-2\")}>\n {options.hero.actions.map((action) => (\n <a\n key={action.href}\n href={action.href}\n class={action.primary ? \"dt-primary-btn\" : \"dt-secondary-btn\"}\n >\n {action.label}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Features */}\n {options.features && (\n <section\n class=\"dt-section-features\"\n style=\"max-width: 1080px; margin: 0 auto; padding: 80px 24px;\"\n >\n <div style=\"text-align: center; margin-bottom: 3.5rem;\">\n <h2 class={cx(\"dt-section-title\", \"dt-anim-slide-up\")}>{options.features.title}</h2>\n <p class={cx(\"dt-section-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.features.subtitle}\n </p>\n </div>\n <div\n class=\"dt-features-grid\"\n style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem;\"\n >\n {options.features.items.map((item, i) => (\n <Card\n key={item.title}\n icon={<Icon name={item.icon} size={24} />}\n heading={item.title}\n description={item.description}\n class={cx(\"dt-anim-scale-in\", `dt-stagger-${Math.min(i + 2, 5)}`)}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Quick Links */}\n {options.quickLinks && (\n <section\n class=\"dt-section-links\"\n style=\"max-width: 1080px; margin: 0 auto; padding: 0 24px 100px;\"\n >\n <div\n class=\"dt-section-links-inner\"\n style=\"border-top: 0.5px solid rgba(0, 0, 0, 0.06); padding-top: 80px; text-align: center;\"\n >\n <h2 class={cx(\"dt-section-title\", \"dt-anim-slide-up\")}>{options.quickLinks.title}</h2>\n <p class={cx(\"dt-section-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.quickLinks.subtitle}\n </p>\n <div\n class=\"dt-links-grid\"\n style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.25rem; max-width: 720px; margin: 0 auto;\"\n >\n {options.quickLinks.items.map((item, i) => (\n <Card\n key={item.href}\n variant=\"link\"\n href={item.href}\n heading={item.title}\n description={item.description}\n class={cx(\"dt-anim-scale-in\", `dt-stagger-${Math.min(i + 2, 5)}`)}\n style=\"text-align: left;\"\n />\n ))}\n </div>\n </div>\n </section>\n )}\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Docs Index Home (preset for home: \"docs-index\")\n // --------------------------------------------------\n function DocsIndexHome({ docs: docsList, guides: guidesList }: DocsIndexHomeProps): VNode {\n const docsConf = options.docs;\n const guidesConf = options.guides;\n const docsBasePath = docsConf?.basePath ?? \"/docs\";\n const guidesBasePath = guidesConf?.basePath ?? \"/guides\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{options.title}</h1>\n {options.description && (\n <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.description}\n </p>\n )}\n </div>\n\n {/* Docs listing */}\n {docsList.length > 0 && (\n <section class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{docsConf?.heading ?? \"Documentation\"}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {docsList\n .sort((a, b) => a.data.order - b.data.order)\n .map((doc, i) => (\n <Card\n key={doc.slug}\n variant=\"link\"\n href={`${docsBasePath}/${doc.slug}`}\n heading={doc.data.title}\n description={doc.data.description}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Guides listing */}\n {guidesList.length > 0 && (\n <section class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{guidesConf?.heading ?? \"Guides\"}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {guidesList\n .sort((a, b) => a.data.order - b.data.order)\n .map((guide, i) => (\n <Card\n key={guide.slug}\n variant=\"link\"\n href={`${guidesBasePath}/${guide.slug}`}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n >\n <div style=\"display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.375rem;\">\n <h3 class=\"dt-card-title\" style=\"margin: 0;\">\n {guide.data.title}\n </h3>\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n {guide.data.description && (\n <p class=\"dt-card-desc\">{guide.data.description}</p>\n )}\n </Card>\n ))}\n </div>\n </section>\n )}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Docs Index\n // --------------------------------------------------\n function DocsIndex({ docs: docsList }: DocsIndexProps): VNode {\n const docsConf = options.docs;\n const heading = docsConf?.heading ?? \"Documentation\";\n const desc = docsConf?.description ?? \"\";\n\n const byCategory = docsList.reduce(\n (acc, doc) => {\n const category = doc.data.category || \"General\";\n if (!acc[category]) acc[category] = [];\n acc[category].push(doc);\n return acc;\n },\n {} as Record<string, typeof docsList>,\n );\n Object.values(byCategory).forEach((items) => items.sort((a, b) => a.data.order - b.data.order));\n\n const basePath = docsConf?.basePath ?? \"/docs\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byCategory).map(([category, items]) => (\n <section key={category} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{category}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {items.map((doc, i) => (\n <Card\n key={doc.slug}\n variant=\"link\"\n href={`${basePath}/${doc.slug}`}\n heading={doc.data.title}\n description={doc.data.description}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n />\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Doc Page\n // --------------------------------------------------\n function DocPage({ doc, content }: DocPageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\">\n <div style=\"margin-bottom: 2.5rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{doc.data.title}</h1>\n {doc.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {doc.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Guides Index\n // --------------------------------------------------\n function GuidesIndex({ guides: guidesList }: GuidesIndexProps): VNode {\n const guidesConf = options.guides;\n const heading = guidesConf?.heading ?? \"Guides\";\n const desc = guidesConf?.description ?? \"\";\n\n const byDifficulty = guidesList.reduce(\n (acc, guide) => {\n const difficulty = guide.data.difficulty || \"beginner\";\n if (!acc[difficulty]) acc[difficulty] = [];\n acc[difficulty].push(guide);\n return acc;\n },\n {} as Record<string, typeof guidesList>,\n );\n Object.values(byDifficulty).forEach((items) =>\n items.sort((a, b) => a.data.order - b.data.order),\n );\n\n const basePath = guidesConf?.basePath ?? \"/guides\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byDifficulty).map(([difficulty, items]) => (\n <section key={difficulty} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{DIFFICULTY_LABELS[difficulty] ?? difficulty}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {items.map((guide, i) => (\n <Card\n key={guide.slug}\n variant=\"link\"\n href={`${basePath}/${guide.slug}`}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n >\n <div style=\"display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.375rem;\">\n <h3 class=\"dt-card-title\" style=\"margin: 0;\">\n {guide.data.title}\n </h3>\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n {guide.data.description && <p class=\"dt-card-desc\">{guide.data.description}</p>}\n </Card>\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Guide Page\n // --------------------------------------------------\n function GuidePage({ guide, content }: GuidePageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\">\n <div style=\"margin-bottom: 2.5rem;\">\n <div class=\"dt-fade-in\" style=\"margin-bottom: 1rem;\">\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{guide.data.title}</h1>\n {guide.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {guide.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // UI Components Index\n // --------------------------------------------------\n function UIIndex({ components: componentsList }: UIIndexProps): VNode {\n const uiConf = options.ui;\n const heading = uiConf?.heading ?? \"Components\";\n const desc = uiConf?.description ?? \"\";\n const basePath = uiConf?.basePath ?? \"/ui\";\n\n const byCategory = componentsList.reduce(\n (acc, comp) => {\n const category = comp.data.category || \"General\";\n if (!acc[category]) acc[category] = [];\n acc[category].push(comp);\n return acc;\n },\n {} as Record<string, typeof componentsList>,\n );\n Object.values(byCategory).forEach((items) => items.sort((a, b) => a.data.order - b.data.order));\n\n return (\n <Layout>\n <div style=\"max-width: 960px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byCategory).map(([category, items]) => (\n <section key={category} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{category}</h2>\n <div class=\"dt-ui-grid\">\n {items.map((comp, i) => (\n <a\n key={comp.slug}\n href={`${basePath}/${comp.slug}`}\n class={cx(\"dt-ui-card\", \"dt-anim-scale-in\")}\n style={`animation-delay: ${0.05 + i * 0.05}s;`}\n >\n <div class=\"dt-ui-card-preview\">{renderMiniPreview(comp.slug)}</div>\n <h3 class=\"dt-ui-card-name\">{comp.data.title}</h3>\n {comp.data.description && (\n <p class=\"dt-ui-card-desc\">{comp.data.description}</p>\n )}\n </a>\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n /** Renders a small preview of the component for the index grid cards */\n function renderMiniPreview(slug: string): JSXNode {\n switch (slug) {\n case \"button\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Button size=\"sm\">Button</Button>\n <Button size=\"sm\" variant=\"outline\">\n Outline\n </Button>\n </div>\n );\n case \"badge\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Badge>Default</Badge>\n <Badge color=\"success\">Success</Badge>\n <Badge color=\"warning\">Warning</Badge>\n </div>\n );\n case \"input\":\n return (\n <div style=\"width: 160px; position: relative; z-index: 1;\">\n <Input size=\"sm\" placeholder=\"Type here...\" />\n </div>\n );\n case \"switch\":\n return (\n <div style=\"display: flex; gap: 1rem; position: relative; z-index: 1;\">\n <Switch />\n <Switch checked />\n </div>\n );\n case \"avatar\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Avatar initials=\"AB\" size=\"sm\" />\n <Avatar initials=\"CD\" size=\"md\" />\n <Avatar initials=\"EF\" size=\"lg\" />\n </div>\n );\n case \"separator\":\n return (\n <div style=\"width: 120px; position: relative; z-index: 1;\">\n <div style=\"font-size: 0.75rem; color: #86868b; text-align: center;\">Above</div>\n <Separator />\n <div style=\"font-size: 0.75rem; color: #86868b; text-align: center;\">Below</div>\n </div>\n );\n case \"kbd\":\n return (\n <div style=\"display: flex; gap: 0.25rem; align-items: center; position: relative; z-index: 1;\">\n <Kbd>Cmd</Kbd>\n <span style=\"color: #86868b; font-size: 0.75rem;\">+</span>\n <Kbd>K</Kbd>\n </div>\n );\n case \"card\":\n return (\n <div style=\"transform: scale(0.45); transform-origin: center; position: relative; z-index: 1; width: 240px;\">\n <Card heading=\"Card Title\" description=\"A brief description\" />\n </div>\n );\n case \"callout\":\n return (\n <div style=\"transform: scale(0.6); transform-origin: center; position: relative; z-index: 1; width: 260px;\">\n <Callout type=\"info\">Informational callout</Callout>\n </div>\n );\n case \"tabs\":\n return (\n <div style=\"transform: scale(0.7); transform-origin: center; position: relative; z-index: 1; width: 200px;\">\n <Tabs defaultValue=\"one\">\n <TabList>\n <Tab value=\"one\">First</Tab>\n <Tab value=\"two\">Second</Tab>\n </TabList>\n </Tabs>\n </div>\n );\n case \"steps\":\n return (\n <div style=\"transform: scale(0.4); transform-origin: center; position: relative; z-index: 1; width: 200px;\">\n <Steps>\n <Step title=\"Install\" number={1}>\n bun add semajsx\n </Step>\n <Step title=\"Build\" number={2}>\n Create app\n </Step>\n </Steps>\n </div>\n );\n case \"code-block\":\n return (\n <div style=\"position: relative; z-index: 1; width: 160px;\">\n <div style=\"background: #1e1e1e; border-radius: 6px; padding: 8px 10px; font-family: ui-monospace, 'SF Mono', monospace; font-size: 0.625rem; color: #d4d4d4; line-height: 1.5; white-space: pre; overflow: hidden;\">\n <span style=\"color: #c586c0;\">const</span> <span style=\"color: #9cdcfe;\">x</span>{\" \"}\n <span style=\"color: #d4d4d4;\">=</span> <span style=\"color: #b5cea8;\">42</span>;\n </div>\n </div>\n );\n default:\n return (\n <div style=\"font-size: 0.6875rem; color: #86868b; position: relative; z-index: 1;\">\n {slug}\n </div>\n );\n }\n }\n\n // --------------------------------------------------\n // UI Component Page\n // --------------------------------------------------\n function UIPage({ component: comp, content }: UIPageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\" style=\"max-width: 800px;\">\n <div style=\"margin-bottom: 2.5rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{comp.data.title}</h1>\n {comp.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {comp.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // 404 Not Found\n // --------------------------------------------------\n function NotFound(): VNode {\n return (\n <Layout>\n <div\n class={cx(\"dt-hero-bg\", \"dt-not-found-section\")}\n style=\"padding: 100px 24px 80px; position: relative;\"\n >\n <div style=\"max-width: 680px; margin: 0 auto; position: relative; z-index: 1; text-align: center;\">\n <h1 class={cx(\"dt-not-found-title\", \"dt-anim-slide-up\")}>404</h1>\n <p\n class={cx(\"dt-hero-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}\n style=\"margin-bottom: 0.75rem;\"\n >\n Page Not Found\n </p>\n <p\n class={cx(\"dt-anim-slide-up\", \"dt-stagger-2\")}\n style=\"color: #86868b; font-size: 1rem; margin-bottom: 2.5rem; max-width: 28rem; margin-left: auto; margin-right: auto; line-height: 1.6;\"\n >\n The page you're looking for doesn't exist or has been moved.\n </p>\n <div class={cx(\"dt-hero-cta\", \"dt-anim-slide-up\", \"dt-stagger-3\", \"dt-not-found-cta\")}>\n <a href=\"/\" class=\"dt-primary-btn\">\n Go Back Home\n </a>\n <a href={options.docs?.basePath ?? \"/docs\"} class=\"dt-secondary-btn\">\n View Docs\n </a>\n </div>\n </div>\n </div>\n </Layout>\n );\n }\n\n return {\n Document,\n Layout,\n HomePage,\n DocsIndexHome,\n DocsIndex,\n DocPage,\n GuidesIndex,\n GuidePage,\n UIIndex,\n UIPage,\n NotFound,\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n };\n}\n\n// Re-export for plugin index\nexport {\n Callout,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n};\n","import { writeFile, mkdir } from \"fs/promises\";\nimport { join, dirname } from \"path\";\nimport type { SSGConfig, SSGPlugin, SSGInstance, CollectionEntry } from \"../../types\";\nimport type { LlmsOptions } from \"./types\";\n\nexport type { LlmsOptions, LlmsSection, LlmsLink } from \"./types\";\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nfunction normalizePath(path: string): string {\n return path.startsWith(\"/\") ? path : `/${path}`;\n}\n\nfunction resolveUrl(base: string | undefined, path: string): string {\n if (!base) return path;\n return `${base.replace(/\\/$/, \"\")}${path}`;\n}\n\nfunction getEntryTitle(entry: CollectionEntry): string {\n const data = entry.data as Record<string, unknown>;\n return (data.title as string) ?? entry.slug;\n}\n\nfunction getEntryDescription(entry: CollectionEntry): string | undefined {\n const data = entry.data as Record<string, unknown>;\n return data.description as string | undefined;\n}\n\nfunction formatLink(title: string, url: string, description?: string): string {\n return description ? `- [${title}](${url}): ${description}` : `- [${title}](${url})`;\n}\n\n// =============================================================================\n// llms.txt Generator\n// =============================================================================\n\n/**\n * Generate llms.txt content following the llms.txt specification.\n *\n * Format:\n * - H1: site title (required)\n * - Blockquote: site description (optional)\n * - H2 sections: collection entries as markdown links\n * - ## Optional: additional links\n *\n * @see https://llmstxt.org/\n */\nfunction generateLlmsTxt(\n options: LlmsOptions,\n sectionEntries: Map<string, CollectionEntry[]>,\n): string {\n const lines: string[] = [];\n\n lines.push(`# ${options.title}`);\n lines.push(\"\");\n\n if (options.description) {\n lines.push(`> ${options.description}`);\n lines.push(\"\");\n }\n\n for (const section of options.sections ?? []) {\n const entries = sectionEntries.get(section.collection) ?? [];\n if (entries.length === 0) continue;\n\n const basePath = normalizePath(section.basePath);\n lines.push(`## ${section.title}`);\n lines.push(\"\");\n\n for (const entry of entries) {\n const title = getEntryTitle(entry);\n const url = resolveUrl(options.url, `${basePath}/${entry.slug}`);\n const desc = getEntryDescription(entry);\n lines.push(formatLink(title, url, desc));\n }\n\n lines.push(\"\");\n }\n\n if (options.links?.length) {\n lines.push(\"## Optional\");\n lines.push(\"\");\n for (const link of options.links) {\n lines.push(formatLink(link.title, link.url, link.description));\n }\n lines.push(\"\");\n }\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// llms-full.txt Generator\n// =============================================================================\n\n/**\n * Generate llms-full.txt with complete content for each entry.\n * Includes the full markdown body of every collection entry.\n */\nfunction generateLlmsFullTxt(\n options: LlmsOptions,\n sectionEntries: Map<string, CollectionEntry[]>,\n): string {\n const lines: string[] = [];\n\n lines.push(`# ${options.title}`);\n lines.push(\"\");\n\n if (options.description) {\n lines.push(`> ${options.description}`);\n lines.push(\"\");\n }\n\n for (const section of options.sections ?? []) {\n const entries = sectionEntries.get(section.collection) ?? [];\n if (entries.length === 0) continue;\n\n const basePath = normalizePath(section.basePath);\n lines.push(`## ${section.title}`);\n lines.push(\"\");\n\n for (const entry of entries) {\n const title = getEntryTitle(entry);\n const url = resolveUrl(options.url, `${basePath}/${entry.slug}`);\n const desc = getEntryDescription(entry);\n\n lines.push(`### ${title}`);\n\n if (desc) {\n lines.push(\"\");\n lines.push(`> ${desc}`);\n }\n\n lines.push(\"\");\n lines.push(`Source: ${url}`);\n lines.push(\"\");\n lines.push(entry.body.trim());\n lines.push(\"\");\n lines.push(\"---\");\n lines.push(\"\");\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// Per-Entry Markdown Generator\n// =============================================================================\n\nfunction generateEntryMarkdown(entry: CollectionEntry): string {\n const title = getEntryTitle(entry);\n const desc = getEntryDescription(entry);\n const lines: string[] = [];\n\n lines.push(`# ${title}`);\n\n if (desc) {\n lines.push(\"\");\n lines.push(`> ${desc}`);\n }\n\n lines.push(\"\");\n lines.push(entry.body.trim());\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// Plugin\n// =============================================================================\n\n/**\n * LLMs plugin for SSG.\n *\n * Generates `llms.txt`, `llms-full.txt`, and per-page `.md` files\n * following the llms.txt specification, making your site easily\n * consumable by LLMs and AI agents.\n *\n * @see https://llmstxt.org/\n *\n * @example\n * ```tsx\n * import { createSSG } from \"@semajsx/ssg\";\n * import { llms } from \"@semajsx/ssg/plugins/llms\";\n *\n * const ssg = createSSG({\n * outDir: \"./dist\",\n * plugins: [\n * llms({\n * title: \"My Project\",\n * description: \"Documentation for My Project\",\n * url: \"https://docs.myproject.com\",\n * sections: [\n * { title: \"Documentation\", collection: \"docs\", basePath: \"/docs\" },\n * ],\n * }),\n * ],\n * });\n * ```\n */\nexport function llms(options: LlmsOptions): SSGPlugin {\n let outDir = \"\";\n\n return {\n name: \"llms\",\n enforce: \"post\",\n\n configResolved(config: SSGConfig) {\n outDir = config.outDir ?? \"./dist\";\n },\n\n async buildEnd(_result, ssg: SSGInstance) {\n const genLlmsTxt = options.llmsTxt !== false;\n const genLlmsFullTxt = options.llmsFullTxt !== false;\n const genMarkdownPages = options.markdownPages !== false;\n\n // Collect entries for each configured section\n const sectionEntries = new Map<string, CollectionEntry[]>();\n\n for (const section of options.sections ?? []) {\n try {\n const entries = await ssg.getCollection(section.collection);\n sectionEntries.set(section.collection, entries);\n } catch {\n // Collection not found — skip silently\n sectionEntries.set(section.collection, []);\n }\n }\n\n await mkdir(outDir, { recursive: true });\n\n // Generate llms.txt\n if (genLlmsTxt) {\n const content = generateLlmsTxt(options, sectionEntries);\n await writeFile(join(outDir, \"llms.txt\"), content, \"utf-8\");\n }\n\n // Generate llms-full.txt\n if (genLlmsFullTxt) {\n const content = generateLlmsFullTxt(options, sectionEntries);\n await writeFile(join(outDir, \"llms-full.txt\"), content, \"utf-8\");\n }\n\n // Generate per-entry .md files\n if (genMarkdownPages) {\n for (const section of options.sections ?? []) {\n const basePath = normalizePath(section.basePath);\n const entries = sectionEntries.get(section.collection) ?? [];\n for (const entry of entries) {\n const mdPath = `${basePath}/${entry.slug}.md`;\n const fullPath = join(outDir, mdPath.slice(1)); // strip leading /\n const content = generateEntryMarkdown(entry);\n\n await mkdir(dirname(fullPath), { recursive: true });\n await writeFile(fullPath, content, \"utf-8\");\n }\n }\n }\n },\n };\n}\n\n// Export generators for testing\nexport { generateLlmsTxt as _generateLlmsTxt, generateLlmsFullTxt as _generateLlmsFullTxt };\n","import { z } from \"zod\";\nimport type { SSGPlugin, Collection, RouteConfig } from \"../../types\";\nimport { defineCollection } from \"../../index\";\nimport type { DocsThemeOptions } from \"./types\";\nimport {\n createComponents,\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n} from \"./components\";\nimport { lucide as lucidePlugin } from \"../lucide/index\";\nimport { llms as llmsPlugin } from \"../llms/index\";\nimport type { LlmsSection } from \"../llms/types\";\nimport type { Component } from \"@semajsx/core\";\n\nexport type {\n DocsThemeOptions,\n LlmsThemeOptions,\n NavLink,\n HeroAction,\n FeatureItem,\n QuickLinkItem,\n DocsConfig,\n GuidesConfig,\n UIConfig,\n HomeOption,\n HomePageProps,\n LayoutComponent,\n} from \"./types\";\n\nexport {\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n} from \"./components\";\n\n// =============================================================================\n// Schemas\n// =============================================================================\n\nconst docsSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n category: z.string().optional(),\n});\n\nconst guidesSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n difficulty: z.enum([\"beginner\", \"intermediate\", \"advanced\"]).default(\"beginner\"),\n});\n\nconst uiSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n category: z.string().optional(),\n});\n\n// =============================================================================\n// Plugin factory\n// =============================================================================\n\n/**\n * Docs theme plugin for SSG.\n *\n * Provides an Apple-inspired documentation site with:\n * - Frosted glass navigation\n * - Home page with hero, features, and quick links\n * - Docs collection with category grouping\n * - Guides collection with difficulty levels\n * - MDX components (Callout, CodeBlock)\n * - Responsive design\n *\n * All text content, navigation links, and site metadata\n * are configured through options — nothing is hardcoded.\n *\n * @example\n * ```tsx\n * import { createSSG } from \"@semajsx/ssg\";\n * import { docsTheme } from \"@semajsx/ssg/plugins/docs-theme\";\n * import { fileSource } from \"@semajsx/ssg\";\n *\n * const ssg = createSSG({\n * outDir: \"./dist\",\n * plugins: [\n * docsTheme({\n * title: \"My Docs\",\n * nav: {\n * logo: \"MyProject\",\n * links: [\n * { label: \"Docs\", href: \"/docs\" },\n * { label: \"GitHub\", href: \"https://github.com/...\", external: true },\n * ],\n * },\n * hero: {\n * title: \"MyProject\",\n * subtitle: \"A great project.\",\n * actions: [{ label: \"Get Started\", href: \"/docs/intro\", primary: true }],\n * },\n * docs: { source: fileSource({ directory: \"content/docs\" }, rootDir) },\n * }),\n * ],\n * });\n * ```\n */\nexport function docsTheme(options: DocsThemeOptions): SSGPlugin[] {\n const components = createComponents(options);\n const docsBasePath = options.docs?.basePath ?? \"/docs\";\n const guidesBasePath = options.guides?.basePath ?? \"/guides\";\n const uiBasePath = options.ui?.basePath ?? \"/ui\";\n\n const mainPlugin: SSGPlugin = {\n name: \"docs-theme\",\n\n config() {\n const collections: Collection[] = [];\n const routes: RouteConfig[] = [];\n\n // --- Collections ---\n\n if (options.docs) {\n collections.push(\n defineCollection({\n name: \"docs\",\n source: options.docs.source,\n schema: docsSchema,\n }),\n );\n }\n\n if (options.guides) {\n collections.push(\n defineCollection({\n name: \"guides\",\n source: options.guides.source,\n schema: guidesSchema,\n }),\n );\n }\n\n if (options.ui) {\n collections.push(\n defineCollection({\n name: \"ui\",\n source: options.ui.source,\n schema: uiSchema,\n }),\n );\n }\n\n // --- Routes ---\n\n // Home page\n if (options.home !== false) {\n if (options.home === \"docs-index\") {\n // Minimal document index preset\n routes.push({\n path: \"/\",\n component: components.DocsIndexHome,\n props: async (ssg) => ({\n title: options.title,\n docs: options.docs ? await ssg.getCollection(\"docs\") : [],\n guides: options.guides ? await ssg.getCollection(\"guides\") : [],\n }),\n });\n } else if (typeof options.home === \"function\") {\n // Custom component — pass Layout and collection data\n const CustomHome = options.home;\n routes.push({\n path: \"/\",\n component: (props: Record<string, unknown>) => CustomHome(props as never),\n props: async (ssg) => ({\n title: options.title,\n Layout: components.Layout,\n docs: options.docs ? await ssg.getCollection(\"docs\") : [],\n guides: options.guides ? await ssg.getCollection(\"guides\") : [],\n }),\n });\n } else {\n // Default marketing homepage\n routes.push({\n path: \"/\",\n component: components.HomePage,\n props: { title: options.title },\n });\n }\n }\n\n // Docs routes\n if (options.docs) {\n routes.push({\n path: docsBasePath,\n component: components.DocsIndex,\n props: async (ssg) => ({\n title: options.docs?.heading ?? \"Documentation\",\n docs: await ssg.getCollection(\"docs\"),\n }),\n });\n\n routes.push({\n path: `${docsBasePath}/:slug`,\n component: components.DocPage,\n getStaticPaths: async (ssg) => {\n const allDocs = await ssg.getCollection(\"docs\");\n return Promise.all(\n allDocs.map(async (doc) => {\n const { Content } = await doc.render();\n return {\n params: { slug: doc.slug },\n props: {\n doc,\n content: Content(),\n title: `${(doc.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // Guides routes\n if (options.guides) {\n routes.push({\n path: guidesBasePath,\n component: components.GuidesIndex,\n props: async (ssg) => ({\n title: options.guides?.heading ?? \"Guides\",\n guides: await ssg.getCollection(\"guides\"),\n }),\n });\n\n routes.push({\n path: `${guidesBasePath}/:slug`,\n component: components.GuidePage,\n getStaticPaths: async (ssg) => {\n const allGuides = await ssg.getCollection(\"guides\");\n return Promise.all(\n allGuides.map(async (guide) => {\n const { Content } = await guide.render();\n return {\n params: { slug: guide.slug },\n props: {\n guide,\n content: Content(),\n title: `${(guide.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // UI routes\n if (options.ui) {\n routes.push({\n path: uiBasePath,\n component: components.UIIndex,\n props: async (ssg) => ({\n title: options.ui?.heading ?? \"Components\",\n components: await ssg.getCollection(\"ui\"),\n }),\n });\n\n routes.push({\n path: `${uiBasePath}/:slug`,\n component: components.UIPage,\n getStaticPaths: async (ssg) => {\n const allComponents = await ssg.getCollection(\"ui\");\n return Promise.all(\n allComponents.map(async (comp) => {\n const { Content } = await comp.render();\n return {\n params: { slug: comp.slug },\n props: {\n component: comp,\n content: Content(),\n title: `${(comp.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // 404 page\n routes.push({\n path: \"/404\",\n component: components.NotFound,\n props: { title: `404 - Page Not Found | ${options.title}` },\n });\n\n // --- MDX ---\n\n const mdxComponents: Record<string, Component> = {\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n ...options.mdx?.components,\n };\n\n return {\n document: components.Document,\n collections,\n routes,\n mdx: {\n remarkPlugins: options.mdx?.remarkPlugins,\n rehypePlugins: options.mdx?.rehypePlugins,\n components: mdxComponents,\n },\n };\n },\n };\n\n // Compose sub-plugins Vite-style: return flat array\n const plugins: SSGPlugin[] = [mainPlugin];\n\n if (options.lucide !== false) {\n const lucideOpts = typeof options.lucide === \"object\" ? options.lucide : {};\n plugins.push(lucidePlugin(lucideOpts));\n }\n\n // LLMs (llms.txt) — enabled by default when docs, guides, or ui exist\n const hasContent = options.docs || options.guides || options.ui;\n if (options.llms !== false && hasContent) {\n const llmsOpts = typeof options.llms === \"object\" ? options.llms : {};\n\n // Auto-derive sections from configured collections\n const sections: LlmsSection[] = [];\n if (options.docs) {\n sections.push({\n title: options.docs.heading ?? \"Documentation\",\n collection: \"docs\",\n basePath: docsBasePath,\n });\n }\n if (options.guides) {\n sections.push({\n title: options.guides.heading ?? \"Guides\",\n collection: \"guides\",\n basePath: guidesBasePath,\n });\n }\n if (options.ui) {\n sections.push({\n title: options.ui.heading ?? \"Components\",\n collection: \"ui\",\n basePath: uiBasePath,\n });\n }\n\n plugins.push(\n llmsPlugin({\n title: options.title,\n description: options.description,\n url: llmsOpts.url,\n sections,\n links: llmsOpts.links,\n llmsTxt: llmsOpts.llmsTxt,\n llmsFullTxt: llmsOpts.llmsFullTxt,\n markdownPages: llmsOpts.markdownPages,\n }),\n );\n }\n\n return plugins;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docs-theme.mjs","names":["c","root","title","icon","content","styles.root","styles.title","styles.icon","styles.content","c","root","styles.root","c","root","icon","styles.icon","styles.heading","styles.headingLink","styles.desc","styles.descLink","styles.root","styles.link","styles.linkStates","styles.feature","styles.featureStates","c","root","styles.root","styles.list","styles.trigger","styles.triggerStates","styles.panel","c","root","styles.root","styles.item","styles.number","styles.content","styles.title","styles.body","c","root","rootStates","sm","md","lg","c","root","c","root","c","label","root","sm","md","lg","c","root","c","root","buttonStyles","cardStyles","calloutStyles","badgeStyles","codeBlockStyles","tabsStyles","stepsStyles","separatorStyles","inputStyles","avatarStyles","kbdStyles","switchStyles","styles.solid","styles.solidStates","styles.outline","styles.outlineStates","styles.ghost","styles.ghostStates","sizeStyles","styles.sm","styles.md","styles.lg","styles.root","styles.rootStates","styles.danger","styles.dangerStates","styles.root","styles.horizontal","styles.vertical","sizeStyles","styles.sm","styles.md","styles.lg","styles.root","styles.rootStates","styles.wrapper","styles.label","styles.sm","styles.md","styles.lg","styles.root","styles.image","styles.fallback","styles.root","styles.root","styles.rootDisabled","styles.track","styles.trackOn","styles.thumb","styles.thumbOn","styles.label","lucidePlugin","llmsPlugin"],"sources":["../../../../ssg/src/plugins/docs-theme/styles.ts","../../../../ui/src/theme/tokens.ts","../../../../ui/src/components/callout/callout.style.ts","../../../../ui/src/components/callout/callout.tsx","../../../../ui/src/components/badge/badge.style.ts","../../../../ui/src/components/badge/badge.tsx","../../../../ui/src/components/card/card.style.ts","../../../../ui/src/components/card/card.tsx","../../../../ui/src/components/tabs/tabs.style.ts","../../../../ui/src/components/tabs/tabs.tsx","../../../../ui/src/components/steps/steps.style.ts","../../../../ui/src/components/steps/steps.tsx","../../../../ui/src/theme/themes.ts","../../../../ui/src/components/button/button.style.ts","../../../../ui/src/components/code-block/code-block.style.ts","../../../../ui/src/components/separator/separator.style.ts","../../../../ui/src/components/input/input.style.ts","../../../../ui/src/components/avatar/avatar.style.ts","../../../../ui/src/components/kbd/kbd.style.ts","../../../../ui/src/components/switch/switch.style.ts","../../../../ui/src/css.ts","../../../../ui/src/components/button/button.tsx","../../../../ui/src/components/separator/separator.tsx","../../../../ui/src/components/input/input.tsx","../../../../ui/src/components/avatar/avatar.tsx","../../../../ui/src/components/kbd/kbd.tsx","../../../../ui/src/components/switch/switch.tsx","../../../../ssg/src/plugins/docs-theme/components.tsx","../../../../ssg/src/plugins/llms/index.ts","../../../../ssg/src/plugins/docs-theme/index.ts"],"sourcesContent":["/**\n * Apple-inspired theme CSS for the docs-theme plugin.\n *\n * All class names are prefixed with `dt-` to avoid collisions.\n * Component styles (Card, Callout, Badge) come from @semajsx/ui via componentCSS.\n * This file contains layout, navigation, hero, typography, animations, and responsive styles.\n */\n\nexport const THEME_CSS = /* css */ `\n/* ==============================================\n * Keyframes\n * ============================================== */\n\n@keyframes dt-fade-in-up {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes dt-fade-in-scale {\n from { opacity: 0; transform: scale(0.96) translateY(8px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n}\n\n/* ==============================================\n * Global Reset & Base\n * ============================================== */\n\n* { margin: 0; padding: 0; box-sizing: border-box; }\n\nhtml { scroll-behavior: smooth; }\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\",\n Inter, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n line-height: 1.6;\n color: #1d1d1f;\n background: #fbfbfd;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-rendering: optimizeLegibility;\n}\n\n::selection {\n background: rgba(0, 113, 227, 0.2);\n color: #1d1d1f;\n}\n\n/* ==============================================\n * Frosted Glass Navigation\n * ============================================== */\n\n.dt-glass-nav {\n position: sticky;\n top: 0;\n z-index: 50;\n background: rgba(251, 251, 253, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n -webkit-backdrop-filter: saturate(180%) blur(20px);\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-nav-inner {\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 2rem;\n height: 52px;\n}\n\n.dt-nav-logo {\n color: #1d1d1f;\n font-size: 1.25rem;\n font-weight: 600;\n letter-spacing: -0.02em;\n text-decoration: none;\n}\n\n.dt-nav-links {\n display: flex;\n list-style: none;\n margin: 0;\n gap: 2rem;\n}\n\n.dt-nav-link {\n color: #1d1d1f;\n text-decoration: none;\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: -0.005em;\n transition: color 0.2s ease;\n}\n\n.dt-nav-link:hover {\n color: #0071e3;\n}\n\n/* ==============================================\n * Layout\n * ============================================== */\n\n.dt-root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n background: #fbfbfd;\n}\n\n.dt-main {\n flex: 1 1 0%;\n width: 100%;\n max-width: 1200px;\n margin: 0 auto;\n padding: 2rem 2rem 4rem;\n}\n\n/* ==============================================\n * Footer\n * ============================================== */\n\n.dt-footer {\n border-top: 0.5px solid rgba(0, 0, 0, 0.08);\n background: #f5f5f7;\n}\n\n.dt-footer-inner {\n max-width: 1200px;\n margin: 0 auto;\n padding: 2rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n}\n\n.dt-footer-links {\n display: flex;\n gap: 2rem;\n align-items: center;\n}\n\n.dt-footer-link {\n color: #6e6e73;\n text-decoration: none;\n font-size: 0.8125rem;\n transition: color 0.2s;\n}\n\n.dt-footer-link:hover {\n color: #0071e3;\n}\n\n.dt-footer-copy {\n color: #86868b;\n font-size: 0.8125rem;\n margin: 0;\n}\n\n/* ==============================================\n * Hero Section\n * ============================================== */\n\n.dt-hero-bg {\n background: linear-gradient(180deg, #fbfbfd 0%, #f5f5f7 40%, #fbfbfd 100%);\n position: relative;\n}\n\n.dt-hero-bg::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n width: 100%;\n height: 100%;\n background: radial-gradient(\n ellipse 60% 50% at 50% 40%,\n rgba(0, 113, 227, 0.06) 0%,\n rgba(251, 251, 253, 0) 70%\n );\n pointer-events: none;\n}\n\n.dt-hero-title {\n font-size: clamp(3rem, 8vw, 5rem);\n font-weight: 700;\n line-height: 1.05;\n letter-spacing: -0.03em;\n background: linear-gradient(135deg, #1d1d1f 30%, #6e6e73 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 1.25rem;\n}\n\n.dt-hero-subtitle {\n font-size: clamp(1.25rem, 2.5vw, 1.5rem);\n font-weight: 400;\n line-height: 1.5;\n color: #6e6e73;\n max-width: 40rem;\n margin: 0 auto 2.5rem;\n letter-spacing: -0.005em;\n}\n\n.dt-hero-cta {\n display: flex;\n gap: 1rem;\n justify-content: center;\n margin-top: 2rem;\n}\n\n/* ==============================================\n * Section Typography\n * ============================================== */\n\n.dt-section-title {\n font-size: clamp(2rem, 4vw, 2.75rem);\n font-weight: 700;\n letter-spacing: -0.02em;\n line-height: 1.1;\n color: #1d1d1f;\n margin-bottom: 0.75rem;\n}\n\n.dt-section-subtitle {\n font-size: clamp(1rem, 2vw, 1.25rem);\n font-weight: 400;\n line-height: 1.5;\n color: #6e6e73;\n max-width: 36rem;\n margin: 0 auto 3rem;\n}\n\n/* ==============================================\n * Buttons\n * ============================================== */\n\n.dt-primary-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.875rem 1.75rem;\n background: #0071e3;\n color: white;\n border-radius: 980px;\n font-size: 1.0625rem;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n border: none;\n cursor: pointer;\n letter-spacing: -0.005em;\n}\n\n.dt-primary-btn:hover {\n background: #0077ed;\n transform: scale(1.02);\n box-shadow: 0 4px 16px rgba(0, 113, 227, 0.3);\n}\n\n.dt-secondary-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.875rem 1.75rem;\n background: transparent;\n color: #0071e3;\n border: 1.5px solid #0071e3;\n border-radius: 980px;\n font-size: 1.0625rem;\n font-weight: 500;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n cursor: pointer;\n letter-spacing: -0.005em;\n}\n\n.dt-secondary-btn:hover {\n background: #0071e3;\n color: white;\n transform: scale(1.02);\n}\n\n/* ==============================================\n * Animations\n * ============================================== */\n\n.dt-anim-slide-up {\n animation: dt-fade-in-up 0.8s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-anim-scale-in {\n animation: dt-fade-in-scale 0.6s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-fade-in {\n animation: dt-fade-in-up 0.6s cubic-bezier(0.25, 0.1, 0.25, 1) both;\n}\n\n.dt-stagger-1 { animation-delay: 0.1s; }\n.dt-stagger-2 { animation-delay: 0.2s; }\n.dt-stagger-3 { animation-delay: 0.35s; }\n.dt-stagger-4 { animation-delay: 0.5s; }\n.dt-stagger-5 { animation-delay: 0.65s; }\n\n/* ==============================================\n * Page Layout\n * ============================================== */\n\n.dt-page-container {\n max-width: 720px;\n}\n\n.dt-page-title {\n font-size: 2.25rem;\n font-weight: 700;\n color: #1d1d1f;\n letter-spacing: -0.02em;\n margin-bottom: 0.5rem;\n}\n\n.dt-page-desc {\n font-size: 1.125rem;\n color: #6e6e73;\n line-height: 1.5;\n}\n\n.dt-category-heading {\n font-size: 0.8125rem;\n font-weight: 600;\n color: #86868b;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n margin-bottom: 1rem;\n}\n\n.dt-card-title {\n font-size: 1.0625rem;\n font-weight: 600;\n color: #1d1d1f;\n letter-spacing: -0.01em;\n margin-bottom: 0.25rem;\n}\n\n.dt-card-desc {\n color: #6e6e73;\n font-size: 0.875rem;\n line-height: 1.5;\n margin: 0;\n}\n\n.dt-content-desc {\n font-size: 1.125rem;\n color: #6e6e73;\n line-height: 1.5;\n padding-bottom: 1.5rem;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n/* ==============================================\n * Content Typography\n * ============================================== */\n\n.dt-content {\n line-height: 1.75;\n color: #1d1d1f;\n}\n\n.dt-content h1 {\n font-size: 1.875rem;\n font-weight: 700;\n margin-top: 3rem;\n margin-bottom: 0.75rem;\n color: #1d1d1f;\n letter-spacing: -0.02em;\n line-height: 1.2;\n}\n\n.dt-content h2 {\n font-size: 1.5rem;\n font-weight: 600;\n margin-top: 2.5rem;\n margin-bottom: 0.75rem;\n color: #1d1d1f;\n letter-spacing: -0.015em;\n line-height: 1.25;\n padding-top: 1.5rem;\n border-top: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n.dt-content h2:first-child,\n.dt-content hr + h2 {\n border-top: none;\n padding-top: 0;\n margin-top: 0;\n}\n\n.dt-content h3 {\n font-size: 1.25rem;\n font-weight: 600;\n margin-top: 2rem;\n margin-bottom: 0.5rem;\n color: #1d1d1f;\n letter-spacing: -0.01em;\n line-height: 1.3;\n}\n\n.dt-content p {\n margin-bottom: 1.25rem;\n font-size: 1rem;\n color: #1d1d1f;\n}\n\n.dt-content ul,\n.dt-content ol {\n margin-left: 1.5rem;\n margin-bottom: 1.25rem;\n}\n\n.dt-content li {\n margin-bottom: 0.375rem;\n font-size: 1rem;\n line-height: 1.65;\n}\n\n.dt-content code {\n background: rgba(0, 0, 0, 0.04);\n padding: 0.15rem 0.4rem;\n border-radius: 5px;\n font-family: \"SF Mono\", \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;\n font-size: 0.875em;\n color: #1d1d1f;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n}\n\n.dt-content pre {\n background: #1d1d1f;\n color: #e5e5ea;\n padding: 1.25rem 1.5rem;\n border-radius: 12px;\n overflow-x: auto;\n margin-bottom: 1.25rem;\n font-size: 0.875rem;\n line-height: 1.65;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n}\n\n.dt-content pre code {\n background: none;\n color: inherit;\n padding: 0;\n border: none;\n font-size: inherit;\n}\n\n.dt-content a {\n color: #0071e3;\n text-decoration: none;\n transition: color 0.2s ease;\n}\n\n.dt-content a:hover {\n text-decoration: underline;\n}\n\n.dt-content strong {\n font-weight: 600;\n color: #1d1d1f;\n}\n\n.dt-content blockquote {\n border-left: 3px solid rgba(0, 0, 0, 0.08);\n padding: 0.75rem 1.25rem;\n margin: 1.5rem 0;\n color: #6e6e73;\n background: rgba(0, 0, 0, 0.02);\n border-radius: 0 10px 10px 0;\n}\n\n.dt-content hr {\n border: none;\n border-top: 0.5px solid rgba(0, 0, 0, 0.06);\n margin: 2.5rem 0;\n}\n\n/* Tables */\n\n.dt-content table {\n width: 100%;\n border-collapse: collapse;\n margin: 1.5rem 0;\n font-size: 0.9375rem;\n line-height: 1.5;\n border-radius: 10px;\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-content thead {\n background: rgba(0, 0, 0, 0.03);\n}\n\n.dt-content th {\n font-weight: 600;\n color: #1d1d1f;\n text-align: left;\n padding: 0.75rem 1rem;\n font-size: 0.8125rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.08);\n}\n\n.dt-content td {\n padding: 0.75rem 1rem;\n color: #1d1d1f;\n border-bottom: 0.5px solid rgba(0, 0, 0, 0.04);\n}\n\n.dt-content tbody tr:last-child td {\n border-bottom: none;\n}\n\n.dt-content tbody tr:hover {\n background: rgba(0, 0, 0, 0.02);\n}\n\n/* ==============================================\n * Code Blocks\n * ============================================== */\n\n.dt-code-block {\n margin: 1.5rem 0;\n border-radius: 12px;\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n}\n\n.dt-code-header {\n background: #161617;\n padding: 0.5rem 1.25rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.dt-code-lang {\n color: #86868b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.04em;\n}\n\n.dt-code-block pre {\n margin: 0;\n border-radius: 0;\n border: none;\n}\n\n.dt-code-header + pre {\n border-radius: 0;\n}\n\n/* Shiki integration */\n\n.dt-content pre.shiki {\n position: relative;\n padding: 2.25rem 1.5rem 1.25rem;\n}\n\n.dt-content pre.shiki[data-language]::before {\n content: attr(data-language);\n position: absolute;\n top: 0.625rem;\n right: 1rem;\n color: #636e7b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: 600;\n letter-spacing: 0.04em;\n pointer-events: none;\n user-select: none;\n}\n\n.dt-content pre.shiki code {\n display: block;\n}\n\n.dt-content pre.shiki .line {\n display: inline;\n}\n\n/* ==============================================\n * 404 Page\n * ============================================== */\n\n.dt-not-found-title {\n font-size: clamp(4rem, 12vw, 8rem);\n font-weight: 700;\n line-height: 1;\n letter-spacing: -0.04em;\n background: linear-gradient(135deg, #1d1d1f 30%, #6e6e73 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n margin-bottom: 1.25rem;\n}\n\n/* ==============================================\n * Responsive\n * ============================================== */\n\n@media (max-width: 768px) {\n .dt-nav-inner {\n padding: 12px 1rem !important;\n height: 48px !important;\n }\n\n .dt-nav-logo { font-size: 1.125rem !important; }\n .dt-nav-links { gap: 1.25rem !important; }\n .dt-nav-link { font-size: 0.8125rem; }\n\n .dt-main {\n padding: 1.25rem 1rem 2.5rem !important;\n }\n\n .dt-hero-section {\n padding: 60px 16px 48px !important;\n }\n\n .dt-hero-cta {\n flex-direction: column !important;\n align-items: center !important;\n gap: 0.75rem !important;\n }\n\n .dt-section-features {\n padding: 48px 16px !important;\n }\n\n .dt-section-links {\n padding: 0 16px 60px !important;\n }\n\n .dt-section-links-inner {\n padding-top: 48px !important;\n }\n\n .dt-features-grid {\n grid-template-columns: 1fr !important;\n gap: 1rem !important;\n }\n\n .dt-links-grid {\n grid-template-columns: 1fr !important;\n }\n\n .dt-page-title {\n font-size: 1.75rem !important;\n }\n\n .dt-page-desc {\n font-size: 1rem !important;\n }\n\n .dt-page-container {\n max-width: 100%;\n }\n\n .dt-footer-inner {\n flex-direction: column !important;\n align-items: center !important;\n text-align: center;\n padding: 1.5rem 1rem !important;\n }\n\n .dt-footer-links {\n justify-content: center !important;\n gap: 1.5rem !important;\n }\n\n .dt-not-found-section {\n padding: 60px 16px 48px !important;\n }\n\n .dt-not-found-cta {\n flex-direction: column !important;\n align-items: center !important;\n gap: 0.75rem !important;\n }\n\n .dt-content { line-height: 1.7; }\n .dt-content h1 { font-size: 1.5rem; margin-top: 2rem; }\n .dt-content h2 { font-size: 1.25rem; margin-top: 2rem; padding-top: 1.25rem; }\n .dt-content h3 { font-size: 1.125rem; margin-top: 1.5rem; }\n .dt-content pre { padding: 1rem; font-size: 0.8125rem; border-radius: 10px; }\n .dt-content ul, .dt-content ol { margin-left: 1.25rem; }\n\n .dt-content table {\n font-size: 0.8125rem;\n display: block;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n .dt-content th, .dt-content td { padding: 0.625rem 0.75rem; }\n\n .dt-code-block { border-radius: 10px; }\n .dt-code-header { padding: 0.375rem 1rem; }\n\n .dt-ui-grid {\n grid-template-columns: 1fr !important;\n }\n\n .dt-preview-box {\n padding: 2rem 1rem !important;\n }\n}\n\n/* ==============================================\n * Component Preview (shadcn-style showcase)\n * ============================================== */\n\n.dt-preview {\n margin: 1.5rem 0;\n border: 0.5px solid rgba(0, 0, 0, 0.08);\n border-radius: 12px;\n overflow: hidden;\n background: white;\n}\n\n.dt-preview-box {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 3.5rem 2.5rem;\n min-height: 120px;\n background: white;\n position: relative;\n}\n\n.dt-preview-box > * {\n pointer-events: none;\n}\n\n.dt-preview-box::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image:\n radial-gradient(circle, rgba(0, 0, 0, 0.04) 1px, transparent 1px);\n background-size: 20px 20px;\n pointer-events: none;\n}\n\n.dt-preview-label {\n position: absolute;\n top: 0.75rem;\n left: 1rem;\n font-size: 0.6875rem;\n font-weight: 600;\n color: #86868b;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n z-index: 1;\n}\n\n/* ==============================================\n * UI Components Section\n * ============================================== */\n\n.dt-ui-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n gap: 1rem;\n}\n\n.dt-ui-card {\n display: block;\n padding: 1.5rem;\n background: white;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n border-radius: 12px;\n text-decoration: none;\n transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);\n}\n\n.dt-ui-card:hover {\n border-color: rgba(0, 113, 227, 0.3);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n transform: translateY(-2px);\n}\n\n.dt-ui-card-preview {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 80px;\n margin-bottom: 1rem;\n background: #f9f9fb;\n border-radius: 8px;\n overflow: hidden;\n position: relative;\n}\n\n.dt-ui-card-preview > * {\n pointer-events: none;\n}\n\n.dt-ui-card-preview::before {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image:\n radial-gradient(circle, rgba(0, 0, 0, 0.03) 1px, transparent 1px);\n background-size: 16px 16px;\n pointer-events: none;\n}\n\n.dt-ui-card-name {\n font-size: 0.9375rem;\n font-weight: 600;\n color: #1d1d1f;\n margin: 0 0 0.25rem;\n letter-spacing: -0.01em;\n}\n\n.dt-ui-card-desc {\n font-size: 0.8125rem;\n color: #6e6e73;\n margin: 0;\n line-height: 1.4;\n}\n\n.dt-ui-badge-new {\n display: inline-block;\n padding: 0.1rem 0.4rem;\n background: rgba(0, 113, 227, 0.08);\n color: #0071e3;\n font-size: 0.6875rem;\n font-weight: 600;\n border-radius: 4px;\n margin-left: 0.5rem;\n vertical-align: middle;\n}\n`;\n","/**\n * Default design tokens for @semajsx/ui\n *\n * These tokens define the visual language of the component library.\n * All components reference these tokens via CSS custom properties,\n * enabling runtime theme switching.\n *\n * @example\n * ```ts\n * import { tokens } from \"@semajsx/ui/theme\";\n *\n * // Use in custom styles\n * const myRule = rule`${c.box} {\n * color: ${tokens.colors.text};\n * padding: ${tokens.space.md};\n * }`;\n * ```\n */\n\nimport { defineTokens } from \"@semajsx/style\";\nimport type { TokenRefs } from \"@semajsx/style\";\n\nconst tokenDefinition = {\n colors: {\n // Brand (Apple blue)\n primary: \"#0071e3\",\n primaryHover: \"#0077ed\",\n primaryActive: \"#0068d6\",\n\n // Neutral\n background: \"#fbfbfd\",\n surface: \"#f5f5f7\",\n border: \"rgba(0, 0, 0, 0.08)\",\n text: \"#1d1d1f\",\n textMuted: \"#6e6e73\",\n textTertiary: \"#86868b\",\n\n // Semantic\n danger: \"#ff453a\",\n dangerHover: \"#ff6961\",\n success: \"#34c759\",\n warning: \"#ff9f0a\",\n info: \"#007aff\",\n tip: \"#af52de\",\n\n // Inverse (for solid buttons, etc.)\n onPrimary: \"#ffffff\",\n onDanger: \"#ffffff\",\n },\n\n space: {\n xs: \"0.25rem\",\n sm: \"0.5rem\",\n md: \"0.75rem\",\n lg: \"1rem\",\n xl: \"1.5rem\",\n xxl: \"2rem\",\n },\n\n radii: {\n sm: \"10px\",\n md: \"12px\",\n lg: \"16px\",\n xl: \"20px\",\n pill: \"980px\",\n },\n\n fonts: {\n base: '-apple-system, BlinkMacSystemFont, \"SF Pro Display\", \"SF Pro Text\", Inter, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n mono: '\"SF Mono\", \"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace',\n },\n\n fontSizes: {\n xs: \"0.8125rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.0625rem\",\n },\n\n fontWeights: {\n normal: \"400\",\n medium: \"500\",\n semibold: \"600\",\n bold: \"700\",\n },\n\n lineHeights: {\n tight: \"1.25\",\n normal: \"1.6\",\n },\n\n shadows: {\n sm: \"0 1px 3px rgba(0, 0, 0, 0.03)\",\n md: \"0 1px 4px rgba(0, 0, 0, 0.04)\",\n lg: \"0 8px 28px rgba(0, 0, 0, 0.08)\",\n primaryGlow: \"0 4px 16px rgba(0, 113, 227, 0.3)\",\n },\n\n transitions: {\n fast: \"0.2s ease\",\n normal: \"0.3s cubic-bezier(0.25, 0.1, 0.25, 1)\",\n },\n} as const;\n\nexport const tokens: TokenRefs<typeof tokenDefinition> = defineTokens(tokenDefinition);\n","/**\n * Callout component styles\n *\n * Five semantic variants: info, warning, success, error, tip\n * Matching the docs site callout design.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"title\", \"icon\", \"content\"] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n padding: 1.25rem 1.5rem;\n margin: 1.5rem 0;\n border-radius: 14px;\n border: 0.5px solid rgba(0, 0, 0, 0.04);\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const title = rule`${c.title} {\n font-weight: ${tokens.fontWeights.semibold};\n font-size: 0.9375rem;\n margin: 0 0 0.5rem;\n display: flex;\n align-items: center;\n gap: ${tokens.space.sm};\n letter-spacing: -0.005em;\n}`;\n\nexport const icon = rule`${c.icon} {\n width: 18px;\n height: 18px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}`;\n\nexport const content = rule`${c.content} {\n color: ${tokens.colors.text};\n font-size: 0.9375rem;\n line-height: ${tokens.lineHeights.normal};\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Callout component\n *\n * A styled box for highlighting important content with semantic variants.\n *\n * @example\n * ```tsx\n * import { Callout } from \"@semajsx/ui/callout\";\n *\n * <Callout type=\"info\" title=\"Note\">This is informational.</Callout>\n * <Callout type=\"warning\">Be careful with this.</Callout>\n * <Callout type=\"tip\" title=\"Pro tip\">Use signals for reactivity.</Callout>\n * ```\n */\n\nimport type { JSXNode, VNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./callout.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport type CalloutType = \"info\" | \"warning\" | \"success\" | \"error\" | \"tip\";\n\nexport interface CalloutProps {\n /** Semantic type controlling color and icon */\n type?: CalloutType;\n /** Optional title displayed above content */\n title?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nconst SVG_ATTRS = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n};\n\nfunction InfoIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n );\n}\n\nfunction WarningIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\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}\n\nfunction SuccessIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" />\n <path d=\"m9 11 3 3L22 4\" />\n </svg>\n );\n}\n\nfunction ErrorIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m15 9-6 6\" />\n <path d=\"m9 9 6 6\" />\n </svg>\n );\n}\n\nfunction TipIcon(): VNode {\n return (\n <svg {...SVG_ATTRS}>\n <path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\" />\n <path d=\"M9 18h6\" />\n <path d=\"M10 22h4\" />\n </svg>\n );\n}\n\nconst calloutConfig: Record<CalloutType, { bg: string; accent: string; icon: () => VNode }> = {\n info: { bg: \"rgba(0, 122, 255, 0.06)\", accent: \"#007aff\", icon: InfoIcon },\n warning: { bg: \"rgba(255, 159, 10, 0.08)\", accent: \"#ff9f0a\", icon: WarningIcon },\n success: { bg: \"rgba(52, 199, 89, 0.08)\", accent: \"#34c759\", icon: SuccessIcon },\n error: { bg: \"rgba(255, 69, 58, 0.08)\", accent: \"#ff453a\", icon: ErrorIcon },\n tip: { bg: \"rgba(175, 82, 222, 0.06)\", accent: \"#af52de\", icon: TipIcon },\n};\n\nexport function Callout(props: CalloutProps): JSXNode {\n const type = props.type ?? \"info\";\n const config = calloutConfig[type];\n const IconComponent = config.icon;\n\n return (\n <div class={[styles.root, props.class]} style={`background: ${config.bg}`} role=\"note\">\n {props.title && (\n <div class={styles.title} style={`color: ${config.accent}`}>\n <span class={styles.icon}>\n <IconComponent />\n </span>\n {props.title}\n </div>\n )}\n <div class={styles.content}>{props.children}</div>\n </div>\n );\n}\n","/**\n * Badge component styles\n *\n * Pill-shaped labels with semantic color variants.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n font-size: 0.6875rem;\n font-weight: ${tokens.fontWeights.semibold};\n font-family: ${tokens.fonts.base};\n padding: 0.125rem 0.5rem;\n border-radius: ${tokens.radii.pill};\n letter-spacing: 0.02em;\n text-transform: uppercase;\n white-space: nowrap;\n line-height: 1.6;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Badge component\n *\n * A small pill-shaped label for status, category, or metadata.\n *\n * @example\n * ```tsx\n * import { Badge } from \"@semajsx/ui/badge\";\n *\n * <Badge color=\"success\">Beginner</Badge>\n * <Badge color=\"warning\">Intermediate</Badge>\n * <Badge color=\"danger\">Advanced</Badge>\n * <Badge>Default</Badge>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./badge.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport type BadgeColor = \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"tip\";\n\nexport interface BadgeProps {\n /** Semantic color */\n color?: BadgeColor;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nconst badgeColors: Record<BadgeColor, { bg: string; fg: string }> = {\n default: { bg: \"rgba(0, 0, 0, 0.06)\", fg: \"#1d1d1f\" },\n success: { bg: \"rgba(52, 199, 89, 0.12)\", fg: \"#248a3d\" },\n warning: { bg: \"rgba(255, 159, 10, 0.12)\", fg: \"#b25000\" },\n danger: { bg: \"rgba(255, 69, 58, 0.12)\", fg: \"#d70015\" },\n info: { bg: \"rgba(0, 122, 255, 0.1)\", fg: \"#0055b3\" },\n tip: { bg: \"rgba(175, 82, 222, 0.1)\", fg: \"#8944ab\" },\n};\n\nexport function Badge(props: BadgeProps): JSXNode {\n const color = props.color ?? \"default\";\n const config = badgeColors[color];\n\n return (\n <span\n class={[styles.root, props.class]}\n style={`background: ${config.bg}; color: ${config.fg}`}\n >\n {props.children}\n </span>\n );\n}\n","/**\n * Card component styles\n *\n * Two variants matching the docs site design:\n * - feature: Large card with icon, heading, description\n * - link: Smaller clickable card for navigation\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"feature\", \"link\", \"icon\", \"heading\", \"desc\"] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n background: white;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n font-family: ${tokens.fonts.base};\n transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);\n}`;\n\n// --- Feature variant ---\n\nexport const feature = rule`${c.feature} {\n border-radius: ${tokens.radii.xl};\n padding: 2.5rem;\n box-shadow: ${tokens.shadows.md};\n}`;\n\nexport const featureStates = rule`${c.feature}:hover {\n transform: translateY(-4px) scale(1.01);\n box-shadow: ${tokens.shadows.lg};\n}`;\n\n// --- Link variant ---\n\nexport const link = rule`${c.link} {\n display: block;\n border-radius: ${tokens.radii.lg};\n padding: 1.75rem;\n box-shadow: ${tokens.shadows.sm};\n text-decoration: none;\n cursor: pointer;\n}`;\n\nexport const linkStates = rules(\n rule`${c.link}:hover {\n border-color: rgba(0, 113, 227, 0.3);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n transform: translateY(-2px);\n }`,\n);\n\n// --- Slots ---\n\nexport const icon = rule`${c.icon} {\n font-size: 2rem;\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${tokens.colors.surface};\n border-radius: ${tokens.radii.md};\n margin-bottom: 1.25rem;\n}`;\n\nexport const heading = rule`${c.heading} {\n font-size: 1.375rem;\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.text};\n margin: 0 0 0.5rem;\n letter-spacing: -0.01em;\n}`;\n\nexport const headingLink = rule`${c.link} ${c.heading} {\n font-size: ${tokens.fontSizes.lg};\n margin-bottom: 0.25rem;\n}`;\n\nexport const desc = rule`${c.desc} {\n color: ${tokens.colors.textMuted};\n line-height: ${tokens.lineHeights.normal};\n font-size: 0.9375rem;\n margin: 0;\n}`;\n\nexport const descLink = rule`${c.link} ${c.desc} {\n font-size: ${tokens.fontSizes.sm};\n line-height: 1.5;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Card component\n *\n * A content container with two variants matching the docs design:\n * - `feature` (default): Large card with icon, heading, and description\n * - `link`: Smaller clickable card for navigation\n *\n * @example\n * ```tsx\n * import { Card } from \"@semajsx/ui/card\";\n *\n * <Card icon=\"⚡\" heading=\"Fast\" description=\"Built for speed\" />\n * <Card variant=\"link\" heading=\"Guide\" description=\"Get started\" href=\"/docs\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./card.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface CardProps {\n /** Card variant */\n variant?: \"feature\" | \"link\";\n /** Icon content (emoji or JSX) */\n icon?: JSXNode;\n /** Card heading */\n heading?: string;\n /** Card description */\n description?: string;\n /** Link URL (for \"link\" variant) */\n href?: string;\n /** Inline style string */\n style?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content */\n children?: JSXNode;\n}\n\nexport function Card(props: CardProps): JSXNode {\n const variant = props.variant ?? \"feature\";\n\n const content = (\n <>\n {props.icon && <div class={styles.icon}>{props.icon}</div>}\n {props.heading && (\n <h3 class={[styles.heading, variant === \"link\" && styles.headingLink]}>{props.heading}</h3>\n )}\n {props.description && (\n <p class={[styles.desc, variant === \"link\" && styles.descLink]}>{props.description}</p>\n )}\n {props.children}\n </>\n );\n\n if (variant === \"link\") {\n return (\n <a\n href={props.href}\n class={[styles.root, styles.link, styles.linkStates, props.class]}\n style={props.style}\n >\n {content}\n </a>\n );\n }\n\n return (\n <div\n class={[styles.root, styles.feature, styles.featureStates, props.class]}\n style={props.style}\n >\n {content}\n </div>\n );\n}\n","/**\n * Tabs component styles\n *\n * A tab bar with active indicator and content panels.\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"list\", \"trigger\", \"active\", \"panel\"] as const);\n\n// --- Container ---\n\nexport const root = rule`${c.root} {\n margin: 1.5rem 0;\n font-family: ${tokens.fonts.base};\n}`;\n\n// --- Tab List ---\n\nexport const list = rule`${c.list} {\n display: flex;\n gap: 0;\n border-bottom: 1px solid ${tokens.colors.border};\n margin-bottom: 0;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}`;\n\n// --- Trigger ---\n\nexport const trigger = rule`${c.trigger} {\n padding: 0.625rem 1rem;\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n font-family: ${tokens.fonts.base};\n color: ${tokens.colors.textMuted};\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n white-space: nowrap;\n transition: color ${tokens.transitions.fast}, border-color ${tokens.transitions.fast};\n margin-bottom: -1px;\n}`;\n\nexport const triggerStates = rules(\n rule`${c.trigger}:hover {\n color: ${tokens.colors.text};\n }`,\n rule`${c.trigger}:focus-visible {\n outline: 2px solid ${tokens.colors.primary};\n outline-offset: -2px;\n }`,\n);\n\n// --- Active Trigger ---\n\nexport const active = rule`${c.active} {\n color: ${tokens.colors.primary};\n border-bottom-color: ${tokens.colors.primary};\n}`;\n\n// --- Panel ---\n\nexport const panel = rule`${c.panel} {\n padding: 1rem 0;\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Tabs component\n *\n * A tabbed interface for switching between content panels.\n * Designed for SSG (static) usage - all panels are rendered,\n * visibility is controlled via inline styles.\n *\n * @example\n * ```tsx\n * import { Tabs, TabList, Tab, TabPanel } from \"@semajsx/ui/tabs\";\n *\n * <Tabs defaultValue=\"npm\">\n * <TabList>\n * <Tab value=\"npm\">npm</Tab>\n * <Tab value=\"bun\">Bun</Tab>\n * </TabList>\n * <TabPanel value=\"npm\">npm install semajsx</TabPanel>\n * <TabPanel value=\"bun\">bun add semajsx</TabPanel>\n * </Tabs>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./tabs.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface TabsProps {\n /** The initially active tab value */\n defaultValue: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Content (TabList and TabPanels) */\n children?: JSXNode;\n}\n\nexport interface TabListProps {\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Tab triggers */\n children?: JSXNode;\n}\n\nexport interface TabProps {\n /** Value matching a TabPanel */\n value: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Tab label */\n children?: JSXNode;\n}\n\nexport interface TabPanelProps {\n /** Value matching a Tab */\n value: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Panel content */\n children?: JSXNode;\n}\n\nexport function Tabs(props: TabsProps): JSXNode {\n return (\n <div class={[styles.root, props.class]} data-tabs={props.defaultValue}>\n {props.children}\n </div>\n );\n}\n\nexport function TabList(props: TabListProps): JSXNode {\n return (\n <div class={[styles.list, props.class]} role=\"tablist\">\n {props.children}\n </div>\n );\n}\n\nexport function Tab(props: TabProps): JSXNode {\n return (\n <button\n class={[styles.trigger, styles.triggerStates, props.class]}\n role=\"tab\"\n data-tab-value={props.value}\n >\n {props.children}\n </button>\n );\n}\n\nexport function TabPanel(props: TabPanelProps): JSXNode {\n return (\n <div class={[styles.panel, props.class]} role=\"tabpanel\" data-tab-panel={props.value}>\n {props.children}\n </div>\n );\n}\n","/**\n * Steps component styles\n *\n * Numbered step indicators for tutorials and guides.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"item\", \"number\", \"content\", \"title\", \"body\"] as const);\n\nexport const root = rule`${c.root} {\n display: flex;\n flex-direction: column;\n gap: 0;\n margin: 1.5rem 0;\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const item = rule`${c.item} {\n display: flex;\n gap: 1rem;\n padding: 1.25rem 0;\n border-bottom: 0.5px solid ${tokens.colors.border};\n}`;\n\nexport const number = rule`${c.number} {\n flex-shrink: 0;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.semibold};\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 0.125rem;\n}`;\n\nexport const content = rule`${c.content} {\n flex: 1;\n min-width: 0;\n}`;\n\nexport const title = rule`${c.title} {\n font-size: ${tokens.fontSizes.md};\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.text};\n margin: 0 0 0.375rem;\n letter-spacing: -0.005em;\n}`;\n\nexport const body = rule`${c.body} {\n color: ${tokens.colors.textMuted};\n font-size: ${tokens.fontSizes.sm};\n line-height: ${tokens.lineHeights.normal};\n}`;\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Steps component\n *\n * A numbered step list for tutorials and walkthroughs.\n *\n * @example\n * ```tsx\n * import { Steps, Step } from \"@semajsx/ui/steps\";\n *\n * <Steps>\n * <Step title=\"Install\">Run bun add semajsx</Step>\n * <Step title=\"Create component\">Write your first JSX component</Step>\n * <Step title=\"Render\">Call render() to mount your app</Step>\n * </Steps>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./steps.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface StepsProps {\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Step items */\n children?: JSXNode;\n}\n\nexport interface StepProps {\n /** Step title */\n title: string;\n /** Step number (auto-assigned if omitted) */\n number?: number;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Step description/content */\n children?: JSXNode;\n}\n\nexport function Steps(props: StepsProps): JSXNode {\n return <div class={[styles.root, props.class]}>{props.children}</div>;\n}\n\nexport function Step(props: StepProps): JSXNode {\n return (\n <div class={[styles.item, props.class]}>\n {props.number !== undefined && <div class={styles.number}>{props.number}</div>}\n <div class={styles.content}>\n <h4 class={styles.title}>{props.title}</h4>\n <div class={styles.body}>{props.children}</div>\n </div>\n </div>\n );\n}\n","/**\n * Built-in themes for @semajsx/ui\n *\n * Provides light (default) and dark themes. Custom themes can be\n * created using createTheme() from @semajsx/style.\n *\n * @example\n * ```tsx\n * import { lightTheme, darkTheme } from \"@semajsx/ui/theme\";\n * import { inject } from \"@semajsx/style\";\n *\n * // Apply default (light) theme to :root\n * inject(lightTheme);\n *\n * // Scope dark theme to an element\n * <div class={darkTheme}>\n * <Button>Dark button</Button>\n * </div>\n * ```\n */\n\nimport { createTheme } from \"@semajsx/style\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport { tokens } from \"./tokens\";\n\n/**\n * Light theme - applies token defaults to :root\n */\nexport const lightTheme: StyleToken = createTheme(tokens);\n\n/**\n * Dark theme - scoped to a CSS class\n */\nexport const darkTheme: StyleToken = createTheme(tokens, {\n colors: {\n primary: \"#2997ff\",\n primaryHover: \"#5ab4ff\",\n primaryActive: \"#0071e3\",\n\n background: \"#000000\",\n surface: \"#1c1c1e\",\n border: \"rgba(255, 255, 255, 0.12)\",\n text: \"#f5f5f7\",\n textMuted: \"#a1a1a6\",\n textTertiary: \"#6e6e73\",\n\n danger: \"#ff453a\",\n dangerHover: \"#ff6961\",\n success: \"#30d158\",\n warning: \"#ffd60a\",\n info: \"#0a84ff\",\n tip: \"#bf5af2\",\n\n onPrimary: \"#ffffff\",\n onDanger: \"#ffffff\",\n },\n\n shadows: {\n sm: \"0 1px 3px rgba(0, 0, 0, 0.2)\",\n md: \"0 1px 4px rgba(0, 0, 0, 0.3)\",\n lg: \"0 8px 28px rgba(0, 0, 0, 0.4)\",\n primaryGlow: \"0 4px 16px rgba(41, 151, 255, 0.3)\",\n },\n});\n","/**\n * Button component styles\n *\n * All styles reference theme tokens via CSS custom properties,\n * so they respond to theme changes automatically.\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\n \"root\",\n \"solid\",\n \"outline\",\n \"ghost\",\n \"sm\",\n \"md\",\n \"lg\",\n \"danger\",\n \"icon\",\n] as const);\n\n// --- Base ---\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ${tokens.space.sm};\n border: 1.5px solid transparent;\n border-radius: ${tokens.radii.pill};\n font-family: ${tokens.fonts.base};\n font-weight: ${tokens.fontWeights.medium};\n line-height: ${tokens.lineHeights.tight};\n letter-spacing: -0.005em;\n cursor: pointer;\n user-select: none;\n transition: all ${tokens.transitions.normal};\n}`;\n\nexport const rootStates = rules(\n rule`${c.root}:focus-visible {\n outline: 2px solid ${tokens.colors.primary};\n outline-offset: 2px;\n }`,\n rule`${c.root}:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }`,\n);\n\n// --- Variants ---\n\nexport const solid = rule`${c.solid} {\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n border-color: ${tokens.colors.primary};\n}`;\n\nexport const solidStates = rules(\n rule`${c.solid}:hover:not(:disabled) {\n background: ${tokens.colors.primaryHover};\n border-color: ${tokens.colors.primaryHover};\n transform: scale(1.02);\n box-shadow: ${tokens.shadows.primaryGlow};\n }`,\n rule`${c.solid}:active:not(:disabled) {\n background: ${tokens.colors.primaryActive};\n border-color: ${tokens.colors.primaryActive};\n transform: scale(0.98);\n box-shadow: none;\n }`,\n);\n\nexport const outline = rule`${c.outline} {\n background: transparent;\n color: ${tokens.colors.primary};\n border-color: ${tokens.colors.primary};\n}`;\n\nexport const outlineStates = rules(\n rule`${c.outline}:hover:not(:disabled) {\n background: ${tokens.colors.primary};\n color: ${tokens.colors.onPrimary};\n transform: scale(1.02);\n }`,\n rule`${c.outline}:active:not(:disabled) {\n background: ${tokens.colors.primaryActive};\n color: ${tokens.colors.onPrimary};\n transform: scale(0.98);\n }`,\n);\n\nexport const ghost = rule`${c.ghost} {\n background: transparent;\n color: ${tokens.colors.text};\n border-color: transparent;\n}`;\n\nexport const ghostStates = rules(\n rule`${c.ghost}:hover:not(:disabled) {\n background: ${tokens.colors.surface};\n }`,\n rule`${c.ghost}:active:not(:disabled) {\n background: ${tokens.colors.border};\n }`,\n);\n\n// --- Danger ---\n\nexport const danger = rule`${c.danger} {\n background: ${tokens.colors.danger};\n color: ${tokens.colors.onDanger};\n border-color: ${tokens.colors.danger};\n}`;\n\nexport const dangerStates = rules(\n rule`${c.danger}:hover:not(:disabled) {\n background: ${tokens.colors.dangerHover};\n border-color: ${tokens.colors.dangerHover};\n transform: scale(1.02);\n }`,\n rule`${c.danger}:focus-visible {\n outline-color: ${tokens.colors.danger};\n }`,\n);\n\n// --- Sizes ---\n\nexport const sm = rule`${c.sm} {\n padding: ${tokens.space.sm} ${tokens.space.lg};\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const md = rule`${c.md} {\n padding: ${tokens.space.md} ${tokens.space.xl};\n font-size: ${tokens.fontSizes.md};\n}`;\n\nexport const lg = rule`${c.lg} {\n padding: 0.875rem 1.75rem;\n font-size: ${tokens.fontSizes.lg};\n}`;\n\n// --- Icon slot ---\n\nexport const icon = rule`${c.icon} {\n display: inline-flex;\n flex-shrink: 0;\n}`;\n","/**\n * CodeBlock component styles\n *\n * Dark-themed code display with optional language header.\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"header\", \"lang\", \"pre\", \"inline\"] as const);\n\n// --- Block ---\n\nexport const root = rule`${c.root} {\n margin: 1.5rem 0;\n border-radius: ${tokens.radii.md};\n overflow: hidden;\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n font-family: ${tokens.fonts.mono};\n}`;\n\nexport const header = rule`${c.header} {\n background: #161617;\n padding: 0.5rem 1.25rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}`;\n\nexport const lang = rule`${c.lang} {\n color: #86868b;\n font-size: 0.6875rem;\n text-transform: uppercase;\n font-weight: ${tokens.fontWeights.semibold};\n letter-spacing: 0.04em;\n font-family: ${tokens.fonts.mono};\n}`;\n\nexport const pre = rule`${c.pre} {\n background: #1d1d1f;\n color: #e5e5ea;\n padding: 1.25rem 1.5rem;\n overflow-x: auto;\n margin: 0;\n font-size: ${tokens.fontSizes.sm};\n line-height: 1.65;\n font-family: ${tokens.fonts.mono};\n}`;\n\n// --- Inline code ---\n\nexport const inline = rule`${c.inline} {\n background: rgba(0, 0, 0, 0.04);\n padding: 0.15rem 0.4rem;\n border-radius: 5px;\n font-size: 0.875em;\n border: 0.5px solid rgba(0, 0, 0, 0.06);\n font-family: ${tokens.fonts.mono};\n}`;\n","/**\n * Separator component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"vertical\"] as const);\n\nexport const root = rule`${c.root} {\n border: none;\n background: ${tokens.colors.border};\n flex-shrink: 0;\n}`;\n\nexport const horizontal = rule`${c.root}:not(${c.vertical}) {\n height: 0.5px;\n width: 100%;\n margin: ${tokens.space.lg} 0;\n}`;\n\nexport const vertical = rule`${c.vertical} {\n width: 0.5px;\n height: auto;\n align-self: stretch;\n margin: 0 ${tokens.space.lg};\n}`;\n","/**\n * Input component styles\n */\n\nimport { classes, rule, rules } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"wrapper\", \"label\", \"sm\", \"md\", \"lg\"] as const);\n\nexport const wrapper = rule`${c.wrapper} {\n display: flex;\n flex-direction: column;\n gap: ${tokens.space.sm};\n font-family: ${tokens.fonts.base};\n}`;\n\nexport const label = rule`${c.label} {\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n letter-spacing: -0.005em;\n}`;\n\nexport const root = rule`${c.root} {\n display: block;\n width: 100%;\n border: 1.5px solid ${tokens.colors.border};\n border-radius: ${tokens.radii.sm};\n background: white;\n color: ${tokens.colors.text};\n font-family: ${tokens.fonts.base};\n font-size: ${tokens.fontSizes.md};\n line-height: ${tokens.lineHeights.normal};\n transition: all ${tokens.transitions.fast};\n outline: none;\n}`;\n\nexport const rootStates = rules(\n rule`${c.root}:focus {\n border-color: ${tokens.colors.primary};\n box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.15);\n }`,\n rule`${c.root}:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: ${tokens.colors.surface};\n }`,\n rule`${c.root}::placeholder {\n color: ${tokens.colors.textTertiary};\n }`,\n);\n\nexport const sm = rule`${c.sm} {\n padding: ${tokens.space.sm} ${tokens.space.md};\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const md = rule`${c.md} {\n padding: ${tokens.space.md} ${tokens.space.lg};\n font-size: ${tokens.fontSizes.md};\n}`;\n\nexport const lg = rule`${c.lg} {\n padding: ${tokens.space.lg} ${tokens.space.xl};\n font-size: ${tokens.fontSizes.lg};\n}`;\n","/**\n * Avatar component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"image\", \"fallback\", \"sm\", \"md\", \"lg\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n overflow: hidden;\n background: ${tokens.colors.surface};\n border: 1.5px solid ${tokens.colors.border};\n flex-shrink: 0;\n font-family: ${tokens.fonts.base};\n user-select: none;\n}`;\n\nexport const image = rule`${c.image} {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}`;\n\nexport const fallback = rule`${c.fallback} {\n font-weight: ${tokens.fontWeights.semibold};\n color: ${tokens.colors.textMuted};\n text-transform: uppercase;\n letter-spacing: 0.02em;\n}`;\n\nexport const sm = rule`${c.sm} {\n width: 32px;\n height: 32px;\n font-size: 0.75rem;\n}`;\n\nexport const md = rule`${c.md} {\n width: 40px;\n height: 40px;\n font-size: ${tokens.fontSizes.sm};\n}`;\n\nexport const lg = rule`${c.lg} {\n width: 48px;\n height: 48px;\n font-size: ${tokens.fontSizes.md};\n}`;\n","/**\n * Kbd (keyboard) component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n padding: 0.15rem 0.4rem;\n background: ${tokens.colors.surface};\n border: 0.5px solid ${tokens.colors.border};\n border-bottom-width: 2px;\n border-radius: 6px;\n font-family: ${tokens.fonts.base};\n font-size: 0.8125rem;\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n line-height: 1.4;\n white-space: nowrap;\n user-select: none;\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);\n}`;\n","/**\n * Switch component styles\n */\n\nimport { classes, rule } from \"@semajsx/style\";\nimport { tokens } from \"../../theme/tokens\";\n\nconst c = classes([\"root\", \"track\", \"trackOn\", \"thumb\", \"thumbOn\", \"label\"] as const);\n\nexport const root = rule`${c.root} {\n display: inline-flex;\n align-items: center;\n gap: ${tokens.space.md};\n cursor: pointer;\n font-family: ${tokens.fonts.base};\n user-select: none;\n}`;\n\nexport const rootDisabled = rule`${c.root}[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n}`;\n\nexport const track = rule`${c.track} {\n position: relative;\n width: 44px;\n height: 24px;\n background: ${tokens.colors.border};\n border-radius: 12px;\n transition: background ${tokens.transitions.fast};\n flex-shrink: 0;\n}`;\n\nexport const trackOn = rule`${c.trackOn} {\n background: ${tokens.colors.primary};\n}`;\n\nexport const thumb = rule`${c.thumb} {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 20px;\n height: 20px;\n background: white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n transition: transform ${tokens.transitions.fast};\n}`;\n\nexport const thumbOn = rule`${c.thumbOn} {\n transform: translateX(20px);\n}`;\n\nexport const label = rule`${c.label} {\n font-size: ${tokens.fontSizes.sm};\n font-weight: ${tokens.fontWeights.medium};\n color: ${tokens.colors.text};\n letter-spacing: -0.005em;\n}`;\n","/**\n * Pre-collected CSS for SSG/SSR usage\n *\n * Since @semajsx/style's inject() requires a DOM, this module provides\n * all component CSS as a static string for server-side rendering.\n *\n * @example\n * ```tsx\n * import { componentCSS } from \"@semajsx/ui/css\";\n *\n * // Include in a <style> tag for SSG output\n * <style>{componentCSS}</style>\n * ```\n */\n\nimport { isStyleToken } from \"@semajsx/style\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport { lightTheme } from \"./theme/themes\";\nimport * as buttonStyles from \"./components/button/button.style\";\nimport * as cardStyles from \"./components/card/card.style\";\nimport * as calloutStyles from \"./components/callout/callout.style\";\nimport * as badgeStyles from \"./components/badge/badge.style\";\nimport * as codeBlockStyles from \"./components/code-block/code-block.style\";\nimport * as tabsStyles from \"./components/tabs/tabs.style\";\nimport * as stepsStyles from \"./components/steps/steps.style\";\nimport * as separatorStyles from \"./components/separator/separator.style\";\nimport * as inputStyles from \"./components/input/input.style\";\nimport * as avatarStyles from \"./components/avatar/avatar.style\";\nimport * as kbdStyles from \"./components/kbd/kbd.style\";\nimport * as switchStyles from \"./components/switch/switch.style\";\n\nfunction collectCSS(styles: Record<string, unknown>): string {\n return Object.values(styles)\n .filter((v): v is StyleToken => isStyleToken(v))\n .map((t) => t.__cssTemplate)\n .join(\"\\n\");\n}\n\n/** All @semajsx/ui component CSS (theme variables + component rules) */\nexport const componentCSS: string = [\n lightTheme.__cssTemplate,\n collectCSS(buttonStyles),\n collectCSS(cardStyles),\n collectCSS(calloutStyles),\n collectCSS(badgeStyles),\n collectCSS(codeBlockStyles),\n collectCSS(tabsStyles),\n collectCSS(stepsStyles),\n collectCSS(separatorStyles),\n collectCSS(inputStyles),\n collectCSS(avatarStyles),\n collectCSS(kbdStyles),\n collectCSS(switchStyles),\n].join(\"\\n\");\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Button component\n *\n * A polymorphic button with variant, size, and color support.\n * All styles are driven by theme tokens for automatic theme switching.\n *\n * @example\n * ```tsx\n * import { Button } from \"@semajsx/ui/button\";\n *\n * <Button>Default</Button>\n * <Button variant=\"outline\">Outline</Button>\n * <Button variant=\"ghost\" size=\"sm\">Small Ghost</Button>\n * <Button color=\"danger\">Delete</Button>\n * <Button disabled>Disabled</Button>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./button.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface ButtonProps {\n /** Visual variant */\n variant?: \"solid\" | \"outline\" | \"ghost\";\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Color scheme - \"danger\" applies destructive styling */\n color?: \"default\" | \"danger\";\n /** Disabled state */\n disabled?: boolean;\n /** HTML button type attribute */\n type?: \"button\" | \"submit\" | \"reset\";\n /** Click handler */\n onClick?: (e: Event) => void;\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Accessible label when button content isn't descriptive */\n \"aria-label\"?: string;\n /** Content */\n children?: JSXNode;\n}\n\nconst variantStyles = {\n solid: [styles.solid, styles.solidStates],\n outline: [styles.outline, styles.outlineStates],\n ghost: [styles.ghost, styles.ghostStates],\n} as const;\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Button(props: ButtonProps): JSXNode {\n const variant = props.variant ?? \"solid\";\n const size = props.size ?? \"md\";\n const color = props.color ?? \"default\";\n\n return (\n <button\n type={props.type ?? \"button\"}\n disabled={props.disabled}\n class={[\n styles.root,\n styles.rootStates,\n ...variantStyles[variant],\n sizeStyles[size],\n color === \"danger\" && [styles.danger, styles.dangerStates],\n props.class,\n ]}\n onClick={props.onClick}\n aria-label={props[\"aria-label\"]}\n >\n {props.children}\n </button>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Separator component\n *\n * A visual divider between content sections.\n *\n * @example\n * ```tsx\n * import { Separator } from \"@semajsx/ui/components/separator\";\n *\n * <Separator />\n * <Separator orientation=\"vertical\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./separator.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface SeparatorProps {\n /** Orientation of the separator */\n orientation?: \"horizontal\" | \"vertical\";\n /** Additional CSS class(es) */\n class?: ClassValue;\n /** Inline style string */\n style?: string;\n}\n\nexport function Separator(props: SeparatorProps): JSXNode {\n const orientation = props.orientation ?? \"horizontal\";\n\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n class={[\n styles.root,\n styles.horizontal,\n orientation === \"vertical\" && styles.vertical,\n props.class,\n ]}\n style={props.style}\n />\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Input component\n *\n * A text input field with optional label and size variants.\n *\n * @example\n * ```tsx\n * import { Input } from \"@semajsx/ui/components/input\";\n *\n * <Input placeholder=\"Enter your name\" />\n * <Input label=\"Email\" type=\"email\" size=\"lg\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./input.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface InputProps {\n /** Input type */\n type?: \"text\" | \"email\" | \"password\" | \"number\" | \"search\" | \"url\" | \"tel\";\n /** Label text displayed above the input */\n label?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Current value */\n value?: string;\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Disabled state */\n disabled?: boolean;\n /** Read-only state */\n readOnly?: boolean;\n /** HTML name attribute */\n name?: string;\n /** HTML id attribute */\n id?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Input(props: InputProps): JSXNode {\n const size = props.size ?? \"md\";\n const inputId = props.id ?? props.name;\n\n const input = (\n <input\n type={props.type ?? \"text\"}\n id={inputId}\n name={props.name}\n placeholder={props.placeholder}\n value={props.value}\n disabled={props.disabled}\n readOnly={props.readOnly}\n class={[styles.root, styles.rootStates, sizeStyles[size], props.class]}\n />\n );\n\n if (props.label) {\n return (\n <div class={styles.wrapper}>\n <label class={styles.label} for={inputId}>\n {props.label}\n </label>\n {input}\n </div>\n );\n }\n\n return input;\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Avatar component\n *\n * Displays a user avatar with image or initials fallback.\n *\n * @example\n * ```tsx\n * import { Avatar } from \"@semajsx/ui/components/avatar\";\n *\n * <Avatar src=\"/photo.jpg\" alt=\"John\" />\n * <Avatar initials=\"JD\" />\n * <Avatar initials=\"AB\" size=\"lg\" />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./avatar.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface AvatarProps {\n /** Image source URL */\n src?: string;\n /** Alt text for the image */\n alt?: string;\n /** Initials to display when no image is provided */\n initials?: string;\n /** Size preset */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nconst sizeStyles = {\n sm: styles.sm,\n md: styles.md,\n lg: styles.lg,\n} as const;\n\nexport function Avatar(props: AvatarProps): JSXNode {\n const size = props.size ?? \"md\";\n\n return (\n <div\n class={[styles.root, sizeStyles[size], props.class]}\n role=\"img\"\n aria-label={props.alt ?? props.initials ?? \"Avatar\"}\n >\n {props.src ? (\n <img class={styles.image} src={props.src} alt={props.alt ?? \"\"} />\n ) : (\n <span class={styles.fallback}>{props.initials ?? \"?\"}</span>\n )}\n </div>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Kbd component\n *\n * Displays a keyboard key or shortcut.\n *\n * @example\n * ```tsx\n * import { Kbd } from \"@semajsx/ui/components/kbd\";\n *\n * <Kbd>Ctrl</Kbd>\n * <p>Press <Kbd>Cmd</Kbd> + <Kbd>K</Kbd> to search</p>\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./kbd.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface KbdProps {\n /** Key label */\n children?: JSXNode;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nexport function Kbd(props: KbdProps): JSXNode {\n return <kbd class={[styles.root, props.class]}>{props.children}</kbd>;\n}\n","/** @jsxImportSource @semajsx/dom */\n\n/**\n * Switch component\n *\n * A toggle switch for boolean settings.\n *\n * @example\n * ```tsx\n * import { Switch } from \"@semajsx/ui/components/switch\";\n *\n * <Switch label=\"Dark mode\" />\n * <Switch label=\"Notifications\" checked />\n * ```\n */\n\nimport type { JSXNode } from \"@semajsx/core\";\nimport type { StyleToken } from \"@semajsx/style\";\nimport * as styles from \"./switch.style\";\n\ntype ClassValue = string | StyleToken | ClassValue[] | false | null | undefined;\n\nexport interface SwitchProps {\n /** Label text */\n label?: string;\n /** Checked state */\n checked?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** HTML name attribute */\n name?: string;\n /** Additional CSS class(es) */\n class?: ClassValue;\n}\n\nexport function Switch(props: SwitchProps): JSXNode {\n const checked = props.checked ?? false;\n\n return (\n <div\n role=\"switch\"\n aria-checked={checked ? \"true\" : \"false\"}\n aria-disabled={props.disabled ? \"true\" : undefined}\n class={[styles.root, styles.rootDisabled, props.class]}\n >\n <div class={[styles.track, checked && styles.trackOn]}>\n <div class={[styles.thumb, checked && styles.thumbOn]} />\n </div>\n {props.label && <span class={styles.label}>{props.label}</span>}\n </div>\n );\n}\n","/** @jsxImportSource @semajsx/dom */\n\nimport type { VNode, JSXNode } from \"@semajsx/core\";\nimport type { DocumentProps } from \"../../types\";\nimport type { DocsThemeOptions, NavLink } from \"./types\";\nimport { THEME_CSS } from \"./styles\";\nimport { Icon } from \"../lucide/component\";\n\nimport { Callout } from \"@semajsx/ui/components/callout\";\nimport { Badge } from \"@semajsx/ui/components/badge\";\nimport { Card } from \"@semajsx/ui/components/card\";\nimport { Tabs, TabList, Tab, TabPanel } from \"@semajsx/ui/components/tabs\";\nimport { Steps, Step } from \"@semajsx/ui/components/steps\";\nimport { componentCSS } from \"@semajsx/ui/css\";\n\nimport type { BadgeColor } from \"@semajsx/ui/components/badge\";\n\nimport { Button } from \"@semajsx/ui/components/button\";\nimport { Separator } from \"@semajsx/ui/components/separator\";\nimport { Input } from \"@semajsx/ui/components/input\";\nimport { Avatar } from \"@semajsx/ui/components/avatar\";\nimport { Kbd } from \"@semajsx/ui/components/kbd\";\nimport { Switch } from \"@semajsx/ui/components/switch\";\n\n/** Concatenate class names, filtering falsy values */\nfunction cx(...args: (string | false | null | undefined)[]): string {\n return args.filter(Boolean).join(\" \");\n}\n\n// =============================================================================\n// ComponentPreview — MDX component for showcasing UI components\n// =============================================================================\n\ninterface ComponentPreviewProps {\n /** Optional label shown above the preview */\n label?: string;\n children?: JSXNode;\n}\n\nexport function ComponentPreview({ label, children }: ComponentPreviewProps): VNode {\n return (\n <div class=\"dt-preview\">\n <div class=\"dt-preview-box\">\n {label && <span class=\"dt-preview-label\">{label}</span>}\n {children}\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// CodeBlock — MDX component (kept custom for Shiki className integration)\n// =============================================================================\n\ninterface CodeBlockProps {\n children: string;\n className?: string;\n language?: string;\n}\n\nexport function CodeBlock({ children, className, language }: CodeBlockProps): VNode {\n const lang = language || (className?.replace(/^language-/, \"\") ?? \"text\");\n return (\n <div class=\"dt-code-block\">\n {lang && lang !== \"text\" && (\n <div class=\"dt-code-header\">\n <span class=\"dt-code-lang\">{lang}</span>\n </div>\n )}\n <pre class={className}>\n <code>{children}</code>\n </pre>\n </div>\n );\n}\n\n// =============================================================================\n// Difficulty → Badge color mapping\n// =============================================================================\n\nconst DIFFICULTY_COLORS: Record<string, BadgeColor> = {\n beginner: \"success\",\n intermediate: \"warning\",\n advanced: \"danger\",\n};\n\nconst DIFFICULTY_LABELS: Record<string, string> = {\n beginner: \"Beginner\",\n intermediate: \"Intermediate\",\n advanced: \"Advanced\",\n};\n\n// =============================================================================\n// Component factory — creates all page components bound to theme options\n// =============================================================================\n\ninterface DocsIndexProps {\n docs: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n}\n\ninterface DocPageProps {\n doc: { data: { title: string; description?: string } };\n content: VNode;\n}\n\ninterface GuidesIndexProps {\n guides: Array<{\n slug: string;\n data: { title: string; description?: string; difficulty: string; order: number };\n }>;\n}\n\ninterface GuidePageProps {\n guide: { data: { title: string; description?: string; difficulty: string } };\n content: VNode;\n}\n\ninterface UIIndexProps {\n components: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n}\n\ninterface UIPageProps {\n component: { data: { title: string; description?: string } };\n content: VNode;\n}\n\n/** Props for the DocsIndexHome preset */\ninterface DocsIndexHomeProps {\n docs: Array<{\n slug: string;\n data: { title: string; description?: string; category?: string; order: number };\n }>;\n guides: Array<{\n slug: string;\n data: { title: string; description?: string; difficulty: string; order: number };\n }>;\n}\n\n/** Component map returned by createComponents */\nexport interface DocsThemeComponents {\n Document: (props: DocumentProps) => VNode;\n Layout: (props: { children: JSXNode }) => VNode;\n HomePage: () => VNode;\n DocsIndexHome: (props: DocsIndexHomeProps) => VNode;\n DocsIndex: (props: DocsIndexProps) => VNode;\n DocPage: (props: DocPageProps) => VNode;\n GuidesIndex: (props: GuidesIndexProps) => VNode;\n GuidePage: (props: GuidePageProps) => VNode;\n UIIndex: (props: UIIndexProps) => VNode;\n UIPage: (props: UIPageProps) => VNode;\n NotFound: () => VNode;\n ComponentPreview: typeof ComponentPreview;\n Callout: typeof Callout;\n CodeBlock: typeof CodeBlock;\n Tabs: typeof Tabs;\n TabList: typeof TabList;\n Tab: typeof Tab;\n TabPanel: typeof TabPanel;\n Steps: typeof Steps;\n Step: typeof Step;\n Button: typeof Button;\n Badge: typeof Badge;\n Card: typeof Card;\n Separator: typeof Separator;\n Input: typeof Input;\n Avatar: typeof Avatar;\n Kbd: typeof Kbd;\n Switch: typeof Switch;\n}\n\nexport function createComponents(options: DocsThemeOptions): DocsThemeComponents {\n // --------------------------------------------------\n // Document\n // --------------------------------------------------\n function Document(props: DocumentProps): VNode {\n const { children, title, scripts, css } = props;\n const defaultTitle = options.title;\n const pageTitle = title ?? defaultTitle;\n const desc = options.description ?? \"\";\n\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n {desc && <meta name=\"description\" content={desc} />}\n <meta name=\"theme-color\" content=\"#fbfbfd\" />\n <meta name=\"color-scheme\" content=\"light\" />\n <title>{pageTitle}</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossOrigin=\"\" />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\"\n rel=\"stylesheet\"\n />\n {css?.map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} />\n ))}\n </head>\n <body>\n {children}\n {scripts}\n </body>\n </html>\n );\n }\n\n // --------------------------------------------------\n // Layout (nav + main + footer)\n // --------------------------------------------------\n function Layout({ children }: { children: JSXNode }): VNode {\n const footerLinks = options.footer?.links ?? options.nav.links;\n const copyrightName = options.footer?.copyright ?? options.title;\n\n return (\n <div class=\"dt-root\">\n <style>{componentCSS}</style>\n <style>{THEME_CSS}</style>\n\n {/* Navigation */}\n <nav class=\"dt-glass-nav\">\n <div class=\"dt-nav-inner\">\n <a href=\"/\" class=\"dt-nav-logo\">\n {options.nav.logo}\n </a>\n <ul class=\"dt-nav-links\">\n {options.nav.links.map((link: NavLink) => (\n <li key={link.href}>\n <a\n href={link.href}\n class=\"dt-nav-link\"\n {...(link.external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </nav>\n\n <main class=\"dt-main\">{children}</main>\n\n {/* Footer */}\n <footer class=\"dt-footer\">\n <div class=\"dt-footer-inner\">\n <div class=\"dt-footer-links\">\n {footerLinks.map((link: NavLink) => (\n <a\n key={link.href}\n href={link.href}\n class=\"dt-footer-link\"\n {...(link.external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {link.label}\n </a>\n ))}\n </div>\n <p class=\"dt-footer-copy\">\n {`\\u00A9 ${new Date().getFullYear()} ${copyrightName}`}. MIT License.\n </p>\n </div>\n </footer>\n </div>\n );\n }\n\n // --------------------------------------------------\n // Home Page\n // --------------------------------------------------\n function HomePage(): VNode {\n return (\n <Layout>\n {/* Hero */}\n {options.hero && (\n <div\n class={cx(\"dt-hero-bg\", \"dt-hero-section\")}\n style=\"padding: 100px 24px 80px; position: relative;\"\n >\n <div style=\"max-width: 680px; margin: 0 auto; position: relative; z-index: 1; text-align: center;\">\n <h1 class={cx(\"dt-hero-title\", \"dt-anim-slide-up\")}>{options.hero.title}</h1>\n <p class={cx(\"dt-hero-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.hero.subtitle}\n </p>\n {options.hero.actions && options.hero.actions.length > 0 && (\n <div class={cx(\"dt-hero-cta\", \"dt-anim-slide-up\", \"dt-stagger-2\")}>\n {options.hero.actions.map((action) => (\n <a\n key={action.href}\n href={action.href}\n class={action.primary ? \"dt-primary-btn\" : \"dt-secondary-btn\"}\n >\n {action.label}\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* Features */}\n {options.features && (\n <section\n class=\"dt-section-features\"\n style=\"max-width: 1080px; margin: 0 auto; padding: 80px 24px;\"\n >\n <div style=\"text-align: center; margin-bottom: 3.5rem;\">\n <h2 class={cx(\"dt-section-title\", \"dt-anim-slide-up\")}>{options.features.title}</h2>\n <p class={cx(\"dt-section-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.features.subtitle}\n </p>\n </div>\n <div\n class=\"dt-features-grid\"\n style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem;\"\n >\n {options.features.items.map((item, i) => (\n <Card\n key={item.title}\n icon={<Icon name={item.icon} size={24} />}\n heading={item.title}\n description={item.description}\n class={cx(\"dt-anim-scale-in\", `dt-stagger-${Math.min(i + 2, 5)}`)}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Quick Links */}\n {options.quickLinks && (\n <section\n class=\"dt-section-links\"\n style=\"max-width: 1080px; margin: 0 auto; padding: 0 24px 100px;\"\n >\n <div\n class=\"dt-section-links-inner\"\n style=\"border-top: 0.5px solid rgba(0, 0, 0, 0.06); padding-top: 80px; text-align: center;\"\n >\n <h2 class={cx(\"dt-section-title\", \"dt-anim-slide-up\")}>{options.quickLinks.title}</h2>\n <p class={cx(\"dt-section-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.quickLinks.subtitle}\n </p>\n <div\n class=\"dt-links-grid\"\n style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.25rem; max-width: 720px; margin: 0 auto;\"\n >\n {options.quickLinks.items.map((item, i) => (\n <Card\n key={item.href}\n variant=\"link\"\n href={item.href}\n heading={item.title}\n description={item.description}\n class={cx(\"dt-anim-scale-in\", `dt-stagger-${Math.min(i + 2, 5)}`)}\n style=\"text-align: left;\"\n />\n ))}\n </div>\n </div>\n </section>\n )}\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Docs Index Home (preset for home: \"docs-index\")\n // --------------------------------------------------\n function DocsIndexHome({ docs: docsList, guides: guidesList }: DocsIndexHomeProps): VNode {\n const docsConf = options.docs;\n const guidesConf = options.guides;\n const docsBasePath = docsConf?.basePath ?? \"/docs\";\n const guidesBasePath = guidesConf?.basePath ?? \"/guides\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{options.title}</h1>\n {options.description && (\n <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {options.description}\n </p>\n )}\n </div>\n\n {/* Docs listing */}\n {docsList.length > 0 && (\n <section class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{docsConf?.heading ?? \"Documentation\"}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {docsList\n .sort((a, b) => a.data.order - b.data.order)\n .map((doc, i) => (\n <Card\n key={doc.slug}\n variant=\"link\"\n href={`${docsBasePath}/${doc.slug}`}\n heading={doc.data.title}\n description={doc.data.description}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n />\n ))}\n </div>\n </section>\n )}\n\n {/* Guides listing */}\n {guidesList.length > 0 && (\n <section class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{guidesConf?.heading ?? \"Guides\"}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {guidesList\n .sort((a, b) => a.data.order - b.data.order)\n .map((guide, i) => (\n <Card\n key={guide.slug}\n variant=\"link\"\n href={`${guidesBasePath}/${guide.slug}`}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n >\n <div style=\"display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.375rem;\">\n <h3 class=\"dt-card-title\" style=\"margin: 0;\">\n {guide.data.title}\n </h3>\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n {guide.data.description && (\n <p class=\"dt-card-desc\">{guide.data.description}</p>\n )}\n </Card>\n ))}\n </div>\n </section>\n )}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Docs Index\n // --------------------------------------------------\n function DocsIndex({ docs: docsList }: DocsIndexProps): VNode {\n const docsConf = options.docs;\n const heading = docsConf?.heading ?? \"Documentation\";\n const desc = docsConf?.description ?? \"\";\n\n const byCategory = docsList.reduce(\n (acc, doc) => {\n const category = doc.data.category || \"General\";\n if (!acc[category]) acc[category] = [];\n acc[category].push(doc);\n return acc;\n },\n {} as Record<string, typeof docsList>,\n );\n Object.values(byCategory).forEach((items) => items.sort((a, b) => a.data.order - b.data.order));\n\n const basePath = docsConf?.basePath ?? \"/docs\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byCategory).map(([category, items]) => (\n <section key={category} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{category}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {items.map((doc, i) => (\n <Card\n key={doc.slug}\n variant=\"link\"\n href={`${basePath}/${doc.slug}`}\n heading={doc.data.title}\n description={doc.data.description}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n />\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Doc Page\n // --------------------------------------------------\n function DocPage({ doc, content }: DocPageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\">\n <div style=\"margin-bottom: 2.5rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{doc.data.title}</h1>\n {doc.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {doc.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Guides Index\n // --------------------------------------------------\n function GuidesIndex({ guides: guidesList }: GuidesIndexProps): VNode {\n const guidesConf = options.guides;\n const heading = guidesConf?.heading ?? \"Guides\";\n const desc = guidesConf?.description ?? \"\";\n\n const byDifficulty = guidesList.reduce(\n (acc, guide) => {\n const difficulty = guide.data.difficulty || \"beginner\";\n if (!acc[difficulty]) acc[difficulty] = [];\n acc[difficulty].push(guide);\n return acc;\n },\n {} as Record<string, typeof guidesList>,\n );\n Object.values(byDifficulty).forEach((items) =>\n items.sort((a, b) => a.data.order - b.data.order),\n );\n\n const basePath = guidesConf?.basePath ?? \"/guides\";\n\n return (\n <Layout>\n <div style=\"max-width: 720px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byDifficulty).map(([difficulty, items]) => (\n <section key={difficulty} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{DIFFICULTY_LABELS[difficulty] ?? difficulty}</h2>\n <div style=\"display: flex; flex-direction: column; gap: 0.75rem;\">\n {items.map((guide, i) => (\n <Card\n key={guide.slug}\n variant=\"link\"\n href={`${basePath}/${guide.slug}`}\n class={cx(\"dt-anim-scale-in\")}\n style={`animation-delay: ${0.1 + i * 0.08}s;`}\n >\n <div style=\"display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.375rem;\">\n <h3 class=\"dt-card-title\" style=\"margin: 0;\">\n {guide.data.title}\n </h3>\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n {guide.data.description && <p class=\"dt-card-desc\">{guide.data.description}</p>}\n </Card>\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // Guide Page\n // --------------------------------------------------\n function GuidePage({ guide, content }: GuidePageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\">\n <div style=\"margin-bottom: 2.5rem;\">\n <div class=\"dt-fade-in\" style=\"margin-bottom: 1rem;\">\n <Badge color={DIFFICULTY_COLORS[guide.data.difficulty] ?? \"default\"}>\n {guide.data.difficulty}\n </Badge>\n </div>\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{guide.data.title}</h1>\n {guide.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {guide.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // UI Components Index\n // --------------------------------------------------\n function UIIndex({ components: componentsList }: UIIndexProps): VNode {\n const uiConf = options.ui;\n const heading = uiConf?.heading ?? \"Components\";\n const desc = uiConf?.description ?? \"\";\n const basePath = uiConf?.basePath ?? \"/ui\";\n\n const byCategory = componentsList.reduce(\n (acc, comp) => {\n const category = comp.data.category || \"General\";\n if (!acc[category]) acc[category] = [];\n acc[category].push(comp);\n return acc;\n },\n {} as Record<string, typeof componentsList>,\n );\n Object.values(byCategory).forEach((items) => items.sort((a, b) => a.data.order - b.data.order));\n\n return (\n <Layout>\n <div style=\"max-width: 960px;\">\n <div style=\"margin-bottom: 3rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{heading}</h1>\n {desc && <p class={cx(\"dt-page-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>{desc}</p>}\n </div>\n {Object.entries(byCategory).map(([category, items]) => (\n <section key={category} class=\"dt-fade-in\" style=\"margin-bottom: 2.5rem;\">\n <h2 class=\"dt-category-heading\">{category}</h2>\n <div class=\"dt-ui-grid\">\n {items.map((comp, i) => (\n <a\n key={comp.slug}\n href={`${basePath}/${comp.slug}`}\n class={cx(\"dt-ui-card\", \"dt-anim-scale-in\")}\n style={`animation-delay: ${0.05 + i * 0.05}s;`}\n >\n <div class=\"dt-ui-card-preview\">{renderMiniPreview(comp.slug)}</div>\n <h3 class=\"dt-ui-card-name\">{comp.data.title}</h3>\n {comp.data.description && (\n <p class=\"dt-ui-card-desc\">{comp.data.description}</p>\n )}\n </a>\n ))}\n </div>\n </section>\n ))}\n </div>\n </Layout>\n );\n }\n\n /** Renders a small preview of the component for the index grid cards */\n function renderMiniPreview(slug: string): JSXNode {\n switch (slug) {\n case \"button\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Button size=\"sm\">Button</Button>\n <Button size=\"sm\" variant=\"outline\">\n Outline\n </Button>\n </div>\n );\n case \"badge\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Badge>Default</Badge>\n <Badge color=\"success\">Success</Badge>\n <Badge color=\"warning\">Warning</Badge>\n </div>\n );\n case \"input\":\n return (\n <div style=\"width: 160px; position: relative; z-index: 1;\">\n <Input size=\"sm\" placeholder=\"Type here...\" />\n </div>\n );\n case \"switch\":\n return (\n <div style=\"display: flex; gap: 1rem; position: relative; z-index: 1;\">\n <Switch />\n <Switch checked />\n </div>\n );\n case \"avatar\":\n return (\n <div style=\"display: flex; gap: 0.5rem; position: relative; z-index: 1;\">\n <Avatar initials=\"AB\" size=\"sm\" />\n <Avatar initials=\"CD\" size=\"md\" />\n <Avatar initials=\"EF\" size=\"lg\" />\n </div>\n );\n case \"separator\":\n return (\n <div style=\"width: 120px; position: relative; z-index: 1;\">\n <div style=\"font-size: 0.75rem; color: #86868b; text-align: center;\">Above</div>\n <Separator />\n <div style=\"font-size: 0.75rem; color: #86868b; text-align: center;\">Below</div>\n </div>\n );\n case \"kbd\":\n return (\n <div style=\"display: flex; gap: 0.25rem; align-items: center; position: relative; z-index: 1;\">\n <Kbd>Cmd</Kbd>\n <span style=\"color: #86868b; font-size: 0.75rem;\">+</span>\n <Kbd>K</Kbd>\n </div>\n );\n case \"card\":\n return (\n <div style=\"transform: scale(0.45); transform-origin: center; position: relative; z-index: 1; width: 240px;\">\n <Card heading=\"Card Title\" description=\"A brief description\" />\n </div>\n );\n case \"callout\":\n return (\n <div style=\"transform: scale(0.6); transform-origin: center; position: relative; z-index: 1; width: 260px;\">\n <Callout type=\"info\">Informational callout</Callout>\n </div>\n );\n case \"tabs\":\n return (\n <div style=\"transform: scale(0.7); transform-origin: center; position: relative; z-index: 1; width: 200px;\">\n <Tabs defaultValue=\"one\">\n <TabList>\n <Tab value=\"one\">First</Tab>\n <Tab value=\"two\">Second</Tab>\n </TabList>\n </Tabs>\n </div>\n );\n case \"steps\":\n return (\n <div style=\"transform: scale(0.4); transform-origin: center; position: relative; z-index: 1; width: 200px;\">\n <Steps>\n <Step title=\"Install\" number={1}>\n bun add semajsx\n </Step>\n <Step title=\"Build\" number={2}>\n Create app\n </Step>\n </Steps>\n </div>\n );\n case \"code-block\":\n return (\n <div style=\"position: relative; z-index: 1; width: 160px;\">\n <div style=\"background: #1e1e1e; border-radius: 6px; padding: 8px 10px; font-family: ui-monospace, 'SF Mono', monospace; font-size: 0.625rem; color: #d4d4d4; line-height: 1.5; white-space: pre; overflow: hidden;\">\n <span style=\"color: #c586c0;\">const</span> <span style=\"color: #9cdcfe;\">x</span>{\" \"}\n <span style=\"color: #d4d4d4;\">=</span> <span style=\"color: #b5cea8;\">42</span>;\n </div>\n </div>\n );\n default:\n return (\n <div style=\"font-size: 0.6875rem; color: #86868b; position: relative; z-index: 1;\">\n {slug}\n </div>\n );\n }\n }\n\n // --------------------------------------------------\n // UI Component Page\n // --------------------------------------------------\n function UIPage({ component: comp, content }: UIPageProps): VNode {\n return (\n <Layout>\n <article class=\"dt-page-container\" style=\"max-width: 800px;\">\n <div style=\"margin-bottom: 2.5rem;\">\n <h1 class={cx(\"dt-page-title\", \"dt-anim-slide-up\")}>{comp.data.title}</h1>\n {comp.data.description && (\n <p class={cx(\"dt-content-desc\", \"dt-anim-slide-up\", \"dt-stagger-1\")}>\n {comp.data.description}\n </p>\n )}\n </div>\n <div class={cx(\"dt-content\", \"dt-fade-in\")}>{content}</div>\n </article>\n </Layout>\n );\n }\n\n // --------------------------------------------------\n // 404 Not Found\n // --------------------------------------------------\n function NotFound(): VNode {\n return (\n <Layout>\n <div\n class={cx(\"dt-hero-bg\", \"dt-not-found-section\")}\n style=\"padding: 100px 24px 80px; position: relative;\"\n >\n <div style=\"max-width: 680px; margin: 0 auto; position: relative; z-index: 1; text-align: center;\">\n <h1 class={cx(\"dt-not-found-title\", \"dt-anim-slide-up\")}>404</h1>\n <p\n class={cx(\"dt-hero-subtitle\", \"dt-anim-slide-up\", \"dt-stagger-1\")}\n style=\"margin-bottom: 0.75rem;\"\n >\n Page Not Found\n </p>\n <p\n class={cx(\"dt-anim-slide-up\", \"dt-stagger-2\")}\n style=\"color: #86868b; font-size: 1rem; margin-bottom: 2.5rem; max-width: 28rem; margin-left: auto; margin-right: auto; line-height: 1.6;\"\n >\n The page you're looking for doesn't exist or has been moved.\n </p>\n <div class={cx(\"dt-hero-cta\", \"dt-anim-slide-up\", \"dt-stagger-3\", \"dt-not-found-cta\")}>\n <a href=\"/\" class=\"dt-primary-btn\">\n Go Back Home\n </a>\n <a href={options.docs?.basePath ?? \"/docs\"} class=\"dt-secondary-btn\">\n View Docs\n </a>\n </div>\n </div>\n </div>\n </Layout>\n );\n }\n\n return {\n Document,\n Layout,\n HomePage,\n DocsIndexHome,\n DocsIndex,\n DocPage,\n GuidesIndex,\n GuidePage,\n UIIndex,\n UIPage,\n NotFound,\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n };\n}\n\n// Re-export for plugin index\nexport {\n Callout,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n};\n","import { writeFile, mkdir } from \"fs/promises\";\nimport { join, dirname } from \"path\";\nimport type { SSGConfig, SSGPlugin, SSGInstance, CollectionEntry } from \"../../types\";\nimport type { LlmsOptions } from \"./types\";\n\nexport type { LlmsOptions, LlmsSection, LlmsLink } from \"./types\";\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nfunction normalizePath(path: string): string {\n return path.startsWith(\"/\") ? path : `/${path}`;\n}\n\nfunction resolveUrl(base: string | undefined, path: string): string {\n if (!base) return path;\n return `${base.replace(/\\/$/, \"\")}${path}`;\n}\n\nfunction getEntryTitle(entry: CollectionEntry): string {\n const data = entry.data as Record<string, unknown>;\n return (data.title as string) ?? entry.slug;\n}\n\nfunction getEntryDescription(entry: CollectionEntry): string | undefined {\n const data = entry.data as Record<string, unknown>;\n return data.description as string | undefined;\n}\n\nfunction formatLink(title: string, url: string, description?: string): string {\n return description ? `- [${title}](${url}): ${description}` : `- [${title}](${url})`;\n}\n\n// =============================================================================\n// llms.txt Generator\n// =============================================================================\n\n/**\n * Generate llms.txt content following the llms.txt specification.\n *\n * Format:\n * - H1: site title (required)\n * - Blockquote: site description (optional)\n * - H2 sections: collection entries as markdown links\n * - ## Optional: additional links\n *\n * @see https://llmstxt.org/\n */\nfunction generateLlmsTxt(\n options: LlmsOptions,\n sectionEntries: Map<string, CollectionEntry[]>,\n): string {\n const lines: string[] = [];\n\n lines.push(`# ${options.title}`);\n lines.push(\"\");\n\n if (options.description) {\n lines.push(`> ${options.description}`);\n lines.push(\"\");\n }\n\n for (const section of options.sections ?? []) {\n const entries = sectionEntries.get(section.collection) ?? [];\n if (entries.length === 0) continue;\n\n const basePath = normalizePath(section.basePath);\n lines.push(`## ${section.title}`);\n lines.push(\"\");\n\n for (const entry of entries) {\n const title = getEntryTitle(entry);\n const url = resolveUrl(options.url, `${basePath}/${entry.slug}`);\n const desc = getEntryDescription(entry);\n lines.push(formatLink(title, url, desc));\n }\n\n lines.push(\"\");\n }\n\n if (options.links?.length) {\n lines.push(\"## Optional\");\n lines.push(\"\");\n for (const link of options.links) {\n lines.push(formatLink(link.title, link.url, link.description));\n }\n lines.push(\"\");\n }\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// llms-full.txt Generator\n// =============================================================================\n\n/**\n * Generate llms-full.txt with complete content for each entry.\n * Includes the full markdown body of every collection entry.\n */\nfunction generateLlmsFullTxt(\n options: LlmsOptions,\n sectionEntries: Map<string, CollectionEntry[]>,\n): string {\n const lines: string[] = [];\n\n lines.push(`# ${options.title}`);\n lines.push(\"\");\n\n if (options.description) {\n lines.push(`> ${options.description}`);\n lines.push(\"\");\n }\n\n for (const section of options.sections ?? []) {\n const entries = sectionEntries.get(section.collection) ?? [];\n if (entries.length === 0) continue;\n\n const basePath = normalizePath(section.basePath);\n lines.push(`## ${section.title}`);\n lines.push(\"\");\n\n for (const entry of entries) {\n const title = getEntryTitle(entry);\n const url = resolveUrl(options.url, `${basePath}/${entry.slug}`);\n const desc = getEntryDescription(entry);\n\n lines.push(`### ${title}`);\n\n if (desc) {\n lines.push(\"\");\n lines.push(`> ${desc}`);\n }\n\n lines.push(\"\");\n lines.push(`Source: ${url}`);\n lines.push(\"\");\n lines.push(entry.body.trim());\n lines.push(\"\");\n lines.push(\"---\");\n lines.push(\"\");\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// Per-Entry Markdown Generator\n// =============================================================================\n\nfunction generateEntryMarkdown(entry: CollectionEntry): string {\n const title = getEntryTitle(entry);\n const desc = getEntryDescription(entry);\n const lines: string[] = [];\n\n lines.push(`# ${title}`);\n\n if (desc) {\n lines.push(\"\");\n lines.push(`> ${desc}`);\n }\n\n lines.push(\"\");\n lines.push(entry.body.trim());\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n}\n\n// =============================================================================\n// Plugin\n// =============================================================================\n\n/**\n * LLMs plugin for SSG.\n *\n * Generates `llms.txt`, `llms-full.txt`, and per-page `.md` files\n * following the llms.txt specification, making your site easily\n * consumable by LLMs and AI agents.\n *\n * @see https://llmstxt.org/\n *\n * @example\n * ```tsx\n * import { createSSG } from \"@semajsx/ssg\";\n * import { llms } from \"@semajsx/ssg/plugins/llms\";\n *\n * const ssg = createSSG({\n * outDir: \"./dist\",\n * plugins: [\n * llms({\n * title: \"My Project\",\n * description: \"Documentation for My Project\",\n * url: \"https://docs.myproject.com\",\n * sections: [\n * { title: \"Documentation\", collection: \"docs\", basePath: \"/docs\" },\n * ],\n * }),\n * ],\n * });\n * ```\n */\nexport function llms(options: LlmsOptions): SSGPlugin {\n let outDir = \"\";\n\n return {\n name: \"llms\",\n enforce: \"post\",\n\n configResolved(config: SSGConfig) {\n outDir = config.outDir ?? \"./dist\";\n },\n\n async buildEnd(_result, ssg: SSGInstance) {\n const genLlmsTxt = options.llmsTxt !== false;\n const genLlmsFullTxt = options.llmsFullTxt !== false;\n const genMarkdownPages = options.markdownPages !== false;\n\n // Collect entries for each configured section\n const sectionEntries = new Map<string, CollectionEntry[]>();\n\n for (const section of options.sections ?? []) {\n try {\n const entries = await ssg.getCollection(section.collection);\n sectionEntries.set(section.collection, entries);\n } catch {\n // Collection not found — skip silently\n sectionEntries.set(section.collection, []);\n }\n }\n\n await mkdir(outDir, { recursive: true });\n\n // Generate llms.txt\n if (genLlmsTxt) {\n const content = generateLlmsTxt(options, sectionEntries);\n await writeFile(join(outDir, \"llms.txt\"), content, \"utf-8\");\n }\n\n // Generate llms-full.txt\n if (genLlmsFullTxt) {\n const content = generateLlmsFullTxt(options, sectionEntries);\n await writeFile(join(outDir, \"llms-full.txt\"), content, \"utf-8\");\n }\n\n // Generate per-entry .md files\n if (genMarkdownPages) {\n for (const section of options.sections ?? []) {\n const basePath = normalizePath(section.basePath);\n const entries = sectionEntries.get(section.collection) ?? [];\n for (const entry of entries) {\n const mdPath = `${basePath}/${entry.slug}.md`;\n const fullPath = join(outDir, mdPath.slice(1)); // strip leading /\n const content = generateEntryMarkdown(entry);\n\n await mkdir(dirname(fullPath), { recursive: true });\n await writeFile(fullPath, content, \"utf-8\");\n }\n }\n }\n },\n };\n}\n\n// Export generators for testing\nexport { generateLlmsTxt as _generateLlmsTxt, generateLlmsFullTxt as _generateLlmsFullTxt };\n","import remarkGfm from \"remark-gfm\";\nimport { z } from \"zod\";\nimport type { SSGPlugin, Collection, RouteConfig } from \"../../types\";\nimport { defineCollection } from \"../../index\";\nimport type { DocsThemeOptions } from \"./types\";\nimport {\n createComponents,\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n} from \"./components\";\nimport { lucide as lucidePlugin } from \"../lucide/index\";\nimport { llms as llmsPlugin } from \"../llms/index\";\nimport type { LlmsSection } from \"../llms/types\";\nimport type { Component } from \"@semajsx/core\";\n\nexport type {\n DocsThemeOptions,\n LlmsThemeOptions,\n NavLink,\n HeroAction,\n FeatureItem,\n QuickLinkItem,\n DocsConfig,\n GuidesConfig,\n UIConfig,\n HomeOption,\n HomePageProps,\n LayoutComponent,\n} from \"./types\";\n\nexport {\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n} from \"./components\";\n\n// =============================================================================\n// Schemas\n// =============================================================================\n\nconst docsSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n category: z.string().optional(),\n});\n\nconst guidesSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n difficulty: z.enum([\"beginner\", \"intermediate\", \"advanced\"]).default(\"beginner\"),\n});\n\nconst uiSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n order: z.number().default(999),\n category: z.string().optional(),\n});\n\n// =============================================================================\n// Plugin factory\n// =============================================================================\n\n/**\n * Docs theme plugin for SSG.\n *\n * Provides an Apple-inspired documentation site with:\n * - Frosted glass navigation\n * - Home page with hero, features, and quick links\n * - Docs collection with category grouping\n * - Guides collection with difficulty levels\n * - MDX components (Callout, CodeBlock)\n * - Responsive design\n *\n * All text content, navigation links, and site metadata\n * are configured through options — nothing is hardcoded.\n *\n * @example\n * ```tsx\n * import { createSSG } from \"@semajsx/ssg\";\n * import { docsTheme } from \"@semajsx/ssg/plugins/docs-theme\";\n * import { fileSource } from \"@semajsx/ssg\";\n *\n * const ssg = createSSG({\n * outDir: \"./dist\",\n * plugins: [\n * docsTheme({\n * title: \"My Docs\",\n * nav: {\n * logo: \"MyProject\",\n * links: [\n * { label: \"Docs\", href: \"/docs\" },\n * { label: \"GitHub\", href: \"https://github.com/...\", external: true },\n * ],\n * },\n * hero: {\n * title: \"MyProject\",\n * subtitle: \"A great project.\",\n * actions: [{ label: \"Get Started\", href: \"/docs/intro\", primary: true }],\n * },\n * docs: { source: fileSource({ directory: \"content/docs\" }, rootDir) },\n * }),\n * ],\n * });\n * ```\n */\nexport function docsTheme(options: DocsThemeOptions): SSGPlugin[] {\n const components = createComponents(options);\n const docsBasePath = options.docs?.basePath ?? \"/docs\";\n const guidesBasePath = options.guides?.basePath ?? \"/guides\";\n const uiBasePath = options.ui?.basePath ?? \"/ui\";\n\n const mainPlugin: SSGPlugin = {\n name: \"docs-theme\",\n\n config() {\n const collections: Collection[] = [];\n const routes: RouteConfig[] = [];\n\n // --- Collections ---\n\n if (options.docs) {\n collections.push(\n defineCollection({\n name: \"docs\",\n source: options.docs.source,\n schema: docsSchema,\n }),\n );\n }\n\n if (options.guides) {\n collections.push(\n defineCollection({\n name: \"guides\",\n source: options.guides.source,\n schema: guidesSchema,\n }),\n );\n }\n\n if (options.ui) {\n collections.push(\n defineCollection({\n name: \"ui\",\n source: options.ui.source,\n schema: uiSchema,\n }),\n );\n }\n\n // --- Routes ---\n\n // Home page\n if (options.home !== false) {\n if (options.home === \"docs-index\") {\n // Minimal document index preset\n routes.push({\n path: \"/\",\n component: components.DocsIndexHome,\n props: async (ssg) => ({\n title: options.title,\n docs: options.docs ? await ssg.getCollection(\"docs\") : [],\n guides: options.guides ? await ssg.getCollection(\"guides\") : [],\n }),\n });\n } else if (typeof options.home === \"function\") {\n // Custom component — pass Layout and collection data\n const CustomHome = options.home;\n routes.push({\n path: \"/\",\n component: (props: Record<string, unknown>) => CustomHome(props as never),\n props: async (ssg) => ({\n title: options.title,\n Layout: components.Layout,\n docs: options.docs ? await ssg.getCollection(\"docs\") : [],\n guides: options.guides ? await ssg.getCollection(\"guides\") : [],\n }),\n });\n } else {\n // Default marketing homepage\n routes.push({\n path: \"/\",\n component: components.HomePage,\n props: { title: options.title },\n });\n }\n }\n\n // Docs routes\n if (options.docs) {\n routes.push({\n path: docsBasePath,\n component: components.DocsIndex,\n props: async (ssg) => ({\n title: options.docs?.heading ?? \"Documentation\",\n docs: await ssg.getCollection(\"docs\"),\n }),\n });\n\n routes.push({\n path: `${docsBasePath}/:slug`,\n component: components.DocPage,\n getStaticPaths: async (ssg) => {\n const allDocs = await ssg.getCollection(\"docs\");\n return Promise.all(\n allDocs.map(async (doc) => {\n const { Content } = await doc.render();\n return {\n params: { slug: doc.slug },\n props: {\n doc,\n content: Content(),\n title: `${(doc.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // Guides routes\n if (options.guides) {\n routes.push({\n path: guidesBasePath,\n component: components.GuidesIndex,\n props: async (ssg) => ({\n title: options.guides?.heading ?? \"Guides\",\n guides: await ssg.getCollection(\"guides\"),\n }),\n });\n\n routes.push({\n path: `${guidesBasePath}/:slug`,\n component: components.GuidePage,\n getStaticPaths: async (ssg) => {\n const allGuides = await ssg.getCollection(\"guides\");\n return Promise.all(\n allGuides.map(async (guide) => {\n const { Content } = await guide.render();\n return {\n params: { slug: guide.slug },\n props: {\n guide,\n content: Content(),\n title: `${(guide.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // UI routes\n if (options.ui) {\n routes.push({\n path: uiBasePath,\n component: components.UIIndex,\n props: async (ssg) => ({\n title: options.ui?.heading ?? \"Components\",\n components: await ssg.getCollection(\"ui\"),\n }),\n });\n\n routes.push({\n path: `${uiBasePath}/:slug`,\n component: components.UIPage,\n getStaticPaths: async (ssg) => {\n const allComponents = await ssg.getCollection(\"ui\");\n return Promise.all(\n allComponents.map(async (comp) => {\n const { Content } = await comp.render();\n return {\n params: { slug: comp.slug },\n props: {\n component: comp,\n content: Content(),\n title: `${(comp.data as { title: string }).title} | ${options.title}`,\n },\n };\n }),\n );\n },\n });\n }\n\n // 404 page\n routes.push({\n path: \"/404\",\n component: components.NotFound,\n props: { title: `404 - Page Not Found | ${options.title}` },\n });\n\n // --- MDX ---\n\n const mdxComponents: Record<string, Component> = {\n ComponentPreview,\n Callout,\n CodeBlock,\n Tabs,\n TabList,\n Tab,\n TabPanel,\n Steps,\n Step,\n Button,\n Badge,\n Card,\n Separator,\n Input,\n Avatar,\n Kbd,\n Switch,\n ...options.mdx?.components,\n };\n\n return {\n document: components.Document,\n collections,\n routes,\n mdx: {\n remarkPlugins: [remarkGfm, ...(options.mdx?.remarkPlugins ?? [])],\n rehypePlugins: options.mdx?.rehypePlugins,\n components: mdxComponents,\n },\n };\n },\n };\n\n // Compose sub-plugins Vite-style: return flat array\n const plugins: SSGPlugin[] = [mainPlugin];\n\n if (options.lucide !== false) {\n const lucideOpts = typeof options.lucide === \"object\" ? options.lucide : {};\n plugins.push(lucidePlugin(lucideOpts));\n }\n\n // LLMs (llms.txt) — enabled by default when docs, guides, or ui exist\n const hasContent = options.docs || options.guides || options.ui;\n if (options.llms !== false && hasContent) {\n const llmsOpts = typeof options.llms === \"object\" ? options.llms : {};\n\n // Auto-derive sections from configured collections\n const sections: LlmsSection[] = [];\n if (options.docs) {\n sections.push({\n title: options.docs.heading ?? \"Documentation\",\n collection: \"docs\",\n basePath: docsBasePath,\n });\n }\n if (options.guides) {\n sections.push({\n title: options.guides.heading ?? \"Guides\",\n collection: \"guides\",\n basePath: guidesBasePath,\n });\n }\n if (options.ui) {\n sections.push({\n title: options.ui.heading ?? \"Components\",\n collection: \"ui\",\n basePath: uiBasePath,\n });\n }\n\n plugins.push(\n llmsPlugin({\n title: options.title,\n description: options.description,\n url: llmsOpts.url,\n sections,\n links: llmsOpts.links,\n llmsTxt: llmsOpts.llmsTxt,\n llmsFullTxt: llmsOpts.llmsFullTxt,\n markdownPages: llmsOpts.markdownPages,\n }),\n );\n }\n\n return plugins;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "semajsx",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "A signal-based reactive JSX runtime for building modern web applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -136,7 +136,9 @@
|
|
|
136
136
|
"glob": "^13.0.0",
|
|
137
137
|
"gray-matter": "^4.0.3",
|
|
138
138
|
"lightningcss": "^1.31.1",
|
|
139
|
+
"lucide": "^0.575.0",
|
|
139
140
|
"minimatch": "^10.1.1",
|
|
141
|
+
"remark-gfm": "^4.0.1",
|
|
140
142
|
"slice-ansi": "^7.1.2",
|
|
141
143
|
"string-width": "^8.1.0",
|
|
142
144
|
"wrap-ansi": "^9.0.2",
|
|
@@ -167,6 +169,7 @@
|
|
|
167
169
|
"peerDependencies": {
|
|
168
170
|
"@mdx-js/mdx": "^3.1.1",
|
|
169
171
|
"react": ">=18.0.0",
|
|
172
|
+
"react-dom": ">=18.0.0",
|
|
170
173
|
"vite": "^7.0.0",
|
|
171
174
|
"vue": ">=3.0.0",
|
|
172
175
|
"yoga-layout-prebuilt": "^1.10.0"
|
|
@@ -181,6 +184,9 @@
|
|
|
181
184
|
"react": {
|
|
182
185
|
"optional": true
|
|
183
186
|
},
|
|
187
|
+
"react-dom": {
|
|
188
|
+
"optional": true
|
|
189
|
+
},
|
|
184
190
|
"vue": {
|
|
185
191
|
"optional": true
|
|
186
192
|
},
|