@noxion/renderer 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +9 -8
  2. package/dist/index.d.ts +1 -31
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -25
  5. package/dist/index.js.map +1 -1
  6. package/dist/theme/types.d.ts +11 -22
  7. package/dist/theme/types.d.ts.map +1 -1
  8. package/package.json +1 -1
  9. package/dist/components/DocsBreadcrumb.d.ts +0 -5
  10. package/dist/components/DocsBreadcrumb.d.ts.map +0 -1
  11. package/dist/components/DocsBreadcrumb.js +0 -10
  12. package/dist/components/DocsBreadcrumb.js.map +0 -1
  13. package/dist/components/DocsSidebar.d.ts +0 -5
  14. package/dist/components/DocsSidebar.d.ts.map +0 -1
  15. package/dist/components/DocsSidebar.js +0 -15
  16. package/dist/components/DocsSidebar.js.map +0 -1
  17. package/dist/components/EmptyState.d.ts +0 -7
  18. package/dist/components/EmptyState.d.ts.map +0 -1
  19. package/dist/components/EmptyState.js +0 -6
  20. package/dist/components/EmptyState.js.map +0 -1
  21. package/dist/components/FeaturedPostCard.d.ts +0 -5
  22. package/dist/components/FeaturedPostCard.d.ts.map +0 -1
  23. package/dist/components/FeaturedPostCard.js +0 -19
  24. package/dist/components/FeaturedPostCard.js.map +0 -1
  25. package/dist/components/Footer.d.ts +0 -5
  26. package/dist/components/Footer.d.ts.map +0 -1
  27. package/dist/components/Footer.js +0 -7
  28. package/dist/components/Footer.js.map +0 -1
  29. package/dist/components/Header.d.ts +0 -5
  30. package/dist/components/Header.d.ts.map +0 -1
  31. package/dist/components/Header.js +0 -7
  32. package/dist/components/Header.js.map +0 -1
  33. package/dist/components/HeroSection.d.ts +0 -7
  34. package/dist/components/HeroSection.d.ts.map +0 -1
  35. package/dist/components/HeroSection.js +0 -16
  36. package/dist/components/HeroSection.js.map +0 -1
  37. package/dist/components/PortfolioFilter.d.ts +0 -5
  38. package/dist/components/PortfolioFilter.d.ts.map +0 -1
  39. package/dist/components/PortfolioFilter.js +0 -20
  40. package/dist/components/PortfolioFilter.js.map +0 -1
  41. package/dist/components/PortfolioProjectCard.d.ts +0 -5
  42. package/dist/components/PortfolioProjectCard.d.ts.map +0 -1
  43. package/dist/components/PortfolioProjectCard.js +0 -13
  44. package/dist/components/PortfolioProjectCard.js.map +0 -1
  45. package/dist/components/PostCard.d.ts +0 -5
  46. package/dist/components/PostCard.d.ts.map +0 -1
  47. package/dist/components/PostCard.js +0 -17
  48. package/dist/components/PostCard.js.map +0 -1
  49. package/dist/components/PostList.d.ts +0 -5
  50. package/dist/components/PostList.d.ts.map +0 -1
  51. package/dist/components/PostList.js +0 -13
  52. package/dist/components/PostList.js.map +0 -1
  53. package/dist/components/Search.d.ts +0 -5
  54. package/dist/components/Search.d.ts.map +0 -1
  55. package/dist/components/Search.js +0 -25
  56. package/dist/components/Search.js.map +0 -1
  57. package/dist/components/TOC.d.ts +0 -5
  58. package/dist/components/TOC.d.ts.map +0 -1
  59. package/dist/components/TOC.js +0 -7
  60. package/dist/components/TOC.js.map +0 -1
  61. package/dist/components/TagFilter.d.ts +0 -5
  62. package/dist/components/TagFilter.d.ts.map +0 -1
  63. package/dist/components/TagFilter.js +0 -19
  64. package/dist/components/TagFilter.js.map +0 -1
  65. package/dist/components/ThemeToggle.d.ts +0 -4
  66. package/dist/components/ThemeToggle.d.ts.map +0 -1
  67. package/dist/components/ThemeToggle.js +0 -20
  68. package/dist/components/ThemeToggle.js.map +0 -1
  69. package/dist/layouts/BaseLayout.d.ts +0 -3
  70. package/dist/layouts/BaseLayout.d.ts.map +0 -1
  71. package/dist/layouts/BaseLayout.js +0 -11
  72. package/dist/layouts/BaseLayout.js.map +0 -1
  73. package/dist/layouts/BlogLayout.d.ts +0 -3
  74. package/dist/layouts/BlogLayout.d.ts.map +0 -1
  75. package/dist/layouts/BlogLayout.js +0 -6
  76. package/dist/layouts/BlogLayout.js.map +0 -1
  77. package/dist/layouts/DocsLayout.d.ts +0 -3
  78. package/dist/layouts/DocsLayout.d.ts.map +0 -1
  79. package/dist/layouts/DocsLayout.js +0 -11
  80. package/dist/layouts/DocsLayout.js.map +0 -1
  81. package/dist/layouts/MagazineLayout.d.ts +0 -3
  82. package/dist/layouts/MagazineLayout.d.ts.map +0 -1
  83. package/dist/layouts/MagazineLayout.js +0 -11
  84. package/dist/layouts/MagazineLayout.js.map +0 -1
  85. package/dist/layouts/index.d.ts +0 -5
  86. package/dist/layouts/index.d.ts.map +0 -1
  87. package/dist/layouts/index.js +0 -5
  88. package/dist/layouts/index.js.map +0 -1
  89. package/dist/templates/ArchivePage.d.ts +0 -3
  90. package/dist/templates/ArchivePage.d.ts.map +0 -1
  91. package/dist/templates/ArchivePage.js +0 -8
  92. package/dist/templates/ArchivePage.js.map +0 -1
  93. package/dist/templates/DocsPage.d.ts +0 -3
  94. package/dist/templates/DocsPage.d.ts.map +0 -1
  95. package/dist/templates/DocsPage.js +0 -13
  96. package/dist/templates/DocsPage.js.map +0 -1
  97. package/dist/templates/HomePage.d.ts +0 -3
  98. package/dist/templates/HomePage.d.ts.map +0 -1
  99. package/dist/templates/HomePage.js +0 -16
  100. package/dist/templates/HomePage.js.map +0 -1
  101. package/dist/templates/PortfolioGrid.d.ts +0 -3
  102. package/dist/templates/PortfolioGrid.d.ts.map +0 -1
  103. package/dist/templates/PortfolioGrid.js +0 -10
  104. package/dist/templates/PortfolioGrid.js.map +0 -1
  105. package/dist/templates/PortfolioProject.d.ts +0 -3
  106. package/dist/templates/PortfolioProject.d.ts.map +0 -1
  107. package/dist/templates/PortfolioProject.js +0 -12
  108. package/dist/templates/PortfolioProject.js.map +0 -1
  109. package/dist/templates/PostPage.d.ts +0 -13
  110. package/dist/templates/PostPage.d.ts.map +0 -1
  111. package/dist/templates/PostPage.js +0 -33
  112. package/dist/templates/PostPage.js.map +0 -1
  113. package/dist/templates/TagPage.d.ts +0 -3
  114. package/dist/templates/TagPage.d.ts.map +0 -1
  115. package/dist/templates/TagPage.js +0 -8
  116. package/dist/templates/TagPage.js.map +0 -1
  117. package/dist/templates/index.d.ts +0 -8
  118. package/dist/templates/index.d.ts.map +0 -1
  119. package/dist/templates/index.js +0 -8
  120. package/dist/templates/index.js.map +0 -1
  121. package/dist/theme/ThemeProvider.d.ts +0 -21
  122. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  123. package/dist/theme/ThemeProvider.js +0 -71
  124. package/dist/theme/ThemeProvider.js.map +0 -1
  125. package/dist/theme/component-resolver.d.ts +0 -3
  126. package/dist/theme/component-resolver.d.ts.map +0 -1
  127. package/dist/theme/component-resolver.js +0 -16
  128. package/dist/theme/component-resolver.js.map +0 -1
  129. package/dist/theme/css-generator.d.ts +0 -4
  130. package/dist/theme/css-generator.d.ts.map +0 -1
  131. package/dist/theme/css-generator.js +0 -80
  132. package/dist/theme/css-generator.js.map +0 -1
  133. package/dist/theme/define-theme.d.ts +0 -4
  134. package/dist/theme/define-theme.d.ts.map +0 -1
  135. package/dist/theme/define-theme.js +0 -45
  136. package/dist/theme/define-theme.js.map +0 -1
  137. package/dist/theme/extend-theme.d.ts +0 -27
  138. package/dist/theme/extend-theme.d.ts.map +0 -1
  139. package/dist/theme/extend-theme.js +0 -102
  140. package/dist/theme/extend-theme.js.map +0 -1
  141. package/dist/theme/slot-resolver.d.ts +0 -3
  142. package/dist/theme/slot-resolver.d.ts.map +0 -1
  143. package/dist/theme/slot-resolver.js +0 -13
  144. package/dist/theme/slot-resolver.js.map +0 -1
  145. package/dist/theme/template-resolver.d.ts +0 -4
  146. package/dist/theme/template-resolver.d.ts.map +0 -1
  147. package/dist/theme/template-resolver.js +0 -38
  148. package/dist/theme/template-resolver.js.map +0 -1
  149. package/dist/theme/validate-theme.d.ts +0 -14
  150. package/dist/theme/validate-theme.d.ts.map +0 -1
  151. package/dist/theme/validate-theme.js +0 -235
  152. package/dist/theme/validate-theme.js.map +0 -1
  153. package/src/styles/noxion.css +0 -1815
