@urbicon-ui/docs-gen 6.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -0
- package/dist/cli/CLI.d.ts +10 -0
- package/dist/cli/CLI.d.ts.map +1 -0
- package/dist/cli/CLI.js +340 -0
- package/dist/cli/CLI.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/discovery/ComponentFinder.d.ts +43 -0
- package/dist/core/discovery/ComponentFinder.d.ts.map +1 -0
- package/dist/core/discovery/ComponentFinder.js +421 -0
- package/dist/core/discovery/ComponentFinder.js.map +1 -0
- package/dist/core/discovery/FileStructureAnalyzer.d.ts +15 -0
- package/dist/core/discovery/FileStructureAnalyzer.d.ts.map +1 -0
- package/dist/core/discovery/FileStructureAnalyzer.js +35 -0
- package/dist/core/discovery/FileStructureAnalyzer.js.map +1 -0
- package/dist/core/discovery/MetadataExtractor.d.ts +15 -0
- package/dist/core/discovery/MetadataExtractor.d.ts.map +1 -0
- package/dist/core/discovery/MetadataExtractor.js +47 -0
- package/dist/core/discovery/MetadataExtractor.js.map +1 -0
- package/dist/core/discovery/index.d.ts +2 -0
- package/dist/core/discovery/index.d.ts.map +1 -0
- package/dist/core/discovery/index.js +2 -0
- package/dist/core/discovery/index.js.map +1 -0
- package/dist/core/enrichment/APIDataGenerator.d.ts +77 -0
- package/dist/core/enrichment/APIDataGenerator.d.ts.map +1 -0
- package/dist/core/enrichment/APIDataGenerator.js +663 -0
- package/dist/core/enrichment/APIDataGenerator.js.map +1 -0
- package/dist/core/enrichment/index.d.ts +2 -0
- package/dist/core/enrichment/index.d.ts.map +1 -0
- package/dist/core/enrichment/index.js +6 -0
- package/dist/core/enrichment/index.js.map +1 -0
- package/dist/core/extraction/ExtractionCoordinator.d.ts +53 -0
- package/dist/core/extraction/ExtractionCoordinator.d.ts.map +1 -0
- package/dist/core/extraction/ExtractionCoordinator.js +352 -0
- package/dist/core/extraction/ExtractionCoordinator.js.map +1 -0
- package/dist/core/extraction/index.d.ts +2 -0
- package/dist/core/extraction/index.d.ts.map +1 -0
- package/dist/core/extraction/index.js +2 -0
- package/dist/core/extraction/index.js.map +1 -0
- package/dist/core/generation/GenerationCoordinator.d.ts +51 -0
- package/dist/core/generation/GenerationCoordinator.d.ts.map +1 -0
- package/dist/core/generation/GenerationCoordinator.js +206 -0
- package/dist/core/generation/GenerationCoordinator.js.map +1 -0
- package/dist/core/generation/index.d.ts +2 -0
- package/dist/core/generation/index.d.ts.map +1 -0
- package/dist/core/generation/index.js +2 -0
- package/dist/core/generation/index.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/pipeline/ErrorHandler.d.ts +129 -0
- package/dist/core/pipeline/ErrorHandler.d.ts.map +1 -0
- package/dist/core/pipeline/ErrorHandler.js +321 -0
- package/dist/core/pipeline/ErrorHandler.js.map +1 -0
- package/dist/core/pipeline/PipelineOrchestrator.d.ts +45 -0
- package/dist/core/pipeline/PipelineOrchestrator.d.ts.map +1 -0
- package/dist/core/pipeline/PipelineOrchestrator.js +216 -0
- package/dist/core/pipeline/PipelineOrchestrator.js.map +1 -0
- package/dist/core/pipeline/index.d.ts +1 -0
- package/dist/core/pipeline/index.d.ts.map +1 -0
- package/dist/core/pipeline/index.js +2 -0
- package/dist/core/pipeline/index.js.map +1 -0
- package/dist/extractors/BaseExtractor.d.ts +33 -0
- package/dist/extractors/BaseExtractor.d.ts.map +1 -0
- package/dist/extractors/BaseExtractor.js +68 -0
- package/dist/extractors/BaseExtractor.js.map +1 -0
- package/dist/extractors/ExtractorFactory.d.ts +35 -0
- package/dist/extractors/ExtractorFactory.d.ts.map +1 -0
- package/dist/extractors/ExtractorFactory.js +88 -0
- package/dist/extractors/ExtractorFactory.js.map +1 -0
- package/dist/extractors/documentation/index.d.ts +1 -0
- package/dist/extractors/documentation/index.d.ts.map +1 -0
- package/dist/extractors/documentation/index.js +2 -0
- package/dist/extractors/documentation/index.js.map +1 -0
- package/dist/extractors/index.d.ts +1 -0
- package/dist/extractors/index.d.ts.map +1 -0
- package/dist/extractors/index.js +2 -0
- package/dist/extractors/index.js.map +1 -0
- package/dist/extractors/typescript/ExamplesExtractor.d.ts +32 -0
- package/dist/extractors/typescript/ExamplesExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/ExamplesExtractor.js +209 -0
- package/dist/extractors/typescript/ExamplesExtractor.js.map +1 -0
- package/dist/extractors/typescript/InheritanceExtractor.d.ts +45 -0
- package/dist/extractors/typescript/InheritanceExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/InheritanceExtractor.js +368 -0
- package/dist/extractors/typescript/InheritanceExtractor.js.map +1 -0
- package/dist/extractors/typescript/LocalTypesExtractor.d.ts +20 -0
- package/dist/extractors/typescript/LocalTypesExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/LocalTypesExtractor.js +100 -0
- package/dist/extractors/typescript/LocalTypesExtractor.js.map +1 -0
- package/dist/extractors/typescript/PropsExtractor.d.ts +142 -0
- package/dist/extractors/typescript/PropsExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/PropsExtractor.js +709 -0
- package/dist/extractors/typescript/PropsExtractor.js.map +1 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts +74 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.d.ts.map +1 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.js +249 -0
- package/dist/extractors/typescript/TypeScriptBaseExtractor.js.map +1 -0
- package/dist/extractors/typescript/index.d.ts +1 -0
- package/dist/extractors/typescript/index.d.ts.map +1 -0
- package/dist/extractors/typescript/index.js +2 -0
- package/dist/extractors/typescript/index.js.map +1 -0
- package/dist/extractors/variants/TailwindVariantsParser.d.ts +16 -0
- package/dist/extractors/variants/TailwindVariantsParser.d.ts.map +1 -0
- package/dist/extractors/variants/TailwindVariantsParser.js +53 -0
- package/dist/extractors/variants/TailwindVariantsParser.js.map +1 -0
- package/dist/extractors/variants/VariantsExtractor.d.ts +45 -0
- package/dist/extractors/variants/VariantsExtractor.d.ts.map +1 -0
- package/dist/extractors/variants/VariantsExtractor.js +340 -0
- package/dist/extractors/variants/VariantsExtractor.js.map +1 -0
- package/dist/extractors/variants/index.d.ts +2 -0
- package/dist/extractors/variants/index.d.ts.map +1 -0
- package/dist/extractors/variants/index.js +2 -0
- package/dist/extractors/variants/index.js.map +1 -0
- package/dist/generators/api/APIFileGenerator.d.ts +32 -0
- package/dist/generators/api/APIFileGenerator.d.ts.map +1 -0
- package/dist/generators/api/APIFileGenerator.js +450 -0
- package/dist/generators/api/APIFileGenerator.js.map +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.d.ts +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.d.ts.map +1 -0
- package/dist/generators/api/TypeDefinitionGenerator.js +2 -0
- package/dist/generators/api/TypeDefinitionGenerator.js.map +1 -0
- package/dist/generators/api/index.d.ts +2 -0
- package/dist/generators/api/index.d.ts.map +1 -0
- package/dist/generators/api/index.js +2 -0
- package/dist/generators/api/index.js.map +1 -0
- package/dist/generators/index.d.ts +5 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +4 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/llm/LLMDocumentationGenerator.d.ts +34 -0
- package/dist/generators/llm/LLMDocumentationGenerator.d.ts.map +1 -0
- package/dist/generators/llm/LLMDocumentationGenerator.js +480 -0
- package/dist/generators/llm/LLMDocumentationGenerator.js.map +1 -0
- package/dist/generators/llm/LLMFormatter.d.ts +4 -0
- package/dist/generators/llm/LLMFormatter.d.ts.map +1 -0
- package/dist/generators/llm/LLMFormatter.js +8 -0
- package/dist/generators/llm/LLMFormatter.js.map +1 -0
- package/dist/generators/llm/LlmsFullAssembler.d.ts +20 -0
- package/dist/generators/llm/LlmsFullAssembler.d.ts.map +1 -0
- package/dist/generators/llm/LlmsFullAssembler.js +63 -0
- package/dist/generators/llm/LlmsFullAssembler.js.map +1 -0
- package/dist/generators/llm/index.d.ts +1 -0
- package/dist/generators/llm/index.d.ts.map +1 -0
- package/dist/generators/llm/index.js +2 -0
- package/dist/generators/llm/index.js.map +1 -0
- package/dist/generators/mcp/MCPCatalogAssembler.d.ts +27 -0
- package/dist/generators/mcp/MCPCatalogAssembler.d.ts.map +1 -0
- package/dist/generators/mcp/MCPCatalogAssembler.js +147 -0
- package/dist/generators/mcp/MCPCatalogAssembler.js.map +1 -0
- package/dist/generators/mcp/MCPCatalogGenerator.d.ts +55 -0
- package/dist/generators/mcp/MCPCatalogGenerator.d.ts.map +1 -0
- package/dist/generators/mcp/MCPCatalogGenerator.js +153 -0
- package/dist/generators/mcp/MCPCatalogGenerator.js.map +1 -0
- package/dist/generators/svelte/PageGenerator.d.ts +82 -0
- package/dist/generators/svelte/PageGenerator.d.ts.map +1 -0
- package/dist/generators/svelte/PageGenerator.js +557 -0
- package/dist/generators/svelte/PageGenerator.js.map +1 -0
- package/dist/generators/svelte/PlaygroundPresets.d.ts +2 -0
- package/dist/generators/svelte/PlaygroundPresets.d.ts.map +1 -0
- package/dist/generators/svelte/PlaygroundPresets.js +4 -0
- package/dist/generators/svelte/PlaygroundPresets.js.map +1 -0
- package/dist/generators/svelte/SectionMerger.d.ts +38 -0
- package/dist/generators/svelte/SectionMerger.d.ts.map +1 -0
- package/dist/generators/svelte/SectionMerger.js +154 -0
- package/dist/generators/svelte/SectionMerger.js.map +1 -0
- package/dist/generators/svelte/TemplateEngine.d.ts +91 -0
- package/dist/generators/svelte/TemplateEngine.d.ts.map +1 -0
- package/dist/generators/svelte/TemplateEngine.js +500 -0
- package/dist/generators/svelte/TemplateEngine.js.map +1 -0
- package/dist/generators/svelte/index.d.ts +8 -0
- package/dist/generators/svelte/index.d.ts.map +1 -0
- package/dist/generators/svelte/index.js +11 -0
- package/dist/generators/svelte/index.js.map +1 -0
- package/dist/generators/svelte/renderers/ApiRenderer.d.ts +17 -0
- package/dist/generators/svelte/renderers/ApiRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/ApiRenderer.js +44 -0
- package/dist/generators/svelte/renderers/ApiRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.d.ts +33 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.js +137 -0
- package/dist/generators/svelte/renderers/ExampleRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.d.ts +9 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.js +45 -0
- package/dist/generators/svelte/renderers/OverviewRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts +35 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.js +319 -0
- package/dist/generators/svelte/renderers/PlaygroundRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/TypesRenderer.d.ts +9 -0
- package/dist/generators/svelte/renderers/TypesRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/TypesRenderer.js +23 -0
- package/dist/generators/svelte/renderers/TypesRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/UsageRenderer.d.ts +14 -0
- package/dist/generators/svelte/renderers/UsageRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/UsageRenderer.js +91 -0
- package/dist/generators/svelte/renderers/UsageRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.d.ts +43 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.js +277 -0
- package/dist/generators/svelte/renderers/VariantsRenderer.js.map +1 -0
- package/dist/generators/svelte/renderers/index.d.ts +8 -0
- package/dist/generators/svelte/renderers/index.d.ts.map +1 -0
- package/dist/generators/svelte/renderers/index.js +8 -0
- package/dist/generators/svelte/renderers/index.js.map +1 -0
- package/dist/generators/svelte/types.d.ts +13 -0
- package/dist/generators/svelte/types.d.ts.map +1 -0
- package/dist/generators/svelte/types.js +2 -0
- package/dist/generators/svelte/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/SvelteDocsParser.d.ts +44 -0
- package/dist/parsers/SvelteDocsParser.d.ts.map +1 -0
- package/dist/parsers/SvelteDocsParser.js +141 -0
- package/dist/parsers/SvelteDocsParser.js.map +1 -0
- package/dist/parsers/index.d.ts +2 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +6 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/schema/ConfigurationBuilder.d.ts +55 -0
- package/dist/schema/ConfigurationBuilder.d.ts.map +1 -0
- package/dist/schema/ConfigurationBuilder.js +447 -0
- package/dist/schema/ConfigurationBuilder.js.map +1 -0
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/configuration.d.ts +255 -0
- package/dist/types/configuration.d.ts.map +1 -0
- package/dist/types/configuration.js +2 -0
- package/dist/types/configuration.js.map +1 -0
- package/dist/types/core.d.ts +96 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +2 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/docs-config.d.ts +5 -0
- package/dist/types/docs-config.d.ts.map +1 -0
- package/dist/types/docs-config.js +51 -0
- package/dist/types/docs-config.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/validation.d.ts +321 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +2 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/utils/DeploymentManager.d.ts +80 -0
- package/dist/utils/DeploymentManager.d.ts.map +1 -0
- package/dist/utils/DeploymentManager.js +360 -0
- package/dist/utils/DeploymentManager.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template engine for generating Svelte documentation pages
|
|
3
|
+
* Creates templates that match the existing docs package structure
|
|
4
|
+
*/
|
|
5
|
+
export class TemplateEngine {
|
|
6
|
+
config;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
// ==========================================
|
|
11
|
+
// INDEX PAGE TEMPLATES
|
|
12
|
+
// ==========================================
|
|
13
|
+
/**
|
|
14
|
+
* Render the main index page with component overview
|
|
15
|
+
*/
|
|
16
|
+
renderIndexPage(data) {
|
|
17
|
+
return `<script lang="ts">
|
|
18
|
+
import { DocsLayout as DocsPageLayout, Section, InfoCard } from '@urbicon-ui/docs';
|
|
19
|
+
import { Button, Badge, Card } from '@urbicon-ui/blocks';
|
|
20
|
+
|
|
21
|
+
const stats = ${JSON.stringify(data.stats, null, 2)};
|
|
22
|
+
const groupedComponents = ${JSON.stringify(data.groupedComponents, null, 2)};
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<svelte:head>
|
|
26
|
+
<title>${data.title} - Urbicon UI</title>
|
|
27
|
+
<meta name="description" content="${data.description}" />
|
|
28
|
+
</svelte:head>
|
|
29
|
+
|
|
30
|
+
<DocsPageLayout title="${data.title}" description="${data.description}" maxWidth="7xl">
|
|
31
|
+
<!-- Hero Section -->
|
|
32
|
+
<Section id="overview" title="Component Documentation" subtitle="Comprehensive documentation for all ${data.stats.totalComponents} components" centered={true} size="xl" />
|
|
33
|
+
|
|
34
|
+
${data.showStats ? this.renderStatsSection(data.stats) : ''}
|
|
35
|
+
|
|
36
|
+
<!-- Component Groups -->
|
|
37
|
+
<div class="space-y-12">
|
|
38
|
+
${Object.entries(data.groupedComponents)
|
|
39
|
+
.map(([groupName, components]) => this.renderComponentGroup(groupName, components, data.showTiers))
|
|
40
|
+
.join('\n\n')}
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- Footer -->
|
|
44
|
+
<div class="mt-16 text-center text-sm text-slate-500 dark:text-slate-400">
|
|
45
|
+
Last updated: {new Date('${data.stats.lastGenerated}').toLocaleDateString()}
|
|
46
|
+
</div>
|
|
47
|
+
</DocsPageLayout>
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Render statistics section for index page
|
|
52
|
+
*/
|
|
53
|
+
renderStatsSection(stats) {
|
|
54
|
+
return `
|
|
55
|
+
<!-- Statistics Section -->
|
|
56
|
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-12">
|
|
57
|
+
<InfoCard intent="primary" title="Components">
|
|
58
|
+
<div class="text-3xl font-bold">${stats.totalComponents}</div>
|
|
59
|
+
<div class="text-sm opacity-80">Total components</div>
|
|
60
|
+
</InfoCard>
|
|
61
|
+
|
|
62
|
+
<InfoCard intent="secondary" title="Properties">
|
|
63
|
+
<div class="text-3xl font-bold">${stats.totalProps}</div>
|
|
64
|
+
<div class="text-sm opacity-80">Total properties</div>
|
|
65
|
+
</InfoCard>
|
|
66
|
+
|
|
67
|
+
<InfoCard intent="success" title="Average Props">
|
|
68
|
+
<div class="text-3xl font-bold">${stats.averageProps}</div>
|
|
69
|
+
<div class="text-sm opacity-80">Per component</div>
|
|
70
|
+
</InfoCard>
|
|
71
|
+
</div>
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render component group section
|
|
76
|
+
*/
|
|
77
|
+
renderComponentGroup(groupName, components, showTiers) {
|
|
78
|
+
return `
|
|
79
|
+
<div>
|
|
80
|
+
<h2 class="text-2xl font-bold mb-6">${groupName}</h2>
|
|
81
|
+
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
82
|
+
${components.map((component) => this.renderComponentCard(component, showTiers)).join('\n ')}
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Render individual component card
|
|
89
|
+
*/
|
|
90
|
+
renderComponentCard(component, showTiers) {
|
|
91
|
+
const slug = component.name
|
|
92
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
93
|
+
.replace(/_/g, '-')
|
|
94
|
+
.toLowerCase();
|
|
95
|
+
return `
|
|
96
|
+
<Card variant="elevated" padding="md" interactive={true}>
|
|
97
|
+
<a href="./${slug}" class="block">
|
|
98
|
+
<div class="flex items-start justify-between mb-3">
|
|
99
|
+
<h3 class="text-lg font-semibold">${component.name}</h3>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<p class="text-slate-600 dark:text-slate-400 text-sm mb-4 line-clamp-2">
|
|
103
|
+
${`${component.name} component with comprehensive functionality`}
|
|
104
|
+
</p>
|
|
105
|
+
|
|
106
|
+
<div class="flex items-center justify-between text-xs text-slate-500 dark:text-slate-400">
|
|
107
|
+
<span>${component.stats.totalProps} props</span>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
${component.experimental
|
|
111
|
+
? `
|
|
112
|
+
<div class="mt-2">
|
|
113
|
+
<Badge variant="soft" intent="warning" size="sm">Experimental</Badge>
|
|
114
|
+
</div>
|
|
115
|
+
`
|
|
116
|
+
: ''}
|
|
117
|
+
|
|
118
|
+
${component.deprecated
|
|
119
|
+
? `
|
|
120
|
+
<div class="mt-2">
|
|
121
|
+
<Badge variant="soft" intent="danger" size="sm">Deprecated</Badge>
|
|
122
|
+
</div>
|
|
123
|
+
`
|
|
124
|
+
: ''}
|
|
125
|
+
</a>
|
|
126
|
+
</Card>
|
|
127
|
+
`;
|
|
128
|
+
}
|
|
129
|
+
// ==========================================
|
|
130
|
+
// COMPONENT PAGE TEMPLATES
|
|
131
|
+
// ==========================================
|
|
132
|
+
/**
|
|
133
|
+
* Render individual component documentation page
|
|
134
|
+
*/
|
|
135
|
+
renderComponentPage(data) {
|
|
136
|
+
console.log(`🎨 TemplateEngine: Rendering page for ${data.component.name}`);
|
|
137
|
+
console.log(`📊 Script data available: ${!!data.scriptData}`);
|
|
138
|
+
// Extract imports from script data and deduplicate against component import
|
|
139
|
+
const baseComponentImport = (() => {
|
|
140
|
+
const componentName = data.component.name;
|
|
141
|
+
const componentPackage = data.component.packageName || '';
|
|
142
|
+
const isMetaComponent = ['Components', 'Primitives'].includes(componentName);
|
|
143
|
+
const importSource = componentPackage.includes('@urbicon-ui/docs')
|
|
144
|
+
? ''
|
|
145
|
+
: componentPackage.includes('@urbicon-ui/table')
|
|
146
|
+
? '@urbicon-ui/table'
|
|
147
|
+
: '@urbicon-ui/blocks';
|
|
148
|
+
return (!isMetaComponent && importSource) ? `import { ${componentName} } from '${importSource}';` : '';
|
|
149
|
+
})();
|
|
150
|
+
const additionalImports = (data.scriptData?.imports || []).filter((imp) => imp.trim() !== baseComponentImport);
|
|
151
|
+
const customImports = this.generateCustomImports(additionalImports);
|
|
152
|
+
console.log(`📦 Custom imports: ${additionalImports.length} imports -> "${customImports}"`);
|
|
153
|
+
// Extract variables from script data
|
|
154
|
+
const scriptVariables = this.generateScriptVariables(data);
|
|
155
|
+
console.log(`📋 Script variables length: ${scriptVariables.length} chars`);
|
|
156
|
+
console.log(`📋 Script variables content: ${scriptVariables.substring(0, 200)}...`);
|
|
157
|
+
// Extract functions from script data
|
|
158
|
+
const scriptFunctions = this.generateScriptFunctions(data.scriptData?.functions || {});
|
|
159
|
+
console.log(`🔧 Script functions length: ${scriptFunctions.length} chars`);
|
|
160
|
+
console.log(`🔧 Script functions content: ${scriptFunctions.substring(0, 200)}...`);
|
|
161
|
+
// Generate navigation
|
|
162
|
+
const navigation = data.navigation;
|
|
163
|
+
// Decide from which package to import the documented component
|
|
164
|
+
const componentName = data.component.name;
|
|
165
|
+
const componentPackage = data.component.packageName || '';
|
|
166
|
+
// Skip imports for meta-components that don't exist in packages
|
|
167
|
+
const isMetaComponent = ['Components', 'Primitives'].includes(componentName);
|
|
168
|
+
const importSource = componentPackage.includes('@urbicon-ui/docs')
|
|
169
|
+
? ''
|
|
170
|
+
: componentPackage.includes('@urbicon-ui/table')
|
|
171
|
+
? '@urbicon-ui/table'
|
|
172
|
+
: '@urbicon-ui/blocks';
|
|
173
|
+
const componentImport = baseComponentImport ? `\n ${baseComponentImport}` : '';
|
|
174
|
+
// Create the component page content
|
|
175
|
+
const pageContent = `<script lang="ts">
|
|
176
|
+
import {
|
|
177
|
+
DocsLayout as DocsPageLayout,
|
|
178
|
+
Section,
|
|
179
|
+
InfoCard,
|
|
180
|
+
CodeExample,
|
|
181
|
+
ApiReference,
|
|
182
|
+
PlaygroundConfigurator,
|
|
183
|
+
VariantGrid,
|
|
184
|
+
TableOfContents
|
|
185
|
+
} from '@urbicon-ui/docs';
|
|
186
|
+
${componentImport}${customImports}
|
|
187
|
+
${data.includeCustomDocs ? "\n import CustomDocs from './DocsCustom.svelte';" : ''}
|
|
188
|
+
|
|
189
|
+
// Component data
|
|
190
|
+
const componentData = ${JSON.stringify(data.componentApiData, null, 2)};
|
|
191
|
+
|
|
192
|
+
// Navigation data for ToC
|
|
193
|
+
const navigation = ${JSON.stringify(data.navigation, null, 2)};
|
|
194
|
+
|
|
195
|
+
${scriptVariables}
|
|
196
|
+
|
|
197
|
+
${scriptFunctions}
|
|
198
|
+
</script>
|
|
199
|
+
|
|
200
|
+
<svelte:head>
|
|
201
|
+
<title>${data.title} - Urbicon UI</title>
|
|
202
|
+
<meta name="description" content="${data.description}" />
|
|
203
|
+
</svelte:head>
|
|
204
|
+
|
|
205
|
+
<style>
|
|
206
|
+
:global(.playground-wrapper) {
|
|
207
|
+
background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
|
|
208
|
+
border: 1px solid #e2e8f0;
|
|
209
|
+
border-radius: 1.5rem;
|
|
210
|
+
padding: 2rem;
|
|
211
|
+
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.05);
|
|
212
|
+
position: relative;
|
|
213
|
+
overflow: hidden;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
:global(.playground-wrapper::before) {
|
|
217
|
+
content: '';
|
|
218
|
+
position: absolute;
|
|
219
|
+
top: 0;
|
|
220
|
+
left: 0;
|
|
221
|
+
right: 0;
|
|
222
|
+
height: 1px;
|
|
223
|
+
background: linear-gradient(90deg, transparent, #3b82f6, transparent);
|
|
224
|
+
opacity: 0.3;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
:global(.playground-wrapper :is([class*="Card"], [class*="card"])) {
|
|
228
|
+
background: rgba(255, 255, 255, 0.8) !important;
|
|
229
|
+
backdrop-filter: blur(8px);
|
|
230
|
+
border: 1px solid rgba(255, 255, 255, 0.2) !important;
|
|
231
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05) !important;
|
|
232
|
+
}
|
|
233
|
+
</style>
|
|
234
|
+
|
|
235
|
+
<DocsPageLayout
|
|
236
|
+
title="${data.component.name}"
|
|
237
|
+
description="${data.description}"
|
|
238
|
+
maxWidth="lg"
|
|
239
|
+
showToc={true}
|
|
240
|
+
navigation={navigation}
|
|
241
|
+
>
|
|
242
|
+
${data.sections.map((section) => section.content).join('\n\n ')}
|
|
243
|
+
|
|
244
|
+
${data.includeCustomDocs ? '<svelte:component this={CustomDocs} />' : ''}
|
|
245
|
+
</DocsPageLayout>
|
|
246
|
+
`;
|
|
247
|
+
console.log(`🔍 Generated page length: ${pageContent.length} chars`);
|
|
248
|
+
console.log(`🔍 Contains scriptVariables: ${pageContent.includes('interactiveControls')}`);
|
|
249
|
+
console.log(`🔍 Contains customImports: ${pageContent.includes('IntentVariantMatrix')}`);
|
|
250
|
+
return pageContent;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Render component layout file
|
|
254
|
+
*/
|
|
255
|
+
renderComponentLayout(component) {
|
|
256
|
+
return `<script lang="ts">
|
|
257
|
+
import { page } from '$app/stores';
|
|
258
|
+
|
|
259
|
+
// Layout logic for ${component.name} documentation
|
|
260
|
+
let currentSection = 'overview';
|
|
261
|
+
$: currentSection = $page.url.hash.replace('#', '') || 'overview';
|
|
262
|
+
</script>
|
|
263
|
+
|
|
264
|
+
<slot />
|
|
265
|
+
|
|
266
|
+
`;
|
|
267
|
+
}
|
|
268
|
+
// ==========================================
|
|
269
|
+
// NAVIGATION TEMPLATES
|
|
270
|
+
// ==========================================
|
|
271
|
+
/**
|
|
272
|
+
* Generate breadcrumb navigation
|
|
273
|
+
*/
|
|
274
|
+
renderBreadcrumbs(component) {
|
|
275
|
+
return `
|
|
276
|
+
<nav class="flex items-center space-x-2 text-sm text-slate-600 dark:text-slate-400 mb-6">
|
|
277
|
+
<a href="/" class="hover:text-slate-900 dark:hover:text-slate-100">Documentation</a>
|
|
278
|
+
<span>/</span>
|
|
279
|
+
<span class="text-slate-900 dark:text-slate-100">${component.name}</span>
|
|
280
|
+
</nav>
|
|
281
|
+
`;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Generate next/previous navigation
|
|
285
|
+
*/
|
|
286
|
+
renderNextPrevNavigation(currentComponent, allComponents) {
|
|
287
|
+
const currentIndex = allComponents.findIndex((c) => c.name === currentComponent.name);
|
|
288
|
+
const prevComponent = currentIndex > 0 ? allComponents[currentIndex - 1] : null;
|
|
289
|
+
const nextComponent = currentIndex < allComponents.length - 1 ? allComponents[currentIndex + 1] : null;
|
|
290
|
+
return `
|
|
291
|
+
<div class="flex justify-between items-center pt-8 mt-8 border-t border-slate-200 dark:border-slate-700">
|
|
292
|
+
${prevComponent
|
|
293
|
+
? `
|
|
294
|
+
<a href="/${prevComponent.name.toLowerCase()}" class="flex items-center space-x-2 text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100">
|
|
295
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
296
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
|
|
297
|
+
</svg>
|
|
298
|
+
<span>Previous: ${prevComponent.name}</span>
|
|
299
|
+
</a>
|
|
300
|
+
`
|
|
301
|
+
: '<div></div>'}
|
|
302
|
+
|
|
303
|
+
${nextComponent
|
|
304
|
+
? `
|
|
305
|
+
<a href="/${nextComponent.name.toLowerCase()}" class="flex items-center space-x-2 text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100">
|
|
306
|
+
<span>Next: ${nextComponent.name}</span>
|
|
307
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
308
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
|
|
309
|
+
</svg>
|
|
310
|
+
</a>
|
|
311
|
+
`
|
|
312
|
+
: '<div></div>'}
|
|
313
|
+
</div>
|
|
314
|
+
`;
|
|
315
|
+
}
|
|
316
|
+
// ==========================================
|
|
317
|
+
// SCRIPT GENERATION HELPERS
|
|
318
|
+
// ==========================================
|
|
319
|
+
/**
|
|
320
|
+
* Generate custom imports from script data
|
|
321
|
+
*/
|
|
322
|
+
generateCustomImports(imports) {
|
|
323
|
+
if (imports.length === 0)
|
|
324
|
+
return '';
|
|
325
|
+
// Identifiers already imported in the base import block
|
|
326
|
+
const reservedIdentifiers = new Set([
|
|
327
|
+
'Section',
|
|
328
|
+
'InfoCard',
|
|
329
|
+
'CodeExample',
|
|
330
|
+
'ApiReference',
|
|
331
|
+
'PlaygroundConfigurator',
|
|
332
|
+
'VariantGrid',
|
|
333
|
+
'TableOfContents',
|
|
334
|
+
'DocsPageLayout'
|
|
335
|
+
]);
|
|
336
|
+
const areFullStatements = imports.every((imp) => imp.trim().startsWith('import'));
|
|
337
|
+
// Helper to rebuild and filter a full import statement
|
|
338
|
+
const filterFullImport = (statement) => {
|
|
339
|
+
// import <spec> from '<source>';
|
|
340
|
+
const match = statement.match(/^\s*import\s+(.+?)\s+from\s+(["'][^"']+["'])\s*;?\s*$/s);
|
|
341
|
+
if (!match || !match[1] || !match[2])
|
|
342
|
+
return statement; // keep as-is if it doesn't match or missing groups
|
|
343
|
+
let spec = match[1].trim();
|
|
344
|
+
const source = match[2];
|
|
345
|
+
let defaultImport = null;
|
|
346
|
+
let namedBlock = '';
|
|
347
|
+
if (spec.includes('{')) {
|
|
348
|
+
const before = spec.slice(0, spec.indexOf('{')).trim().replace(/,$/, '').trim();
|
|
349
|
+
if (before)
|
|
350
|
+
defaultImport = before;
|
|
351
|
+
namedBlock = spec.slice(spec.indexOf('{') + 1, spec.lastIndexOf('}')).trim();
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
defaultImport = spec;
|
|
355
|
+
}
|
|
356
|
+
// Drop default import if it collides
|
|
357
|
+
if (defaultImport && reservedIdentifiers.has(defaultImport)) {
|
|
358
|
+
defaultImport = null;
|
|
359
|
+
}
|
|
360
|
+
// Parse named specifiers
|
|
361
|
+
const namedSpecifiers = [];
|
|
362
|
+
if (namedBlock) {
|
|
363
|
+
const parts = namedBlock.split(',');
|
|
364
|
+
for (const raw of parts) {
|
|
365
|
+
const part = raw.trim();
|
|
366
|
+
if (!part)
|
|
367
|
+
continue;
|
|
368
|
+
const aliasMatch = part.split(/\s+as\s+/i);
|
|
369
|
+
const imported = (aliasMatch[0] ?? '').trim();
|
|
370
|
+
if (!imported)
|
|
371
|
+
continue;
|
|
372
|
+
const local = (aliasMatch[1] ?? imported).trim();
|
|
373
|
+
if (reservedIdentifiers.has(local))
|
|
374
|
+
continue; // skip collisions
|
|
375
|
+
namedSpecifiers.push(part);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (!defaultImport && namedSpecifiers.length === 0)
|
|
379
|
+
return null; // nothing left
|
|
380
|
+
const pieces = [];
|
|
381
|
+
if (defaultImport)
|
|
382
|
+
pieces.push(defaultImport);
|
|
383
|
+
if (namedSpecifiers.length > 0)
|
|
384
|
+
pieces.push(`{ ${namedSpecifiers.join(', ')} }`);
|
|
385
|
+
return `import ${pieces.join(', ')} from ${source};`;
|
|
386
|
+
};
|
|
387
|
+
if (areFullStatements) {
|
|
388
|
+
const filtered = imports
|
|
389
|
+
.map((imp) => filterFullImport(imp))
|
|
390
|
+
.filter((imp) => Boolean(imp));
|
|
391
|
+
// De-duplicate identical statements
|
|
392
|
+
const unique = Array.from(new Set(filtered.map((s) => s.trim())));
|
|
393
|
+
return unique.length ? '\n ' + unique.join('\n ') : '';
|
|
394
|
+
}
|
|
395
|
+
// Otherwise, group imports by source using the old format "Component from 'pkg'"
|
|
396
|
+
const importGroups = {};
|
|
397
|
+
imports.forEach((imp) => {
|
|
398
|
+
const parts = imp.split(' from ');
|
|
399
|
+
const componentRaw = (parts[0] ?? '');
|
|
400
|
+
let component = componentRaw.replace(/import\s*\{?|\}?/g, '').trim();
|
|
401
|
+
const source = (parts[1] ?? '').trim();
|
|
402
|
+
if (!source)
|
|
403
|
+
return;
|
|
404
|
+
if (!component)
|
|
405
|
+
return;
|
|
406
|
+
// Resolve local name for collision check
|
|
407
|
+
const aliasParts = component.split(/\s+as\s+/i);
|
|
408
|
+
const localBase = aliasParts[1] ?? aliasParts[0] ?? '';
|
|
409
|
+
const local = localBase.trim();
|
|
410
|
+
if (!local)
|
|
411
|
+
return;
|
|
412
|
+
if (reservedIdentifiers.has(local))
|
|
413
|
+
return; // skip collision with base imports
|
|
414
|
+
if (!importGroups[source])
|
|
415
|
+
importGroups[source] = new Set();
|
|
416
|
+
importGroups[source].add(component.trim());
|
|
417
|
+
});
|
|
418
|
+
return Object.entries(importGroups)
|
|
419
|
+
.map(([source, components]) => `\n import { ${Array.from(components).join(', ')} } from ${source};`)
|
|
420
|
+
.join('');
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Generate script variables from component page data
|
|
424
|
+
*/
|
|
425
|
+
generateScriptVariables(data) {
|
|
426
|
+
console.log(`📄 TemplateEngine: Generating script variables`);
|
|
427
|
+
const allVariables = {};
|
|
428
|
+
// Add variables from global script data
|
|
429
|
+
if (data.scriptData?.variables) {
|
|
430
|
+
console.log(`📄 TemplateEngine: Found global script data with ${Object.keys(data.scriptData.variables).length} variables`);
|
|
431
|
+
Object.assign(allVariables, data.scriptData.variables);
|
|
432
|
+
}
|
|
433
|
+
// Add variables from custom sections (NEW for Phase 3)
|
|
434
|
+
data.sections.forEach((section, index) => {
|
|
435
|
+
if (section.scriptData?.variables) {
|
|
436
|
+
console.log(`📄 TemplateEngine: Section ${index} (${section.id}) has ${Object.keys(section.scriptData.variables).length} variables`);
|
|
437
|
+
Object.entries(section.scriptData.variables).forEach(([varName, varData]) => {
|
|
438
|
+
console.log(`📄 TemplateEngine: Processing variable: ${varName}`, varData);
|
|
439
|
+
allVariables[varName] = varData;
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
console.log(`📄 TemplateEngine: Section ${index} (${section.id}) has no script data`);
|
|
444
|
+
}
|
|
445
|
+
});
|
|
446
|
+
console.log(`📄 TemplateEngine: Total variables collected: ${Object.keys(allVariables).length}`);
|
|
447
|
+
console.log(`📄 TemplateEngine: Variable names: ${Object.keys(allVariables).join(', ')}`);
|
|
448
|
+
if (Object.keys(allVariables).length === 0) {
|
|
449
|
+
console.log(`📄 TemplateEngine: No variables to generate`);
|
|
450
|
+
return '';
|
|
451
|
+
}
|
|
452
|
+
const variableCode = Object.entries(allVariables)
|
|
453
|
+
.map(([name, varData]) => {
|
|
454
|
+
// Handle extracted variable data from docs.svelte
|
|
455
|
+
if (varData && typeof varData === 'object' && varData.code) {
|
|
456
|
+
console.log(`📄 TemplateEngine: Added ${varData.type} variable: ${name}`);
|
|
457
|
+
return ` // ${name} (${varData.type})\n ${varData.code}`;
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
// Handle regular values
|
|
461
|
+
console.log(`📄 TemplateEngine: Added regular variable: ${name}`);
|
|
462
|
+
return ` // ${name}\n const ${name} = ${JSON.stringify(varData, null, 2)};`;
|
|
463
|
+
}
|
|
464
|
+
})
|
|
465
|
+
.join('\n\n');
|
|
466
|
+
console.log(`📄 TemplateEngine: Generated variable code length: ${variableCode.length}`);
|
|
467
|
+
console.log(`📄 TemplateEngine: Generated variable code preview:`, variableCode.substring(0, 200) + '...');
|
|
468
|
+
return variableCode;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Generate script functions from script data
|
|
472
|
+
*/
|
|
473
|
+
generateScriptFunctions(functions) {
|
|
474
|
+
return Object.entries(functions)
|
|
475
|
+
.map(([name, code]) => ` // ${name}\n ${code}`)
|
|
476
|
+
.join('\n\n');
|
|
477
|
+
}
|
|
478
|
+
// ==========================================
|
|
479
|
+
// UTILITY METHODS
|
|
480
|
+
// ==========================================
|
|
481
|
+
/**
|
|
482
|
+
* Generate meta tags for SEO
|
|
483
|
+
*/
|
|
484
|
+
generateMetaTags(title, description, component) {
|
|
485
|
+
const tags = [
|
|
486
|
+
`<title>${title} - Urbicon UI</title>`,
|
|
487
|
+
`<meta name="description" content="${description}" />`,
|
|
488
|
+
`<meta property="og:title" content="${title}" />`,
|
|
489
|
+
`<meta property="og:description" content="${description}" />`,
|
|
490
|
+
`<meta property="og:type" content="website" />`
|
|
491
|
+
];
|
|
492
|
+
if (component) {
|
|
493
|
+
const categories = component.stats?.categories || [];
|
|
494
|
+
const keywords = Array.isArray(categories) ? categories.join(', ') : String(categories);
|
|
495
|
+
tags.push(`<meta name="keywords" content="${component.name}, component, svelte, urbicon, ui${keywords ? ', ' + keywords : ''}" />`, `<meta property="og:url" content="/${component.name.toLowerCase()}" />`);
|
|
496
|
+
}
|
|
497
|
+
return tags.join('\n ');
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
//# sourceMappingURL=TemplateEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/generators/svelte/TemplateEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { SveltePageGenerator } from './PageGenerator';
|
|
2
|
+
export { SectionMerger } from './SectionMerger';
|
|
3
|
+
export { TemplateEngine, type IndexPageData, type ComponentPageData } from './TemplateEngine';
|
|
4
|
+
export type { RenderedSection } from './types';
|
|
5
|
+
export * from './renderers';
|
|
6
|
+
export type { SvelteOutputConfig, TemplateConfig, NavigationConfig, ThemingConfig } from '../../types/configuration';
|
|
7
|
+
export type { EnrichedComponentInfo, ComponentAPIData, GeneratedOutput } from '../../types/core';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/svelte/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG9F,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,cAAc,aAAa,CAAC;AAG5B,YAAY,EACX,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// packages/docs-gen/src/generators/svelte/index.ts
|
|
2
|
+
// ==========================================
|
|
3
|
+
// SVELTE GENERATOR - MAIN EXPORTS
|
|
4
|
+
// Status: 🚀 IMPLEMENTING - Session 5
|
|
5
|
+
// ==========================================
|
|
6
|
+
export { SveltePageGenerator } from './PageGenerator';
|
|
7
|
+
export { SectionMerger } from './SectionMerger';
|
|
8
|
+
export { TemplateEngine } from './TemplateEngine';
|
|
9
|
+
// Re-export modular renderers
|
|
10
|
+
export * from './renderers';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generators/svelte/index.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,6CAA6C;AAC7C,kCAAkC;AAClC,sCAAsC;AACtC,6CAA6C;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAA8C,MAAM,kBAAkB,CAAC;AAK9F,8BAA8B;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DocumentationSection } from '@urbicon-ui/shared-types';
|
|
2
|
+
import type { ComponentAPIData, EnrichedComponentInfo } from '../../../types';
|
|
3
|
+
import type { RenderedSection } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Renders API reference sections for component documentation
|
|
6
|
+
*/
|
|
7
|
+
export declare class ApiRenderer {
|
|
8
|
+
/**
|
|
9
|
+
* Auto API renderer
|
|
10
|
+
*/
|
|
11
|
+
renderAuto(_component: EnrichedComponentInfo, _apiData: ComponentAPIData, _config?: any): RenderedSection;
|
|
12
|
+
/**
|
|
13
|
+
* Render an API section from DocumentationSection
|
|
14
|
+
*/
|
|
15
|
+
renderApiSection(section: DocumentationSection, component: EnrichedComponentInfo, componentApiData: ComponentAPIData): RenderedSection;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ApiRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiRenderer.d.ts","sourceRoot":"","sources":["../../../../src/generators/svelte/renderers/ApiRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,eAAe;IAW1G;;OAEG;IACH,gBAAgB,CACf,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,qBAAqB,EAChC,gBAAgB,EAAE,gBAAgB,GAChC,eAAe;CAuBlB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders API reference sections for component documentation
|
|
3
|
+
*/
|
|
4
|
+
export class ApiRenderer {
|
|
5
|
+
/**
|
|
6
|
+
* Auto API renderer
|
|
7
|
+
*/
|
|
8
|
+
renderAuto(_component, _apiData, _config) {
|
|
9
|
+
const content = `
|
|
10
|
+
<!-- API Reference Section -->
|
|
11
|
+
<Section id="api" title="API Reference" subtitle="Complete list of component properties and their configurations" intent="secondary">
|
|
12
|
+
<div class="bg-white rounded-2xl border border-slate-200 overflow-hidden shadow-lg shadow-slate-200/30">
|
|
13
|
+
<ApiReference props={componentData?.props ?? []} />
|
|
14
|
+
</div>
|
|
15
|
+
</Section>
|
|
16
|
+
`;
|
|
17
|
+
return { id: 'api', title: 'API Reference', content, type: 'api' };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Render an API section from DocumentationSection
|
|
21
|
+
*/
|
|
22
|
+
renderApiSection(section, component, componentApiData) {
|
|
23
|
+
const apiContent = section.content;
|
|
24
|
+
if (!apiContent) {
|
|
25
|
+
throw new Error(`API section ${section.id} missing api content`);
|
|
26
|
+
}
|
|
27
|
+
const content = `
|
|
28
|
+
<!-- ${section.title} -->
|
|
29
|
+
<Section id="${section.id}" title="${section.title}">
|
|
30
|
+
<ApiReference
|
|
31
|
+
props={componentData?.props ?? []}
|
|
32
|
+
showHeader={false}
|
|
33
|
+
/>
|
|
34
|
+
</Section>
|
|
35
|
+
`;
|
|
36
|
+
return {
|
|
37
|
+
id: section.id,
|
|
38
|
+
title: section.title,
|
|
39
|
+
content,
|
|
40
|
+
type: 'api'
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ApiRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiRenderer.js","sourceRoot":"","sources":["../../../../src/generators/svelte/renderers/ApiRenderer.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB;;OAEG;IACH,UAAU,CAAC,UAAiC,EAAE,QAA0B,EAAE,OAAa;QACrF,MAAM,OAAO,GAAG;;;;;;;CAOnB,CAAC;QACE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACrE,CAAC;IACF;;OAEG;IACH,gBAAgB,CACf,OAA6B,EAC7B,SAAgC,EAChC,gBAAkC;QAEhC,MAAM,UAAU,GAAI,OAAO,CAAC,OAAsB,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAClE,CAAC;QAEC,MAAM,OAAO,GAAG;OACb,OAAO,CAAC,KAAK;eACL,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,KAAK;;;;;;CAMjD,CAAC;QAEA,OAAO;YACN,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO;YACP,IAAI,EAAE,KAAK;SACX,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { DocumentationSection } from '@urbicon-ui/shared-types';
|
|
2
|
+
import type { ComponentAPIData, EnrichedComponentInfo } from '../../../types';
|
|
3
|
+
import type { RenderedSection } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Renders code example sections for component documentation
|
|
6
|
+
*/
|
|
7
|
+
export declare class ExampleRenderer {
|
|
8
|
+
/** Auto Examples renderer */
|
|
9
|
+
renderAuto(component: EnrichedComponentInfo, apiData: ComponentAPIData): RenderedSection;
|
|
10
|
+
private generateVariantExamples;
|
|
11
|
+
private generateVariantExampleCode;
|
|
12
|
+
/**
|
|
13
|
+
* Render an example section from DocumentationSection
|
|
14
|
+
*/
|
|
15
|
+
renderExampleSection(section: DocumentationSection, component: EnrichedComponentInfo, componentApiData: ComponentAPIData): RenderedSection;
|
|
16
|
+
/**
|
|
17
|
+
* Convert example code to actual Svelte component instance
|
|
18
|
+
*/
|
|
19
|
+
private convertCodeToSvelteComponent;
|
|
20
|
+
/**
|
|
21
|
+
* Check if example code contains undefined variables that need mock values
|
|
22
|
+
*/
|
|
23
|
+
private checkIfExampleNeedsMockVariables;
|
|
24
|
+
/**
|
|
25
|
+
* Get mock variables needed for example code
|
|
26
|
+
*/
|
|
27
|
+
private getMockVariables;
|
|
28
|
+
/**
|
|
29
|
+
* Escape backticks in code for template literals
|
|
30
|
+
*/
|
|
31
|
+
private escapeBackticks;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=ExampleRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExampleRenderer.d.ts","sourceRoot":"","sources":["../../../../src/generators/svelte/renderers/ExampleRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,0BAA0B,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;GAEG;AACH,qBAAa,eAAe;IAC1B,6BAA6B;IAC7B,UAAU,CAAC,SAAS,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAwBxF,OAAO,CAAC,uBAAuB;IA0B/B,OAAO,CAAC,0BAA0B;IAMnC;;OAEG;IACH,oBAAoB,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,qBAAqB,EAChC,gBAAgB,EAAE,gBAAgB,GAChC,eAAe;IA+BlB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAepC;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAUxC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,eAAe;CAGvB"}
|