@underpeaks/generator-nextjs 1.0.31 → 1.0.33

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 (118) hide show
  1. package/dist/components/registry-display.d.ts.map +1 -1
  2. package/dist/components/registry-display.js +3 -7
  3. package/dist/components/registry-display.js.map +1 -1
  4. package/dist/generator.d.ts +0 -7
  5. package/dist/generator.d.ts.map +1 -1
  6. package/dist/generator.js +90 -40
  7. package/dist/generator.js.map +1 -1
  8. package/dist/templates/api-builder.d.ts +1 -1
  9. package/dist/templates/api-builder.d.ts.map +1 -1
  10. package/dist/templates/api-builder.js +7 -4
  11. package/dist/templates/api-builder.js.map +1 -1
  12. package/dist/templates/app-nav.d.ts +3 -20
  13. package/dist/templates/app-nav.d.ts.map +1 -1
  14. package/dist/templates/app-nav.js +55 -22
  15. package/dist/templates/app-nav.js.map +1 -1
  16. package/dist/templates/layout.d.ts.map +1 -1
  17. package/dist/templates/layout.js +16 -9
  18. package/dist/templates/layout.js.map +1 -1
  19. package/dist/templates/page-auth.d.ts +1 -1
  20. package/dist/templates/page-auth.d.ts.map +1 -1
  21. package/dist/templates/page-auth.js +20 -7
  22. package/dist/templates/page-auth.js.map +1 -1
  23. package/dist/templates/page-blog-post.d.ts +2 -2
  24. package/dist/templates/page-blog-post.d.ts.map +1 -1
  25. package/dist/templates/page-blog-post.js +38 -1
  26. package/dist/templates/page-blog-post.js.map +1 -1
  27. package/dist/templates/page-calendar.d.ts +2 -2
  28. package/dist/templates/page-calendar.d.ts.map +1 -1
  29. package/dist/templates/page-calendar.js +31 -3
  30. package/dist/templates/page-calendar.js.map +1 -1
  31. package/dist/templates/page-cart.d.ts +2 -2
  32. package/dist/templates/page-cart.d.ts.map +1 -1
  33. package/dist/templates/page-cart.js +27 -2
  34. package/dist/templates/page-cart.js.map +1 -1
  35. package/dist/templates/page-checkout.d.ts +2 -2
  36. package/dist/templates/page-checkout.d.ts.map +1 -1
  37. package/dist/templates/page-checkout.js +19 -2
  38. package/dist/templates/page-checkout.js.map +1 -1
  39. package/dist/templates/page-contact.d.ts +1 -2
  40. package/dist/templates/page-contact.d.ts.map +1 -1
  41. package/dist/templates/page-contact.js +83 -83
  42. package/dist/templates/page-contact.js.map +1 -1
  43. package/dist/templates/page-dashboard.d.ts +2 -2
  44. package/dist/templates/page-dashboard.d.ts.map +1 -1
  45. package/dist/templates/page-dashboard.js +30 -3
  46. package/dist/templates/page-dashboard.js.map +1 -1
  47. package/dist/templates/page-detail.d.ts +2 -2
  48. package/dist/templates/page-detail.d.ts.map +1 -1
  49. package/dist/templates/page-detail.js +156 -8
  50. package/dist/templates/page-detail.js.map +1 -1
  51. package/dist/templates/page-feed.d.ts +2 -2
  52. package/dist/templates/page-feed.d.ts.map +1 -1
  53. package/dist/templates/page-feed.js +44 -3
  54. package/dist/templates/page-feed.js.map +1 -1
  55. package/dist/templates/page-form.d.ts.map +1 -1
  56. package/dist/templates/page-form.js +341 -43
  57. package/dist/templates/page-form.js.map +1 -1
  58. package/dist/templates/page-gallery.d.ts +2 -2
  59. package/dist/templates/page-gallery.d.ts.map +1 -1
  60. package/dist/templates/page-gallery.js +36 -2
  61. package/dist/templates/page-gallery.js.map +1 -1
  62. package/dist/templates/page-invoice.d.ts +2 -2
  63. package/dist/templates/page-invoice.d.ts.map +1 -1
  64. package/dist/templates/page-invoice.js +40 -1
  65. package/dist/templates/page-invoice.js.map +1 -1
  66. package/dist/templates/page-kanban.d.ts +2 -2
  67. package/dist/templates/page-kanban.d.ts.map +1 -1
  68. package/dist/templates/page-kanban.js +29 -4
  69. package/dist/templates/page-kanban.js.map +1 -1
  70. package/dist/templates/page-landing-hero-cta.d.ts +3 -0
  71. package/dist/templates/page-landing-hero-cta.d.ts.map +1 -0
  72. package/dist/templates/page-landing-hero-cta.js +54 -0
  73. package/dist/templates/page-landing-hero-cta.js.map +1 -0
  74. package/dist/templates/page-landing-hero-features.d.ts +3 -0
  75. package/dist/templates/page-landing-hero-features.d.ts.map +1 -0
  76. package/dist/templates/page-landing-hero-features.js +45 -0
  77. package/dist/templates/page-landing-hero-features.js.map +1 -0
  78. package/dist/templates/page-landing-hero-pricing.d.ts +3 -0
  79. package/dist/templates/page-landing-hero-pricing.d.ts.map +1 -0
  80. package/dist/templates/page-landing-hero-pricing.js +46 -0
  81. package/dist/templates/page-landing-hero-pricing.js.map +1 -0
  82. package/dist/templates/page-landing-minimal.d.ts +3 -0
  83. package/dist/templates/page-landing-minimal.d.ts.map +1 -0
  84. package/dist/templates/page-landing-minimal.js +26 -0
  85. package/dist/templates/page-landing-minimal.js.map +1 -0
  86. package/dist/templates/page-list.d.ts +2 -2
  87. package/dist/templates/page-list.d.ts.map +1 -1
  88. package/dist/templates/page-list.js +96 -11
  89. package/dist/templates/page-list.js.map +1 -1
  90. package/dist/templates/page-otp-entry.d.ts +2 -2
  91. package/dist/templates/page-otp-entry.d.ts.map +1 -1
  92. package/dist/templates/page-otp-entry.js +23 -2
  93. package/dist/templates/page-otp-entry.js.map +1 -1
  94. package/dist/templates/page-otp-request.d.ts +2 -2
  95. package/dist/templates/page-otp-request.d.ts.map +1 -1
  96. package/dist/templates/page-otp-request.js +18 -2
  97. package/dist/templates/page-otp-request.js.map +1 -1
  98. package/dist/templates/page-profile.d.ts +2 -2
  99. package/dist/templates/page-profile.d.ts.map +1 -1
  100. package/dist/templates/page-profile.js +37 -1
  101. package/dist/templates/page-profile.js.map +1 -1
  102. package/dist/templates/page-reset-password.d.ts +3 -0
  103. package/dist/templates/page-reset-password.d.ts.map +1 -0
  104. package/dist/templates/page-reset-password.js +122 -0
  105. package/dist/templates/page-reset-password.js.map +1 -0
  106. package/dist/templates/page-search.d.ts +2 -2
  107. package/dist/templates/page-search.d.ts.map +1 -1
  108. package/dist/templates/page-search.js +22 -2
  109. package/dist/templates/page-search.js.map +1 -1
  110. package/dist/templates/page-settings.d.ts +2 -2
  111. package/dist/templates/page-settings.d.ts.map +1 -1
  112. package/dist/templates/page-settings.js +48 -4
  113. package/dist/templates/page-settings.js.map +1 -1
  114. package/dist/templates/page-wallet.d.ts +2 -2
  115. package/dist/templates/page-wallet.d.ts.map +1 -1
  116. package/dist/templates/page-wallet.js +44 -2
  117. package/dist/templates/page-wallet.js.map +1 -1
  118. package/package.json +1 -1
