@onexapis/cli 1.1.16 → 1.1.18

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 (63) hide show
  1. package/README.md +117 -51
  2. package/bin/onexthm.js +4 -0
  3. package/dist/cli.js +750 -328
  4. package/dist/cli.js.map +1 -1
  5. package/dist/cli.mjs +747 -325
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/index.js +162 -299
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +162 -299
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/preview/preview-app.tsx +175 -53
  12. package/package.json +14 -12
  13. package/templates/default/.env.example +1 -1
  14. package/templates/default/.mcp.json +8 -0
  15. package/templates/default/CLAUDE.md +941 -0
  16. package/templates/default/bundle-entry.ts +18 -0
  17. package/templates/default/index.ts +26 -0
  18. package/templates/default/package.json +37 -0
  19. package/templates/default/pages/about.ts +66 -0
  20. package/templates/default/pages/home.ts +93 -0
  21. package/templates/default/pages/showcase.ts +146 -0
  22. package/templates/default/sections/about/about-default.tsx +237 -0
  23. package/templates/default/sections/about/about.schema.ts +259 -0
  24. package/templates/default/sections/about/index.ts +15 -0
  25. package/templates/default/sections/cta/cta-default.tsx +180 -0
  26. package/templates/default/sections/cta/cta.schema.ts +210 -0
  27. package/templates/default/sections/cta/index.ts +11 -0
  28. package/templates/default/sections/features/features-default.tsx +154 -0
  29. package/templates/default/sections/features/features.schema.ts +330 -0
  30. package/templates/default/sections/features/index.ts +11 -0
  31. package/templates/default/sections/gallery/gallery-default.tsx +134 -0
  32. package/templates/default/sections/gallery/gallery.schema.ts +397 -0
  33. package/templates/default/sections/gallery/index.ts +11 -0
  34. package/templates/default/sections/hero/hero-default.tsx +212 -0
  35. package/templates/default/sections/hero/hero.schema.ts +273 -0
  36. package/templates/default/sections/hero/index.ts +15 -0
  37. package/templates/default/sections/stats/index.ts +11 -0
  38. package/templates/default/sections/stats/stats-default.tsx +103 -0
  39. package/templates/default/sections/stats/stats.schema.ts +266 -0
  40. package/templates/default/sections/testimonials/index.ts +11 -0
  41. package/templates/default/sections/testimonials/testimonials-default.tsx +130 -0
  42. package/templates/default/sections/testimonials/testimonials.schema.ts +371 -0
  43. package/templates/default/sections-registry.ts +32 -0
  44. package/templates/default/theme.config.ts +107 -0
  45. package/templates/default/theme.layout.ts +21 -0
  46. package/templates/default/tsconfig.json +16 -7
  47. package/templates/default/README.md.ejs +0 -129
  48. package/templates/default/esbuild.config.js +0 -81
  49. package/templates/default/package.json.ejs +0 -31
  50. package/templates/default/src/config.ts.ejs +0 -98
  51. package/templates/default/src/index.ts.ejs +0 -11
  52. package/templates/default/src/layout.ts +0 -23
  53. package/templates/default/src/manifest.ts.ejs +0 -47
  54. package/templates/default/src/pages/home.ts.ejs +0 -37
  55. package/templates/default/src/sections/footer/footer-default.tsx +0 -28
  56. package/templates/default/src/sections/footer/footer.schema.ts +0 -45
  57. package/templates/default/src/sections/footer/index.ts +0 -2
  58. package/templates/default/src/sections/header/header-default.tsx +0 -61
  59. package/templates/default/src/sections/header/header.schema.ts +0 -46
  60. package/templates/default/src/sections/header/index.ts +0 -2
  61. package/templates/default/src/sections/hero/hero-default.tsx +0 -52
  62. package/templates/default/src/sections/hero/hero.schema.ts +0 -52
  63. package/templates/default/src/sections/hero/index.ts +0 -2
