@underpeaks/generator-nextjs 1.0.19

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 (185) hide show
  1. package/dist/generator.d.ts +3 -0
  2. package/dist/generator.d.ts.map +1 -0
  3. package/dist/generator.js +113 -0
  4. package/dist/generator.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +7 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/integrations/algolia.d.ts +3 -0
  10. package/dist/integrations/algolia.d.ts.map +1 -0
  11. package/dist/integrations/algolia.js +56 -0
  12. package/dist/integrations/algolia.js.map +1 -0
  13. package/dist/integrations/anthropic.d.ts +3 -0
  14. package/dist/integrations/anthropic.d.ts.map +1 -0
  15. package/dist/integrations/anthropic.js +54 -0
  16. package/dist/integrations/anthropic.js.map +1 -0
  17. package/dist/integrations/aws-s3.d.ts +3 -0
  18. package/dist/integrations/aws-s3.d.ts.map +1 -0
  19. package/dist/integrations/aws-s3.js +59 -0
  20. package/dist/integrations/aws-s3.js.map +1 -0
  21. package/dist/integrations/clerk.d.ts +3 -0
  22. package/dist/integrations/clerk.d.ts.map +1 -0
  23. package/dist/integrations/clerk.js +34 -0
  24. package/dist/integrations/clerk.js.map +1 -0
  25. package/dist/integrations/cloudinary.d.ts +3 -0
  26. package/dist/integrations/cloudinary.d.ts.map +1 -0
  27. package/dist/integrations/cloudinary.js +57 -0
  28. package/dist/integrations/cloudinary.js.map +1 -0
  29. package/dist/integrations/crisp.d.ts +3 -0
  30. package/dist/integrations/crisp.d.ts.map +1 -0
  31. package/dist/integrations/crisp.js +53 -0
  32. package/dist/integrations/crisp.js.map +1 -0
  33. package/dist/integrations/firebase.d.ts +3 -0
  34. package/dist/integrations/firebase.d.ts.map +1 -0
  35. package/dist/integrations/firebase.js +53 -0
  36. package/dist/integrations/firebase.js.map +1 -0
  37. package/dist/integrations/flutterwave.d.ts +3 -0
  38. package/dist/integrations/flutterwave.d.ts.map +1 -0
  39. package/dist/integrations/flutterwave.js +53 -0
  40. package/dist/integrations/flutterwave.js.map +1 -0
  41. package/dist/integrations/gemini.d.ts +3 -0
  42. package/dist/integrations/gemini.d.ts.map +1 -0
  43. package/dist/integrations/gemini.js +40 -0
  44. package/dist/integrations/gemini.js.map +1 -0
  45. package/dist/integrations/github.d.ts +3 -0
  46. package/dist/integrations/github.d.ts.map +1 -0
  47. package/dist/integrations/github.js +53 -0
  48. package/dist/integrations/github.js.map +1 -0
  49. package/dist/integrations/hubspot.d.ts +3 -0
  50. package/dist/integrations/hubspot.d.ts.map +1 -0
  51. package/dist/integrations/hubspot.js +54 -0
  52. package/dist/integrations/hubspot.js.map +1 -0
  53. package/dist/integrations/index.d.ts +3 -0
  54. package/dist/integrations/index.d.ts.map +1 -0
  55. package/dist/integrations/index.js +63 -0
  56. package/dist/integrations/index.js.map +1 -0
  57. package/dist/integrations/lemonsqueezy.d.ts +3 -0
  58. package/dist/integrations/lemonsqueezy.d.ts.map +1 -0
  59. package/dist/integrations/lemonsqueezy.js +43 -0
  60. package/dist/integrations/lemonsqueezy.js.map +1 -0
  61. package/dist/integrations/mailchimp.d.ts +3 -0
  62. package/dist/integrations/mailchimp.d.ts.map +1 -0
  63. package/dist/integrations/mailchimp.js +52 -0
  64. package/dist/integrations/mailchimp.js.map +1 -0
  65. package/dist/integrations/openai.d.ts +3 -0
  66. package/dist/integrations/openai.d.ts.map +1 -0
  67. package/dist/integrations/openai.js +78 -0
  68. package/dist/integrations/openai.js.map +1 -0
  69. package/dist/integrations/payfast.d.ts +3 -0
  70. package/dist/integrations/payfast.d.ts.map +1 -0
  71. package/dist/integrations/payfast.js +94 -0
  72. package/dist/integrations/payfast.js.map +1 -0
  73. package/dist/integrations/pusher.d.ts +3 -0
  74. package/dist/integrations/pusher.d.ts.map +1 -0
  75. package/dist/integrations/pusher.js +86 -0
  76. package/dist/integrations/pusher.js.map +1 -0
  77. package/dist/integrations/resend.d.ts +3 -0
  78. package/dist/integrations/resend.d.ts.map +1 -0
  79. package/dist/integrations/resend.js +45 -0
  80. package/dist/integrations/resend.js.map +1 -0
  81. package/dist/integrations/sendgrid.d.ts +3 -0
  82. package/dist/integrations/sendgrid.d.ts.map +1 -0
  83. package/dist/integrations/sendgrid.js +42 -0
  84. package/dist/integrations/sendgrid.js.map +1 -0
  85. package/dist/integrations/sentry.d.ts +3 -0
  86. package/dist/integrations/sentry.d.ts.map +1 -0
  87. package/dist/integrations/sentry.js +49 -0
  88. package/dist/integrations/sentry.js.map +1 -0
  89. package/dist/integrations/slack.d.ts +3 -0
  90. package/dist/integrations/slack.d.ts.map +1 -0
  91. package/dist/integrations/slack.js +54 -0
  92. package/dist/integrations/slack.js.map +1 -0
  93. package/dist/integrations/storage.d.ts +3 -0
  94. package/dist/integrations/storage.d.ts.map +1 -0
  95. package/dist/integrations/storage.js +71 -0
  96. package/dist/integrations/storage.js.map +1 -0
  97. package/dist/integrations/stripe.d.ts +3 -0
  98. package/dist/integrations/stripe.d.ts.map +1 -0
  99. package/dist/integrations/stripe.js +65 -0
  100. package/dist/integrations/stripe.js.map +1 -0
  101. package/dist/integrations/twilio.d.ts +3 -0
  102. package/dist/integrations/twilio.d.ts.map +1 -0
  103. package/dist/integrations/twilio.js +45 -0
  104. package/dist/integrations/twilio.js.map +1 -0
  105. package/dist/integrations/uploadthing.d.ts +3 -0
  106. package/dist/integrations/uploadthing.d.ts.map +1 -0
  107. package/dist/integrations/uploadthing.js +41 -0
  108. package/dist/integrations/uploadthing.js.map +1 -0
  109. package/dist/templates/api-builder.d.ts +12 -0
  110. package/dist/templates/api-builder.d.ts.map +1 -0
  111. package/dist/templates/api-builder.js +76 -0
  112. package/dist/templates/api-builder.js.map +1 -0
  113. package/dist/templates/api-route-id.d.ts +3 -0
  114. package/dist/templates/api-route-id.d.ts.map +1 -0
  115. package/dist/templates/api-route-id.js +137 -0
  116. package/dist/templates/api-route-id.js.map +1 -0
  117. package/dist/templates/api-route.d.ts +3 -0
  118. package/dist/templates/api-route.d.ts.map +1 -0
  119. package/dist/templates/api-route.js +85 -0
  120. package/dist/templates/api-route.js.map +1 -0
  121. package/dist/templates/app-nav.d.ts +23 -0
  122. package/dist/templates/app-nav.d.ts.map +1 -0
  123. package/dist/templates/app-nav.js +132 -0
  124. package/dist/templates/app-nav.js.map +1 -0
  125. package/dist/templates/env.d.ts +3 -0
  126. package/dist/templates/env.d.ts.map +1 -0
  127. package/dist/templates/env.js +39 -0
  128. package/dist/templates/env.js.map +1 -0
  129. package/dist/templates/layout.d.ts +3 -0
  130. package/dist/templates/layout.d.ts.map +1 -0
  131. package/dist/templates/layout.js +50 -0
  132. package/dist/templates/layout.js.map +1 -0
  133. package/dist/templates/navigation.d.ts +3 -0
  134. package/dist/templates/navigation.d.ts.map +1 -0
  135. package/dist/templates/navigation.js +129 -0
  136. package/dist/templates/navigation.js.map +1 -0
  137. package/dist/templates/nxf-client.d.ts +3 -0
  138. package/dist/templates/nxf-client.d.ts.map +1 -0
  139. package/dist/templates/nxf-client.js +96 -0
  140. package/dist/templates/nxf-client.js.map +1 -0
  141. package/dist/templates/page-auth.d.ts +3 -0
  142. package/dist/templates/page-auth.d.ts.map +1 -0
  143. package/dist/templates/page-auth.js +344 -0
  144. package/dist/templates/page-auth.js.map +1 -0
  145. package/dist/templates/page-detail.d.ts +3 -0
  146. package/dist/templates/page-detail.d.ts.map +1 -0
  147. package/dist/templates/page-detail.js +86 -0
  148. package/dist/templates/page-detail.js.map +1 -0
  149. package/dist/templates/page-form.d.ts +3 -0
  150. package/dist/templates/page-form.d.ts.map +1 -0
  151. package/dist/templates/page-form.js +159 -0
  152. package/dist/templates/page-form.js.map +1 -0
  153. package/dist/templates/page-landing.d.ts +3 -0
  154. package/dist/templates/page-landing.d.ts.map +1 -0
  155. package/dist/templates/page-landing.js +140 -0
  156. package/dist/templates/page-landing.js.map +1 -0
  157. package/dist/templates/page-list.d.ts +3 -0
  158. package/dist/templates/page-list.d.ts.map +1 -0
  159. package/dist/templates/page-list.js +130 -0
  160. package/dist/templates/page-list.js.map +1 -0
  161. package/dist/templates/page-remaining.d.ts +3 -0
  162. package/dist/templates/page-remaining.d.ts.map +1 -0
  163. package/dist/templates/page-remaining.js +870 -0
  164. package/dist/templates/page-remaining.js.map +1 -0
  165. package/dist/templates/readme.d.ts +3 -0
  166. package/dist/templates/readme.d.ts.map +1 -0
  167. package/dist/templates/readme.js +87 -0
  168. package/dist/templates/readme.js.map +1 -0
  169. package/dist/templates/tailwind.d.ts +3 -0
  170. package/dist/templates/tailwind.d.ts.map +1 -0
  171. package/dist/templates/tailwind.js +63 -0
  172. package/dist/templates/tailwind.js.map +1 -0
  173. package/dist/templates/theme.d.ts +3 -0
  174. package/dist/templates/theme.d.ts.map +1 -0
  175. package/dist/templates/theme.js +49 -0
  176. package/dist/templates/theme.js.map +1 -0
  177. package/dist/templates/types.d.ts +3 -0
  178. package/dist/templates/types.d.ts.map +1 -0
  179. package/dist/templates/types.js +74 -0
  180. package/dist/templates/types.js.map +1 -0
  181. package/dist/templates/validators.d.ts +3 -0
  182. package/dist/templates/validators.d.ts.map +1 -0
  183. package/dist/templates/validators.js +37 -0
  184. package/dist/templates/validators.js.map +1 -0
  185. package/package.json +24 -0
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/app-nav.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateAppNav = generateAppNav;
5
+ /**
6
+ * generateAppNav
7
+ *
8
+ * Was referenced by layout.ts ('../components/AppNav') but never actually
9
+ * generated by any template — every project with a nav page would fail to
10
+ * build. This is the missing piece.
11
+ *
12
+ * Mirrors Flutter's navigation.ts shell/drawer split, adapted for the web:
13
+ * - top-nav / bottom-nav → a horizontal nav bar (bottom-nav has no native
14
+ * web equivalent as a persistent OS-level bar the way it does on mobile;
15
+ * rendered as a top bar here, same as top-nav, since both express "the
16
+ * same links are always visible" intent).
17
+ * - sidebar-nav / drawer-nav → a collapsible side panel (drawer becomes a
18
+ * toggleable off-canvas panel on mobile widths, persistent sidebar on
19
+ * desktop — matches how most Next.js dashboard layouts behave).
20
+ * If pages mix nav types, sidebar/drawer takes visual priority (rendered
21
+ * as the persistent panel) and top/bottom pages are folded into it as
22
+ * regular links, rather than trying to render two separate nav structures
23
+ * at once.
24
+ */
25
+ function generateAppNav(pages) {
26
+ const navPages = pages.filter((p) => ['top-nav', 'sidebar-nav', 'bottom-nav', 'drawer-nav'].includes(p.nav_type ?? ''));
27
+ const useSidebar = navPages.some((p) => p.nav_type === 'sidebar-nav' || p.nav_type === 'drawer-nav');
28
+ const lines = [];
29
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
30
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
31
+ lines.push(`// Regenerate: nxf generate nextjs`);
32
+ lines.push(``);
33
+ lines.push(`'use client'`);
34
+ lines.push(``);
35
+ lines.push(`import { useState } from 'react'`);
36
+ lines.push(`import Link from 'next/link'`);
37
+ lines.push(`import { usePathname } from 'next/navigation'`);
38
+ lines.push(``);
39
+ lines.push(`const NAV_LINKS = [`);
40
+ for (const page of navPages) {
41
+ const path = page.slug.replace(/^\//, '');
42
+ lines.push(` { href: '/${path}', label: '${page.name}' },`);
43
+ }
44
+ lines.push(`]`);
45
+ lines.push(``);
46
+ if (useSidebar) {
47
+ lines.push(`export default function AppNav() {`);
48
+ lines.push(` const pathname = usePathname()`);
49
+ lines.push(` const [open, setOpen] = useState(false)`);
50
+ lines.push(``);
51
+ lines.push(` return (`);
52
+ lines.push(` <>`);
53
+ lines.push(` {/* Mobile top bar with menu toggle */}`);
54
+ lines.push(` <div className="flex items-center justify-between px-4 py-3 border-b border-border md:hidden">`);
55
+ lines.push(` <span className="font-semibold">Menu</span>`);
56
+ lines.push(` <button`);
57
+ lines.push(` onClick={() => setOpen((v) => !v)}`);
58
+ lines.push(` aria-label="Toggle navigation"`);
59
+ lines.push(` className="p-2"`);
60
+ lines.push(` >`);
61
+ lines.push(` {open ? '✕' : '☰'}`);
62
+ lines.push(` </button>`);
63
+ lines.push(` </div>`);
64
+ lines.push(``);
65
+ lines.push(` {/* Sidebar — persistent on desktop, toggleable on mobile */}`);
66
+ lines.push(` <nav`);
67
+ lines.push(` className={\``);
68
+ lines.push(` fixed md:static inset-y-0 left-0 z-40 w-64 border-r border-border bg-background`);
69
+ lines.push(` transform transition-transform md:translate-x-0`);
70
+ lines.push(` \${open ? 'translate-x-0' : '-translate-x-full'}`);
71
+ lines.push(` \`}`);
72
+ lines.push(` >`);
73
+ lines.push(` <ul className="flex flex-col gap-1 p-4">`);
74
+ lines.push(` {NAV_LINKS.map((link) => (`);
75
+ lines.push(` <li key={link.href}>`);
76
+ lines.push(` <Link`);
77
+ lines.push(` href={link.href}`);
78
+ lines.push(` onClick={() => setOpen(false)}`);
79
+ lines.push(` className={\`block px-3 py-2 rounded-nxf text-sm \${`);
80
+ lines.push(` pathname === link.href`);
81
+ lines.push(` ? 'bg-primary text-white'`);
82
+ lines.push(` : 'text-nxf-text hover:bg-surface'`);
83
+ lines.push(` }\`}`);
84
+ lines.push(` >`);
85
+ lines.push(` {link.label}`);
86
+ lines.push(` </Link>`);
87
+ lines.push(` </li>`);
88
+ lines.push(` ))}`);
89
+ lines.push(` </ul>`);
90
+ lines.push(` </nav>`);
91
+ lines.push(``);
92
+ lines.push(` {/* Backdrop on mobile when sidebar is open */}`);
93
+ lines.push(` {open && (`);
94
+ lines.push(` <div`);
95
+ lines.push(` className="fixed inset-0 z-30 bg-black/30 md:hidden"`);
96
+ lines.push(` onClick={() => setOpen(false)}`);
97
+ lines.push(` />`);
98
+ lines.push(` )}`);
99
+ lines.push(` </>`);
100
+ lines.push(` )`);
101
+ lines.push(`}`);
102
+ }
103
+ else {
104
+ lines.push(`export default function AppNav() {`);
105
+ lines.push(` const pathname = usePathname()`);
106
+ lines.push(``);
107
+ lines.push(` return (`);
108
+ lines.push(` <nav className="flex items-center gap-1 px-4 py-3 border-b border-border">`);
109
+ lines.push(` {NAV_LINKS.map((link) => (`);
110
+ lines.push(` <Link`);
111
+ lines.push(` key={link.href}`);
112
+ lines.push(` href={link.href}`);
113
+ lines.push(` className={\`px-3 py-2 rounded-nxf text-sm \${`);
114
+ lines.push(` pathname === link.href`);
115
+ lines.push(` ? 'bg-primary text-white'`);
116
+ lines.push(` : 'text-nxf-text hover:bg-surface'`);
117
+ lines.push(` }\`}`);
118
+ lines.push(` >`);
119
+ lines.push(` {link.label}`);
120
+ lines.push(` </Link>`);
121
+ lines.push(` ))}`);
122
+ lines.push(` </nav>`);
123
+ lines.push(` )`);
124
+ lines.push(`}`);
125
+ }
126
+ return {
127
+ path: 'components/AppNav.tsx',
128
+ content: lines.join('\n'),
129
+ category: 'customizable',
130
+ };
131
+ }
132
+ //# sourceMappingURL=app-nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-nav.js","sourceRoot":"","sources":["../../src/templates/app-nav.ts"],"names":[],"mappings":";AAAA,8EAA8E;;AAwB9E,wCAgHC;AApID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,cAAc,CAAC,KAAgB;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAClC,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAClF,CAAA;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAA;IAEpG,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAC1C,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACzC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,cAAc,IAAI,CAAC,IAAI,MAAM,CAAC,CAAA;IAC9D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAChD,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACpD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,sGAAsG,CAAC,CAAA;QAClH,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;QACjE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;QAC1D,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACvC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACvB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;QACjF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACnC,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;QACvG,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;QACvE,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;QACxE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrB,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QAC9D,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QAClD,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACjC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;QAC5D,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;QAClF,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC3D,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;QACpE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAClC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACnC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;QACnE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC9B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC5E,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QACtD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAChD,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;QAC5F,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAA;QAC9C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACvC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACxC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QACtE,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAChD,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAA;QACrD,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;QAC9D,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACvB,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACpC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,OAAO;QACL,IAAI,EAAM,uBAAuB;QACjC,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,cAAc;KACzB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateEnvTemplate(projectId: string): GeneratedFile;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAmCpE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/env.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateEnvTemplate = generateEnvTemplate;
5
+ function generateEnvTemplate(projectId) {
6
+ const lines = [];
7
+ lines.push(`# Generated by Underpeaks CodeGen v1.0.0`);
8
+ lines.push(`# Copy this file to .env.local and fill in your credentials.`);
9
+ lines.push(`# .env.local is git-ignored — never commit real keys.`);
10
+ lines.push(``);
11
+ lines.push(`# Underpeaks backend URL`);
12
+ lines.push(`# Hosted: https://studio.underpeaks.com`);
13
+ lines.push(`# Self-hosted: your Core instance URL, e.g. https://api.yourapp.com`);
14
+ // FIX: was NXF_BASE_URL. lib/nxf-client.ts (the file every generated API
15
+ // route actually imports and calls) reads process.env.NXF_STUDIO_URL,
16
+ // not NXF_BASE_URL — that var name was never read anywhere in the
17
+ // generated app, so filling it in from this file did nothing and the
18
+ // app silently fell back to the hardcoded 'https://studio.underpeaks.com'
19
+ // default every time, regardless of what the developer set. Renamed to
20
+ // match nxf-client.ts exactly (also matches what validateNxfEnv() checks
21
+ // for, and what readme.ts already correctly documented).
22
+ lines.push(`NXF_STUDIO_URL=https://studio.underpeaks.com`);
23
+ lines.push(``);
24
+ lines.push(`# Your project ID`);
25
+ lines.push(`NXF_PROJECT_ID=${projectId}`);
26
+ lines.push(``);
27
+ lines.push(`# Your Underpeaks API key (Studio/Core → Settings → API Keys)`);
28
+ lines.push(`# Public project identifier — calls still require user sign-in.`);
29
+ lines.push(`NXF_API_KEY=`);
30
+ lines.push(``);
31
+ lines.push(`# Public app URL (used for server-side fetch calls)`);
32
+ lines.push(`NEXT_PUBLIC_APP_DOMAIN=http://localhost:3000`);
33
+ return {
34
+ path: '.env.example',
35
+ content: lines.join('\n'),
36
+ category: 'root',
37
+ };
38
+ }
39
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/templates/env.ts"],"names":[],"mappings":";AAAA,0EAA0E;;AAI1E,kDAmCC;AAnCD,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;IAC1E,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;IACtC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;IACjF,yEAAyE;IACzE,sEAAsE;IACtE,kEAAkE;IAClE,qEAAqE;IACrE,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,yDAAyD;IACzD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;IAC/B,KAAK,CAAC,IAAI,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAA;IACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC3E,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAC7E,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;IACjE,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAA;IAE1D,OAAO;QACL,IAAI,EAAM,cAAc;QACxB,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,MAAM;KACjB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateLayout(pages: PageDef[], projectName: string): GeneratedFile;
3
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/templates/layout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAExE,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,CAiDnF"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/layout.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateLayout = generateLayout;
5
+ function generateLayout(pages, projectName) {
6
+ // FIX: was `A || B` where B alone (`!authTypes.includes(template_type)`)
7
+ // is true for almost every non-auth page regardless of its actual
8
+ // nav_type — meaning hasNav was effectively always true, and AppNav got
9
+ // imported into nearly every generated app even for projects with no
10
+ // nav pages defined at all. Now only checks nav_type directly, matching
11
+ // what the import is actually meant to gate on.
12
+ const hasNav = pages.some((p) => ['top-nav', 'sidebar-nav', 'bottom-nav', 'drawer-nav'].includes(p.nav_type ?? ''));
13
+ const lines = [];
14
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
15
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
16
+ lines.push(``);
17
+ lines.push(`import type { Metadata } from 'next'`);
18
+ lines.push(`import './globals.css'`);
19
+ if (hasNav) {
20
+ lines.push(`import AppNav from '../components/AppNav'`);
21
+ }
22
+ lines.push(``);
23
+ lines.push(`export const metadata: Metadata = {`);
24
+ lines.push(` title: '${projectName}',`);
25
+ lines.push(` description: 'Generated by Underpeaks CodeGen',`);
26
+ lines.push(`}`);
27
+ lines.push(``);
28
+ lines.push(`export default function RootLayout({`);
29
+ lines.push(` children,`);
30
+ lines.push(`}: {`);
31
+ lines.push(` children: React.ReactNode`);
32
+ lines.push(`}) {`);
33
+ lines.push(` return (`);
34
+ lines.push(` <html lang="en">`);
35
+ lines.push(` <body>`);
36
+ if (hasNav) {
37
+ lines.push(` <AppNav />`);
38
+ }
39
+ lines.push(` <main>{children}</main>`);
40
+ lines.push(` </body>`);
41
+ lines.push(` </html>`);
42
+ lines.push(` )`);
43
+ lines.push(`}`);
44
+ return {
45
+ path: 'app/layout.tsx',
46
+ content: lines.join('\n'),
47
+ category: 'generated',
48
+ };
49
+ }
50
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/templates/layout.ts"],"names":[],"mappings":";AAAA,6EAA6E;;AAI7E,wCAiDC;AAjDD,SAAgB,cAAc,CAAC,KAAgB,EAAE,WAAmB;IAClE,yEAAyE;IACzE,kEAAkE;IAClE,wEAAwE;IACxE,qEAAqE;IACrE,wEAAwE;IACxE,gDAAgD;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAClF,CAAA;IAED,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,mBAAmB,WAAW,IAAI,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;IAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;IAClD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;IACzC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAClC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC1B,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAClC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;IAC7C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEf,OAAO;QACL,IAAI,EAAM,gBAAgB;QAC1B,OAAO,EAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,QAAQ,EAAE,WAAW;KACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PageDef, PageRoute, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateNavigation(pages: PageDef[], routes: PageRoute[]): GeneratedFile;
3
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/templates/navigation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAgBnF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,aAAa,CA8GvF"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/navigation.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateNavigation = generateNavigation;
5
+ // FIX: previously any page that wasn't an auth page and wasn't explicitly
6
+ // nav_type: 'none' was included in the nav — meaning splash, onboarding,
7
+ // checkout, wallet, chat, and other fixed single-screen pages leaked into
8
+ // the navigation bar. Only genuinely nav-appropriate template types
9
+ // should ever appear here, matching the same whitelist used in
10
+ // generator-flutter's navigation.ts.
11
+ const NAV_ELIGIBLE_TEMPLATE_TYPES = new Set(['list', 'grid', 'dashboard', 'feed', 'profile', 'chat', 'messages', 'map', 'search', 'settings']);
12
+ const NAV_EXCLUDED_TEMPLATE_TYPES = new Set([
13
+ 'sign_in', 'sign_up', 'forgot_password', 'reset_password', 'otp_request', 'otp_entry',
14
+ 'splash', 'onboarding', 'checkout', 'wallet', 'invoice', 'kanban', 'calendar',
15
+ 'cart', 'gallery', 'blog-post', 'custom',
16
+ ]);
17
+ function generateNavigation(pages, routes) {
18
+ // FIX: default to top-nav (not omitted from nav entirely) for any
19
+ // nav-eligible page with no nav_type set, matching the Flutter
20
+ // generator's "always assign a sensible default nav, never leave it
21
+ // unset" behaviour — just top-nav instead of bottom-nav, appropriate
22
+ // for a web layout.
23
+ const navPages = pages.filter((p) => {
24
+ if (p.nav_type === 'none')
25
+ return false;
26
+ if (NAV_EXCLUDED_TEMPLATE_TYPES.has(p.template_type))
27
+ return false;
28
+ if (['top-nav', 'sidebar-nav'].includes(p.nav_type ?? ''))
29
+ return true;
30
+ if (!p.nav_type && NAV_ELIGIBLE_TEMPLATE_TYPES.has(p.template_type))
31
+ return true;
32
+ return false;
33
+ });
34
+ const lines = [];
35
+ lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
36
+ lines.push(`// Navigation component`);
37
+ lines.push(`// Presentation layer — generated once, you own this file.`);
38
+ lines.push(`// Regenerate: nxf generate nextjs --include-views`);
39
+ lines.push(`// WARNING: --include-views will overwrite your changes.`);
40
+ lines.push(``);
41
+ lines.push(`'use client'`);
42
+ lines.push(``);
43
+ lines.push(`import Link from 'next/link'`);
44
+ lines.push(`import { usePathname } from 'next/navigation'`);
45
+ lines.push(`import { useState } from 'react'`);
46
+ lines.push(``);
47
+ lines.push(`const NAV_ITEMS = [`);
48
+ for (const page of navPages) {
49
+ const path = page.slug.replace(/^\//, '');
50
+ lines.push(` { label: '${page.name}', href: '/${path}' },`);
51
+ }
52
+ lines.push(`]`);
53
+ lines.push(``);
54
+ lines.push(`export default function AppNav() {`);
55
+ lines.push(` const pathname = usePathname()`);
56
+ lines.push(` const [open, setOpen] = useState(false)`);
57
+ lines.push(``);
58
+ lines.push(` return (`);
59
+ lines.push(` <nav className="bg-white border-b border-gray-200">`);
60
+ lines.push(` <div className="container mx-auto px-4">`);
61
+ lines.push(` <div className="flex items-center justify-between h-16">`);
62
+ lines.push(``);
63
+ lines.push(` {/* Logo */}`);
64
+ lines.push(` <Link href="/" className="font-bold text-lg text-gray-900">`);
65
+ lines.push(` App`);
66
+ lines.push(` </Link>`);
67
+ lines.push(``);
68
+ lines.push(` {/* Desktop nav */}`);
69
+ lines.push(` <div className="hidden md:flex items-center gap-1">`);
70
+ lines.push(` {NAV_ITEMS.map((item) => (`);
71
+ lines.push(` <Link`);
72
+ lines.push(` key={item.href}`);
73
+ lines.push(` href={item.href}`);
74
+ lines.push(` className={\`px-3 py-2 rounded-lg text-sm font-medium transition \${`);
75
+ lines.push(` pathname === item.href || pathname.startsWith(item.href + '/')`);
76
+ lines.push(` ? 'bg-gray-100 text-gray-900'`);
77
+ lines.push(` : 'text-gray-600 hover:text-gray-900 hover:bg-gray-50'`);
78
+ lines.push(` }\`}`);
79
+ lines.push(` >`);
80
+ lines.push(` {item.label}`);
81
+ lines.push(` </Link>`);
82
+ lines.push(` ))}`);
83
+ lines.push(` </div>`);
84
+ lines.push(``);
85
+ lines.push(` {/* Mobile hamburger */}`);
86
+ lines.push(` <button`);
87
+ lines.push(` className="md:hidden p-2 rounded-lg text-gray-600 hover:bg-gray-100"`);
88
+ lines.push(` onClick={() => setOpen((v) => !v)}`);
89
+ lines.push(` aria-label="Toggle menu"`);
90
+ lines.push(` >`);
91
+ lines.push(` <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">`);
92
+ lines.push(` {open`);
93
+ lines.push(` ? <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />`);
94
+ lines.push(` : <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" />`);
95
+ lines.push(` }`);
96
+ lines.push(` </svg>`);
97
+ lines.push(` </button>`);
98
+ lines.push(` </div>`);
99
+ lines.push(``);
100
+ lines.push(` {/* Mobile menu */}`);
101
+ lines.push(` {open && (`);
102
+ lines.push(` <div className="md:hidden pb-3 flex flex-col gap-1">`);
103
+ lines.push(` {NAV_ITEMS.map((item) => (`);
104
+ lines.push(` <Link`);
105
+ lines.push(` key={item.href}`);
106
+ lines.push(` href={item.href}`);
107
+ lines.push(` onClick={() => setOpen(false)}`);
108
+ lines.push(` className={\`px-3 py-2 rounded-lg text-sm font-medium transition \${`);
109
+ lines.push(` pathname === item.href`);
110
+ lines.push(` ? 'bg-gray-100 text-gray-900'`);
111
+ lines.push(` : 'text-gray-600 hover:text-gray-900'`);
112
+ lines.push(` }\`}`);
113
+ lines.push(` >`);
114
+ lines.push(` {item.label}`);
115
+ lines.push(` </Link>`);
116
+ lines.push(` ))}`);
117
+ lines.push(` </div>`);
118
+ lines.push(` )}`);
119
+ lines.push(` </div>`);
120
+ lines.push(` </nav>`);
121
+ lines.push(` )`);
122
+ lines.push(`}`);
123
+ return {
124
+ path: 'components/AppNav.tsx',
125
+ content: lines.join('\n'),
126
+ category: 'customizable',
127
+ };
128
+ }
129
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/templates/navigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GeneratedFile, ProjectData } from '@underpeaks/generator-core';
2
+ export declare function generateNxfClient(source?: ProjectData['source']): GeneratedFile;
3
+ //# sourceMappingURL=nxf-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nxf-client.d.ts","sourceRoot":"","sources":["../../src/templates/nxf-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAK5E,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,WAAW,CAAC,QAAQ,CAAY,GAAG,aAAa,CA0FzF"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ // File: underpeaks_codegen/packages/generator-nextjs/src/templates/nxf-client.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.generateNxfClient = generateNxfClient;
5
+ // FIX: hardcoded Authorization: Bearer header — Core's gateway only accepts
6
+ // X-API-Key, hosted's accepts Bearer. source now controls which header this
7
+ // generated client sends.
8
+ function generateNxfClient(source = 'hosted') {
9
+ const lines = [];
10
+ const authHeaderLine = source === 'core'
11
+ ? ` 'X-API-Key': process.env.NXF_API_KEY ?? '',`
12
+ : ` 'Authorization': \`Bearer \${process.env.NXF_API_KEY ?? ''}\`,`;
13
+ lines.push(`// GENERATED FILE — DO NOT EDIT MANUALLY`);
14
+ lines.push(`// Generated by Underpeaks CodeGen v1.0.0`);
15
+ lines.push(`// Regenerate: nxf generate nextjs`);
16
+ lines.push(``);
17
+ lines.push(`// ── Underpeaks API client ────────────────────────────────────────────────`);
18
+ lines.push(`// Wraps fetch with base URL, auth headers, and error handling.`);
19
+ lines.push(`// Used by all generated API routes.`);
20
+ lines.push(``);
21
+ lines.push(`const BASE_URL = process.env.NXF_STUDIO_URL ?? 'https://studio.underpeaks.com'`);
22
+ lines.push(``);
23
+ lines.push(`export async function nxfFetch<T>(`);
24
+ lines.push(` path: string,`);
25
+ lines.push(` options: RequestInit = {},`);
26
+ lines.push(`): Promise<T> {`);
27
+ lines.push(` const url = \`\${BASE_URL}\${path}\``);
28
+ lines.push(``);
29
+ lines.push(` const res = await fetch(url, {`);
30
+ lines.push(` ...options,`);
31
+ lines.push(` headers: {`);
32
+ lines.push(` 'Content-Type': 'application/json',`);
33
+ lines.push(authHeaderLine);
34
+ lines.push(` ...options.headers,`);
35
+ lines.push(` },`);
36
+ lines.push(` cache: 'no-store',`);
37
+ lines.push(` })`);
38
+ lines.push(``);
39
+ lines.push(` if (!res.ok) {`);
40
+ lines.push(` const error = await res.json().catch(() => ({ error: 'Unknown error' }))`);
41
+ lines.push(` throw new Error(error.error ?? \`Request failed: \${res.status}\`)`);
42
+ lines.push(` }`);
43
+ lines.push(``);
44
+ lines.push(` const json = await res.json()`);
45
+ lines.push(` return json.data ?? json`);
46
+ lines.push(`}`);
47
+ lines.push(``);
48
+ lines.push(`export async function nxfFetchList<T>(`);
49
+ lines.push(` path: string,`);
50
+ lines.push(` options: RequestInit = {},`);
51
+ lines.push(`): Promise<{ data: T[]; total: number; hasMore: boolean }> {`);
52
+ lines.push(` const url = \`\${BASE_URL}\${path}\``);
53
+ lines.push(``);
54
+ lines.push(` const res = await fetch(url, {`);
55
+ lines.push(` ...options,`);
56
+ lines.push(` headers: {`);
57
+ lines.push(` 'Content-Type': 'application/json',`);
58
+ lines.push(authHeaderLine);
59
+ lines.push(` ...options.headers,`);
60
+ lines.push(` },`);
61
+ lines.push(` cache: 'no-store',`);
62
+ lines.push(` })`);
63
+ lines.push(``);
64
+ lines.push(` if (!res.ok) {`);
65
+ lines.push(` const error = await res.json().catch(() => ({ error: 'Unknown error' }))`);
66
+ lines.push(` throw new Error(error.error ?? \`Request failed: \${res.status}\`)`);
67
+ lines.push(` }`);
68
+ lines.push(``);
69
+ lines.push(` const json = await res.json()`);
70
+ lines.push(` const data = json.data ?? []`);
71
+ lines.push(` return {`);
72
+ lines.push(` data,`);
73
+ lines.push(` total: json.total ?? data.length,`);
74
+ lines.push(` hasMore: json.hasMore ?? false,`);
75
+ lines.push(` }`);
76
+ lines.push(`}`);
77
+ lines.push(``);
78
+ lines.push(`// ── Environment validation ────────────────────────────────────────────────`);
79
+ lines.push(``);
80
+ lines.push(`export function validateNxfEnv() {`);
81
+ lines.push(` const required = ['NXF_STUDIO_URL', 'NXF_API_KEY', 'NXF_PROJECT_ID']`);
82
+ lines.push(` const missing = required.filter((key) => !process.env[key])`);
83
+ lines.push(` if (missing.length > 0) {`);
84
+ lines.push(` throw new Error(`);
85
+ lines.push(` \`Missing required environment variables: \${missing.join(', ')}\n\` +`);
86
+ lines.push(` 'Add these to your .env.local file.'`);
87
+ lines.push(` )`);
88
+ lines.push(` }`);
89
+ lines.push(`}`);
90
+ return {
91
+ path: 'lib/nxf-client.ts',
92
+ content: lines.join('\n'),
93
+ category: 'generated',
94
+ };
95
+ }
96
+ //# sourceMappingURL=nxf-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nxf-client.js","sourceRoot":"","sources":["../../src/templates/nxf-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PageDef, GeneratedFile } from '@underpeaks/generator-core';
2
+ export declare function generateNextjsAuthPages(page: PageDef): GeneratedFile[];
3
+ //# sourceMappingURL=page-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-auth.d.ts","sourceRoot":"","sources":["../../src/templates/page-auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAExE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,EAAE,CAuVtE"}