@@ -3,23 +3,70 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.generateListPage = generateListPage;
5
5
  const generator_core_1 = require("@underpeaks/generator-core");
6
- function generateListPage(page, model) {
6
+ function toRoutePath(slug) {
7
+ return slug.replace(/^\//, '');
8
+ }
9
+ function generateListPage(page, model, projectType,
10
+ // NAVIGATOR: routes originating from this page, and the full page list
11
+ // so a route's to_page_id can be resolved to a real path. Both default
12
+ // to [] so this stays backward compatible with any caller that hasn't
13
+ // been updated yet.
14
+ routes = [], allPages = []) {
7
15
  const className = (0, generator_core_1.modelToClassName)(model.name);
8
16
  const fileName = (0, generator_core_1.modelToFileName)(model.name);
9
17
  const pk = (0, generator_core_1.getPrimaryKey)(model);
10
18
  const pkName = pk?.name ?? 'id';
11
- const columns = (0, generator_core_1.getVisibleColumns)(model).slice(0, 4);
12
19
  const isGrid = page.template_type === 'grid';
13
20
  const routePath = page.slug.replace(/^\//, '');
14
21
  const modelSlug = model.name.replace('nxf_', '').replace(/_/g, '-');
22
+ const selection = (0, generator_core_1.selectCardFields)(model, projectType);
23
+ const tableColumns = (0, generator_core_1.getVisibleColumns)(model).slice(0, 4);
24
+ // ── NAVIGATOR: tap (card-tap override) / button triggers ──────────────
25
+ // Default behavior (tap -> this model's own detail page) is unchanged
26
+ // UNLESS a route explicitly exists with trigger 'tap' AND
27
+ // attach_to 'card-tap' targeting a different, non-id-requiring page —
28
+ // in that case every card/row in this list navigates there instead.
29
+ // 'button' renders an extra button below the content; both skip
30
+ // rendering (with a comment) if the target page itself requires a
31
+ // record id we don't have.
32
+ const tapRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'tap' && r.attach_to === 'card-tap');
33
+ const buttonRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'button');
34
+ const tapTarget = tapRoute ? allPages.find((p) => p.page_id === tapRoute.to_page_id) : undefined;
35
+ const buttonTarget = buttonRoute ? allPages.find((p) => p.page_id === buttonRoute.to_page_id) : undefined;
36
+ const tapTargetUsable = !!tapTarget && tapTarget.template_type !== 'detail';
37
+ const buttonTargetUsable = !!buttonTarget && buttonTarget.template_type !== 'detail';
38
+ // Returns a complete JSX href attribute — either a static override, or
39
+ // the default per-item dynamic link, so callers just splice this in.
40
+ function detailHrefAttr() {
41
+ if (tapTargetUsable)
42
+ return `href="/${toRoutePath(tapTarget.slug)}"`;
43
+ return `href={\`/${routePath}/\${item.${pkName}}\`}`;
44
+ }
45
+ const buttonLabel = (buttonRoute?.label && buttonRoute.label.trim()) || 'Continue';
15
46
  const lines = [];
16
47
  lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
17
48
  lines.push(`// Page: ${page.name} — ${page.template_type}`);
18
49
  lines.push(`// Presentation layer — generated once, you own this file.`);
19
50
  lines.push(`// Regenerate: nxf generate nextjs --include-views`);
20
51
  lines.push(`// WARNING: --include-views will overwrite your changes.`);
52
+ if (isGrid) {
53
+ lines.push(`// NOTE: the fields shown on each card are a BEST GUESS based on field`);
54
+ lines.push(`// names and this project's type — we might have picked the wrong ones.`);
55
+ lines.push(`// Feel free to swap which fields are shown below.`);
56
+ }
57
+ if (tapRoute && !tapTargetUsable) {
58
+ lines.push(`// NAVIGATOR: a card-tap route exists but its target ('${tapRoute.to_page_id}') requires`);
59
+ lines.push(`// a record id we don't have here — falling back to default tap-to-detail.`);
60
+ }
61
+ if (buttonRoute && !buttonTargetUsable) {
62
+ lines.push(`// NAVIGATOR: a button route exists but its target ('${buttonRoute.to_page_id}') requires`);
63
+ lines.push(`// a record id we don't have here — button not rendered.`);
64
+ }
21
65
  lines.push(``);
22
66
  lines.push(`import Link from 'next/link'`);
67
+ if (isGrid && selection.imageField) {
68
+ lines.push(`import Image from 'next/image'`);
69
+ }
23
70
  lines.push(`import { notFound } from 'next/navigation'`);
24
71
  lines.push(`import type { ${className} } from '../../../generated/types/${fileName}.types'`);
25
72
  lines.push(``);
@@ -59,14 +106,40 @@ function generateListPage(page, model) {
59
106
  lines.push(` {items.map((item) => (`);
60
107
  lines.push(` <Link`);
61
108
  lines.push(` key={item.${pkName}}`);
62
- lines.push(` href={\`/${routePath}/\${item.${pkName}}\`}`);
63
- lines.push(` className="block p-4 bg-white border border-gray-200 rounded-xl hover:border-gray-400 transition"`);
109
+ lines.push(` ${detailHrefAttr()}`);
110
+ lines.push(` className="block bg-white border border-gray-200 rounded-xl hover:border-gray-400 transition overflow-hidden"`);
64
111
  lines.push(` >`);
65
- if (columns[0]) {
66
- lines.push(` <p className="font-semibold text-gray-900 truncate">{item.${columns[0].name}?.toString() ?? '—'}</p>`);
112
+ if (selection.allFields) {
113
+ lines.push(` <div className="p-4">`);
114
+ for (const col of selection.allFields) {
115
+ lines.push(` <p className="text-sm text-gray-700 truncate">{item.${col.name}?.toString() ?? '—'}</p>`);
116
+ }
117
+ lines.push(` </div>`);
67
118
  }
68
- if (columns[1]) {
69
- lines.push(` <p className="text-sm text-gray-500 mt-1 truncate">{item.${columns[1].name}?.toString() ?? ''}</p>`);
119
+ else {
120
+ if (selection.imageField) {
121
+ lines.push(` <div className="relative w-full aspect-video bg-gray-100">`);
122
+ lines.push(` {item.${selection.imageField.name} ? (`);
123
+ lines.push(` <Image`);
124
+ lines.push(` src={item.${selection.imageField.name} as string}`);
125
+ lines.push(` alt={item.${selection.titleField?.name ?? pkName}?.toString() ?? ''}`);
126
+ lines.push(` fill`);
127
+ lines.push(` className="object-cover"`);
128
+ lines.push(` />`);
129
+ lines.push(` ) : (`);
130
+ lines.push(` <div className="w-full h-full flex items-center justify-center text-gray-300 text-2xl">🖼</div>`);
131
+ lines.push(` )}`);
132
+ lines.push(` </div>`);
133
+ }
134
+ lines.push(` <div className="p-4">`);
135
+ lines.push(` <p className="font-semibold text-gray-900 truncate">{item.${selection.titleField?.name ?? pkName}?.toString() ?? '—'}</p>`);
136
+ for (const metaField of selection.metaFields) {
137
+ lines.push(` <p className="text-sm text-gray-500 mt-1 truncate">{item.${metaField.name}?.toString() ?? ''}</p>`);
138
+ }
139
+ if (selection.priceField) {
140
+ lines.push(` <p className="text-sm font-bold text-gray-900 mt-2">{item.${selection.priceField.name}?.toString() ?? ''}</p>`);
141
+ }
142
+ lines.push(` </div>`);
70
143
  }
71
144
  lines.push(` </Link>`);
72
145
  lines.push(` ))}`);
@@ -84,7 +157,7 @@ function generateListPage(page, model) {
84
157
  lines.push(` <table className="w-full text-sm">`);
85
158
  lines.push(` <thead className="bg-gray-50 border-b border-gray-200">`);
86
159
  lines.push(` <tr>`);
87
- for (const col of columns) {
160
+ for (const col of tableColumns) {
88
161
  const label = col.name.replaceAll('_', ' ');
89
162
  lines.push(` <th className="px-4 py-3 text-left font-medium text-gray-600 capitalize">${label}</th>`);
90
163
  }
@@ -94,12 +167,12 @@ function generateListPage(page, model) {
94
167
  lines.push(` <tbody className="divide-y divide-gray-100">`);
95
168
  lines.push(` {items.map((item) => (`);
96
169
  lines.push(` <tr key={item.${pkName}} className="hover:bg-gray-50 transition">`);
97
- for (const col of columns) {
170
+ for (const col of tableColumns) {
98
171
  lines.push(` <td className="px-4 py-3 text-gray-700">{item.${col.name}?.toString() ?? '—'}</td>`);
99
172
  }
100
173
  lines.push(` <td className="px-4 py-3 text-right">`);
101
174
  lines.push(` <Link`);
102
- lines.push(` href={\`/${routePath}/\${item.${pkName}}\`}`);
175
+ lines.push(` ${detailHrefAttr()}`);
103
176
  lines.push(` className="text-blue-600 hover:underline text-xs font-medium mr-3"`);
104
177
  lines.push(` >`);
105
178
  lines.push(` View`);
@@ -118,6 +191,18 @@ function generateListPage(page, model) {
118
191
  lines.push(` </div>`);
119
192
  lines.push(` )}`);
120
193
  }
194
+ if (buttonTargetUsable) {
195
+ lines.push(``);
196
+ lines.push(` {/* NAVIGATOR: button-trigger route wired to '${buttonTarget.name}' */}`);
197
+ lines.push(` <div className="mt-6">`);
198
+ lines.push(` <Link`);
199
+ lines.push(` href="/${toRoutePath(buttonTarget.slug)}"`);
200
+ lines.push(` className="block w-full text-center px-4 py-3 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 transition"`);
201
+ lines.push(` >`);
202
+ lines.push(` ${buttonLabel}`);
203
+ lines.push(` </Link>`);
204
+ lines.push(` </div>`);
205
+ }
121
206
  lines.push(` </div>`);
122
207
  lines.push(` )`);
123
208
  lines.push(`}`);
@@ -1 +1 @@
1
- {"version":3,"file":"page-list.js","sourceRoot":"","sources":["../../src/templates/page-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-list.js","sourceRoot":"","sources":["../../src/templates/page-list.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
- export declare function generateOtpEntryPage(page: PageDef): GeneratedFile;
1
+ import type { PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateOtpEntryPage(page: PageDef, routes?: PageRoute[], allPages?: PageDef[]): GeneratedFile;
3
3
  //# sourceMappingURL=page-otp-entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-otp-entry.d.ts","sourceRoot":"","sources":["../../src/templates/page-otp-entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAExE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAkFjE"}
1
+ {"version":3,"file":"page-otp-entry.d.ts","sourceRoot":"","sources":["../../src/templates/page-otp-entry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAMnF,wBAAgB,oBAAoB,CAClC,IAAI,EAAM,OAAO,EAKjB,MAAM,GAAI,SAAS,EAAO,EAC1B,QAAQ,GAAE,OAAO,EAAS,GACzB,aAAa,CA+Ff"}
@@ -2,13 +2,34 @@
2
2
  // File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-otp-entry.ts
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.generateOtpEntryPage = generateOtpEntryPage;
5
- function generateOtpEntryPage(page) {
5
+ function toRoutePath(slug) {
6
+ return slug.replace(/^\//, '');
7
+ }
8
+ function generateOtpEntryPage(page,
9
+ // NAVIGATOR: post-verify destination was hardcoded to '/' — now overridable
10
+ // via a button-trigger route with attach_to: 'primary-action' (the only
11
+ // attach_to value that makes sense for a single verify action). Falls back
12
+ // to '/' if no such route is configured.
13
+ routes = [], allPages = []) {
6
14
  const routePath = page.slug.replace(/^\//, '');
15
+ const primaryRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'button' && r.attach_to === 'primary-action');
16
+ const primaryTarget = primaryRoute ? allPages.find((p) => p.page_id === primaryRoute.to_page_id) : undefined;
17
+ const redirectPath = primaryTarget ? `/${toRoutePath(primaryTarget.slug)}` : '/';
7
18
  const lines = [];
8
19
  lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
9
20
  lines.push(`// Page: ${page.name} — otp_entry`);
10
21
  lines.push(`// Presentation layer — generated once, you own this file.`);
11
22
  lines.push(`// Regenerate: nxf generate nextjs --include-views`);
23
+ if (primaryRoute && !primaryTarget) {
24
+ lines.push(`// NAVIGATOR: a primary-action route exists but its target page could not be`);
25
+ lines.push(`// resolved — falling back to '/' after verify.`);
26
+ }
27
+ else if (primaryTarget) {
28
+ lines.push(`// NAVIGATOR: primary-action route wired to '${primaryTarget.name}'`);
29
+ }
30
+ else {
31
+ lines.push(`// NAVIGATOR: no primary-action route configured — falling back to '/' after verify.`);
32
+ }
12
33
  lines.push(``);
13
34
  lines.push(`'use client'`);
14
35
  lines.push(`import { useState, useRef } from 'react'`);
@@ -44,7 +65,7 @@ function generateOtpEntryPage(page) {
44
65
  lines.push(` body: JSON.stringify({ phone, otp: code }),`);
45
66
  lines.push(` })`);
46
67
  lines.push(` if (!res.ok) throw new Error('Invalid OTP')`);
47
- lines.push(` router.push('/')`);
68
+ lines.push(` router.push('${redirectPath}')`);
48
69
  lines.push(` } catch (err: any) {`);
49
70
  lines.push(` setError(err.message)`);
50
71
  lines.push(` setOtp(Array(6).fill(''))`);
@@ -1 +1 @@
1
- {"version":3,"file":"page-otp-entry.js","sourceRoot":"","sources":["../../src/templates/page-otp-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-otp-entry.js","sourceRoot":"","sources":["../../src/templates/page-otp-entry.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
- export declare function generateOtpRequestPage(page: PageDef): GeneratedFile;
1
+ import type { PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateOtpRequestPage(page: PageDef, routes?: PageRoute[], allPages?: PageDef[]): GeneratedFile;
3
3
  //# sourceMappingURL=page-otp-request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-otp-request.d.ts","sourceRoot":"","sources":["../../src/templates/page-otp-request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAExE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAmEnE"}
1
+ {"version":3,"file":"page-otp-request.d.ts","sourceRoot":"","sources":["../../src/templates/page-otp-request.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAUnF,wBAAgB,sBAAsB,CACpC,IAAI,EAAM,OAAO,EACjB,MAAM,GAAI,SAAS,EAAO,EAC1B,QAAQ,GAAE,OAAO,EAAS,GACzB,aAAa,CA8Ef"}
@@ -2,13 +2,29 @@
2
2
  // File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-otp-request.ts
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.generateOtpRequestPage = generateOtpRequestPage;
5
- function generateOtpRequestPage(page) {
5
+ function toRoutePath(slug) {
6
+ return slug.replace(/^\//, '');
7
+ }
8
+ // FIX: redirect to the OTP entry screen hardcoded '/otp-entry' — no
9
+ // guarantee a page exists at that exact slug. Only overridden by an
10
+ // explicit 'button' trigger route on this page — no template-type
11
+ // guessing. Without one, the old hardcoded literal stays, flagged below.
12
+ function generateOtpRequestPage(page, routes = [], allPages = []) {
6
13
  const routePath = page.slug.replace(/^\//, '');
14
+ const buttonRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'button');
15
+ const buttonTarget = buttonRoute ? allPages.find((p) => p.page_id === buttonRoute.to_page_id) : undefined;
16
+ const buttonTargetUsable = !!buttonTarget && buttonTarget.template_type !== 'detail';
17
+ const otpEntryRoute = buttonTargetUsable ? `/${toRoutePath(buttonTarget.slug)}` : '/otp-entry';
7
18
  const lines = [];
8
19
  lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
9
20
  lines.push(`// Page: ${page.name} — otp_request`);
10
21
  lines.push(`// Presentation layer — generated once, you own this file.`);
11
22
  lines.push(`// Regenerate: nxf generate nextjs --include-views`);
23
+ if (!buttonTargetUsable) {
24
+ lines.push(`// NOTE: falls back to hardcoded '/otp-entry' — there's no guarantee a page`);
25
+ lines.push(`// exists at that path. Add a 'button' trigger route on this page in`);
26
+ lines.push(`// Navigator to point it at the real OTP entry page.`);
27
+ }
12
28
  lines.push(``);
13
29
  lines.push(`'use client'`);
14
30
  lines.push(`import { useState } from 'react'`);
@@ -31,7 +47,7 @@ function generateOtpRequestPage(page) {
31
47
  lines.push(` body: JSON.stringify({ phone }),`);
32
48
  lines.push(` })`);
33
49
  lines.push(` if (!res.ok) throw new Error('Failed to send OTP')`);
34
- lines.push(` router.push(\`/otp-entry?phone=\${encodeURIComponent(phone)}\`)`);
50
+ lines.push(` router.push(\`${otpEntryRoute}?phone=\${encodeURIComponent(phone)}\`)`);
35
51
  lines.push(` } catch (err: any) {`);
36
52
  lines.push(` setError(err.message)`);
37
53
  lines.push(` } finally {`);
@@ -1 +1 @@
1
- {"version":3,"file":"page-otp-request.js","sourceRoot":"","sources":["../../src/templates/page-otp-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-otp-request.js","sourceRoot":"","sources":["../../src/templates/page-otp-request.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { Model, PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
- export declare function generateProfilePage(page: PageDef, model?: Model): GeneratedFile;
1
+ import type { Model, PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateProfilePage(page: PageDef, model?: Model, routes?: PageRoute[], allPages?: PageDef[]): GeneratedFile;
3
3
  //# sourceMappingURL=page-profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-profile.d.ts","sourceRoot":"","sources":["../../src/templates/page-profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG/E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,aAAa,CAgE/E"}
1
+ {"version":3,"file":"page-profile.d.ts","sourceRoot":"","sources":["../../src/templates/page-profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAO1F,wBAAgB,mBAAmB,CACjC,IAAI,EAAM,OAAO,EACjB,KAAK,CAAC,EAAI,KAAK,EAGf,MAAM,GAAI,SAAS,EAAO,EAC1B,QAAQ,GAAE,OAAO,EAAS,GACzB,aAAa,CAkGf"}
@@ -3,18 +3,39 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.generateProfilePage = generateProfilePage;
5
5
  const generator_core_1 = require("@underpeaks/generator-core");
6
- function generateProfilePage(page, model) {
6
+ function toRoutePath(slug) {
7
+ return slug.replace(/^\//, '');
8
+ }
9
+ function generateProfilePage(page, model,
10
+ // NAVIGATOR: functionally a detail page — same back/button pattern as
11
+ // page-detail.ts.
12
+ routes = [], allPages = []) {
7
13
  const routePath = page.slug.replace(/^\//, '');
8
14
  const className = model ? (0, generator_core_1.modelToClassName)(model.name) : 'Item';
9
15
  const fileName = model ? (0, generator_core_1.modelToFileName)(model.name) : 'item';
10
16
  const pk = model ? (0, generator_core_1.getPrimaryKey)(model) : null;
11
17
  const pkName = pk?.name ?? 'id';
12
18
  const columns = model ? (0, generator_core_1.getVisibleColumns)(model) : [];
19
+ const backRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'back');
20
+ const buttonRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'button');
21
+ const backTarget = backRoute ? allPages.find((p) => p.page_id === backRoute.to_page_id) : undefined;
22
+ const buttonTarget = buttonRoute ? allPages.find((p) => p.page_id === buttonRoute.to_page_id) : undefined;
23
+ const backTargetUsable = !!backTarget && backTarget.template_type !== 'detail' && backTarget.template_type !== 'profile';
24
+ const buttonTargetUsable = !!buttonTarget && buttonTarget.template_type !== 'detail' && buttonTarget.template_type !== 'profile';
25
+ const buttonLabel = (buttonRoute?.label && buttonRoute.label.trim()) || 'Continue';
13
26
  const lines = [];
14
27
  lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
15
28
  lines.push(`// Page: ${page.name} — profile`);
16
29
  lines.push(`// Presentation layer — generated once, you own this file.`);
17
30
  lines.push(`// Regenerate: nxf generate nextjs --include-views`);
31
+ if (backRoute && !backTargetUsable) {
32
+ lines.push(`// NAVIGATOR: a 'back' route exists but its target ('${backRoute.to_page_id}') requires`);
33
+ lines.push(`// a record id we don't have here — no back link rendered.`);
34
+ }
35
+ if (buttonRoute && !buttonTargetUsable) {
36
+ lines.push(`// NAVIGATOR: a 'button' route exists but its target ('${buttonRoute.to_page_id}') requires`);
37
+ lines.push(`// a record id we don't have here — button not rendered.`);
38
+ }
18
39
  lines.push(``);
19
40
  lines.push(`import type { ${className} } from '../../../../generated/types/${fileName}.types'`);
20
41
  lines.push(`import { notFound } from 'next/navigation'`);
@@ -35,6 +56,12 @@ function generateProfilePage(page, model) {
35
56
  lines.push(` if (!item) notFound()`);
36
57
  lines.push(` return (`);
37
58
  lines.push(` <div className="container mx-auto px-4 py-8 max-w-2xl">`);
59
+ if (backTargetUsable) {
60
+ lines.push(` {/* NAVIGATOR: back-trigger route wired to '${backTarget.name}' */}`);
61
+ lines.push(` <Link href="/${toRoutePath(backTarget.slug)}" className="text-sm text-gray-500 hover:text-gray-900 inline-block mb-4">`);
62
+ lines.push(` ← Back`);
63
+ lines.push(` </Link>`);
64
+ }
38
65
  lines.push(` <div className="bg-white border border-gray-200 rounded-xl overflow-hidden">`);
39
66
  lines.push(` <div className="h-32 bg-gray-100" />`);
40
67
  lines.push(` <div className="px-6 pb-6">`);
@@ -56,6 +83,15 @@ function generateProfilePage(page, model) {
56
83
  lines.push(` </div>`);
57
84
  lines.push(` </div>`);
58
85
  lines.push(` </div>`);
86
+ if (buttonTargetUsable) {
87
+ lines.push(` {/* NAVIGATOR: button-trigger route wired to '${buttonTarget.name}' */}`);
88
+ lines.push(` <div className="mt-6">`);
89
+ lines.push(` <Link href="/${toRoutePath(buttonTarget.slug)}"`);
90
+ lines.push(` className="block text-center px-6 py-2.5 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 transition">`);
91
+ lines.push(` ${buttonLabel}`);
92
+ lines.push(` </Link>`);
93
+ lines.push(` </div>`);
94
+ }
59
95
  lines.push(` </div>`);
60
96
  lines.push(` )`);
61
97
  lines.push(`}`);
@@ -1 +1 @@
1
- {"version":3,"file":"page-profile.js","sourceRoot":"","sources":["../../src/templates/page-profile.ts"],"names":[],"mappings":";AAAA,mFAAmF;;AAKnF,kDAgEC;AAlED,+DAAgH;AAEhH,SAAgB,mBAAmB,CAAC,IAAa,EAAE,KAAa;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,iCAAgB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC/D,MAAM,QAAQ,GAAI,KAAK,CAAC,CAAC,CAAC,IAAA,gCAAe,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9D,MAAM,EAAE,GAAU,KAAK,CAAC,CAAC,CAAC,IAAA,8BAAa,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACrD,MAAM,MAAM,GAAM,EAAE,EAAE,IAAI,IAAI,IAAI,CAAA;IAClC,MAAM,OAAO,GAAK,KAAK,CAAC,CAAC,CAAC,IAAA,kCAAiB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEvD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,YAAY,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;IACxE,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,wCAAwC,QAAQ,SAAS,CAAC,CAAA;IAC/F,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IACxD,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+CAA+C,SAAS,YAAY,CAAC,CAAA;IAChF,KAAK,CAAC,IAAI,CAAC,uEAAuE,QAAQ,mCAAmC,CAAC,CAAA;IAC9H,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACnD,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAChC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,uCAAuC,MAAM,eAAe,CAAC,CAAA;IACxE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;IAC5E,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,mBAAmB,CAAC,CAAA;IAClD,KAAK,CAAC,IAAI,CAAC,gCAAgC,MAAM,GAAG,CAAC,CAAA;IACrD,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IACzE,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAA;IAChG,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;IACrD,KAAK,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAA;IACtJ,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC3C,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAA;QACzG,KAAK,CAAC,IAAI,CAAC,kEAAkE,KAAK,SAAS,CAAC,CAAA;QAC5F,KAAK,CAAC,IAAI,CAAC,2DAA2D,GAAG,CAAC,IAAI,6BAA6B,CAAC,CAAA;QAC5G,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,8BAA8B,SAAS,YAAY,MAAM,WAAW,CAAC,CAAA;IAChF,KAAK,CAAC,IAAI,CAAC,wHAAwH,CAAC,CAAA;IACpI,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;IACxC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC9B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,sBAAsB,SAAS,KAAK,MAAM,YAAY;QAChE,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,cAAc;KACzB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"page-profile.js","sourceRoot":"","sources":["../../src/templates/page-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateResetPasswordPage(page: PageDef, routes?: PageRoute[], allPages?: PageDef[]): GeneratedFile;
3
+ //# sourceMappingURL=page-reset-password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-reset-password.d.ts","sourceRoot":"","sources":["../../src/templates/page-reset-password.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAWnF,wBAAgB,yBAAyB,CACvC,IAAI,EAAM,OAAO,EACjB,MAAM,GAAI,SAAS,EAAO,EAC1B,QAAQ,GAAE,OAAO,EAAS,GACzB,aAAa,CAiHf"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-reset-password.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateResetPasswordPage = generateResetPasswordPage;
5
+ function toRoutePath(slug) {
6
+ return slug.replace(/^\//, '');
7
+ }
8
+ // NEW FILE — this template_type had no Next.js handler at all before
9
+ // (unlike Flutter, which has a real reset-password page). Post-reset
10
+ // redirect is only set by an explicit 'button' trigger route on this
11
+ // page — no template-type guessing. Without one, falls back to a
12
+ // hardcoded '/sign-in' literal, flagged below.
13
+ function generateResetPasswordPage(page, routes = [], allPages = []) {
14
+ const routePath = page.slug.replace(/^\//, '');
15
+ const buttonRoute = routes.find((r) => r.from_page_id === page.page_id && r.trigger === 'button');
16
+ const buttonTarget = buttonRoute ? allPages.find((p) => p.page_id === buttonRoute.to_page_id) : undefined;
17
+ const buttonTargetUsable = !!buttonTarget && buttonTarget.template_type !== 'detail';
18
+ const signInRoute = buttonTargetUsable ? `/${toRoutePath(buttonTarget.slug)}` : '/sign-in';
19
+ const lines = [];
20
+ lines.push(`'use client'`);
21
+ lines.push(``);
22
+ lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
23
+ lines.push(`// Page: Reset Password`);
24
+ lines.push(`// Presentation layer — generated once, you own this file.`);
25
+ if (!buttonTargetUsable) {
26
+ lines.push(`// NOTE: "Back to Sign In" falls back to hardcoded '/sign-in' — there's no`);
27
+ lines.push(`// guarantee a page exists at that path. Add a 'button' trigger route on`);
28
+ lines.push(`// this page in Navigator to point it somewhere real.`);
29
+ }
30
+ lines.push(``);
31
+ lines.push(`import { useState } from 'react'`);
32
+ lines.push(`import { useRouter,`);
33
+ lines.push(` useSearchParams } from 'next/navigation'`);
34
+ lines.push(`import Link from 'next/link'`);
35
+ lines.push(`import { validatePassword } from '@/lib/validators'`);
36
+ lines.push(``);
37
+ lines.push(`export default function ResetPasswordPage() {`);
38
+ lines.push(` const router = useRouter()`);
39
+ lines.push(` const searchParams = useSearchParams()`);
40
+ lines.push(` const token = searchParams.get('token') ?? ''`);
41
+ lines.push(` const [password, setPassword] = useState('')`);
42
+ lines.push(` const [confirm, setConfirm] = useState('')`);
43
+ lines.push(` const [loading, setLoading] = useState(false)`);
44
+ lines.push(` const [done, setDone] = useState(false)`);
45
+ lines.push(` const [error, setError] = useState<string | null>(null)`);
46
+ lines.push(``);
47
+ lines.push(` async function handleSubmit(e: React.FormEvent) {`);
48
+ lines.push(` e.preventDefault()`);
49
+ lines.push(``);
50
+ lines.push(` const passError = validatePassword(password)`);
51
+ lines.push(` if (passError) { setError(passError); return }`);
52
+ lines.push(` if (password !== confirm) { setError('Passwords do not match'); return }`);
53
+ lines.push(``);
54
+ lines.push(` setLoading(true)`);
55
+ lines.push(` setError(null)`);
56
+ lines.push(` try {`);
57
+ lines.push(` const res = await fetch('/api/auth/reset-password', {`);
58
+ lines.push(` method: 'POST',`);
59
+ lines.push(` headers: { 'Content-Type': 'application/json' },`);
60
+ lines.push(` body: JSON.stringify({ token, password }),`);
61
+ lines.push(` })`);
62
+ lines.push(` if (!res.ok) {`);
63
+ lines.push(` const data = await res.json()`);
64
+ lines.push(` throw new Error(data.error ?? 'Reset failed')`);
65
+ lines.push(` }`);
66
+ lines.push(` setDone(true)`);
67
+ lines.push(` setTimeout(() => router.push('${signInRoute}'), 2000)`);
68
+ lines.push(` } catch (err: any) {`);
69
+ lines.push(` setError(err.message)`);
70
+ lines.push(` } finally {`);
71
+ lines.push(` setLoading(false)`);
72
+ lines.push(` }`);
73
+ lines.push(` }`);
74
+ lines.push(``);
75
+ lines.push(` if (done) {`);
76
+ lines.push(` return (`);
77
+ lines.push(` <div className="min-h-screen flex items-center justify-center bg-gray-50">`);
78
+ lines.push(` <div className="text-center">`);
79
+ lines.push(` <div className="text-5xl mb-4">✅</div>`);
80
+ lines.push(` <h1 className="text-2xl font-bold mb-2">Password reset!</h1>`);
81
+ lines.push(` <p className="text-gray-500">Redirecting to sign in...</p>`);
82
+ lines.push(` </div>`);
83
+ lines.push(` </div>`);
84
+ lines.push(` )`);
85
+ lines.push(` }`);
86
+ lines.push(``);
87
+ lines.push(` return (`);
88
+ lines.push(` <div className="min-h-screen flex items-center justify-center bg-gray-50 px-4">`);
89
+ lines.push(` <div className="w-full max-w-sm">`);
90
+ lines.push(` <h1 className="text-2xl font-bold text-center mb-8">New Password</h1>`);
91
+ lines.push(` <form onSubmit={handleSubmit} className="bg-white border border-gray-200 rounded-xl p-6 flex flex-col gap-4">`);
92
+ lines.push(` <div className="flex flex-col gap-1">`);
93
+ lines.push(` <label className="text-sm font-medium text-gray-700">New Password</label>`);
94
+ lines.push(` <input type="password" value={password} onChange={(e) => setPassword(e.target.value)} required minLength={8}`);
95
+ lines.push(` className="px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-black" />`);
96
+ lines.push(` <p className="text-xs text-gray-500">Min 8 chars, upper + lower, number, symbol</p>`);
97
+ lines.push(` </div>`);
98
+ lines.push(` <div className="flex flex-col gap-1">`);
99
+ lines.push(` <label className="text-sm font-medium text-gray-700">Confirm Password</label>`);
100
+ lines.push(` <input type="password" value={confirm} onChange={(e) => setConfirm(e.target.value)} required`);
101
+ lines.push(` className="px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-black" />`);
102
+ lines.push(` </div>`);
103
+ lines.push(` {error && <p className="text-sm text-red-500">{error}</p>}`);
104
+ lines.push(` <button type="submit" disabled={loading}`);
105
+ lines.push(` className="py-2.5 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 disabled:opacity-40 transition">`);
106
+ lines.push(` {loading ? 'Resetting...' : 'Reset Password'}`);
107
+ lines.push(` </button>`);
108
+ lines.push(` <Link href="${signInRoute}" className="text-sm text-center text-gray-500 hover:text-gray-900">`);
109
+ lines.push(` Back to Sign In`);
110
+ lines.push(` </Link>`);
111
+ lines.push(` </form>`);
112
+ lines.push(` </div>`);
113
+ lines.push(` </div>`);
114
+ lines.push(` )`);
115
+ lines.push(`}`);
116
+ return {
117
+ path: `app/(presentation)/${routePath}/page.tsx`,
118
+ content: lines.join('\n'),
119
+ category: 'customizable',
120
+ };
121
+ }
122
+ //# sourceMappingURL=page-reset-password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-reset-password.js","sourceRoot":"","sources":["../../src/templates/page-reset-password.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { Model, PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
- export declare function generateSearchPage(page: PageDef, model?: Model): GeneratedFile;
1
+ import type { Model, PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateSearchPage(page: PageDef, model?: Model, routes?: PageRoute[], allPages?: PageDef[]): GeneratedFile;
3
3
  //# sourceMappingURL=page-search.d.ts.map