@@ -1,235 +0,0 @@
1
- const REQUIRED_COLOR_KEYS = [
2
- "primary",
3
- "primaryForeground",
4
- "background",
5
- "foreground",
6
- "muted",
7
- "mutedForeground",
8
- "border",
9
- "accent",
10
- "accentForeground",
11
- "card",
12
- "cardForeground",
13
- ];
14
- const KNOWN_SUPPORTS = ["blog", "docs", "portfolio"];
15
- const SUPPORTS_TEMPLATE_MAP = {
16
- blog: ["home", "post", "archive", "tag"],
17
- docs: ["docs"],
18
- portfolio: ["portfolio-grid", "portfolio-project"],
19
- };
20
- function issue(severity, path, message) {
21
- return { severity, path, message };
22
- }
23
- function validateName(pkg, issues) {
24
- if (!pkg.name || typeof pkg.name !== "string") {
25
- issues.push(issue("error", "name", "Theme name is required and must be a non-empty string."));
26
- }
27
- else if (!/^[a-z][a-z0-9-]*$/.test(pkg.name)) {
28
- issues.push(issue("warning", "name", `Theme name "${pkg.name}" should be lowercase kebab-case (e.g. "my-theme").`));
29
- }
30
- }
31
- function validateColors(tokens, prefix, issues) {
32
- if (!tokens.colors || typeof tokens.colors !== "object") {
33
- issues.push(issue("error", `${prefix}.colors`, "Token colors object is required."));
34
- return;
35
- }
36
- for (const key of REQUIRED_COLOR_KEYS) {
37
- const value = tokens.colors[key];
38
- if (!value || typeof value !== "string") {
39
- issues.push(issue("error", `${prefix}.colors.${key}`, `Required color "${key}" is missing or not a string.`));
40
- }
41
- else if (!isValidCSSColor(value)) {
42
- issues.push(issue("warning", `${prefix}.colors.${key}`, `Color "${key}" value "${value}" may not be a valid CSS color.`));
43
- }
44
- }
45
- }
46
- function validateFonts(tokens, prefix, issues) {
47
- if (!tokens.fonts)
48
- return;
49
- if (typeof tokens.fonts !== "object") {
50
- issues.push(issue("error", `${prefix}.fonts`, "Fonts must be an object."));
51
- return;
52
- }
53
- for (const [key, value] of Object.entries(tokens.fonts)) {
54
- if (value !== undefined && typeof value !== "string") {
55
- issues.push(issue("error", `${prefix}.fonts.${key}`, `Font "${key}" must be a string.`));
56
- }
57
- }
58
- }
59
- function validateSpacing(tokens, prefix, issues) {
60
- if (!tokens.spacing) {
61
- issues.push(issue("warning", `${prefix}.spacing`, "Spacing tokens are recommended (content, sidebar widths)."));
62
- return;
63
- }
64
- if (typeof tokens.spacing !== "object") {
65
- issues.push(issue("error", `${prefix}.spacing`, "Spacing must be an object."));
66
- return;
67
- }
68
- if (!tokens.spacing.content) {
69
- issues.push(issue("warning", `${prefix}.spacing.content`, "Content width spacing is recommended."));
70
- }
71
- }
72
- function validateShadows(tokens, prefix, issues) {
73
- if (!tokens.shadows)
74
- return;
75
- if (typeof tokens.shadows !== "object") {
76
- issues.push(issue("error", `${prefix}.shadows`, "Shadows must be an object."));
77
- }
78
- }
79
- function validateTransitions(tokens, prefix, issues) {
80
- if (!tokens.transitions)
81
- return;
82
- if (typeof tokens.transitions !== "object") {
83
- issues.push(issue("error", `${prefix}.transitions`, "Transitions must be an object."));
84
- }
85
- }
86
- function validateBreakpoints(tokens, prefix, issues) {
87
- if (!tokens.breakpoints)
88
- return;
89
- if (typeof tokens.breakpoints !== "object") {
90
- issues.push(issue("error", `${prefix}.breakpoints`, "Breakpoints must be an object."));
91
- }
92
- }
93
- function validateTokens(tokens, issues) {
94
- if (!tokens || typeof tokens !== "object") {
95
- issues.push(issue("error", "tokens", "Tokens object is required."));
96
- return;
97
- }
98
- if (!tokens.name || typeof tokens.name !== "string") {
99
- issues.push(issue("error", "tokens.name", "Token name is required."));
100
- }
101
- validateColors(tokens, "tokens", issues);
102
- validateFonts(tokens, "tokens", issues);
103
- validateSpacing(tokens, "tokens", issues);
104
- validateShadows(tokens, "tokens", issues);
105
- validateTransitions(tokens, "tokens", issues);
106
- validateBreakpoints(tokens, "tokens", issues);
107
- if (tokens.dark) {
108
- if (tokens.dark.colors) {
109
- validateColors(tokens.dark, "tokens.dark", issues);
110
- }
111
- else {
112
- issues.push(issue("warning", "tokens.dark.colors", "Dark mode declared but no dark colors provided."));
113
- }
114
- }
115
- else {
116
- issues.push(issue("warning", "tokens.dark", "No dark mode tokens. Dark mode will fall back to light colors."));
117
- }
118
- }
119
- function validateLayouts(pkg, issues) {
120
- if (!pkg.layouts || typeof pkg.layouts !== "object") {
121
- issues.push(issue("error", "layouts", "Layouts object is required."));
122
- return;
123
- }
124
- const layoutKeys = Object.keys(pkg.layouts);
125
- if (layoutKeys.length === 0) {
126
- issues.push(issue("error", "layouts", "At least one layout is required."));
127
- return;
128
- }
129
- if (!pkg.layouts["base"] && !pkg.layouts["blog"]) {
130
- issues.push(issue("warning", "layouts", 'No "base" or "blog" layout found. Most themes provide at least one.'));
131
- }
132
- for (const [key, value] of Object.entries(pkg.layouts)) {
133
- if (typeof value !== "function") {
134
- issues.push(issue("error", `layouts.${key}`, `Layout "${key}" must be a React component (function).`));
135
- }
136
- }
137
- }
138
- function validateTemplates(pkg, issues) {
139
- if (!pkg.templates || typeof pkg.templates !== "object") {
140
- issues.push(issue("warning", "templates", "Templates object is recommended."));
141
- return;
142
- }
143
- for (const [key, value] of Object.entries(pkg.templates)) {
144
- if (value !== undefined && typeof value !== "function") {
145
- issues.push(issue("error", `templates.${key}`, `Template "${key}" must be a React component (function).`));
146
- }
147
- }
148
- }
149
- function validateSupportsConsistency(pkg, issues) {
150
- if (!pkg.supports || !Array.isArray(pkg.supports))
151
- return;
152
- for (const pageType of pkg.supports) {
153
- if (!KNOWN_SUPPORTS.includes(pageType)) {
154
- issues.push(issue("warning", `supports`, `Unknown page type "${pageType}". Known types: ${KNOWN_SUPPORTS.join(", ")}.`));
155
- continue;
156
- }
157
- const expectedTemplates = SUPPORTS_TEMPLATE_MAP[pageType];
158
- if (!expectedTemplates)
159
- continue;
160
- const templateKeys = Object.keys(pkg.templates ?? {});
161
- const missing = expectedTemplates.filter((t) => !templateKeys.includes(t));
162
- if (missing.length > 0) {
163
- issues.push(issue("warning", `supports → templates`, `Theme declares support for "${pageType}" but missing templates: ${missing.join(", ")}.`));
164
- }
165
- }
166
- }
167
- function validateComponents(pkg, issues) {
168
- if (!pkg.components || typeof pkg.components !== "object")
169
- return;
170
- for (const [key, value] of Object.entries(pkg.components)) {
171
- if (value !== undefined && typeof value !== "function" && typeof value !== "object") {
172
- issues.push(issue("error", `components.${key}`, `Component override "${key}" must be a React component or record.`));
173
- }
174
- }
175
- }
176
- function validateMetadata(pkg, issues) {
177
- if (!pkg.metadata) {
178
- issues.push(issue("warning", "metadata", "Theme metadata (description, author, version) is recommended."));
179
- return;
180
- }
181
- if (!pkg.metadata.description) {
182
- issues.push(issue("warning", "metadata.description", "Theme description is recommended."));
183
- }
184
- if (!pkg.metadata.version) {
185
- issues.push(issue("warning", "metadata.version", "Theme version is recommended for tracking."));
186
- }
187
- }
188
- function isValidCSSColor(value) {
189
- if (value.startsWith("#")) {
190
- return /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(value);
191
- }
192
- if (/^(rgb|hsl|oklch|oklab|lab|lch|hwb|color)\(/.test(value)) {
193
- return true;
194
- }
195
- if (/^[a-z]+$/i.test(value)) {
196
- return true;
197
- }
198
- return false;
199
- }
200
- export function validateTheme(pkg) {
201
- const issues = [];
202
- validateName(pkg, issues);
203
- validateTokens(pkg.tokens, issues);
204
- validateLayouts(pkg, issues);
205
- validateTemplates(pkg, issues);
206
- validateSupportsConsistency(pkg, issues);
207
- validateComponents(pkg, issues);
208
- validateMetadata(pkg, issues);
209
- const hasErrors = issues.some((i) => i.severity === "error");
210
- return { valid: !hasErrors, issues };
211
- }
212
- export function formatValidationResult(result) {
213
- if (result.issues.length === 0) {
214
- return "✓ Theme is valid. No issues found.";
215
- }
216
- const errors = result.issues.filter((i) => i.severity === "error");
217
- const warnings = result.issues.filter((i) => i.severity === "warning");
218
- const lines = [];
219
- if (errors.length > 0) {
220
- lines.push(`✗ ${errors.length} error(s):`);
221
- for (const e of errors) {
222
- lines.push(` ERROR [${e.path}] ${e.message}`);
223
- }
224
- }
225
- if (warnings.length > 0) {
226
- lines.push(`⚠ ${warnings.length} warning(s):`);
227
- for (const w of warnings) {
228
- lines.push(` WARN [${w.path}] ${w.message}`);
229
- }
230
- }
231
- lines.push("");
232
- lines.push(result.valid ? "✓ Theme is valid (warnings only)." : "✗ Theme is invalid. Fix errors above.");
233
- return lines.join("\n");
234
- }
235
- //# sourceMappingURL=validate-theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-theme.js","sourceRoot":"","sources":["../../src/theme/validate-theme.ts"],"names":[],"mappings":"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"}