@@ -0,0 +1,130 @@
1
+ "use client";
2
+
3
+ import type { SectionComponentProps } from "@onexapis/core/types";
4
+ import coreRenderers from "@onexapis/core/renderers";
5
+ import coreUtils from "@onexapis/core/utils";
6
+
7
+ const { ComponentRenderer, BlockRenderer } = coreRenderers;
8
+ const { toComponentInstance, getSectionValues, filterEnabledComponents } =
9
+ coreUtils;
10
+
11
+ export function TestimonialsDefault({
12
+ section,
13
+ schema,
14
+ isEditing,
15
+ }: SectionComponentProps) {
16
+ const components = filterEnabledComponents(section.components || []);
17
+ const titleComp = components.find(
18
+ (c) => c.slot === "section-title" || c.id === "testimonials-title"
19
+ );
20
+ const subtitleComp = components.find(
21
+ (c) => c.slot === "section-subtitle" || c.id === "testimonials-subtitle"
22
+ );
23
+
24
+ const { settings } = getSectionValues(section, schema);
25
+ const { sectionTitle, sectionSubtitle, columns, backgroundColor } = settings;
26
+
27
+ const colClass =
28
+ columns === "1"
29
+ ? "max-w-2xl mx-auto"
30
+ : columns === "2"
31
+ ? "md:grid-cols-2"
32
+ : "md:grid-cols-3";
33
+
34
+ const blocks = (section.blocks || [])
35
+ .filter((b) => b.enabled !== false)
36
+ .sort((a, b) => (a.order || 0) - (b.order || 0));
37
+
38
+ return (
39
+ <section
40
+ className="py-16"
41
+ style={{ backgroundColor: String(backgroundColor || "#FFFFFF") }}
42
+ data-section="testimonials"
43
+ data-section-id={section.id}
44
+ data-section-template="default"
45
+ data-section-name="Simple Testimonials"
46
+ >
47
+ <div className="container mx-auto px-4 max-w-6xl">
48
+ {/* Section Header */}
49
+ <div className="text-center mb-12">
50
+ {titleComp ? (
51
+ <ComponentRenderer
52
+ key="section-title"
53
+ instance={toComponentInstance(titleComp)}
54
+ sectionId={section.id}
55
+ isEditing={isEditing}
56
+ />
57
+ ) : sectionTitle ? (
58
+ <h2
59
+ key="section-title-fallback"
60
+ className="text-3xl font-bold text-gray-900 mb-2"
61
+ >
62
+ {String(sectionTitle)}
63
+ </h2>
64
+ ) : null}
65
+
66
+ {subtitleComp ? (
67
+ <ComponentRenderer
68
+ key="section-subtitle"
69
+ instance={toComponentInstance(subtitleComp)}
70
+ sectionId={section.id}
71
+ isEditing={isEditing}
72
+ />
73
+ ) : sectionSubtitle ? (
74
+ <p
75
+ key="section-subtitle-fallback"
76
+ className="text-lg text-gray-500 mb-12"
77
+ >
78
+ {String(sectionSubtitle)}
79
+ </p>
80
+ ) : null}
81
+ </div>
82
+
83
+ {/* Testimonial Blocks Grid */}
84
+ <div
85
+ className={`grid grid-cols-1 ${columns === "1" ? "" : colClass} gap-8`}
86
+ >
87
+ {blocks.map((block) => {
88
+ const bs = block.settings || {};
89
+ const radiusMap: Record<string, string> = {
90
+ none: "rounded-none",
91
+ sm: "rounded-sm",
92
+ md: "rounded-md",
93
+ xl: "rounded-xl",
94
+ };
95
+ const radius = radiusMap[bs.borderRadius as string] || "rounded-xl";
96
+ return (
97
+ <div
98
+ key={block.id}
99
+ className={`${radius} p-6 border border-gray-100`}
100
+ style={{
101
+ backgroundColor: String(bs.backgroundColor || "#F9FAFB"),
102
+ }}
103
+ data-section-id={section.id}
104
+ data-block-id={block.id}
105
+ data-block-type={block.type}
106
+ >
107
+ <BlockRenderer
108
+ block={block}
109
+ sectionId={section.id}
110
+ isEditing={isEditing}
111
+ />
112
+ </div>
113
+ );
114
+ })}
115
+ </div>
116
+
117
+ {/* Empty state for editor */}
118
+ {blocks.length === 0 && isEditing && (
119
+ <div className="text-center py-12 border-2 border-dashed border-gray-300 rounded-lg">
120
+ <p className="text-gray-500">
121
+ Add testimonial blocks to populate this section
122
+ </p>
123
+ </div>
124
+ )}
125
+ </div>
126
+ </section>
127
+ );
128
+ }
129
+
130
+ export default TestimonialsDefault;
@@ -0,0 +1,371 @@
1
+ import type { SectionSchema, FieldDefinition } from "@onexapis/core/types";
2
+
3
+ const commonSettings: FieldDefinition[] = [
4
+ {
5
+ id: "sectionTitle",
6
+ type: "text",
7
+ label: "Section Title",
8
+ default: "What Our Customers Say",
9
+ },
10
+ {
11
+ id: "sectionSubtitle",
12
+ type: "textarea",
13
+ label: "Section Subtitle",
14
+ default: "Trusted by thousands of happy customers worldwide",
15
+ },
16
+ {
17
+ id: "columns",
18
+ type: "select",
19
+ label: "Columns",
20
+ default: "3",
21
+ options: [
22
+ { label: "1 Column", value: "1" },
23
+ { label: "2 Columns", value: "2" },
24
+ { label: "3 Columns", value: "3" },
25
+ ],
26
+ },
27
+ {
28
+ id: "backgroundColor",
29
+ type: "color",
30
+ label: "Background Color",
31
+ default: "#FFFFFF",
32
+ },
33
+ ];
34
+
35
+ export const testimonialsSchema: SectionSchema = {
36
+ type: "my-simple-testimonials",
37
+ name: "Simple Testimonials",
38
+ description:
39
+ "Testimonial cards with quote, rating, name, role, and avatar blocks",
40
+ category: "testimonials",
41
+ icon: "message-circle",
42
+ settings: commonSettings,
43
+ templates: [
44
+ {
45
+ id: "default",
46
+ name: "Default Testimonials",
47
+ description: "A grid of testimonial cards",
48
+ },
49
+ ],
50
+ blocks: [
51
+ {
52
+ type: "testimonial-item",
53
+ name: "Testimonial",
54
+ description: "A single testimonial with quote, rating, name, and avatar",
55
+ icon: "quote",
56
+ settings: [
57
+ {
58
+ id: "backgroundColor",
59
+ type: "color",
60
+ label: "Background Color",
61
+ default: "#FFFFFF",
62
+ },
63
+ {
64
+ id: "borderRadius",
65
+ type: "select",
66
+ label: "Border Radius",
67
+ default: "xl",
68
+ options: [
69
+ { label: "None", value: "none" },
70
+ { label: "Small", value: "sm" },
71
+ { label: "Medium", value: "md" },
72
+ { label: "Large", value: "xl" },
73
+ ],
74
+ },
75
+ {
76
+ id: "showAvatar",
77
+ type: "checkbox",
78
+ label: "Show Avatar",
79
+ default: true,
80
+ },
81
+ {
82
+ id: "showRating",
83
+ type: "checkbox",
84
+ label: "Show Rating",
85
+ default: true,
86
+ },
87
+ ],
88
+ defaults: {
89
+ backgroundColor: "#FFFFFF",
90
+ borderRadius: "xl",
91
+ showAvatar: true,
92
+ showRating: true,
93
+ },
94
+ limit: 6,
95
+ },
96
+ ],
97
+ maxBlocks: 6,
98
+ defaults: {
99
+ settings: {
100
+ sectionTitle: "What Our Customers Say",
101
+ sectionSubtitle: "Trusted by thousands of happy customers worldwide",
102
+ columns: "3",
103
+ backgroundColor: "#FFFFFF",
104
+ },
105
+ components: [
106
+ {
107
+ id: "testimonials-title",
108
+ type: "heading",
109
+ slot: "section-title",
110
+ order: 0,
111
+ content: { text: "What Our Customers Say", tag: "h2" },
112
+ style: {
113
+ fontSize: "3xl",
114
+ fontWeight: "bold",
115
+ color: "#111827",
116
+ textAlign: "center",
117
+ marginBottom: "0.5rem",
118
+ },
119
+ styleMode: "advanced",
120
+ enabled: true,
121
+ },
122
+ {
123
+ id: "testimonials-subtitle",
124
+ type: "paragraph",
125
+ slot: "section-subtitle",
126
+ order: 1,
127
+ content: {
128
+ text: "Trusted by thousands of happy customers worldwide",
129
+ },
130
+ style: {
131
+ fontSize: "lg",
132
+ color: "#6B7280",
133
+ textAlign: "center",
134
+ marginBottom: "3rem",
135
+ },
136
+ styleMode: "advanced",
137
+ enabled: true,
138
+ },
139
+ ],
140
+ blocks: [
141
+ {
142
+ id: "testimonial-1",
143
+ type: "testimonial-item",
144
+ order: 0,
145
+ enabled: true,
146
+ settings: {},
147
+ components: [
148
+ {
149
+ id: "testimonial-1-quote",
150
+ type: "quote",
151
+ slot: "quote",
152
+ order: 0,
153
+ content: {
154
+ text: "This product has completely transformed how we work. The simplicity and power are unmatched.",
155
+ },
156
+ style: {
157
+ fontSize: "base",
158
+ color: "#374151",
159
+ lineHeight: "1.6",
160
+ },
161
+ styleMode: "advanced",
162
+ enabled: true,
163
+ },
164
+ {
165
+ id: "testimonial-1-rating",
166
+ type: "rating",
167
+ slot: "rating",
168
+ order: 1,
169
+ content: { value: 5 },
170
+ style: { color: "#F59E0B" },
171
+ styleMode: "advanced",
172
+ enabled: true,
173
+ },
174
+ {
175
+ id: "testimonial-1-name",
176
+ type: "heading",
177
+ slot: "name",
178
+ order: 2,
179
+ content: { text: "Sarah Johnson", tag: "h4" },
180
+ style: {
181
+ fontSize: "base",
182
+ fontWeight: "semibold",
183
+ color: "#111827",
184
+ },
185
+ styleMode: "advanced",
186
+ enabled: true,
187
+ },
188
+ {
189
+ id: "testimonial-1-role",
190
+ type: "paragraph",
191
+ slot: "role",
192
+ order: 3,
193
+ content: { text: "CEO at TechCorp" },
194
+ style: { fontSize: "sm", color: "#6B7280" },
195
+ styleMode: "advanced",
196
+ enabled: true,
197
+ },
198
+ {
199
+ id: "testimonial-1-avatar",
200
+ type: "image",
201
+ slot: "avatar",
202
+ order: 4,
203
+ content: {
204
+ src: "https://picsum.photos/seed/avatar1/80/80",
205
+ alt: "Sarah Johnson",
206
+ },
207
+ style: {
208
+ width: "48px",
209
+ height: "48px",
210
+ borderRadius: "9999px",
211
+ },
212
+ styleMode: "advanced",
213
+ enabled: true,
214
+ },
215
+ ],
216
+ },
217
+ {
218
+ id: "testimonial-2",
219
+ type: "testimonial-item",
220
+ order: 1,
221
+ enabled: true,
222
+ settings: {},
223
+ components: [
224
+ {
225
+ id: "testimonial-2-quote",
226
+ type: "quote",
227
+ slot: "quote",
228
+ order: 0,
229
+ content: {
230
+ text: "Incredible attention to detail. Every feature feels thoughtfully designed and polished.",
231
+ },
232
+ style: {
233
+ fontSize: "base",
234
+ color: "#374151",
235
+ lineHeight: "1.6",
236
+ },
237
+ styleMode: "advanced",
238
+ enabled: true,
239
+ },
240
+ {
241
+ id: "testimonial-2-rating",
242
+ type: "rating",
243
+ slot: "rating",
244
+ order: 1,
245
+ content: { value: 5 },
246
+ style: { color: "#F59E0B" },
247
+ styleMode: "advanced",
248
+ enabled: true,
249
+ },
250
+ {
251
+ id: "testimonial-2-name",
252
+ type: "heading",
253
+ slot: "name",
254
+ order: 2,
255
+ content: { text: "Michael Chen", tag: "h4" },
256
+ style: {
257
+ fontSize: "base",
258
+ fontWeight: "semibold",
259
+ color: "#111827",
260
+ },
261
+ styleMode: "advanced",
262
+ enabled: true,
263
+ },
264
+ {
265
+ id: "testimonial-2-role",
266
+ type: "paragraph",
267
+ slot: "role",
268
+ order: 3,
269
+ content: { text: "Lead Designer at Artisan" },
270
+ style: { fontSize: "sm", color: "#6B7280" },
271
+ styleMode: "advanced",
272
+ enabled: true,
273
+ },
274
+ {
275
+ id: "testimonial-2-avatar",
276
+ type: "image",
277
+ slot: "avatar",
278
+ order: 4,
279
+ content: {
280
+ src: "https://picsum.photos/seed/avatar2/80/80",
281
+ alt: "Michael Chen",
282
+ },
283
+ style: {
284
+ width: "48px",
285
+ height: "48px",
286
+ borderRadius: "9999px",
287
+ },
288
+ styleMode: "advanced",
289
+ enabled: true,
290
+ },
291
+ ],
292
+ },
293
+ {
294
+ id: "testimonial-3",
295
+ type: "testimonial-item",
296
+ order: 2,
297
+ enabled: true,
298
+ settings: {},
299
+ components: [
300
+ {
301
+ id: "testimonial-3-quote",
302
+ type: "quote",
303
+ slot: "quote",
304
+ order: 0,
305
+ content: {
306
+ text: "The best investment we made this year. Our team productivity doubled within weeks.",
307
+ },
308
+ style: {
309
+ fontSize: "base",
310
+ color: "#374151",
311
+ lineHeight: "1.6",
312
+ },
313
+ styleMode: "advanced",
314
+ enabled: true,
315
+ },
316
+ {
317
+ id: "testimonial-3-rating",
318
+ type: "rating",
319
+ slot: "rating",
320
+ order: 1,
321
+ content: { value: 4 },
322
+ style: { color: "#F59E0B" },
323
+ styleMode: "advanced",
324
+ enabled: true,
325
+ },
326
+ {
327
+ id: "testimonial-3-name",
328
+ type: "heading",
329
+ slot: "name",
330
+ order: 2,
331
+ content: { text: "Emily Rodriguez", tag: "h4" },
332
+ style: {
333
+ fontSize: "base",
334
+ fontWeight: "semibold",
335
+ color: "#111827",
336
+ },
337
+ styleMode: "advanced",
338
+ enabled: true,
339
+ },
340
+ {
341
+ id: "testimonial-3-role",
342
+ type: "paragraph",
343
+ slot: "role",
344
+ order: 3,
345
+ content: { text: "Product Manager at Innovate" },
346
+ style: { fontSize: "sm", color: "#6B7280" },
347
+ styleMode: "advanced",
348
+ enabled: true,
349
+ },
350
+ {
351
+ id: "testimonial-3-avatar",
352
+ type: "image",
353
+ slot: "avatar",
354
+ order: 4,
355
+ content: {
356
+ src: "https://picsum.photos/seed/avatar3/80/80",
357
+ alt: "Emily Rodriguez",
358
+ },
359
+ style: {
360
+ width: "48px",
361
+ height: "48px",
362
+ borderRadius: "9999px",
363
+ },
364
+ styleMode: "advanced",
365
+ enabled: true,
366
+ },
367
+ ],
368
+ },
369
+ ],
370
+ },
371
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * My Simple Theme - Sections Registry
3
+ * Auto-discovery entry point for all sections
4
+ */
5
+
6
+ // Hero
7
+ export { default as HeroDefault } from "./sections/hero/hero-default";
8
+ export { heroSchema } from "./sections/hero/hero.schema";
9
+
10
+ // About
11
+ export { default as AboutDefault } from "./sections/about/about-default";
12
+ export { aboutSchema } from "./sections/about/about.schema";
13
+
14
+ // Features (block-based)
15
+ export { default as FeaturesDefault } from "./sections/features/features-default";
16
+ export { featuresSchema } from "./sections/features/features.schema";
17
+
18
+ // Testimonials (block-based)
19
+ export { default as TestimonialsDefault } from "./sections/testimonials/testimonials-default";
20
+ export { testimonialsSchema } from "./sections/testimonials/testimonials.schema";
21
+
22
+ // Gallery (block-based)
23
+ export { default as GalleryDefault } from "./sections/gallery/gallery-default";
24
+ export { gallerySchema } from "./sections/gallery/gallery.schema";
25
+
26
+ // CTA (component-rich)
27
+ export { default as CtaDefault } from "./sections/cta/cta-default";
28
+ export { ctaSchema } from "./sections/cta/cta.schema";
29
+
30
+ // Stats (block-based)
31
+ export { default as StatsDefault } from "./sections/stats/stats-default";
32
+ export { statsSchema } from "./sections/stats/stats.schema";
@@ -0,0 +1,107 @@
1
+ /**
2
+ * My Simple Theme - Theme Configuration
3
+ * Design system config (colors, fonts, spacing)
4
+ */
5
+
6
+ import type { ThemeConfig } from "@onexapis/core";
7
+
8
+ export const simpleThemeConfig: ThemeConfig = {
9
+ id: "my-simple",
10
+ name: "My Simple Theme",
11
+ version: "1.0.0",
12
+ description: "A simple, clean theme for basic websites",
13
+ author: "OneX Team",
14
+
15
+ colors: {
16
+ light: {
17
+ primary: "#3B82F6",
18
+ secondary: "#8B5CF6",
19
+ accent: "#10B981",
20
+ background: "#FFFFFF",
21
+ foreground: "#1F2937",
22
+ muted: "#F3F4F6",
23
+ mutedForeground: "#6B7280",
24
+ card: "#FFFFFF",
25
+ cardForeground: "#1F2937",
26
+ popover: "#FFFFFF",
27
+ popoverForeground: "#1F2937",
28
+ border: "#E5E7EB",
29
+ input: "#E5E7EB",
30
+ ring: "#3B82F6",
31
+ success: "#10B981",
32
+ warning: "#F59E0B",
33
+ destructive: "#EF4444",
34
+ info: "#3B82F6",
35
+ },
36
+ },
37
+
38
+ typography: {
39
+ fontFamily: {
40
+ heading: "system-ui, sans-serif",
41
+ body: "system-ui, sans-serif",
42
+ mono: "monospace",
43
+ },
44
+ fontSize: {
45
+ xs: "0.75rem",
46
+ sm: "0.875rem",
47
+ base: "1rem",
48
+ lg: "1.125rem",
49
+ xl: "1.25rem",
50
+ "2xl": "1.5rem",
51
+ "3xl": "2rem",
52
+ "4xl": "2.5rem",
53
+ "5xl": "3.5rem",
54
+ },
55
+ fontWeight: {
56
+ normal: 400,
57
+ medium: 500,
58
+ semibold: 600,
59
+ bold: 700,
60
+ },
61
+ lineHeight: {
62
+ tight: 1.2,
63
+ normal: 1.5,
64
+ relaxed: 1.8,
65
+ },
66
+ letterSpacing: {
67
+ tight: "-0.02em",
68
+ normal: "0",
69
+ wide: "0.05em",
70
+ },
71
+ },
72
+
73
+ spacing: {
74
+ xs: "0.5rem",
75
+ sm: "0.75rem",
76
+ md: "1rem",
77
+ lg: "1.5rem",
78
+ xl: "2.5rem",
79
+ "2xl": "4rem",
80
+ "3xl": "5rem",
81
+ "4xl": "8rem",
82
+ },
83
+
84
+ borderRadius: {
85
+ none: "0",
86
+ sm: "0.25rem",
87
+ md: "0.5rem",
88
+ lg: "0.75rem",
89
+ xl: "1rem",
90
+ "2xl": "1.5rem",
91
+ full: "9999px",
92
+ },
93
+
94
+ breakpoints: {
95
+ sm: "640px",
96
+ md: "768px",
97
+ lg: "1024px",
98
+ xl: "1280px",
99
+ "2xl": "1536px",
100
+ },
101
+
102
+ active: false,
103
+ createdAt: new Date().toISOString(),
104
+ updatedAt: new Date().toISOString(),
105
+ };
106
+
107
+ export default simpleThemeConfig;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * My Simple Theme - Layout Configuration
3
+ * Defines header sections, footer sections, and global settings
4
+ */
5
+
6
+ import type { ThemeLayoutConfig } from "@onexapis/core/types";
7
+
8
+ export const simpleLayoutConfig: ThemeLayoutConfig = {
9
+ id: "my-simple",
10
+ name: "My My Simple Theme",
11
+ version: "1.0.0",
12
+ headerSections: [],
13
+ footerSections: [],
14
+ globalSettings: {
15
+ primaryColor: "#3B82F6",
16
+ secondaryColor: "#8B5CF6",
17
+ fontFamily: "system-ui, sans-serif",
18
+ },
19
+ };
20
+
21
+ export default simpleLayoutConfig;
@@ -1,18 +1,27 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES2020",
3
+ "target": "ES2022",
4
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
5
+ "jsx": "react-jsx",
4
6
  "module": "ESNext",
5
7
  "moduleResolution": "bundler",
6
- "jsx": "react-jsx",
8
+ "resolveJsonModule": true,
9
+ "allowJs": false,
7
10
  "strict": true,
8
11
  "esModuleInterop": true,
9
12
  "skipLibCheck": true,
10
13
  "forceConsistentCasingInFileNames": true,
11
- "resolveJsonModule": true,
12
- "declaration": false,
13
- "outDir": "dist",
14
- "rootDir": "src"
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true,
17
+ "outDir": "./dist",
18
+ "rootDir": "./",
19
+ "types": ["react", "react-dom"],
20
+ "baseUrl": ".",
21
+ "paths": {
22
+ "@/*": ["./*"]
23
+ }
15
24
  },
16
- "include": ["src/**/*"],
25
+ "include": ["**/*.ts", "**/*.tsx"],
17
26
  "exclude": ["node_modules", "dist"]
18
27
  }