@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.
- package/dist/generator.d.ts +3 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +113 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/algolia.d.ts +3 -0
- package/dist/integrations/algolia.d.ts.map +1 -0
- package/dist/integrations/algolia.js +56 -0
- package/dist/integrations/algolia.js.map +1 -0
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -0
- package/dist/integrations/anthropic.js +54 -0
- package/dist/integrations/anthropic.js.map +1 -0
- package/dist/integrations/aws-s3.d.ts +3 -0
- package/dist/integrations/aws-s3.d.ts.map +1 -0
- package/dist/integrations/aws-s3.js +59 -0
- package/dist/integrations/aws-s3.js.map +1 -0
- package/dist/integrations/clerk.d.ts +3 -0
- package/dist/integrations/clerk.d.ts.map +1 -0
- package/dist/integrations/clerk.js +34 -0
- package/dist/integrations/clerk.js.map +1 -0
- package/dist/integrations/cloudinary.d.ts +3 -0
- package/dist/integrations/cloudinary.d.ts.map +1 -0
- package/dist/integrations/cloudinary.js +57 -0
- package/dist/integrations/cloudinary.js.map +1 -0
- package/dist/integrations/crisp.d.ts +3 -0
- package/dist/integrations/crisp.d.ts.map +1 -0
- package/dist/integrations/crisp.js +53 -0
- package/dist/integrations/crisp.js.map +1 -0
- package/dist/integrations/firebase.d.ts +3 -0
- package/dist/integrations/firebase.d.ts.map +1 -0
- package/dist/integrations/firebase.js +53 -0
- package/dist/integrations/firebase.js.map +1 -0
- package/dist/integrations/flutterwave.d.ts +3 -0
- package/dist/integrations/flutterwave.d.ts.map +1 -0
- package/dist/integrations/flutterwave.js +53 -0
- package/dist/integrations/flutterwave.js.map +1 -0
- package/dist/integrations/gemini.d.ts +3 -0
- package/dist/integrations/gemini.d.ts.map +1 -0
- package/dist/integrations/gemini.js +40 -0
- package/dist/integrations/gemini.js.map +1 -0
- package/dist/integrations/github.d.ts +3 -0
- package/dist/integrations/github.d.ts.map +1 -0
- package/dist/integrations/github.js +53 -0
- package/dist/integrations/github.js.map +1 -0
- package/dist/integrations/hubspot.d.ts +3 -0
- package/dist/integrations/hubspot.d.ts.map +1 -0
- package/dist/integrations/hubspot.js +54 -0
- package/dist/integrations/hubspot.js.map +1 -0
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +63 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/lemonsqueezy.d.ts +3 -0
- package/dist/integrations/lemonsqueezy.d.ts.map +1 -0
- package/dist/integrations/lemonsqueezy.js +43 -0
- package/dist/integrations/lemonsqueezy.js.map +1 -0
- package/dist/integrations/mailchimp.d.ts +3 -0
- package/dist/integrations/mailchimp.d.ts.map +1 -0
- package/dist/integrations/mailchimp.js +52 -0
- package/dist/integrations/mailchimp.js.map +1 -0
- package/dist/integrations/openai.d.ts +3 -0
- package/dist/integrations/openai.d.ts.map +1 -0
- package/dist/integrations/openai.js +78 -0
- package/dist/integrations/openai.js.map +1 -0
- package/dist/integrations/payfast.d.ts +3 -0
- package/dist/integrations/payfast.d.ts.map +1 -0
- package/dist/integrations/payfast.js +94 -0
- package/dist/integrations/payfast.js.map +1 -0
- package/dist/integrations/pusher.d.ts +3 -0
- package/dist/integrations/pusher.d.ts.map +1 -0
- package/dist/integrations/pusher.js +86 -0
- package/dist/integrations/pusher.js.map +1 -0
- package/dist/integrations/resend.d.ts +3 -0
- package/dist/integrations/resend.d.ts.map +1 -0
- package/dist/integrations/resend.js +45 -0
- package/dist/integrations/resend.js.map +1 -0
- package/dist/integrations/sendgrid.d.ts +3 -0
- package/dist/integrations/sendgrid.d.ts.map +1 -0
- package/dist/integrations/sendgrid.js +42 -0
- package/dist/integrations/sendgrid.js.map +1 -0
- package/dist/integrations/sentry.d.ts +3 -0
- package/dist/integrations/sentry.d.ts.map +1 -0
- package/dist/integrations/sentry.js +49 -0
- package/dist/integrations/sentry.js.map +1 -0
- package/dist/integrations/slack.d.ts +3 -0
- package/dist/integrations/slack.d.ts.map +1 -0
- package/dist/integrations/slack.js +54 -0
- package/dist/integrations/slack.js.map +1 -0
- package/dist/integrations/storage.d.ts +3 -0
- package/dist/integrations/storage.d.ts.map +1 -0
- package/dist/integrations/storage.js +71 -0
- package/dist/integrations/storage.js.map +1 -0
- package/dist/integrations/stripe.d.ts +3 -0
- package/dist/integrations/stripe.d.ts.map +1 -0
- package/dist/integrations/stripe.js +65 -0
- package/dist/integrations/stripe.js.map +1 -0
- package/dist/integrations/twilio.d.ts +3 -0
- package/dist/integrations/twilio.d.ts.map +1 -0
- package/dist/integrations/twilio.js +45 -0
- package/dist/integrations/twilio.js.map +1 -0
- package/dist/integrations/uploadthing.d.ts +3 -0
- package/dist/integrations/uploadthing.d.ts.map +1 -0
- package/dist/integrations/uploadthing.js +41 -0
- package/dist/integrations/uploadthing.js.map +1 -0
- package/dist/templates/api-builder.d.ts +12 -0
- package/dist/templates/api-builder.d.ts.map +1 -0
- package/dist/templates/api-builder.js +76 -0
- package/dist/templates/api-builder.js.map +1 -0
- package/dist/templates/api-route-id.d.ts +3 -0
- package/dist/templates/api-route-id.d.ts.map +1 -0
- package/dist/templates/api-route-id.js +137 -0
- package/dist/templates/api-route-id.js.map +1 -0
- package/dist/templates/api-route.d.ts +3 -0
- package/dist/templates/api-route.d.ts.map +1 -0
- package/dist/templates/api-route.js +85 -0
- package/dist/templates/api-route.js.map +1 -0
- package/dist/templates/app-nav.d.ts +23 -0
- package/dist/templates/app-nav.d.ts.map +1 -0
- package/dist/templates/app-nav.js +132 -0
- package/dist/templates/app-nav.js.map +1 -0
- package/dist/templates/env.d.ts +3 -0
- package/dist/templates/env.d.ts.map +1 -0
- package/dist/templates/env.js +39 -0
- package/dist/templates/env.js.map +1 -0
- package/dist/templates/layout.d.ts +3 -0
- package/dist/templates/layout.d.ts.map +1 -0
- package/dist/templates/layout.js +50 -0
- package/dist/templates/layout.js.map +1 -0
- package/dist/templates/navigation.d.ts +3 -0
- package/dist/templates/navigation.d.ts.map +1 -0
- package/dist/templates/navigation.js +129 -0
- package/dist/templates/navigation.js.map +1 -0
- package/dist/templates/nxf-client.d.ts +3 -0
- package/dist/templates/nxf-client.d.ts.map +1 -0
- package/dist/templates/nxf-client.js +96 -0
- package/dist/templates/nxf-client.js.map +1 -0
- package/dist/templates/page-auth.d.ts +3 -0
- package/dist/templates/page-auth.d.ts.map +1 -0
- package/dist/templates/page-auth.js +344 -0
- package/dist/templates/page-auth.js.map +1 -0
- package/dist/templates/page-detail.d.ts +3 -0
- package/dist/templates/page-detail.d.ts.map +1 -0
- package/dist/templates/page-detail.js +86 -0
- package/dist/templates/page-detail.js.map +1 -0
- package/dist/templates/page-form.d.ts +3 -0
- package/dist/templates/page-form.d.ts.map +1 -0
- package/dist/templates/page-form.js +159 -0
- package/dist/templates/page-form.js.map +1 -0
- package/dist/templates/page-landing.d.ts +3 -0
- package/dist/templates/page-landing.d.ts.map +1 -0
- package/dist/templates/page-landing.js +140 -0
- package/dist/templates/page-landing.js.map +1 -0
- package/dist/templates/page-list.d.ts +3 -0
- package/dist/templates/page-list.d.ts.map +1 -0
- package/dist/templates/page-list.js +130 -0
- package/dist/templates/page-list.js.map +1 -0
- package/dist/templates/page-remaining.d.ts +3 -0
- package/dist/templates/page-remaining.d.ts.map +1 -0
- package/dist/templates/page-remaining.js +870 -0
- package/dist/templates/page-remaining.js.map +1 -0
- package/dist/templates/readme.d.ts +3 -0
- package/dist/templates/readme.d.ts.map +1 -0
- package/dist/templates/readme.js +87 -0
- package/dist/templates/readme.js.map +1 -0
- package/dist/templates/tailwind.d.ts +3 -0
- package/dist/templates/tailwind.d.ts.map +1 -0
- package/dist/templates/tailwind.js +63 -0
- package/dist/templates/tailwind.js.map +1 -0
- package/dist/templates/theme.d.ts +3 -0
- package/dist/templates/theme.d.ts.map +1 -0
- package/dist/templates/theme.js +49 -0
- package/dist/templates/theme.js.map +1 -0
- package/dist/templates/types.d.ts +3 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/templates/types.js +74 -0
- package/dist/templates/types.js.map +1 -0
- package/dist/templates/validators.d.ts +3 -0
- package/dist/templates/validators.d.ts.map +1 -0
- package/dist/templates/validators.js +37 -0
- package/dist/templates/validators.js.map +1 -0
- package/package.json +24 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-form.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.generateFormPage = generateFormPage;
|
|
5
|
+
const generator_core_1 = require("@underpeaks/generator-core");
|
|
6
|
+
function generateFormPage(page, model) {
|
|
7
|
+
const className = (0, generator_core_1.modelToClassName)(model.name);
|
|
8
|
+
const fileName = (0, generator_core_1.modelToFileName)(model.name);
|
|
9
|
+
const pk = (0, generator_core_1.getPrimaryKey)(model);
|
|
10
|
+
const pkName = pk?.name ?? 'id';
|
|
11
|
+
const columns = (0, generator_core_1.getVisibleColumns)(model);
|
|
12
|
+
const routePath = page.slug.replace(/^\//, '');
|
|
13
|
+
const modelSlug = model.name.replace('nxf_', '').replace(/_/g, '-');
|
|
14
|
+
const lines = [];
|
|
15
|
+
lines.push(`'use client'`);
|
|
16
|
+
lines.push(``);
|
|
17
|
+
lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
|
|
18
|
+
lines.push(`// Page: ${page.name} — form`);
|
|
19
|
+
lines.push(`// Presentation layer — generated once, you own this file.`);
|
|
20
|
+
lines.push(`// Regenerate: nxf generate nextjs --include-views`);
|
|
21
|
+
lines.push(`// WARNING: --include-views will overwrite your changes.`);
|
|
22
|
+
lines.push(``);
|
|
23
|
+
lines.push(`import { useState } from 'react'`);
|
|
24
|
+
lines.push(`import { useRouter } from 'next/navigation'`);
|
|
25
|
+
lines.push(`import type { ${className}, Create${className}Dto } from '../../../generated/types/${fileName}.types'`);
|
|
26
|
+
lines.push(``);
|
|
27
|
+
lines.push(`interface Props {`);
|
|
28
|
+
lines.push(` initial?: ${className}`);
|
|
29
|
+
lines.push(`}`);
|
|
30
|
+
lines.push(``);
|
|
31
|
+
lines.push(`export default function ${className}Form({ initial }: Props) {`);
|
|
32
|
+
lines.push(` const router = useRouter()`);
|
|
33
|
+
lines.push(` const isEditing = Boolean(initial?.${pkName})`);
|
|
34
|
+
lines.push(` const [loading, setLoading] = useState(false)`);
|
|
35
|
+
lines.push(` const [error, setError] = useState<string | null>(null)`);
|
|
36
|
+
lines.push(``);
|
|
37
|
+
lines.push(` const [form, setForm] = useState<Create${className}Dto>({`);
|
|
38
|
+
for (const col of columns) {
|
|
39
|
+
const { dartType } = (0, generator_core_1.parseColumnType)(col);
|
|
40
|
+
if (dartType.includes('bool')) {
|
|
41
|
+
lines.push(` ${col.name}: initial?.${col.name} ?? false,`);
|
|
42
|
+
}
|
|
43
|
+
else if (dartType.includes('int') || dartType.includes('double')) {
|
|
44
|
+
lines.push(` ${col.name}: initial?.${col.name} ?? undefined,`);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
lines.push(` ${col.name}: initial?.${col.name} ?? '',`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
lines.push(` })`);
|
|
51
|
+
lines.push(``);
|
|
52
|
+
lines.push(` function handleChange(key: keyof Create${className}Dto, value: unknown) {`);
|
|
53
|
+
lines.push(` setForm((prev) => ({ ...prev, [key]: value }))`);
|
|
54
|
+
lines.push(` }`);
|
|
55
|
+
lines.push(``);
|
|
56
|
+
lines.push(` async function handleSubmit(e: React.FormEvent) {`);
|
|
57
|
+
lines.push(` e.preventDefault()`);
|
|
58
|
+
lines.push(` setLoading(true)`);
|
|
59
|
+
lines.push(` setError(null)`);
|
|
60
|
+
lines.push(` try {`);
|
|
61
|
+
lines.push(` const url = isEditing`);
|
|
62
|
+
lines.push(` ? \`/api/${modelSlug}/\${initial!.${pkName}}\``);
|
|
63
|
+
lines.push(` : '/api/${modelSlug}'`);
|
|
64
|
+
lines.push(` const method = isEditing ? 'PUT' : 'POST'`);
|
|
65
|
+
lines.push(``);
|
|
66
|
+
lines.push(` const res = await fetch(url, {`);
|
|
67
|
+
lines.push(` method,`);
|
|
68
|
+
lines.push(` headers: { 'Content-Type': 'application/json' },`);
|
|
69
|
+
lines.push(` body: JSON.stringify(form),`);
|
|
70
|
+
lines.push(` })`);
|
|
71
|
+
lines.push(``);
|
|
72
|
+
lines.push(` if (!res.ok) {`);
|
|
73
|
+
lines.push(` const data = await res.json()`);
|
|
74
|
+
lines.push(` throw new Error(data.error ?? 'Request failed')`);
|
|
75
|
+
lines.push(` }`);
|
|
76
|
+
lines.push(``);
|
|
77
|
+
lines.push(` router.push('/${routePath}')`);
|
|
78
|
+
lines.push(` router.refresh()`);
|
|
79
|
+
lines.push(` } catch (err: any) {`);
|
|
80
|
+
lines.push(` setError(err.message)`);
|
|
81
|
+
lines.push(` } finally {`);
|
|
82
|
+
lines.push(` setLoading(false)`);
|
|
83
|
+
lines.push(` }`);
|
|
84
|
+
lines.push(` }`);
|
|
85
|
+
lines.push(``);
|
|
86
|
+
lines.push(` return (`);
|
|
87
|
+
lines.push(` <div className="container mx-auto px-4 py-8 max-w-2xl">`);
|
|
88
|
+
lines.push(` <h1 className="text-2xl font-bold mb-6">`);
|
|
89
|
+
lines.push(` {isEditing ? 'Edit ${page.name}' : 'New ${page.name}'}`);
|
|
90
|
+
lines.push(` </h1>`);
|
|
91
|
+
lines.push(``);
|
|
92
|
+
lines.push(` <form onSubmit={handleSubmit} className="bg-white border border-gray-200 rounded-xl p-6 flex flex-col gap-4">`);
|
|
93
|
+
lines.push(``);
|
|
94
|
+
for (const col of columns) {
|
|
95
|
+
const { dartType } = (0, generator_core_1.parseColumnType)(col);
|
|
96
|
+
const label = col.name.replaceAll('_', ' ');
|
|
97
|
+
if (dartType.includes('bool')) {
|
|
98
|
+
lines.push(` <label className="flex items-center gap-3 cursor-pointer">`);
|
|
99
|
+
lines.push(` <input`);
|
|
100
|
+
lines.push(` type="checkbox"`);
|
|
101
|
+
lines.push(` checked={form.${col.name} as boolean ?? false}`);
|
|
102
|
+
lines.push(` onChange={(e) => handleChange('${col.name}', e.target.checked)}`);
|
|
103
|
+
lines.push(` className="w-4 h-4 rounded"`);
|
|
104
|
+
lines.push(` />`);
|
|
105
|
+
lines.push(` <span className="text-sm font-medium text-gray-700 capitalize">${label}</span>`);
|
|
106
|
+
lines.push(` </label>`);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const inputType = dartType.includes('int') || dartType.includes('double')
|
|
110
|
+
? 'number'
|
|
111
|
+
: dartType.includes('DateTime')
|
|
112
|
+
? 'datetime-local'
|
|
113
|
+
: 'text';
|
|
114
|
+
lines.push(` <div className="flex flex-col gap-1">`);
|
|
115
|
+
lines.push(` <label className="text-sm font-medium text-gray-700 capitalize">${label}</label>`);
|
|
116
|
+
lines.push(` <input`);
|
|
117
|
+
lines.push(` type="${inputType}"`);
|
|
118
|
+
lines.push(` value={form.${col.name} as string ?? ''}`);
|
|
119
|
+
lines.push(` onChange={(e) => handleChange('${col.name}', e.target.value)}`);
|
|
120
|
+
if (col.required) {
|
|
121
|
+
lines.push(` required`);
|
|
122
|
+
}
|
|
123
|
+
lines.push(` className="px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-black"`);
|
|
124
|
+
lines.push(` />`);
|
|
125
|
+
lines.push(` </div>`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
lines.push(``);
|
|
129
|
+
lines.push(` {error && (`);
|
|
130
|
+
lines.push(` <p className="text-sm text-red-500">{error}</p>`);
|
|
131
|
+
lines.push(` )}`);
|
|
132
|
+
lines.push(``);
|
|
133
|
+
lines.push(` <div className="flex gap-3 pt-2">`);
|
|
134
|
+
lines.push(` <button`);
|
|
135
|
+
lines.push(` type="button"`);
|
|
136
|
+
lines.push(` onClick={() => router.back()}`);
|
|
137
|
+
lines.push(` className="flex-1 py-2.5 border border-gray-200 rounded-lg text-sm font-medium hover:bg-gray-50 transition"`);
|
|
138
|
+
lines.push(` >`);
|
|
139
|
+
lines.push(` Cancel`);
|
|
140
|
+
lines.push(` </button>`);
|
|
141
|
+
lines.push(` <button`);
|
|
142
|
+
lines.push(` type="submit"`);
|
|
143
|
+
lines.push(` disabled={loading}`);
|
|
144
|
+
lines.push(` className="flex-1 py-2.5 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 disabled:opacity-40 transition"`);
|
|
145
|
+
lines.push(` >`);
|
|
146
|
+
lines.push(` {loading ? 'Saving...' : isEditing ? 'Update' : 'Create'}`);
|
|
147
|
+
lines.push(` </button>`);
|
|
148
|
+
lines.push(` </div>`);
|
|
149
|
+
lines.push(` </form>`);
|
|
150
|
+
lines.push(` </div>`);
|
|
151
|
+
lines.push(` )`);
|
|
152
|
+
lines.push(`}`);
|
|
153
|
+
return {
|
|
154
|
+
path: `app/(presentation)/${routePath}/form/page.tsx`,
|
|
155
|
+
content: lines.join('\n'),
|
|
156
|
+
category: 'customizable',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=page-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-form.js","sourceRoot":"","sources":["../../src/templates/page-form.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-landing.d.ts","sourceRoot":"","sources":["../../src/templates/page-landing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAExE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CA4IhE"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-landing.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.generateLandingPage = generateLandingPage;
|
|
5
|
+
function generateLandingPage(page) {
|
|
6
|
+
const routePath = page.slug.replace(/^\//, '');
|
|
7
|
+
const lines = [];
|
|
8
|
+
lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
|
|
9
|
+
lines.push(`// Page: ${page.name} — ${page.template_type}`);
|
|
10
|
+
lines.push(`// Presentation layer — generated once, you own this file.`);
|
|
11
|
+
lines.push(`// Regenerate: nxf generate nextjs --include-views`);
|
|
12
|
+
lines.push(``);
|
|
13
|
+
lines.push(`import Link from 'next/link'`);
|
|
14
|
+
lines.push(``);
|
|
15
|
+
if (page.template_type === 'landing-hero-cta') {
|
|
16
|
+
lines.push(`export default function LandingHeroCtaPage() {`);
|
|
17
|
+
lines.push(` return (`);
|
|
18
|
+
lines.push(` <main className="min-h-screen flex flex-col items-center justify-center px-4 text-center bg-white">`);
|
|
19
|
+
lines.push(` <h1 className="text-5xl md:text-6xl font-bold text-gray-900 max-w-3xl leading-tight">`);
|
|
20
|
+
lines.push(` Your headline goes here`);
|
|
21
|
+
lines.push(` </h1>`);
|
|
22
|
+
lines.push(` <p className="mt-6 text-xl text-gray-500 max-w-xl">`);
|
|
23
|
+
lines.push(` A compelling subtitle that explains your value proposition in one or two sentences.`);
|
|
24
|
+
lines.push(` </p>`);
|
|
25
|
+
lines.push(` <div className="mt-10 flex gap-4">`);
|
|
26
|
+
lines.push(` <Link href="/sign-up"`);
|
|
27
|
+
lines.push(` className="px-8 py-3 bg-black text-white rounded-lg font-medium hover:bg-gray-800 transition">`);
|
|
28
|
+
lines.push(` Get Started`);
|
|
29
|
+
lines.push(` </Link>`);
|
|
30
|
+
lines.push(` <Link href="#features"`);
|
|
31
|
+
lines.push(` className="px-8 py-3 border border-gray-200 text-gray-700 rounded-lg font-medium hover:bg-gray-50 transition">`);
|
|
32
|
+
lines.push(` Learn More`);
|
|
33
|
+
lines.push(` </Link>`);
|
|
34
|
+
lines.push(` </div>`);
|
|
35
|
+
lines.push(` </main>`);
|
|
36
|
+
lines.push(` )`);
|
|
37
|
+
lines.push(`}`);
|
|
38
|
+
}
|
|
39
|
+
if (page.template_type === 'landing-hero-features') {
|
|
40
|
+
lines.push(`const features = [`);
|
|
41
|
+
lines.push(` { icon: '⚡', title: 'Fast', description: 'Built for speed from day one.' },`);
|
|
42
|
+
lines.push(` { icon: '🔒', title: 'Secure', description: 'Enterprise-grade security built in.' },`);
|
|
43
|
+
lines.push(` { icon: '🎨', title: 'Beautiful', description: 'Designed to delight your users.' },`);
|
|
44
|
+
lines.push(`]`);
|
|
45
|
+
lines.push(``);
|
|
46
|
+
lines.push(`export default function LandingHeroFeaturesPage() {`);
|
|
47
|
+
lines.push(` return (`);
|
|
48
|
+
lines.push(` <main className="min-h-screen bg-white">`);
|
|
49
|
+
lines.push(` <section className="flex flex-col items-center justify-center px-4 py-24 text-center">`);
|
|
50
|
+
lines.push(` <h1 className="text-5xl md:text-6xl font-bold text-gray-900 max-w-3xl leading-tight">`);
|
|
51
|
+
lines.push(` Your headline goes here`);
|
|
52
|
+
lines.push(` </h1>`);
|
|
53
|
+
lines.push(` <p className="mt-6 text-xl text-gray-500 max-w-xl">`);
|
|
54
|
+
lines.push(` A compelling subtitle that explains your value proposition.`);
|
|
55
|
+
lines.push(` </p>`);
|
|
56
|
+
lines.push(` <Link href="/sign-up"`);
|
|
57
|
+
lines.push(` className="mt-10 px-8 py-3 bg-black text-white rounded-lg font-medium hover:bg-gray-800 transition">`);
|
|
58
|
+
lines.push(` Get Started`);
|
|
59
|
+
lines.push(` </Link>`);
|
|
60
|
+
lines.push(` </section>`);
|
|
61
|
+
lines.push(` <section id="features" className="px-4 pb-24">`);
|
|
62
|
+
lines.push(` <div className="max-w-5xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-8">`);
|
|
63
|
+
lines.push(` {features.map((f) => (`);
|
|
64
|
+
lines.push(` <div key={f.title} className="p-6 border border-gray-200 rounded-xl text-center">`);
|
|
65
|
+
lines.push(` <div className="text-4xl mb-4">{f.icon}</div>`);
|
|
66
|
+
lines.push(` <h3 className="text-lg font-bold mb-2">{f.title}</h3>`);
|
|
67
|
+
lines.push(` <p className="text-gray-500 text-sm">{f.description}</p>`);
|
|
68
|
+
lines.push(` </div>`);
|
|
69
|
+
lines.push(` ))}`);
|
|
70
|
+
lines.push(` </div>`);
|
|
71
|
+
lines.push(` </section>`);
|
|
72
|
+
lines.push(` </main>`);
|
|
73
|
+
lines.push(` )`);
|
|
74
|
+
lines.push(`}`);
|
|
75
|
+
}
|
|
76
|
+
if (page.template_type === 'landing-hero-pricing') {
|
|
77
|
+
lines.push(`const plans = [`);
|
|
78
|
+
lines.push(` { name: 'Starter', price: '0', features: ['Feature 1', 'Feature 2', 'Feature 3'], cta: 'Get Started', highlight: false },`);
|
|
79
|
+
lines.push(` { name: 'Pro', price: '29', features: ['Everything in Starter', 'Feature 4', 'Feature 5', 'Feature 6'], cta: 'Start Free Trial', highlight: true },`);
|
|
80
|
+
lines.push(` { name: 'Enterprise', price: 'Custom', features: ['Everything in Pro', 'Dedicated support', 'Custom integrations'], cta: 'Contact Us', highlight: false },`);
|
|
81
|
+
lines.push(`]`);
|
|
82
|
+
lines.push(``);
|
|
83
|
+
lines.push(`export default function LandingHeroPricingPage() {`);
|
|
84
|
+
lines.push(` return (`);
|
|
85
|
+
lines.push(` <main className="min-h-screen bg-white">`);
|
|
86
|
+
lines.push(` <section className="flex flex-col items-center px-4 py-24 text-center">`);
|
|
87
|
+
lines.push(` <h1 className="text-5xl font-bold text-gray-900 max-w-2xl">Simple, transparent pricing</h1>`);
|
|
88
|
+
lines.push(` <p className="mt-4 text-xl text-gray-500">No hidden fees. Cancel anytime.</p>`);
|
|
89
|
+
lines.push(` <div className="mt-16 grid grid-cols-1 md:grid-cols-3 gap-6 w-full max-w-5xl">`);
|
|
90
|
+
lines.push(` {plans.map((plan) => (`);
|
|
91
|
+
lines.push(` <div key={plan.name} className={\`p-8 rounded-2xl border \${plan.highlight ? 'bg-black text-white border-black' : 'border-gray-200'}\`}>`);
|
|
92
|
+
lines.push(` <h3 className="text-lg font-bold">{plan.name}</h3>`);
|
|
93
|
+
lines.push(` <div className="mt-4 flex items-baseline gap-1">`);
|
|
94
|
+
lines.push(` <span className="text-4xl font-bold">{plan.price === 'Custom' ? 'Custom' : \`$\${plan.price}\`}</span>`);
|
|
95
|
+
lines.push(` {plan.price !== 'Custom' && <span className={\`text-sm \${plan.highlight ? 'text-gray-300' : 'text-gray-500'}\`}>/mo</span>}`);
|
|
96
|
+
lines.push(` </div>`);
|
|
97
|
+
lines.push(` <ul className="mt-6 flex flex-col gap-2">`);
|
|
98
|
+
lines.push(` {plan.features.map((f) => (`);
|
|
99
|
+
lines.push(` <li key={f} className={\`text-sm flex items-center gap-2 \${plan.highlight ? 'text-gray-300' : 'text-gray-600'}\`}>`);
|
|
100
|
+
lines.push(` <span>✓</span>{f}`);
|
|
101
|
+
lines.push(` </li>`);
|
|
102
|
+
lines.push(` ))}`);
|
|
103
|
+
lines.push(` </ul>`);
|
|
104
|
+
lines.push(` <Link href="/sign-up"`);
|
|
105
|
+
lines.push(` className={\`mt-8 block text-center py-2.5 rounded-lg text-sm font-medium transition \${plan.highlight ? 'bg-white text-black hover:bg-gray-100' : 'bg-black text-white hover:bg-gray-800'}\`}>`);
|
|
106
|
+
lines.push(` {plan.cta}`);
|
|
107
|
+
lines.push(` </Link>`);
|
|
108
|
+
lines.push(` </div>`);
|
|
109
|
+
lines.push(` ))}`);
|
|
110
|
+
lines.push(` </div>`);
|
|
111
|
+
lines.push(` </section>`);
|
|
112
|
+
lines.push(` </main>`);
|
|
113
|
+
lines.push(` )`);
|
|
114
|
+
lines.push(`}`);
|
|
115
|
+
}
|
|
116
|
+
if (page.template_type === 'landing-minimal') {
|
|
117
|
+
lines.push(`export default function LandingMinimalPage() {`);
|
|
118
|
+
lines.push(` return (`);
|
|
119
|
+
lines.push(` <main className="min-h-screen flex flex-col items-center justify-center px-4 text-center bg-white">`);
|
|
120
|
+
lines.push(` <h1 className="text-6xl font-bold text-gray-900 tracking-tight">`);
|
|
121
|
+
lines.push(` Your App`);
|
|
122
|
+
lines.push(` </h1>`);
|
|
123
|
+
lines.push(` <p className="mt-4 text-lg text-gray-400 max-w-md">`);
|
|
124
|
+
lines.push(` A minimal, clean landing page.`);
|
|
125
|
+
lines.push(` </p>`);
|
|
126
|
+
lines.push(` <Link href="/sign-up"`);
|
|
127
|
+
lines.push(` className="mt-8 px-6 py-2.5 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 transition">`);
|
|
128
|
+
lines.push(` Get Started`);
|
|
129
|
+
lines.push(` </Link>`);
|
|
130
|
+
lines.push(` </main>`);
|
|
131
|
+
lines.push(` )`);
|
|
132
|
+
lines.push(`}`);
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
path: `app/(presentation)/${routePath}/page.tsx`,
|
|
136
|
+
content: lines.join('\n'),
|
|
137
|
+
category: 'customizable',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=page-landing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-landing.js","sourceRoot":"","sources":["../../src/templates/page-landing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-list.d.ts","sourceRoot":"","sources":["../../src/templates/page-list.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAQ/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,aAAa,CA+H3E"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File: underpeaks_codegen/packages/generator-nextjs/src/templates/page-list.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.generateListPage = generateListPage;
|
|
5
|
+
const generator_core_1 = require("@underpeaks/generator-core");
|
|
6
|
+
function generateListPage(page, model) {
|
|
7
|
+
const className = (0, generator_core_1.modelToClassName)(model.name);
|
|
8
|
+
const fileName = (0, generator_core_1.modelToFileName)(model.name);
|
|
9
|
+
const pk = (0, generator_core_1.getPrimaryKey)(model);
|
|
10
|
+
const pkName = pk?.name ?? 'id';
|
|
11
|
+
const columns = (0, generator_core_1.getVisibleColumns)(model).slice(0, 4);
|
|
12
|
+
const isGrid = page.template_type === 'grid';
|
|
13
|
+
const routePath = page.slug.replace(/^\//, '');
|
|
14
|
+
const modelSlug = model.name.replace('nxf_', '').replace(/_/g, '-');
|
|
15
|
+
const lines = [];
|
|
16
|
+
lines.push(`// GENERATED BY UNDERPEAKS CODEGEN v1.0.0`);
|
|
17
|
+
lines.push(`// Page: ${page.name} — ${page.template_type}`);
|
|
18
|
+
lines.push(`// Presentation layer — generated once, you own this file.`);
|
|
19
|
+
lines.push(`// Regenerate: nxf generate nextjs --include-views`);
|
|
20
|
+
lines.push(`// WARNING: --include-views will overwrite your changes.`);
|
|
21
|
+
lines.push(``);
|
|
22
|
+
lines.push(`import Link from 'next/link'`);
|
|
23
|
+
lines.push(`import { notFound } from 'next/navigation'`);
|
|
24
|
+
lines.push(`import type { ${className} } from '../../../generated/types/${fileName}.types'`);
|
|
25
|
+
lines.push(``);
|
|
26
|
+
lines.push(`async function get${className}s(page = 1, limit = 20): Promise<${className}[]> {`);
|
|
27
|
+
lines.push(` const res = await fetch(`);
|
|
28
|
+
lines.push(` \`\${process.env.NEXT_PUBLIC_APP_URL}/api/${modelSlug}?page=\${page}&limit=\${limit}\`,`);
|
|
29
|
+
lines.push(` { cache: 'no-store' },`);
|
|
30
|
+
lines.push(` )`);
|
|
31
|
+
lines.push(` if (!res.ok) return []`);
|
|
32
|
+
lines.push(` const json = await res.json()`);
|
|
33
|
+
lines.push(` return json.data ?? []`);
|
|
34
|
+
lines.push(`}`);
|
|
35
|
+
lines.push(``);
|
|
36
|
+
lines.push(`export default async function ${className}ListPage() {`);
|
|
37
|
+
lines.push(` const items = await get${className}s()`);
|
|
38
|
+
lines.push(``);
|
|
39
|
+
lines.push(` return (`);
|
|
40
|
+
lines.push(` <div className="container mx-auto px-4 py-8">`);
|
|
41
|
+
lines.push(` <div className="flex items-center justify-between mb-6">`);
|
|
42
|
+
lines.push(` <h1 className="text-2xl font-bold">${page.name}</h1>`);
|
|
43
|
+
lines.push(` <Link`);
|
|
44
|
+
lines.push(` href="/${routePath}/create"`);
|
|
45
|
+
lines.push(` className="px-4 py-2 bg-black text-white rounded-lg text-sm font-medium hover:bg-gray-800 transition"`);
|
|
46
|
+
lines.push(` >`);
|
|
47
|
+
lines.push(` Add New`);
|
|
48
|
+
lines.push(` </Link>`);
|
|
49
|
+
lines.push(` </div>`);
|
|
50
|
+
lines.push(``);
|
|
51
|
+
if (isGrid) {
|
|
52
|
+
lines.push(` {items.length === 0 ? (`);
|
|
53
|
+
lines.push(` <div className="text-center py-16 text-gray-400">`);
|
|
54
|
+
lines.push(` <p className="text-lg">No items yet</p>`);
|
|
55
|
+
lines.push(` <p className="text-sm mt-1">Click Add New to create your first item.</p>`);
|
|
56
|
+
lines.push(` </div>`);
|
|
57
|
+
lines.push(` ) : (`);
|
|
58
|
+
lines.push(` <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">`);
|
|
59
|
+
lines.push(` {items.map((item) => (`);
|
|
60
|
+
lines.push(` <Link`);
|
|
61
|
+
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"`);
|
|
64
|
+
lines.push(` >`);
|
|
65
|
+
if (columns[0]) {
|
|
66
|
+
lines.push(` <p className="font-semibold text-gray-900 truncate">{item.${columns[0].name}?.toString() ?? '—'}</p>`);
|
|
67
|
+
}
|
|
68
|
+
if (columns[1]) {
|
|
69
|
+
lines.push(` <p className="text-sm text-gray-500 mt-1 truncate">{item.${columns[1].name}?.toString() ?? ''}</p>`);
|
|
70
|
+
}
|
|
71
|
+
lines.push(` </Link>`);
|
|
72
|
+
lines.push(` ))}`);
|
|
73
|
+
lines.push(` </div>`);
|
|
74
|
+
lines.push(` )}`);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
lines.push(` {items.length === 0 ? (`);
|
|
78
|
+
lines.push(` <div className="text-center py-16 text-gray-400">`);
|
|
79
|
+
lines.push(` <p className="text-lg">No items yet</p>`);
|
|
80
|
+
lines.push(` <p className="text-sm mt-1">Click Add New to create your first item.</p>`);
|
|
81
|
+
lines.push(` </div>`);
|
|
82
|
+
lines.push(` ) : (`);
|
|
83
|
+
lines.push(` <div className="bg-white border border-gray-200 rounded-xl overflow-hidden">`);
|
|
84
|
+
lines.push(` <table className="w-full text-sm">`);
|
|
85
|
+
lines.push(` <thead className="bg-gray-50 border-b border-gray-200">`);
|
|
86
|
+
lines.push(` <tr>`);
|
|
87
|
+
for (const col of columns) {
|
|
88
|
+
const label = col.name.replaceAll('_', ' ');
|
|
89
|
+
lines.push(` <th className="px-4 py-3 text-left font-medium text-gray-600 capitalize">${label}</th>`);
|
|
90
|
+
}
|
|
91
|
+
lines.push(` <th className="px-4 py-3 text-right font-medium text-gray-600">Actions</th>`);
|
|
92
|
+
lines.push(` </tr>`);
|
|
93
|
+
lines.push(` </thead>`);
|
|
94
|
+
lines.push(` <tbody className="divide-y divide-gray-100">`);
|
|
95
|
+
lines.push(` {items.map((item) => (`);
|
|
96
|
+
lines.push(` <tr key={item.${pkName}} className="hover:bg-gray-50 transition">`);
|
|
97
|
+
for (const col of columns) {
|
|
98
|
+
lines.push(` <td className="px-4 py-3 text-gray-700">{item.${col.name}?.toString() ?? '—'}</td>`);
|
|
99
|
+
}
|
|
100
|
+
lines.push(` <td className="px-4 py-3 text-right">`);
|
|
101
|
+
lines.push(` <Link`);
|
|
102
|
+
lines.push(` href={\`/${routePath}/\${item.${pkName}}\`}`);
|
|
103
|
+
lines.push(` className="text-blue-600 hover:underline text-xs font-medium mr-3"`);
|
|
104
|
+
lines.push(` >`);
|
|
105
|
+
lines.push(` View`);
|
|
106
|
+
lines.push(` </Link>`);
|
|
107
|
+
lines.push(` <Link`);
|
|
108
|
+
lines.push(` href={\`/${routePath}/\${item.${pkName}}/edit\`}`);
|
|
109
|
+
lines.push(` className="text-gray-600 hover:underline text-xs font-medium"`);
|
|
110
|
+
lines.push(` >`);
|
|
111
|
+
lines.push(` Edit`);
|
|
112
|
+
lines.push(` </Link>`);
|
|
113
|
+
lines.push(` </td>`);
|
|
114
|
+
lines.push(` </tr>`);
|
|
115
|
+
lines.push(` ))}`);
|
|
116
|
+
lines.push(` </tbody>`);
|
|
117
|
+
lines.push(` </table>`);
|
|
118
|
+
lines.push(` </div>`);
|
|
119
|
+
lines.push(` )}`);
|
|
120
|
+
}
|
|
121
|
+
lines.push(` </div>`);
|
|
122
|
+
lines.push(` )`);
|
|
123
|
+
lines.push(`}`);
|
|
124
|
+
return {
|
|
125
|
+
path: `app/(presentation)/${routePath}/page.tsx`,
|
|
126
|
+
content: lines.join('\n'),
|
|
127
|
+
category: 'customizable',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=page-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-list.js","sourceRoot":"","sources":["../../src/templates/page-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-remaining.d.ts","sourceRoot":"","sources":["../../src/templates/page-remaining.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAQ/E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,aAAa,CA82BvF"}
|