create-flexireact 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/templates/default.d.ts +3 -1
- package/dist/templates/default.d.ts.map +1 -1
- package/dist/templates/default.js +200 -160
- package/dist/templates/default.js.map +1 -1
- package/dist/templates/fullstack.d.ts +5 -0
- package/dist/templates/fullstack.d.ts.map +1 -0
- package/dist/templates/fullstack.js +606 -0
- package/dist/templates/fullstack.js.map +1 -0
- package/dist/templates/index.d.ts +4 -4
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +13 -8
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/minimal.d.ts +3 -1
- package/dist/templates/minimal.d.ts.map +1 -1
- package/dist/templates/minimal.js +42 -10
- package/dist/templates/minimal.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,5 +8,7 @@
|
|
|
8
8
|
* - public/ : Static assets
|
|
9
9
|
*/
|
|
10
10
|
import type { TemplateFiles } from './index.js';
|
|
11
|
-
export declare function defaultTemplate(projectName: string
|
|
11
|
+
export declare function defaultTemplate(projectName: string, options?: {
|
|
12
|
+
styling?: 'tailwind' | 'css';
|
|
13
|
+
}): TemplateFiles;
|
|
12
14
|
//# sourceMappingURL=default.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,UAAU,GAAG,KAAK,CAAA;CAAO,GAAG,aAAa,CAyqBlH"}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* - lib/ : Utilities
|
|
8
8
|
* - public/ : Static assets
|
|
9
9
|
*/
|
|
10
|
-
export function defaultTemplate(projectName) {
|
|
10
|
+
export function defaultTemplate(projectName, options = {}) {
|
|
11
|
+
const isTailwind = options.styling !== 'css';
|
|
11
12
|
return {
|
|
12
13
|
// ========================================================================
|
|
13
14
|
// Config Files
|
|
@@ -18,25 +19,28 @@ export function defaultTemplate(projectName) {
|
|
|
18
19
|
private: true,
|
|
19
20
|
type: 'module',
|
|
20
21
|
scripts: {
|
|
21
|
-
dev: 'npm run css && flexireact dev',
|
|
22
|
-
build: 'npm run css && flexireact build',
|
|
22
|
+
dev: isTailwind ? 'npm run css && flexireact dev' : 'flexireact dev',
|
|
23
|
+
build: isTailwind ? 'npm run css && flexireact build' : 'flexireact build',
|
|
23
24
|
start: 'flexireact start',
|
|
24
|
-
css: 'tailwindcss -i ./app/styles/globals.css -o ./public/styles.css --minify',
|
|
25
|
+
...(isTailwind ? { css: 'tailwindcss -i ./app/styles/globals.css -o ./public/styles.css --minify' } : {}),
|
|
25
26
|
},
|
|
26
27
|
dependencies: {
|
|
27
|
-
react: '^
|
|
28
|
-
'react-dom': '^
|
|
29
|
-
'@flexireact/core': '^
|
|
28
|
+
react: '^19.0.0',
|
|
29
|
+
'react-dom': '^19.0.0',
|
|
30
|
+
'@flexireact/core': '^4.1.0',
|
|
31
|
+
'lucide-react': '^0.344.0',
|
|
30
32
|
clsx: '^2.1.0',
|
|
31
33
|
'tailwind-merge': '^2.2.0',
|
|
32
34
|
},
|
|
33
35
|
devDependencies: {
|
|
34
|
-
'@types/react': '^
|
|
35
|
-
'@types/react-dom': '^
|
|
36
|
+
'@types/react': '^19.0.0',
|
|
37
|
+
'@types/react-dom': '^19.0.0',
|
|
36
38
|
typescript: '^5.3.0',
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
...(isTailwind ? {
|
|
40
|
+
tailwindcss: '^4.0.0',
|
|
41
|
+
'@tailwindcss/cli': '^4.0.0',
|
|
42
|
+
'@tailwindcss/postcss': '^4.0.0',
|
|
43
|
+
} : {}),
|
|
40
44
|
},
|
|
41
45
|
}, null, 2),
|
|
42
46
|
'tsconfig.json': JSON.stringify({
|
|
@@ -62,12 +66,14 @@ export function defaultTemplate(projectName) {
|
|
|
62
66
|
include: ['**/*.ts', '**/*.tsx'],
|
|
63
67
|
exclude: ['node_modules', '.flexi', 'public'],
|
|
64
68
|
}, null, 2),
|
|
65
|
-
|
|
69
|
+
...(isTailwind ? {
|
|
70
|
+
'postcss.config.js': `export default {
|
|
66
71
|
plugins: {
|
|
67
72
|
"@tailwindcss/postcss": {},
|
|
68
73
|
},
|
|
69
74
|
};
|
|
70
75
|
`,
|
|
76
|
+
} : {}),
|
|
71
77
|
'flexireact.config.js': `/** @type {import('@flexireact/core').FlexiConfig} */
|
|
72
78
|
const config = {
|
|
73
79
|
styles: [
|
|
@@ -103,12 +109,10 @@ export default function RootLayout({ children }: RootLayoutProps) {
|
|
|
103
109
|
<link rel="stylesheet" href="/styles.css" />
|
|
104
110
|
<link rel="icon" href="/favicon.svg" />
|
|
105
111
|
</head>
|
|
106
|
-
<body className="bg-background text-foreground min-h-screen antialiased">
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<Footer />
|
|
111
|
-
</div>
|
|
112
|
+
<body className="${isTailwind ? 'bg-background text-foreground min-h-screen antialiased flex flex-col' : 'app-body'}">
|
|
113
|
+
<Navbar />
|
|
114
|
+
<main className="${isTailwind ? 'flex-1' : 'main-content'}">{children}</main>
|
|
115
|
+
<Footer />
|
|
112
116
|
</body>
|
|
113
117
|
</html>
|
|
114
118
|
);
|
|
@@ -116,39 +120,52 @@ export default function RootLayout({ children }: RootLayoutProps) {
|
|
|
116
120
|
`,
|
|
117
121
|
// Components - UI
|
|
118
122
|
'app/components/ui/Button.tsx': `import React from 'react';
|
|
119
|
-
import { cn } from '@/lib/utils';
|
|
123
|
+
import { cn } from '@/lib/utils'; // Keep utility usage
|
|
120
124
|
|
|
121
125
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
122
126
|
variant?: 'primary' | 'secondary' | 'ghost' | 'outline';
|
|
123
127
|
size?: 'sm' | 'md' | 'lg';
|
|
128
|
+
href?: string;
|
|
124
129
|
}
|
|
125
130
|
|
|
126
131
|
export function Button({
|
|
127
132
|
className,
|
|
128
133
|
variant = 'primary',
|
|
129
134
|
size = 'md',
|
|
135
|
+
href,
|
|
130
136
|
children,
|
|
131
137
|
...props
|
|
132
138
|
}: ButtonProps) {
|
|
139
|
+
const baseStyles = ${isTailwind
|
|
140
|
+
? "'inline-flex items-center justify-center font-medium rounded-lg transition-all focus:outline-none focus:ring-2 focus:ring-primary/50 disabled:opacity-50 disabled:cursor-not-allowed'"
|
|
141
|
+
: "'btn'"};
|
|
142
|
+
|
|
143
|
+
const variants = {
|
|
144
|
+
primary: ${isTailwind ? "'bg-primary text-black hover:bg-primary/90'" : "'btn-primary'"},
|
|
145
|
+
secondary: ${isTailwind ? "'bg-secondary text-white hover:bg-secondary/80'" : "'btn-secondary'"},
|
|
146
|
+
ghost: ${isTailwind ? "'hover:bg-white/5'" : "'btn-ghost'"},
|
|
147
|
+
outline: ${isTailwind ? "'border border-border hover:bg-white/5 hover:border-primary'" : "'btn-outline'"},
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const sizes = {
|
|
151
|
+
sm: ${isTailwind ? "'px-3 py-1.5 text-sm'" : "'btn-sm'"},
|
|
152
|
+
md: ${isTailwind ? "'px-4 py-2 text-sm'" : "'btn-md'"},
|
|
153
|
+
lg: ${isTailwind ? "'px-6 py-3 text-base'" : "'btn-lg'"},
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const classes = cn(
|
|
157
|
+
baseStyles,
|
|
158
|
+
variants[variant],
|
|
159
|
+
sizes[size],
|
|
160
|
+
className
|
|
161
|
+
);
|
|
162
|
+
|
|
163
|
+
if (href) {
|
|
164
|
+
return <a href={href} className={classes}>{children}</a>;
|
|
165
|
+
}
|
|
166
|
+
|
|
133
167
|
return (
|
|
134
|
-
<button
|
|
135
|
-
className={cn(
|
|
136
|
-
'inline-flex items-center justify-center font-medium rounded-lg transition-all',
|
|
137
|
-
'focus:outline-none focus:ring-2 focus:ring-primary/50',
|
|
138
|
-
'disabled:opacity-50 disabled:cursor-not-allowed',
|
|
139
|
-
{
|
|
140
|
-
'bg-primary text-black hover:bg-primary/90': variant === 'primary',
|
|
141
|
-
'bg-secondary text-white hover:bg-secondary/80': variant === 'secondary',
|
|
142
|
-
'hover:bg-white/5': variant === 'ghost',
|
|
143
|
-
'border border-border hover:bg-white/5 hover:border-primary': variant === 'outline',
|
|
144
|
-
'px-3 py-1.5 text-sm': size === 'sm',
|
|
145
|
-
'px-4 py-2 text-sm': size === 'md',
|
|
146
|
-
'px-6 py-3 text-base': size === 'lg',
|
|
147
|
-
},
|
|
148
|
-
className
|
|
149
|
-
)}
|
|
150
|
-
{...props}
|
|
151
|
-
>
|
|
168
|
+
<button className={classes} {...props}>
|
|
152
169
|
{children}
|
|
153
170
|
</button>
|
|
154
171
|
);
|
|
@@ -165,12 +182,11 @@ export function Card({ className, variant = 'default', children, ...props }: Car
|
|
|
165
182
|
return (
|
|
166
183
|
<div
|
|
167
184
|
className={cn(
|
|
168
|
-
'rounded-xl border border-border p-6 transition-all',
|
|
185
|
+
${isTailwind ? "'rounded-xl border border-border p-6 transition-all hover:border-primary/50'" : "'card'"},
|
|
169
186
|
{
|
|
170
|
-
'bg-card': variant === 'default',
|
|
171
|
-
'bg-white/5 backdrop-blur-xl': variant === 'glass',
|
|
187
|
+
${isTailwind ? "'bg-card': variant === 'default'," : ""},
|
|
188
|
+
${isTailwind ? "'bg-white/5 backdrop-blur-xl': variant === 'glass'," : ""},
|
|
172
189
|
},
|
|
173
|
-
'hover:border-primary/50',
|
|
174
190
|
className
|
|
175
191
|
)}
|
|
176
192
|
{...props}
|
|
@@ -181,15 +197,15 @@ export function Card({ className, variant = 'default', children, ...props }: Car
|
|
|
181
197
|
}
|
|
182
198
|
|
|
183
199
|
export function CardHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
|
|
184
|
-
return <div className={cn('mb-4', className)} {...props} />;
|
|
200
|
+
return <div className={cn(${isTailwind ? "'mb-4'" : "'card-header'"}, className)} {...props} />;
|
|
185
201
|
}
|
|
186
202
|
|
|
187
203
|
export function CardTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {
|
|
188
|
-
return <h3 className={cn('text-lg font-semibold', className)} {...props} />;
|
|
204
|
+
return <h3 className={cn(${isTailwind ? "'text-lg font-semibold'" : "'card-title'"}, className)} {...props} />;
|
|
189
205
|
}
|
|
190
206
|
|
|
191
207
|
export function CardContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
|
|
192
|
-
return <div className={cn('text-muted', className)} {...props} />;
|
|
208
|
+
return <div className={cn(${isTailwind ? "'text-muted-foreground'" : "'card-content'"}, className)} {...props} />;
|
|
193
209
|
}
|
|
194
210
|
`,
|
|
195
211
|
'app/components/ui/index.ts': `export { Button } from './Button';
|
|
@@ -197,28 +213,29 @@ export { Card, CardHeader, CardTitle, CardContent } from './Card';
|
|
|
197
213
|
`,
|
|
198
214
|
// Components - Layout
|
|
199
215
|
'app/components/layout/Navbar.tsx': `import React from 'react';
|
|
216
|
+
import { Zap, Github } from 'lucide-react';
|
|
200
217
|
|
|
201
218
|
export function Navbar() {
|
|
202
219
|
return (
|
|
203
|
-
<header className="sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-xl">
|
|
204
|
-
<nav className="container mx-auto px-4 h-16 flex items-center justify-between max-w-6xl">
|
|
205
|
-
<a href="/" className="flex items-center gap-2">
|
|
206
|
-
<div className="w-8 h-8 bg-primary rounded-lg flex items-center justify-center">
|
|
207
|
-
<
|
|
220
|
+
<header className="${isTailwind ? 'sticky top-0 z-50 border-b border-border bg-background/80 backdrop-blur-xl' : 'navbar'}">
|
|
221
|
+
<nav className="${isTailwind ? 'container mx-auto px-4 h-16 flex items-center justify-between max-w-6xl' : 'navbar-container'}">
|
|
222
|
+
<a href="/" className="${isTailwind ? 'flex items-center gap-2' : 'navbar-brand'}">
|
|
223
|
+
<div className="${isTailwind ? 'w-8 h-8 bg-primary rounded-lg flex items-center justify-center' : 'logo-container'}">
|
|
224
|
+
<Zap className="${isTailwind ? 'w-5 h-5 text-black' : 'logo-icon'}" />
|
|
208
225
|
</div>
|
|
209
|
-
<span className="font-semibold text-lg">FlexiReact</span>
|
|
226
|
+
<span className="${isTailwind ? 'font-semibold text-lg' : 'brand-text'}">FlexiReact</span>
|
|
210
227
|
</a>
|
|
211
228
|
|
|
212
|
-
<div className="flex items-center gap-6">
|
|
213
|
-
<a href="/" className="text-sm text-muted hover:text-foreground transition-colors">Home</a>
|
|
214
|
-
<a href="/about" className="text-sm text-muted hover:text-foreground transition-colors">About</a>
|
|
215
|
-
<a href="/blog" className="text-sm text-muted hover:text-foreground transition-colors">Blog</a>
|
|
229
|
+
<div className="${isTailwind ? 'flex items-center gap-6' : 'navbar-links'}">
|
|
230
|
+
<a href="/" className="${isTailwind ? 'text-sm text-muted-foreground hover:text-foreground transition-colors' : 'nav-link'}">Home</a>
|
|
231
|
+
<a href="/about" className="${isTailwind ? 'text-sm text-muted-foreground hover:text-foreground transition-colors' : 'nav-link'}">About</a>
|
|
232
|
+
<a href="/blog" className="${isTailwind ? 'text-sm text-muted-foreground hover:text-foreground transition-colors' : 'nav-link'}">Blog</a>
|
|
216
233
|
<a
|
|
217
234
|
href="https://github.com/flexireact/flexireact"
|
|
218
235
|
target="_blank"
|
|
219
|
-
className="text-sm text-muted hover:text-foreground transition-colors"
|
|
236
|
+
className="${isTailwind ? 'text-sm text-muted-foreground hover:text-foreground transition-colors' : 'nav-link'}"
|
|
220
237
|
>
|
|
221
|
-
|
|
238
|
+
<Github className="w-5 h-5" />
|
|
222
239
|
</a>
|
|
223
240
|
</div>
|
|
224
241
|
</nav>
|
|
@@ -230,11 +247,11 @@ export function Navbar() {
|
|
|
230
247
|
|
|
231
248
|
export function Footer() {
|
|
232
249
|
return (
|
|
233
|
-
<footer className="border-t border-border py-8 mt-auto">
|
|
234
|
-
<div className="container mx-auto px-4 text-center text-sm text-muted max-w-6xl">
|
|
250
|
+
<footer className="${isTailwind ? 'border-t border-border py-8 mt-auto' : 'footer'}">
|
|
251
|
+
<div className="${isTailwind ? 'container mx-auto px-4 text-center text-sm text-muted-foreground max-w-6xl' : 'footer-container'}">
|
|
235
252
|
<p>Built with FlexiReact v4 • {new Date().getFullYear()}</p>
|
|
236
|
-
<p className="mt-2">
|
|
237
|
-
<a href="https://discord.gg/rFSZxFtpAA" target="_blank" rel="noopener noreferrer" className="text-primary hover:underline">
|
|
253
|
+
<p className="${isTailwind ? 'mt-2' : ''}">
|
|
254
|
+
<a href="https://discord.gg/rFSZxFtpAA" target="_blank" rel="noopener noreferrer" className="${isTailwind ? 'text-primary hover:underline' : 'link'}">
|
|
238
255
|
Join our Discord Community 💬
|
|
239
256
|
</a>
|
|
240
257
|
</p>
|
|
@@ -278,6 +295,13 @@ export function ThemeProvider({ children }: { children: React.ReactNode }) {
|
|
|
278
295
|
}
|
|
279
296
|
}, [theme]);
|
|
280
297
|
|
|
298
|
+
// For classic CSS body class handling could be added here if needed
|
|
299
|
+
if (${!isTailwind}) {
|
|
300
|
+
useEffect(() => {
|
|
301
|
+
document.body.className = theme;
|
|
302
|
+
}, [theme]);
|
|
303
|
+
}
|
|
304
|
+
|
|
281
305
|
return (
|
|
282
306
|
<ThemeContext.Provider value={{ theme, setTheme }}>
|
|
283
307
|
{children}
|
|
@@ -292,7 +316,7 @@ export function useTheme() {
|
|
|
292
316
|
}
|
|
293
317
|
`,
|
|
294
318
|
// Styles
|
|
295
|
-
'app/styles/globals.css': `@import "tailwindcss";
|
|
319
|
+
'app/styles/globals.css': isTailwind ? `@import "tailwindcss";
|
|
296
320
|
|
|
297
321
|
/* FlexiReact v4 Theme */
|
|
298
322
|
@theme {
|
|
@@ -302,6 +326,7 @@ export function useTheme() {
|
|
|
302
326
|
--color-primary: #00FF9C;
|
|
303
327
|
--color-secondary: #1a1a1a;
|
|
304
328
|
--color-muted: #71717a;
|
|
329
|
+
--color-muted-foreground: #a1a1aa;
|
|
305
330
|
--color-border: #27272a;
|
|
306
331
|
--color-card: #18181b;
|
|
307
332
|
|
|
@@ -320,41 +345,79 @@ body {
|
|
|
320
345
|
color: var(--color-foreground);
|
|
321
346
|
-webkit-font-smoothing: antialiased;
|
|
322
347
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
opacity: 1;
|
|
332
|
-
transform: translateY(0);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.animate-fade-in-up {
|
|
337
|
-
animation: fadeInUp 0.6s ease-out forwards;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
.animate-delay-100 {
|
|
341
|
-
animation-delay: 0.1s;
|
|
342
|
-
opacity: 0;
|
|
348
|
+
` : `/* Modern CSS Variables */
|
|
349
|
+
:root {
|
|
350
|
+
--bg-color: #0a0a0a;
|
|
351
|
+
--text-color: #ffffff;
|
|
352
|
+
--primary-color: #00FF9C;
|
|
353
|
+
--border-color: #333;
|
|
354
|
+
--card-bg: #18181b;
|
|
355
|
+
--muted-text: #a1a1aa;
|
|
343
356
|
}
|
|
344
357
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
358
|
+
body {
|
|
359
|
+
background: var(--bg-color);
|
|
360
|
+
color: var(--text-color);
|
|
361
|
+
margin: 0;
|
|
362
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
363
|
+
min-height: 100vh;
|
|
364
|
+
display: flex;
|
|
365
|
+
flex-direction: column;
|
|
348
366
|
}
|
|
349
367
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}
|
|
368
|
+
/* Structural Classes */
|
|
369
|
+
.app-body { min-height: 100vh; display: flex; flex-direction: column; }
|
|
370
|
+
.main-content { flex: 1; }
|
|
371
|
+
.container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
|
|
372
|
+
|
|
373
|
+
/* Buttons */
|
|
374
|
+
.btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; border-radius: 8px; font-weight: 600; text-decoration: none; cursor: pointer; border: none; transition: all 0.2s; }
|
|
375
|
+
.btn-primary { background: var(--primary-color); color: #000; }
|
|
376
|
+
.btn-primary:hover { opacity: 0.9; }
|
|
377
|
+
.btn-outline { border: 1px solid var(--border-color); color: white; background: transparent; }
|
|
378
|
+
.btn-outline:hover { border-color: var(--primary-color); }
|
|
379
|
+
.btn-ghost { background: transparent; color: white; }
|
|
380
|
+
.btn-ghost:hover { background: rgba(255,255,255,0.1); }
|
|
381
|
+
.btn-sm { font-size: 0.8rem; padding: 5px 10px; }
|
|
382
|
+
.btn-lg { font-size: 1.2rem; padding: 15px 30px; }
|
|
383
|
+
|
|
384
|
+
/* Navbar */
|
|
385
|
+
.navbar { border-bottom: 1px solid var(--border-color); padding: 15px 0; background: rgba(10,10,10,0.8); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 50; }
|
|
386
|
+
.navbar-container { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 20px; }
|
|
387
|
+
.navbar-brand { display: flex; align-items: center; gap: 10px; font-weight: bold; font-size: 1.2rem; color: white; text-decoration: none; }
|
|
388
|
+
.logo-container { width: 32px; height: 32px; background: var(--primary-color); border-radius: 8px; display: flex; align-items: center; justify-content: center; }
|
|
389
|
+
.logo-icon { color: black; width: 20px; height: 20px; }
|
|
390
|
+
.navbar-links { display: flex; gap: 20px; }
|
|
391
|
+
.nav-link { color: var(--muted-text); text-decoration: none; font-weight: 500; font-size: 0.9rem; }
|
|
392
|
+
.nav-link:hover { color: white; }
|
|
393
|
+
|
|
394
|
+
/* Footer */
|
|
395
|
+
.footer { border-top: 1px solid var(--border-color); padding: 40px 0; margin-top: auto; text-align: center; color: var(--muted-text); font-size: 0.9rem; }
|
|
396
|
+
.footer-container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
|
|
397
|
+
.link { color: var(--primary-color); text-decoration: none; }
|
|
398
|
+
.link:hover { text-decoration: underline; }
|
|
399
|
+
|
|
400
|
+
/* Cards */
|
|
401
|
+
.card { border: 1px solid var(--border-color); border-radius: 12px; padding: 24px; background: var(--card-bg); transition: border-color 0.2s; }
|
|
402
|
+
.card:hover { border-color: rgba(0, 255, 156, 0.5); }
|
|
403
|
+
.card-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 10px; margin-top: 0; }
|
|
404
|
+
.card-content { color: var(--muted-text); }
|
|
405
|
+
.feature-icon { margin-bottom: 15px; color: var(--primary-color); }
|
|
406
|
+
|
|
407
|
+
/* Home Page Specifics */
|
|
408
|
+
.home-page { text-align: center; padding: 80px 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: calc(100vh - 8rem); }
|
|
409
|
+
.badge { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px; border-radius: 99px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); font-size: 0.9rem; color: var(--muted-text); margin-bottom: 30px; }
|
|
410
|
+
.page-title { font-size: 4rem; line-height: 1.1; margin-bottom: 20px; font-weight: 800; letter-spacing: -0.02em; }
|
|
411
|
+
.highlight { background: linear-gradient(to right, var(--primary-color), #00D68F); -webkit-background-clip: text; color: transparent; }
|
|
412
|
+
.subtitle { font-size: 1.25rem; color: var(--muted-text); max-width: 600px; margin: 0 auto 40px; line-height: 1.6; }
|
|
413
|
+
.actions { display: flex; gap: 15px; justify-content: center; }
|
|
414
|
+
.features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 60px; text-align: left; width: 100%; max-width: 900px; }
|
|
415
|
+
`,
|
|
416
|
+
'lib/utils.ts': `import { clsx, type ClassValue } from 'clsx';
|
|
417
|
+
import { twMerge } from 'tailwind-merge';
|
|
354
418
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
opacity: 0;
|
|
419
|
+
export function cn(...inputs: ClassValue[]) {
|
|
420
|
+
return twMerge(clsx(inputs));
|
|
358
421
|
}
|
|
359
422
|
`,
|
|
360
423
|
// ========================================================================
|
|
@@ -362,6 +425,7 @@ body {
|
|
|
362
425
|
// ========================================================================
|
|
363
426
|
'routes/(public)/home.tsx': `import React from 'react';
|
|
364
427
|
import { Button } from '@/app/components/ui';
|
|
428
|
+
import { Zap, Box, Palette, Lock } from 'lucide-react';
|
|
365
429
|
|
|
366
430
|
export const metadata = {
|
|
367
431
|
title: 'FlexiReact v4 - The Modern React Framework',
|
|
@@ -370,75 +434,62 @@ export const metadata = {
|
|
|
370
434
|
|
|
371
435
|
export default function HomePage() {
|
|
372
436
|
return (
|
|
373
|
-
<div className="flex flex-col items-center justify-center min-h-[calc(100vh-8rem)] px-4">
|
|
374
|
-
<div className="max-w-4xl mx-auto text-center space-y-8">
|
|
437
|
+
<div className="${isTailwind ? 'flex flex-col items-center justify-center min-h-[calc(100vh-8rem)] px-4' : 'home-page'}">
|
|
438
|
+
<div className="${isTailwind ? 'max-w-4xl mx-auto text-center space-y-8' : 'container'}">
|
|
375
439
|
{/* Badge */}
|
|
376
|
-
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-white/5 border border-white/10 text-sm">
|
|
377
|
-
<span className="relative flex h-2 w-2">
|
|
378
|
-
|
|
379
|
-
<span className="
|
|
440
|
+
<div className="${isTailwind ? 'inline-flex items-center gap-2 px-3 py-1 rounded-full bg-white/5 border border-white/10 text-sm' : 'badge'}">
|
|
441
|
+
<span className="${isTailwind ? 'relative flex h-2 w-2' : ''}">
|
|
442
|
+
{/* Badge dot logic simplified for css mode */}
|
|
443
|
+
{${isTailwind} && <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"></span>}
|
|
444
|
+
<span className="${isTailwind ? 'relative inline-flex rounded-full h-2 w-2 bg-primary' : 'badge-dot'}"></span>
|
|
380
445
|
</span>
|
|
381
|
-
<span className="text-muted">Introducing FlexiReact v4.0</span>
|
|
446
|
+
<span className="${isTailwind ? 'text-muted-foreground' : ''}">Introducing FlexiReact v4.0</span>
|
|
382
447
|
</div>
|
|
383
448
|
|
|
384
449
|
{/* Heading */}
|
|
385
|
-
<h1 className="text-5xl md:text-7xl font-bold tracking-tight">
|
|
450
|
+
<h1 className="${isTailwind ? 'text-5xl md:text-7xl font-bold tracking-tight' : 'page-title'}">
|
|
386
451
|
The React Framework
|
|
387
452
|
<br />
|
|
388
|
-
<span className="bg-gradient-to-r from-primary via-primary/80 to-primary bg-clip-text text-transparent">
|
|
453
|
+
<span className="${isTailwind ? 'bg-gradient-to-r from-primary via-primary/80 to-primary bg-clip-text text-transparent' : 'highlight'}">
|
|
389
454
|
for the Web
|
|
390
455
|
</span>
|
|
391
456
|
</h1>
|
|
392
457
|
|
|
393
458
|
{/* Description */}
|
|
394
|
-
<p className="text-xl text-muted max-w-2xl mx-auto leading-relaxed">
|
|
395
|
-
FlexiReact enables you to create full-stack web applications with TypeScript, Tailwind CSS, and modern tooling.
|
|
459
|
+
<p className="${isTailwind ? 'text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed' : 'subtitle'}">
|
|
460
|
+
FlexiReact enables you to create full-stack web applications with TypeScript${isTailwind ? ", Tailwind CSS," : ""}, and modern tooling.
|
|
396
461
|
</p>
|
|
397
462
|
|
|
398
463
|
{/* CTA Buttons */}
|
|
399
|
-
<div className="flex flex-col sm:flex-row gap-4 justify-center pt-4">
|
|
400
|
-
<Button size="lg" className="text-base">
|
|
464
|
+
<div className="${isTailwind ? 'flex flex-col sm:flex-row gap-4 justify-center pt-4' : 'actions'}">
|
|
465
|
+
<Button size="lg" className="${isTailwind ? 'text-base' : ''}">
|
|
401
466
|
Get Started →
|
|
402
467
|
</Button>
|
|
403
|
-
<Button variant="outline" size="lg" className="text-base">
|
|
468
|
+
<Button variant="outline" size="lg" className="${isTailwind ? 'text-base' : ''}">
|
|
404
469
|
Learn More
|
|
405
470
|
</Button>
|
|
406
471
|
</div>
|
|
407
472
|
|
|
408
|
-
{/* Terminal Preview */}
|
|
409
|
-
<div className="mt-12 max-w-2xl mx-auto">
|
|
410
|
-
<div className="rounded-lg border border-border bg-background/50 backdrop-blur-sm overflow-hidden">
|
|
411
|
-
<div className="flex items-center gap-2 px-4 py-3 border-b border-border bg-white/5">
|
|
412
|
-
<div className="flex gap-1.5">
|
|
413
|
-
<div className="w-3 h-3 rounded-full bg-red-500/60" />
|
|
414
|
-
<div className="w-3 h-3 rounded-full bg-yellow-500/60" />
|
|
415
|
-
<div className="w-3 h-3 rounded-full bg-green-500/60" />
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
<div className="p-6 font-mono text-sm">
|
|
419
|
-
<div className="text-muted">$ npx create-flexireact@latest</div>
|
|
420
|
-
</div>
|
|
421
|
-
</div>
|
|
422
|
-
</div>
|
|
423
|
-
|
|
424
473
|
{/* Features Grid */}
|
|
425
|
-
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 pt-16 max-w-3xl mx-auto">
|
|
426
|
-
{
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
{ icon: '🔒', label: 'TypeScript' },
|
|
431
|
-
].map((feature) => (
|
|
432
|
-
<div key={feature.label} className="flex flex-col items-center gap-2 p-4 rounded-lg border border-border bg-white/5 hover:bg-white/10 transition-colors">
|
|
433
|
-
<span className="text-2xl">{feature.icon}</span>
|
|
434
|
-
<span className="text-sm font-medium">{feature.label}</span>
|
|
435
|
-
</div>
|
|
436
|
-
))}
|
|
474
|
+
<div className="${isTailwind ? 'grid grid-cols-2 md:grid-cols-4 gap-4 pt-16 max-w-3xl mx-auto' : 'features-grid'}">
|
|
475
|
+
<Feature icon={<Zap size={24} />} label="Fast Refresh" />
|
|
476
|
+
<Feature icon={<Box size={24} />} label="File Routing" />
|
|
477
|
+
<Feature icon={<Palette size={24} />} label="${isTailwind ? 'Tailwind CSS' : 'Modern CSS'}" />
|
|
478
|
+
<Feature icon={<Lock size={24} />} label="TypeScript" />
|
|
437
479
|
</div>
|
|
438
480
|
</div>
|
|
439
481
|
</div>
|
|
440
482
|
);
|
|
441
483
|
}
|
|
484
|
+
|
|
485
|
+
function Feature({ icon, label }: any) {
|
|
486
|
+
return (
|
|
487
|
+
<div className="${isTailwind ? 'flex flex-col items-center gap-2 p-4 rounded-lg border border-border bg-white/5 hover:bg-white/10 transition-colors' : 'feature-card'}">
|
|
488
|
+
<span className="${isTailwind ? 'text-primary' : 'feature-icon'}">{icon}</span>
|
|
489
|
+
<span className="${isTailwind ? 'text-sm font-medium' : 'feature-label'}">{label}</span>
|
|
490
|
+
</div>
|
|
491
|
+
);
|
|
492
|
+
}
|
|
442
493
|
`,
|
|
443
494
|
'routes/(public)/about.tsx': `import React from 'react';
|
|
444
495
|
import { Card, CardHeader, CardTitle, CardContent } from '@/app/components/ui';
|
|
@@ -449,10 +500,10 @@ export const metadata = {
|
|
|
449
500
|
|
|
450
501
|
export default function AboutPage() {
|
|
451
502
|
return (
|
|
452
|
-
<div className="container mx-auto px-4 py-16 max-w-3xl">
|
|
453
|
-
<h1 className="text-4xl font-bold mb-8">About FlexiReact</h1>
|
|
503
|
+
<div className="${isTailwind ? 'container mx-auto px-4 py-16 max-w-3xl' : 'container'}">
|
|
504
|
+
<h1 className="${isTailwind ? 'text-4xl font-bold mb-8' : 'page-title'}">About FlexiReact</h1>
|
|
454
505
|
|
|
455
|
-
<Card className="mb-6">
|
|
506
|
+
<Card className="${isTailwind ? 'mb-6' : ''}">
|
|
456
507
|
<CardHeader>
|
|
457
508
|
<CardTitle>What is FlexiReact?</CardTitle>
|
|
458
509
|
</CardHeader>
|
|
@@ -470,13 +521,12 @@ export default function AboutPage() {
|
|
|
470
521
|
<CardTitle>Features</CardTitle>
|
|
471
522
|
</CardHeader>
|
|
472
523
|
<CardContent>
|
|
473
|
-
<ul className="space-y-2">
|
|
524
|
+
<ul className="${isTailwind ? 'space-y-2' : 'feature-list'}">
|
|
474
525
|
<li>✓ Server-Side Rendering (SSR)</li>
|
|
475
526
|
<li>✓ Static Site Generation (SSG)</li>
|
|
476
527
|
<li>✓ Islands Architecture</li>
|
|
477
528
|
<li>✓ File-based Routing</li>
|
|
478
529
|
<li>✓ TypeScript Support</li>
|
|
479
|
-
<li>✓ Tailwind CSS v4</li>
|
|
480
530
|
</ul>
|
|
481
531
|
</CardContent>
|
|
482
532
|
</Card>
|
|
@@ -499,12 +549,12 @@ const posts = [
|
|
|
499
549
|
|
|
500
550
|
export default function BlogPage() {
|
|
501
551
|
return (
|
|
502
|
-
<div className="container mx-auto px-4 py-16 max-w-6xl">
|
|
503
|
-
<h1 className="text-4xl font-bold mb-8">Blog</h1>
|
|
552
|
+
<div className="${isTailwind ? 'container mx-auto px-4 py-16 max-w-6xl' : 'container'}">
|
|
553
|
+
<h1 className="${isTailwind ? 'text-4xl font-bold mb-8' : 'page-title'}">Blog</h1>
|
|
504
554
|
|
|
505
|
-
<div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
|
|
555
|
+
<div className="${isTailwind ? 'grid gap-6 md:grid-cols-2 lg:grid-cols-3' : 'features-grid'}">
|
|
506
556
|
{posts.map((post) => (
|
|
507
|
-
<a key={post.slug} href={\`/blog/\${post.slug}\`}>
|
|
557
|
+
<a key={post.slug} href={\`/blog/\${post.slug}\`} style={{ textDecoration: 'none' }}>
|
|
508
558
|
<Card className="h-full">
|
|
509
559
|
<CardHeader>
|
|
510
560
|
<CardTitle>{post.title}</CardTitle>
|
|
@@ -529,15 +579,15 @@ interface BlogPostProps {
|
|
|
529
579
|
|
|
530
580
|
export default function BlogPost({ params }: BlogPostProps) {
|
|
531
581
|
return (
|
|
532
|
-
<div className="container mx-auto px-4 py-16 max-w-3xl">
|
|
533
|
-
<
|
|
534
|
-
<Button variant="ghost" size="sm"
|
|
535
|
-
</
|
|
582
|
+
<div className="${isTailwind ? 'container mx-auto px-4 py-16 max-w-3xl' : 'container'}">
|
|
583
|
+
<div className="mb-8">
|
|
584
|
+
<Button variant="ghost" size="sm" href="/blog">← Back to Blog</Button>
|
|
585
|
+
</div>
|
|
536
586
|
|
|
537
|
-
<h1 className="text-4xl font-bold mb-4">Blog Post: {params.slug}</h1>
|
|
587
|
+
<h1 className="${isTailwind ? 'text-4xl font-bold mb-4' : 'page-title'}">Blog Post: {params.slug}</h1>
|
|
538
588
|
|
|
539
|
-
<p className="text-muted mb-8">
|
|
540
|
-
This is a dynamic route. The slug parameter is: <code className="text-primary">{params.slug}</code>
|
|
589
|
+
<p className="${isTailwind ? 'text-muted-foreground mb-8' : 'subtitle'}">
|
|
590
|
+
This is a dynamic route. The slug parameter is: <code className="${isTailwind ? 'text-primary' : 'highlight'}">{params.slug}</code>
|
|
541
591
|
</p>
|
|
542
592
|
|
|
543
593
|
<div className="prose prose-invert">
|
|
@@ -565,16 +615,6 @@ export async function POST(request: Request) {
|
|
|
565
615
|
message: 'POST request received',
|
|
566
616
|
});
|
|
567
617
|
}
|
|
568
|
-
`,
|
|
569
|
-
// ========================================================================
|
|
570
|
-
// Lib Directory
|
|
571
|
-
// ========================================================================
|
|
572
|
-
'lib/utils.ts': `import { clsx, type ClassValue } from 'clsx';
|
|
573
|
-
import { twMerge } from 'tailwind-merge';
|
|
574
|
-
|
|
575
|
-
export function cn(...inputs: ClassValue[]) {
|
|
576
|
-
return twMerge(clsx(inputs));
|
|
577
|
-
}
|
|
578
618
|
`,
|
|
579
619
|
// ========================================================================
|
|
580
620
|
// Public Directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAIH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,UAA4C,EAAE;IACjG,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAE7C,OAAO;QACL,2EAA2E;QAC3E,eAAe;QACf,2EAA2E;QAE3E,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB;gBACpE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,kBAAkB;gBAC1E,KAAK,EAAE,kBAAkB;gBACzB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,yEAAyE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1G;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,SAAS;gBAChB,WAAW,EAAE,SAAS;gBACtB,kBAAkB,EAAE,QAAQ;gBAC5B,cAAc,EAAE,UAAU;gBAC1B,IAAI,EAAE,QAAQ;gBACd,gBAAgB,EAAE,QAAQ;aAC3B;YACD,eAAe,EAAE;gBACf,cAAc,EAAE,SAAS;gBACzB,kBAAkB,EAAE,SAAS;gBAC7B,UAAU,EAAE,QAAQ;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;oBACf,WAAW,EAAE,QAAQ;oBACrB,kBAAkB,EAAE,QAAQ;oBAC5B,sBAAsB,EAAE,QAAQ;iBACjC,CAAC,CAAC,CAAC,EAAE,CAAC;aACR;SACF,EAAE,IAAI,EAAE,CAAC,CAAC;QAEX,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;YAC9B,eAAe,EAAE;gBACf,MAAM,EAAE,QAAQ;gBAChB,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC;gBACtC,MAAM,EAAE,QAAQ;gBAChB,gBAAgB,EAAE,SAAS;gBAC3B,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,eAAe,EAAE,IAAI;gBACrB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC,KAAK,CAAC;oBACd,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;oBACxC,SAAS,EAAE,CAAC,SAAS,CAAC;iBACvB;aACF;YACD,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YAChC,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC;SAC9C,EAAE,IAAI,EAAE,CAAC,CAAC;QAEX,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,mBAAmB,EAAE;;;;;CAK1B;SACI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEP,sBAAsB,EAAE;;;;;;;;;;;;;;CAc3B;QAEG,2EAA2E;QAC3E,6CAA6C;QAC7C,2EAA2E;QAE3E,gBAAgB,EAAE;;;;;;;;;;;;;;;;;yBAiBG,UAAU,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,UAAU;;2BAE9F,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc;;;;;;CAMhE;QAEG,kBAAkB;QAClB,8BAA8B,EAAE;;;;;;;;;;;;;;;;;uBAiBb,UAAU;YACzB,CAAC,CAAC,uLAAuL;YACzL,CAAC,CAAC,OAAO;;;eAGF,UAAU,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,eAAe;iBAC1E,UAAU,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC,CAAC,iBAAiB;aACtF,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,aAAa;eAC/C,UAAU,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,eAAe;;;;UAIlG,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU;UACjD,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,UAAU;UAC/C,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;CAoB1D;QAEG,4BAA4B,EAAE;;;;;;;;;;;UAWxB,UAAU,CAAC,CAAC,CAAC,8EAA8E,CAAC,CAAC,CAAC,QAAQ;;YAEpG,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE;YACrD,UAAU,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;8BAYrD,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;;;;6BAIxC,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc;;;;8BAItD,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB;;CAEtF;QAEG,4BAA4B,EAAE;;CAEjC;QAEG,sBAAsB;QACtB,kCAAkC,EAAE;;;;;yBAKf,UAAU,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC,CAAC,QAAQ;wBACrG,UAAU,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,kBAAkB;iCAClG,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc;4BAC5D,UAAU,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,gBAAgB;8BAC9F,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW;;6BAEhD,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY;;;0BAGtD,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc;mCAC9C,UAAU,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU;wCAC5F,UAAU,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU;uCAClG,UAAU,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU;;;;yBAI/G,UAAU,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,UAAU;;;;;;;;;CASzH;QAEG,kCAAkC,EAAE;;;;yBAIf,UAAU,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,QAAQ;wBAC9D,UAAU,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC,CAAC,kBAAkB;;wBAE9G,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;yGACyD,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,MAAM;;;;;;;;CAQ5J;QAEG,gCAAgC,EAAE;;CAErC;QAEG,yBAAyB,EAAE;;CAE9B;QAEG,YAAY;QACZ,iCAAiC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6B/B,CAAC,UAAU;;;;;;;;;;;;;;;;;;CAkBlB;QAEG,SAAS;QACT,wBAAwB,EAAE,UAAU,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B1C,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEH;QAEG,cAAc,EAAE;;;;;;CAMnB;QAEG,2EAA2E;QAC3E,2CAA2C;QAC3C,2EAA2E;QAE3E,0BAA0B,EAAE;;;;;;;;;;;sBAWV,UAAU,CAAC,CAAC,CAAC,yEAAyE,CAAC,CAAC,CAAC,WAAW;wBAClG,UAAU,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,WAAW;;0BAElE,UAAU,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,OAAO;6BACrH,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;;eAEvD,UAAU;+BACM,UAAU,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,WAAW;;6BAEnF,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;;;;yBAI7C,UAAU,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,YAAY;;;6BAGvE,UAAU,CAAC,CAAC,CAAC,uFAAuF,CAAC,CAAC,CAAC,WAAW;;;;;;wBAMvH,UAAU,CAAC,CAAC,CAAC,iEAAiE,CAAC,CAAC,CAAC,UAAU;wFAC3B,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;;;;0BAIjG,UAAU,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,SAAS;yCAC/D,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;;2DAGX,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;;;;;;0BAM9D,UAAU,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,eAAe;;;yDAG/D,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY;;;;;;;;;;sBAU7E,UAAU,CAAC,CAAC,CAAC,qHAAqH,CAAC,CAAC,CAAC,cAAc;yBAChJ,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc;yBAC5C,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe;;;;CAI5E;QAEG,2BAA2B,EAAE;;;;;;;;;sBASX,UAAU,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,WAAW;uBAClE,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY;;yBAEnD,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;2BAkBtB,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;;;;;;;;;;;;CAYnE;QAEG,uBAAuB,EAAE;;;;;;;;;;;;;;;sBAeP,UAAU,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,WAAW;uBAClE,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY;;wBAEpD,UAAU,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;;;;;;;;CAiBhG;QAEG,wBAAwB,EAAE;;;;;;;;;sBASR,UAAU,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,WAAW;;;;;uBAKlE,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,YAAY;;sBAEtD,UAAU,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,UAAU;2EACD,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW;;;;;;;;;;;;CAYnH;QAEG,aAAa;QACb,qBAAqB,EAAE;;;;;;;;;;;;;;CAc1B;QAEG,2EAA2E;QAC3E,mBAAmB;QACnB,2EAA2E;QAE3E,oBAAoB,EAAE;;;;;;;;;OASnB;QAEH,iBAAiB,EAAE,EAAE;QAErB,2EAA2E;QAC3E,MAAM;QACN,2EAA2E;QAE3E,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAyBjB;KACE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullstack.d.ts","sourceRoot":"","sources":["../../src/templates/fullstack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,UAAU,GAAG,KAAK,CAAA;CAAO,GAAG,aAAa,CAsnBpH"}
|