@auto-engineer/frontend-generator-react-graphql 1.7.0 → 1.9.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.
- package/CHANGELOG.md +40 -0
- package/dist/src/generator/generateComponents.d.ts.map +1 -1
- package/dist/src/generator/generateComponents.js +49 -4
- package/dist/src/generator/generateComponents.js.map +1 -1
- package/dist/src/generator/templates/component.ejs +75 -6
- package/dist/src/generator/templates/component.ejs.specs.js +3 -3
- package/dist/src/generator/templates/component.ejs.specs.js.map +1 -1
- package/dist/src/generator/templates/component.ejs.specs.ts +3 -3
- package/dist/src/generator/templates/page.ejs +108 -44
- package/dist/src/generator/templates/page.ejs.specs.js +169 -35
- package/dist/src/generator/templates/page.ejs.specs.js.map +1 -1
- package/dist/src/generator/templates/page.ejs.specs.ts +175 -35
- package/dist/src/generator/templates/template.ejs +196 -0
- package/dist/src/generator/type-guidance-builder.d.ts +1 -1
- package/dist/src/generator/type-guidance-builder.d.ts.map +1 -1
- package/dist/src/generator/type-guidance-builder.js +6 -6
- package/dist/src/generator/type-guidance-builder.js.map +1 -1
- package/dist/src/types.d.ts +10 -5
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.ejs.specs.js","sourceRoot":"","sources":["../../../../src/generator/templates/page.ejs.specs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page.ejs.specs.js","sourceRoot":"","sources":["../../../../src/generator/templates/page.ejs.specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,22 +10,27 @@ const __dirname = path.dirname(__filename);
|
|
|
10
10
|
const pageTemplate = fs.readFileSync(path.resolve(__dirname, 'page.ejs'), 'utf-8');
|
|
11
11
|
|
|
12
12
|
describe('page.ejs', () => {
|
|
13
|
-
it('should generate a basic page with
|
|
13
|
+
it('should generate a basic page with template and organisms', () => {
|
|
14
14
|
const content = ejs.render(pageTemplate, {
|
|
15
15
|
name: 'Dashboard',
|
|
16
16
|
description: 'Main dashboard page',
|
|
17
17
|
organisms: ['StatsOverview', 'ActivityFeed'],
|
|
18
|
-
template:
|
|
18
|
+
template: 'DashboardTemplate',
|
|
19
|
+
templateDescription: 'Dashboard layout with stats and activity',
|
|
20
|
+
templateSpecs: [],
|
|
21
|
+
route: '/dashboard',
|
|
22
|
+
navigation: [],
|
|
19
23
|
specs: [],
|
|
24
|
+
dataRequirements: [],
|
|
20
25
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
21
26
|
organismSpecs: {},
|
|
22
27
|
});
|
|
23
28
|
|
|
24
|
-
expect(content).toContain('import {
|
|
25
|
-
expect(content).toContain('import { ActivityFeed } from "@/components/organisms/ActivityFeed";');
|
|
29
|
+
expect(content).toContain('import { DashboardTemplate } from "@/components/templates/DashboardTemplate";');
|
|
26
30
|
expect(content).toContain('// Main dashboard page');
|
|
27
31
|
expect(content).toContain('PAGE COMPOSITION');
|
|
28
32
|
expect(content).toContain('export function Dashboard()');
|
|
33
|
+
expect(content).toContain('return <DashboardTemplate />');
|
|
29
34
|
});
|
|
30
35
|
|
|
31
36
|
it('should generate a page with organisms and specs', () => {
|
|
@@ -33,13 +38,18 @@ describe('page.ejs', () => {
|
|
|
33
38
|
name: 'AdminPanel',
|
|
34
39
|
description: 'Admin control panel',
|
|
35
40
|
organisms: ['UserManagement', 'SystemSettings'],
|
|
36
|
-
template:
|
|
41
|
+
template: 'AdminTemplate',
|
|
42
|
+
templateDescription: 'Admin layout template',
|
|
43
|
+
templateSpecs: [],
|
|
44
|
+
route: '/admin',
|
|
45
|
+
navigation: [],
|
|
37
46
|
specs: ['manage users', 'configure system'],
|
|
47
|
+
dataRequirements: [],
|
|
38
48
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
39
49
|
organismSpecs: {},
|
|
40
50
|
});
|
|
41
51
|
|
|
42
|
-
expect(content).toContain('// Specs:');
|
|
52
|
+
expect(content).toContain('// Page Specs:');
|
|
43
53
|
expect(content).toContain('// - manage users');
|
|
44
54
|
expect(content).toContain('// - configure system');
|
|
45
55
|
expect(content).toContain('PAGE COMPOSITION');
|
|
@@ -50,8 +60,13 @@ describe('page.ejs', () => {
|
|
|
50
60
|
name: 'UserProfile',
|
|
51
61
|
description: 'User profile page',
|
|
52
62
|
organisms: ['ProfileHeader', 'ProfileDetails'],
|
|
53
|
-
template:
|
|
63
|
+
template: 'ProfileTemplate',
|
|
64
|
+
templateDescription: 'Profile page layout',
|
|
65
|
+
templateSpecs: [],
|
|
66
|
+
route: '/profile',
|
|
67
|
+
navigation: [],
|
|
54
68
|
specs: ['display user info', 'show activity history'],
|
|
69
|
+
dataRequirements: [],
|
|
55
70
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
56
71
|
organismSpecs: {
|
|
57
72
|
ProfileHeader: ['display user info'],
|
|
@@ -61,23 +76,29 @@ describe('page.ejs', () => {
|
|
|
61
76
|
|
|
62
77
|
expect(content).toContain('YOUR SPECS (what this page must accomplish):');
|
|
63
78
|
expect(content).toContain('[✓] display user info');
|
|
64
|
-
expect(content).toContain('└─ Implemented by ProfileHeader');
|
|
79
|
+
expect(content).toContain('└─ Implemented by ProfileHeader (via template)');
|
|
65
80
|
expect(content).toContain('[✓] show activity history');
|
|
66
|
-
expect(content).toContain('└─ Implemented by ProfileDetails');
|
|
81
|
+
expect(content).toContain('└─ Implemented by ProfileDetails (via template)');
|
|
67
82
|
});
|
|
68
83
|
|
|
69
|
-
it('should generate a page with template import', () => {
|
|
84
|
+
it('should generate a page with template import using PascalCase conversion', () => {
|
|
70
85
|
const content = ejs.render(pageTemplate, {
|
|
71
86
|
name: 'Settings',
|
|
72
87
|
description: 'Settings page',
|
|
73
88
|
organisms: ['GeneralSettings'],
|
|
74
89
|
template: 'single-column-layout',
|
|
90
|
+
templateDescription: 'Single column layout template',
|
|
91
|
+
templateSpecs: [],
|
|
92
|
+
route: '/settings',
|
|
93
|
+
navigation: [],
|
|
75
94
|
specs: [],
|
|
95
|
+
dataRequirements: [],
|
|
76
96
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
77
97
|
organismSpecs: {},
|
|
78
98
|
});
|
|
79
99
|
|
|
80
100
|
expect(content).toContain('import { SingleColumnLayout } from "@/components/templates/single-column-layout";');
|
|
101
|
+
expect(content).toContain('return <SingleColumnLayout />');
|
|
81
102
|
});
|
|
82
103
|
|
|
83
104
|
it('should generate a page with type guidance', () => {
|
|
@@ -85,8 +106,13 @@ describe('page.ejs', () => {
|
|
|
85
106
|
name: 'TodoList',
|
|
86
107
|
description: 'Todo list page',
|
|
87
108
|
organisms: ['TodoGrid'],
|
|
88
|
-
template:
|
|
109
|
+
template: 'TodoTemplate',
|
|
110
|
+
templateDescription: 'Todo page layout',
|
|
111
|
+
templateSpecs: [],
|
|
112
|
+
route: '/todos',
|
|
113
|
+
navigation: [],
|
|
89
114
|
specs: ['display todos', 'filter by status'],
|
|
115
|
+
dataRequirements: [],
|
|
90
116
|
typeGuidance: {
|
|
91
117
|
imports: ['Todo', 'TodoStatus'],
|
|
92
118
|
queryGuidance: [
|
|
@@ -110,8 +136,13 @@ describe('page.ejs', () => {
|
|
|
110
136
|
name: 'TaskBoard',
|
|
111
137
|
description: 'Task management board',
|
|
112
138
|
organisms: ['TaskList', 'TaskFilters'],
|
|
113
|
-
template:
|
|
139
|
+
template: 'BoardTemplate',
|
|
140
|
+
templateDescription: 'Board layout template',
|
|
141
|
+
templateSpecs: [],
|
|
142
|
+
route: '/tasks',
|
|
143
|
+
navigation: [],
|
|
114
144
|
specs: ['display tasks', 'filter by status', 'sort by date', 'search tasks'],
|
|
145
|
+
dataRequirements: [],
|
|
115
146
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
116
147
|
organismSpecs: {
|
|
117
148
|
TaskList: ['display tasks', 'sort by date'],
|
|
@@ -120,13 +151,12 @@ describe('page.ejs', () => {
|
|
|
120
151
|
});
|
|
121
152
|
|
|
122
153
|
expect(content).toContain('[✓] display tasks');
|
|
123
|
-
expect(content).toContain('└─ Implemented by TaskList');
|
|
154
|
+
expect(content).toContain('└─ Implemented by TaskList (via template)');
|
|
124
155
|
expect(content).toContain('[✓] filter by status');
|
|
125
|
-
expect(content).toContain('└─ Implemented by TaskFilters');
|
|
156
|
+
expect(content).toContain('└─ Implemented by TaskFilters (via template)');
|
|
126
157
|
expect(content).toContain('[✓] sort by date');
|
|
127
|
-
expect(content).toContain('└─ Implemented by TaskList');
|
|
158
|
+
expect(content).toContain('└─ Implemented by TaskList (via template)');
|
|
128
159
|
expect(content).toContain('[ ] search tasks');
|
|
129
|
-
expect(content).not.toContain('search tasks\n// └─');
|
|
130
160
|
});
|
|
131
161
|
|
|
132
162
|
it('should generate a page with NO spec coverage', () => {
|
|
@@ -134,8 +164,13 @@ describe('page.ejs', () => {
|
|
|
134
164
|
name: 'Analytics',
|
|
135
165
|
description: 'Analytics dashboard',
|
|
136
166
|
organisms: ['ChartPanel', 'MetricsPanel'],
|
|
137
|
-
template:
|
|
167
|
+
template: 'AnalyticsTemplate',
|
|
168
|
+
templateDescription: 'Analytics layout template',
|
|
169
|
+
templateSpecs: [],
|
|
170
|
+
route: '/analytics',
|
|
171
|
+
navigation: [],
|
|
138
172
|
specs: ['show revenue chart', 'display user metrics', 'export data'],
|
|
173
|
+
dataRequirements: [],
|
|
139
174
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
140
175
|
organismSpecs: {
|
|
141
176
|
ChartPanel: ['render line chart', 'render bar chart'],
|
|
@@ -147,7 +182,6 @@ describe('page.ejs', () => {
|
|
|
147
182
|
expect(content).toContain('[ ] display user metrics');
|
|
148
183
|
expect(content).toContain('[ ] export data');
|
|
149
184
|
expect(content).not.toContain('[✓]');
|
|
150
|
-
expect(content).not.toContain('└─ Implemented by');
|
|
151
185
|
});
|
|
152
186
|
|
|
153
187
|
it('should generate a page with mutation guidance', () => {
|
|
@@ -155,8 +189,13 @@ describe('page.ejs', () => {
|
|
|
155
189
|
name: 'CreateItem',
|
|
156
190
|
description: 'Create item page',
|
|
157
191
|
organisms: ['ItemForm'],
|
|
158
|
-
template:
|
|
192
|
+
template: 'FormTemplate',
|
|
193
|
+
templateDescription: 'Form page layout',
|
|
194
|
+
templateSpecs: [],
|
|
195
|
+
route: '/items/new',
|
|
196
|
+
navigation: [],
|
|
159
197
|
specs: ['collect item data', 'submit item'],
|
|
198
|
+
dataRequirements: [],
|
|
160
199
|
typeGuidance: {
|
|
161
200
|
imports: ['CreateItemInput'],
|
|
162
201
|
queryGuidance: [],
|
|
@@ -170,7 +209,7 @@ describe('page.ejs', () => {
|
|
|
170
209
|
|
|
171
210
|
expect(content).toContain('CRITICAL - TYPE GUIDANCE');
|
|
172
211
|
expect(content).toContain('Mutation - CreateItem:');
|
|
173
|
-
expect(content).toContain('
|
|
212
|
+
expect(content).toContain('Data requirements for this page');
|
|
174
213
|
});
|
|
175
214
|
|
|
176
215
|
it('should generate a page with only mutation guidance (no queries)', () => {
|
|
@@ -178,8 +217,13 @@ describe('page.ejs', () => {
|
|
|
178
217
|
name: 'DeleteConfirmation',
|
|
179
218
|
description: 'Delete confirmation page',
|
|
180
219
|
organisms: ['ConfirmDialog'],
|
|
181
|
-
template:
|
|
220
|
+
template: 'DialogTemplate',
|
|
221
|
+
templateDescription: 'Dialog layout template',
|
|
222
|
+
templateSpecs: [],
|
|
223
|
+
route: '/delete/:id',
|
|
224
|
+
navigation: [],
|
|
182
225
|
specs: ['confirm deletion'],
|
|
226
|
+
dataRequirements: [],
|
|
183
227
|
typeGuidance: {
|
|
184
228
|
imports: [],
|
|
185
229
|
queryGuidance: [],
|
|
@@ -202,7 +246,12 @@ describe('page.ejs', () => {
|
|
|
202
246
|
description: 'Product catalog page',
|
|
203
247
|
organisms: ['ProductGrid', 'ProductFilters'],
|
|
204
248
|
template: 'two-column-layout',
|
|
249
|
+
templateDescription: 'Two column layout with sidebar',
|
|
250
|
+
templateSpecs: ['responsive sidebar', 'main content area'],
|
|
251
|
+
route: '/products',
|
|
252
|
+
navigation: [],
|
|
205
253
|
specs: ['display products', 'filter products'],
|
|
254
|
+
dataRequirements: [],
|
|
206
255
|
typeGuidance: {
|
|
207
256
|
imports: ['Product'],
|
|
208
257
|
queryGuidance: [
|
|
@@ -221,24 +270,50 @@ describe('page.ejs', () => {
|
|
|
221
270
|
expect(content).toContain('CRITICAL - TYPE GUIDANCE');
|
|
222
271
|
expect(content).toContain('[✓] display products');
|
|
223
272
|
expect(content).toContain('[✓] filter products');
|
|
273
|
+
expect(content).toContain('return <TwoColumnLayout />');
|
|
224
274
|
});
|
|
225
275
|
|
|
226
|
-
it('should include
|
|
276
|
+
it('should include template specs when available', () => {
|
|
277
|
+
const content = ejs.render(pageTemplate, {
|
|
278
|
+
name: 'DashboardPage',
|
|
279
|
+
description: 'Main dashboard',
|
|
280
|
+
organisms: ['Header', 'Content'],
|
|
281
|
+
template: 'DashboardLayout',
|
|
282
|
+
templateDescription: 'Dashboard layout with header and content areas',
|
|
283
|
+
templateSpecs: ['fixed header', 'scrollable content area', 'responsive sidebar'],
|
|
284
|
+
route: '/',
|
|
285
|
+
navigation: [],
|
|
286
|
+
specs: [],
|
|
287
|
+
dataRequirements: [],
|
|
288
|
+
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
289
|
+
organismSpecs: {},
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
expect(content).toContain('TEMPLATE LAYOUT SPECS (handled by template):');
|
|
293
|
+
expect(content).toContain('• fixed header');
|
|
294
|
+
expect(content).toContain('• scrollable content area');
|
|
295
|
+
expect(content).toContain('• responsive sidebar');
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it('should include page-level considerations', () => {
|
|
227
299
|
const content = ejs.render(pageTemplate, {
|
|
228
300
|
name: 'SimpleList',
|
|
229
301
|
description: 'Simple list page',
|
|
230
302
|
organisms: ['ItemList'],
|
|
231
|
-
template:
|
|
303
|
+
template: 'ListTemplate',
|
|
304
|
+
templateDescription: 'List page layout',
|
|
305
|
+
templateSpecs: [],
|
|
306
|
+
route: '/items',
|
|
307
|
+
navigation: [],
|
|
232
308
|
specs: ['show items'],
|
|
309
|
+
dataRequirements: [],
|
|
233
310
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
234
311
|
organismSpecs: {},
|
|
235
312
|
});
|
|
236
313
|
|
|
237
|
-
expect(content).toContain('
|
|
238
|
-
expect(content).toContain('
|
|
239
|
-
expect(content).toContain('
|
|
240
|
-
expect(content).toContain('TEXT SIZING: Use responsive classes');
|
|
241
|
-
expect(content).toContain('MENTAL TEST: Would this work in a 320px wide container?');
|
|
314
|
+
expect(content).toContain('PAGE-LEVEL CONSIDERATIONS & VISUAL REQUIREMENTS');
|
|
315
|
+
expect(content).toContain('Is the entry point for route "/items"');
|
|
316
|
+
expect(content).toContain('IMPLEMENTATION PATTERN');
|
|
242
317
|
});
|
|
243
318
|
|
|
244
319
|
it('should handle organisms without organismSpecs data', () => {
|
|
@@ -246,8 +321,13 @@ describe('page.ejs', () => {
|
|
|
246
321
|
name: 'MixedPage',
|
|
247
322
|
description: 'Page with documented and undocumented organisms',
|
|
248
323
|
organisms: ['DocumentedOrg', 'UndocumentedOrg'],
|
|
249
|
-
template:
|
|
324
|
+
template: 'MixedTemplate',
|
|
325
|
+
templateDescription: 'Mixed content template',
|
|
326
|
+
templateSpecs: [],
|
|
327
|
+
route: '/mixed',
|
|
328
|
+
navigation: [],
|
|
250
329
|
specs: ['feature A', 'feature B'],
|
|
330
|
+
dataRequirements: [],
|
|
251
331
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
252
332
|
organismSpecs: {
|
|
253
333
|
DocumentedOrg: ['feature A'],
|
|
@@ -257,7 +337,31 @@ describe('page.ejs', () => {
|
|
|
257
337
|
expect(content).toContain('**DocumentedOrg** capabilities:');
|
|
258
338
|
expect(content).toContain('• feature A');
|
|
259
339
|
expect(content).toContain('**UndocumentedOrg**');
|
|
260
|
-
expect(content).toContain('(Organism with specific purpose
|
|
340
|
+
expect(content).toContain('(Organism with specific purpose)');
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
it('should include navigation information', () => {
|
|
344
|
+
const content = ejs.render(pageTemplate, {
|
|
345
|
+
name: 'ProductPage',
|
|
346
|
+
description: 'Product detail page',
|
|
347
|
+
organisms: ['ProductDetails'],
|
|
348
|
+
template: 'DetailTemplate',
|
|
349
|
+
templateDescription: 'Detail page layout',
|
|
350
|
+
templateSpecs: [],
|
|
351
|
+
route: '/product/:id',
|
|
352
|
+
navigation: [
|
|
353
|
+
{ on: 'Click Back', to: 'ProductListPage' },
|
|
354
|
+
{ on: 'Click Buy', to: 'CheckoutPage' },
|
|
355
|
+
],
|
|
356
|
+
specs: [],
|
|
357
|
+
dataRequirements: [],
|
|
358
|
+
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
359
|
+
organismSpecs: {},
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
expect(content).toContain('NAVIGATION:');
|
|
363
|
+
expect(content).toContain('On "Click Back" → Navigate to ProductListPage');
|
|
364
|
+
expect(content).toContain('On "Click Buy" → Navigate to CheckoutPage');
|
|
261
365
|
});
|
|
262
366
|
|
|
263
367
|
describe('Edge Cases', () => {
|
|
@@ -266,15 +370,21 @@ describe('page.ejs', () => {
|
|
|
266
370
|
name: 'EmptyPage',
|
|
267
371
|
description: 'Page without organisms',
|
|
268
372
|
organisms: [],
|
|
269
|
-
template:
|
|
373
|
+
template: 'EmptyTemplate',
|
|
374
|
+
templateDescription: 'Empty page layout',
|
|
375
|
+
templateSpecs: [],
|
|
376
|
+
route: '/empty',
|
|
377
|
+
navigation: [],
|
|
270
378
|
specs: [],
|
|
379
|
+
dataRequirements: [],
|
|
271
380
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
272
381
|
organismSpecs: {},
|
|
273
382
|
});
|
|
274
383
|
|
|
275
384
|
expect(content).not.toContain('PAGE COMPOSITION');
|
|
276
|
-
expect(content).not.toContain('
|
|
385
|
+
expect(content).not.toContain('Page Responsibilities');
|
|
277
386
|
expect(content).toContain('export function EmptyPage()');
|
|
387
|
+
expect(content).toContain('return <EmptyTemplate />');
|
|
278
388
|
});
|
|
279
389
|
|
|
280
390
|
it('should handle undefined specs gracefully', () => {
|
|
@@ -282,13 +392,18 @@ describe('page.ejs', () => {
|
|
|
282
392
|
name: 'NoSpecs',
|
|
283
393
|
description: 'Page without specs',
|
|
284
394
|
organisms: ['SomeOrganism'],
|
|
285
|
-
template:
|
|
395
|
+
template: 'BasicTemplate',
|
|
396
|
+
templateDescription: 'Basic layout',
|
|
397
|
+
templateSpecs: [],
|
|
398
|
+
route: '/no-specs',
|
|
399
|
+
navigation: [],
|
|
286
400
|
specs: undefined,
|
|
401
|
+
dataRequirements: [],
|
|
287
402
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
288
403
|
organismSpecs: {},
|
|
289
404
|
});
|
|
290
405
|
|
|
291
|
-
expect(content).not.toContain('// Specs:');
|
|
406
|
+
expect(content).not.toContain('// Page Specs:');
|
|
292
407
|
expect(content).not.toContain('YOUR SPECS');
|
|
293
408
|
expect(content).toContain('PAGE COMPOSITION');
|
|
294
409
|
});
|
|
@@ -298,8 +413,13 @@ describe('page.ejs', () => {
|
|
|
298
413
|
name: 'EmptySpecs',
|
|
299
414
|
description: 'Organisms with no documented specs',
|
|
300
415
|
organisms: ['Org1', 'Org2'],
|
|
301
|
-
template:
|
|
416
|
+
template: 'BasicTemplate',
|
|
417
|
+
templateDescription: 'Basic layout',
|
|
418
|
+
templateSpecs: [],
|
|
419
|
+
route: '/empty-specs',
|
|
420
|
+
navigation: [],
|
|
302
421
|
specs: ['feature X', 'feature Y'],
|
|
422
|
+
dataRequirements: [],
|
|
303
423
|
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
304
424
|
organismSpecs: {
|
|
305
425
|
Org1: [],
|
|
@@ -311,5 +431,25 @@ describe('page.ejs', () => {
|
|
|
311
431
|
expect(content).toContain('[ ] feature Y');
|
|
312
432
|
expect(content).not.toContain('[✓]');
|
|
313
433
|
});
|
|
434
|
+
|
|
435
|
+
it('should handle page without template (fallback to div)', () => {
|
|
436
|
+
const content = ejs.render(pageTemplate, {
|
|
437
|
+
name: 'NoTemplatePage',
|
|
438
|
+
description: 'Page without template',
|
|
439
|
+
organisms: [],
|
|
440
|
+
template: undefined,
|
|
441
|
+
templateDescription: '',
|
|
442
|
+
templateSpecs: [],
|
|
443
|
+
route: '/no-template',
|
|
444
|
+
navigation: [],
|
|
445
|
+
specs: [],
|
|
446
|
+
dataRequirements: [],
|
|
447
|
+
typeGuidance: { imports: [], queryGuidance: [], mutationGuidance: [], enumGuidance: [] },
|
|
448
|
+
organismSpecs: {},
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
expect(content).not.toContain('import {');
|
|
452
|
+
expect(content).toContain('return <div />');
|
|
453
|
+
});
|
|
314
454
|
});
|
|
315
455
|
});
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
<% organisms.forEach(org => { -%>
|
|
2
|
+
import { <%= org %> } from "@/components/organisms/<%= org %>";
|
|
3
|
+
<% }) -%>
|
|
4
|
+
<% if (typeGuidance && typeGuidance.imports && typeGuidance.imports.length > 0) { -%>
|
|
5
|
+
import { <%= typeGuidance.imports.join(', ') %> } from '@/gql/graphql';
|
|
6
|
+
<% } -%>
|
|
7
|
+
|
|
8
|
+
// TEMPLATE: <%= name %>
|
|
9
|
+
// <%= description %>
|
|
10
|
+
//
|
|
11
|
+
// Templates are page-level layout structures that define the skeletal framework
|
|
12
|
+
// for placing organisms. They establish the content structure without real data.
|
|
13
|
+
//
|
|
14
|
+
<% if (specs && specs.length) { -%>
|
|
15
|
+
// Layout Specs:
|
|
16
|
+
<% specs.forEach(spec => { -%>
|
|
17
|
+
// - <%- spec %>
|
|
18
|
+
<% }) -%>
|
|
19
|
+
<% } -%>
|
|
20
|
+
<% if (organisms && organisms.length > 0) { -%>
|
|
21
|
+
//
|
|
22
|
+
// ──────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// TEMPLATE COMPOSITION - Organism Layout Structure
|
|
24
|
+
// ──────────────────────────────────────────────────────────────────────────────
|
|
25
|
+
//
|
|
26
|
+
<% if (specs && specs.length > 0) { -%>
|
|
27
|
+
// LAYOUT SPECS (what this template must accomplish):
|
|
28
|
+
//
|
|
29
|
+
<% specs.forEach(spec => { -%>
|
|
30
|
+
<% const coveredBy = organisms.find(org => organismSpecs[org]?.includes(spec)); -%>
|
|
31
|
+
// [<%= coveredBy ? '✓' : ' ' %>] <%= spec %>
|
|
32
|
+
<% if (coveredBy) { -%>
|
|
33
|
+
// └─ Implemented by <%= coveredBy %>
|
|
34
|
+
<% } -%>
|
|
35
|
+
<% }); -%>
|
|
36
|
+
//
|
|
37
|
+
<% } -%>
|
|
38
|
+
// Organisms in this template:
|
|
39
|
+
//
|
|
40
|
+
<% organisms.forEach(org => { -%>
|
|
41
|
+
<% const orgSpecs = organismSpecs[org]; -%>
|
|
42
|
+
<% if (orgSpecs && orgSpecs.length > 0) { -%>
|
|
43
|
+
// **<%= org %>** capabilities:
|
|
44
|
+
<% orgSpecs.slice(0, 5).forEach(spec => { -%>
|
|
45
|
+
// • <%= spec %>
|
|
46
|
+
<% }); -%>
|
|
47
|
+
<% if (orgSpecs.length > 5) { -%>
|
|
48
|
+
// • ... and <%= orgSpecs.length - 5 %> more specs
|
|
49
|
+
<% } -%>
|
|
50
|
+
//
|
|
51
|
+
<% } else { -%>
|
|
52
|
+
// **<%= org %>**
|
|
53
|
+
// (Organism with specific purpose - compose as needed)
|
|
54
|
+
//
|
|
55
|
+
<% } -%>
|
|
56
|
+
<% }); -%>
|
|
57
|
+
// Template Responsibilities:
|
|
58
|
+
//
|
|
59
|
+
// 1. Define the overall page layout structure (grid, flex, etc.)
|
|
60
|
+
// 2. Position organisms in their designated regions
|
|
61
|
+
// 3. Handle responsive layout behavior
|
|
62
|
+
// 4. Provide consistent spacing and visual hierarchy
|
|
63
|
+
// 5. Accept children prop for page-specific content
|
|
64
|
+
//
|
|
65
|
+
<% } -%>
|
|
66
|
+
<% if (typeGuidance && (typeGuidance.queryGuidance.length > 0 || typeGuidance.mutationGuidance.length > 0 || typeGuidance.enumGuidance.length > 0)) { -%>
|
|
67
|
+
//
|
|
68
|
+
// CRITICAL - TYPE GUIDANCE - Child organism data requirements
|
|
69
|
+
//
|
|
70
|
+
// The following operations are used by child organisms.
|
|
71
|
+
// Templates typically DON'T fetch data directly - they provide layout structure.
|
|
72
|
+
// Data fetching should happen in organisms or be passed from pages.
|
|
73
|
+
//
|
|
74
|
+
<% typeGuidance.queryGuidance.forEach(guidance => { -%>
|
|
75
|
+
// <%- guidance.split('\n').join('\n// ') %>
|
|
76
|
+
//
|
|
77
|
+
<% }) -%>
|
|
78
|
+
<% typeGuidance.mutationGuidance.forEach(guidance => { -%>
|
|
79
|
+
// <%- guidance.split('\n').join('\n// ') %>
|
|
80
|
+
//
|
|
81
|
+
<% }) -%>
|
|
82
|
+
<% typeGuidance.enumGuidance.forEach(guidance => { -%>
|
|
83
|
+
// <%- guidance.split('\n').join('\n// ') %>
|
|
84
|
+
//
|
|
85
|
+
<% }) -%>
|
|
86
|
+
<% } -%>
|
|
87
|
+
//
|
|
88
|
+
// ------------------------------------------------------------------------------
|
|
89
|
+
// VISUAL DESIGN PRINCIPLES
|
|
90
|
+
// ------------------------------------------------------------------------------
|
|
91
|
+
//
|
|
92
|
+
// VISUAL HIERARCHY - Templates establish the visual rhythm:
|
|
93
|
+
// - Hero/Header sections: Large typography, generous vertical padding
|
|
94
|
+
// - Content sections: Clear boundaries, consistent spacing
|
|
95
|
+
// - Footer sections: Subtle backgrounds, smaller typography
|
|
96
|
+
//
|
|
97
|
+
// PROFESSIONAL AESTHETICS:
|
|
98
|
+
// - Background: Clean, professional base color
|
|
99
|
+
// - Card containers: Rounded corners, subtle border, soft shadow
|
|
100
|
+
// - Section dividers: Subtle borders or spacing, not heavy lines
|
|
101
|
+
// - Visual balance: Equal weight on left/right, top/bottom
|
|
102
|
+
//
|
|
103
|
+
// LAYOUT PATTERNS (choose based on content):
|
|
104
|
+
// - Dashboard: Sidebar + main content with cards grid
|
|
105
|
+
// - Marketing: Full-width hero, feature sections, CTA, footer
|
|
106
|
+
// - Form-heavy: Narrow centered container with clear sections
|
|
107
|
+
// - List/Detail: Two-column with master-detail pattern
|
|
108
|
+
//
|
|
109
|
+
// ------------------------------------------------------------------------------
|
|
110
|
+
// RESPONSIVE LAYOUT STRUCTURE
|
|
111
|
+
// ------------------------------------------------------------------------------
|
|
112
|
+
//
|
|
113
|
+
// THIS TEMPLATE DEFINES THE PAGE-LEVEL LAYOUT STRUCTURE:
|
|
114
|
+
// - Full viewport width management
|
|
115
|
+
// - Main content area with max-width constraints
|
|
116
|
+
// - Sidebar regions (if applicable)
|
|
117
|
+
// - Header/footer regions (if applicable)
|
|
118
|
+
// - Mobile-first responsive breakpoints
|
|
119
|
+
//
|
|
120
|
+
// MANDATORY RESPONSIVE PATTERNS:
|
|
121
|
+
//
|
|
122
|
+
// 1. FULL-WIDTH LAYOUT: Use container with max-width
|
|
123
|
+
// - Full-height wrapper with page background
|
|
124
|
+
// - Centered container with max-width and horizontal padding
|
|
125
|
+
//
|
|
126
|
+
// 2. SIDEBAR LAYOUTS: Stack on mobile, side-by-side on desktop
|
|
127
|
+
// - Vertical stack on mobile, horizontal flex on desktop
|
|
128
|
+
// - Fixed-width sidebar, flexible main content
|
|
129
|
+
//
|
|
130
|
+
// 3. GRID REGIONS: Define semantic areas
|
|
131
|
+
// - Single column on mobile, multi-column on desktop
|
|
132
|
+
// - Main content gets more columns than sidebar
|
|
133
|
+
//
|
|
134
|
+
// 4. SPACING RHYTHM: Consistent vertical flow
|
|
135
|
+
// - Large gaps between major sections
|
|
136
|
+
// - Medium gaps between content groups
|
|
137
|
+
// - Vertical padding that scales with viewport
|
|
138
|
+
//
|
|
139
|
+
// 5. MENTAL TEST: Would this layout work on 320px to 1920px screens?
|
|
140
|
+
// If no → make it responsive!
|
|
141
|
+
//
|
|
142
|
+
// ------------------------------------------------------------------------------
|
|
143
|
+
// LOADING & ERROR STATES (Templates should handle gracefully)
|
|
144
|
+
// ------------------------------------------------------------------------------
|
|
145
|
+
//
|
|
146
|
+
// LOADING SKELETON PATTERN:
|
|
147
|
+
// - Match the skeleton layout to your content structure
|
|
148
|
+
// - Include skeletons for titles, grids, and other key elements
|
|
149
|
+
// - Use consistent spacing that matches loaded state
|
|
150
|
+
//
|
|
151
|
+
// ERROR BOUNDARY PATTERN:
|
|
152
|
+
// - Centered vertically and horizontally
|
|
153
|
+
// - Error icon with appropriate color
|
|
154
|
+
// - Clear heading and descriptive message
|
|
155
|
+
// - Recovery action button
|
|
156
|
+
//
|
|
157
|
+
|
|
158
|
+
interface <%= name %>Props {
|
|
159
|
+
children?: React.ReactNode;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// LAYOUT IMPLEMENTATION GUIDE:
|
|
163
|
+
//
|
|
164
|
+
// Analyze the organisms above and create an appropriate layout:
|
|
165
|
+
// - If there's a navigation/header organism: make it sticky at top
|
|
166
|
+
// - If there's a sidebar organism: use flex with aside + main
|
|
167
|
+
// - If it's content-focused: use centered container with max-width
|
|
168
|
+
// - If it's full-width sections: remove max-width constraints
|
|
169
|
+
//
|
|
170
|
+
// LAYOUT REQUIREMENTS:
|
|
171
|
+
// - Container: Centered with max-width and responsive horizontal padding
|
|
172
|
+
// - Sections: Generous vertical padding that scales with viewport
|
|
173
|
+
// - Content spacing: Consistent vertical rhythm between elements
|
|
174
|
+
// - Background: Page background for wrapper, card background for elevated sections
|
|
175
|
+
|
|
176
|
+
export function <%= name %>({ children }: <%= name %>Props) {
|
|
177
|
+
// TODO: Apply your CSS library's classes for:
|
|
178
|
+
// - Full-height page wrapper with background
|
|
179
|
+
// - Centered container with max-width
|
|
180
|
+
// - Responsive padding
|
|
181
|
+
// - Vertical spacing between organisms
|
|
182
|
+
return (
|
|
183
|
+
<div>
|
|
184
|
+
<div>
|
|
185
|
+
<div>
|
|
186
|
+
<div>
|
|
187
|
+
<% organisms.forEach(org => { -%>
|
|
188
|
+
<<%= org %> />
|
|
189
|
+
<% }) -%>
|
|
190
|
+
{children}
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
);
|
|
196
|
+
}
|