@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.
@@ -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 organisms and no type guidance', () => {
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: undefined,
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 { StatsOverview } from "@/components/organisms/StatsOverview";');
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: undefined,
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: undefined,
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: undefined,
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: undefined,
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: undefined,
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: undefined,
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('Child organism data requirements');
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: undefined,
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 responsive design guidance', () => {
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: undefined,
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('CRITICAL - CONTAINER-AWARE RESPONSIVE DESIGN:');
238
- expect(content).toContain('GRIDS: Always start mobile-first');
239
- expect(content).toContain('grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3');
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: undefined,
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 - compose as needed)');
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: undefined,
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('Composition Rules');
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: undefined,
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: undefined,
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
+ }