@valuerail/cli 1.2.0-beta.3 → 1.2.0-beta.5
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/index.js +3 -3
- package/package.json +1 -1
- package/templates/nextjs/src/app/globals.css +3 -1
- package/templates/nextjs/src/app/layout.tsx +17 -3
- package/templates/nextjs/src/app/loading.tsx +24 -0
- package/templates/nextjs/src/app/opengraph-image.tsx +97 -0
- package/templates/nextjs/src/app/robots.ts +15 -0
- package/templates/nextjs/src/app/sitemap.ts +25 -0
- package/templates/nextjs/src/lib/config.ts +7 -0
- package/templates/nextjs/vrail.config.ts +25 -0
package/dist/index.js
CHANGED
|
@@ -50665,7 +50665,7 @@ function Banner({ hideStatus = false }) {
|
|
|
50665
50665
|
const isVrailProject = hasVrailConfig();
|
|
50666
50666
|
const [version, setVersion] = import_react26.useState("v0.0.1");
|
|
50667
50667
|
import_react26.useEffect(() => {
|
|
50668
|
-
const v = "1.2.0-beta.
|
|
50668
|
+
const v = "1.2.0-beta.5";
|
|
50669
50669
|
setVersion(v);
|
|
50670
50670
|
}, []);
|
|
50671
50671
|
return /* @__PURE__ */ jsx_dev_runtime3.jsxDEV(Box_default, {
|
|
@@ -52783,7 +52783,7 @@ function App2() {
|
|
|
52783
52783
|
onBack: goToDashboard
|
|
52784
52784
|
}, undefined, false, undefined, this),
|
|
52785
52785
|
currentView === "goodbye" && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(GoodbyeView, {
|
|
52786
|
-
version: "1.2.0-beta.
|
|
52786
|
+
version: "1.2.0-beta.5",
|
|
52787
52787
|
cwd: process.cwd(),
|
|
52788
52788
|
isVrailProject: hasVrailConfig2()
|
|
52789
52789
|
}, undefined, false, undefined, this)
|
|
@@ -52821,7 +52821,7 @@ var showHelp = () => {
|
|
|
52821
52821
|
`);
|
|
52822
52822
|
};
|
|
52823
52823
|
var showVersion = () => {
|
|
52824
|
-
console.log("1.2.0-beta.
|
|
52824
|
+
console.log("1.2.0-beta.5");
|
|
52825
52825
|
};
|
|
52826
52826
|
if (command === "help" || command === "--help" || command === "-h") {
|
|
52827
52827
|
showHelp();
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
body {
|
|
17
17
|
background: var(--background);
|
|
18
18
|
color: var(--foreground);
|
|
19
|
-
font-family:
|
|
19
|
+
font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif;
|
|
20
20
|
margin: 0;
|
|
21
21
|
padding: 0;
|
|
22
22
|
min-height: 100vh;
|
|
@@ -42,6 +42,7 @@ code {
|
|
|
42
42
|
border-radius: 4px;
|
|
43
43
|
padding: 2px 6px;
|
|
44
44
|
font-size: 0.9em;
|
|
45
|
+
font-family: var(--font-geist-mono), ui-monospace, SFMono-Regular, monospace;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
pre {
|
|
@@ -52,4 +53,5 @@ pre {
|
|
|
52
53
|
overflow-x: auto;
|
|
53
54
|
font-size: 14px;
|
|
54
55
|
line-height: 1.6;
|
|
56
|
+
font-family: var(--font-geist-mono), ui-monospace, SFMono-Regular, monospace;
|
|
55
57
|
}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import type { Metadata } from "next";
|
|
2
|
+
import { Geist, Geist_Mono } from "next/font/google";
|
|
3
|
+
import { siteConfig } from "../lib/config";
|
|
2
4
|
import "./globals.css";
|
|
3
5
|
|
|
6
|
+
const geistSans = Geist({
|
|
7
|
+
variable: "--font-geist-sans",
|
|
8
|
+
subsets: ["latin"],
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const geistMono = Geist_Mono({
|
|
12
|
+
variable: "--font-geist-mono",
|
|
13
|
+
subsets: ["latin"],
|
|
14
|
+
});
|
|
15
|
+
|
|
4
16
|
export const metadata: Metadata = {
|
|
5
|
-
title:
|
|
6
|
-
description:
|
|
17
|
+
title: siteConfig.metadata.title,
|
|
18
|
+
description: siteConfig.metadata.description,
|
|
7
19
|
};
|
|
8
20
|
|
|
9
21
|
export default function RootLayout({
|
|
@@ -13,7 +25,9 @@ export default function RootLayout({
|
|
|
13
25
|
}>) {
|
|
14
26
|
return (
|
|
15
27
|
<html lang="en">
|
|
16
|
-
<body
|
|
28
|
+
<body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
|
|
29
|
+
{children}
|
|
30
|
+
</body>
|
|
17
31
|
</html>
|
|
18
32
|
);
|
|
19
33
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export default function Loading() {
|
|
2
|
+
return (
|
|
3
|
+
<main className="min-h-screen flex flex-col items-center justify-center px-6 py-12 bg-[#0a0a0a]">
|
|
4
|
+
<div className="space-y-6 text-center animate-pulse">
|
|
5
|
+
<pre
|
|
6
|
+
className="font-bold inline-block text-[10px] sm:text-xs md:text-sm leading-none"
|
|
7
|
+
style={{
|
|
8
|
+
backgroundImage: 'linear-gradient(to right, #FF5F6D, #FFC371)',
|
|
9
|
+
WebkitBackgroundClip: 'text',
|
|
10
|
+
WebkitTextFillColor: 'transparent',
|
|
11
|
+
backgroundClip: 'text',
|
|
12
|
+
color: 'transparent'
|
|
13
|
+
}}
|
|
14
|
+
>
|
|
15
|
+
{` _ _ _ _ _ _ ___ ___ _ ___ _
|
|
16
|
+
\\ \\ / / /_\\ | | | | | | | __| | _ \\ /_\\ |_ _| | |
|
|
17
|
+
\\ V / / _ \\ | |__ | |_| | | _| | / / _ \\ | | | |__
|
|
18
|
+
\\_/ /_/ \\_\\ |____| \\___/ |___| |_|_\\ /_/ \\_\\ |___| |____|`}
|
|
19
|
+
</pre>
|
|
20
|
+
<p className="text-[#666] text-sm mt-4">Loading...</p>
|
|
21
|
+
</div>
|
|
22
|
+
</main>
|
|
23
|
+
)
|
|
24
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ImageResponse } from 'next/og'
|
|
2
|
+
import { siteConfig } from '../lib/config'
|
|
3
|
+
|
|
4
|
+
export const runtime = 'edge'
|
|
5
|
+
|
|
6
|
+
export const alt = 'ValueRail App'
|
|
7
|
+
export const size = {
|
|
8
|
+
width: 1200,
|
|
9
|
+
height: 630,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const contentType = 'image/png'
|
|
13
|
+
|
|
14
|
+
export default async function Image() {
|
|
15
|
+
const { title, description } = siteConfig.metadata
|
|
16
|
+
|
|
17
|
+
return new ImageResponse(
|
|
18
|
+
(
|
|
19
|
+
<div
|
|
20
|
+
style={{
|
|
21
|
+
background: '#0a0a0a',
|
|
22
|
+
width: '100%',
|
|
23
|
+
height: '100%',
|
|
24
|
+
display: 'flex',
|
|
25
|
+
flexDirection: 'column',
|
|
26
|
+
alignItems: 'center',
|
|
27
|
+
justifyContent: 'center',
|
|
28
|
+
fontFamily: 'monospace',
|
|
29
|
+
border: '20px solid #222',
|
|
30
|
+
}}
|
|
31
|
+
>
|
|
32
|
+
<div
|
|
33
|
+
style={{
|
|
34
|
+
display: 'flex',
|
|
35
|
+
flexDirection: 'column',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
gap: '20px',
|
|
38
|
+
}}
|
|
39
|
+
>
|
|
40
|
+
{/* Mock Terminal Window */}
|
|
41
|
+
<div
|
|
42
|
+
style={{
|
|
43
|
+
display: 'flex',
|
|
44
|
+
background: '#111',
|
|
45
|
+
border: '1px solid #333',
|
|
46
|
+
borderRadius: '12px',
|
|
47
|
+
padding: '40px 80px',
|
|
48
|
+
flexDirection: 'column',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
boxShadow: '0 20px 50px rgba(0,0,0,0.5)',
|
|
51
|
+
}}
|
|
52
|
+
>
|
|
53
|
+
<div
|
|
54
|
+
style={{
|
|
55
|
+
fontSize: 60,
|
|
56
|
+
fontWeight: 'bold',
|
|
57
|
+
background: 'linear-gradient(to right, #FF5F6D, #FFC371)',
|
|
58
|
+
backgroundClip: 'text',
|
|
59
|
+
color: 'transparent',
|
|
60
|
+
marginBottom: 20,
|
|
61
|
+
}}
|
|
62
|
+
>
|
|
63
|
+
{title}
|
|
64
|
+
</div>
|
|
65
|
+
<div
|
|
66
|
+
style={{
|
|
67
|
+
fontSize: 30,
|
|
68
|
+
color: '#666',
|
|
69
|
+
textAlign: 'center',
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
{description}
|
|
73
|
+
</div>
|
|
74
|
+
<div
|
|
75
|
+
style={{
|
|
76
|
+
marginTop: 40,
|
|
77
|
+
display: 'flex',
|
|
78
|
+
alignItems: 'center',
|
|
79
|
+
gap: 10,
|
|
80
|
+
background: '#222',
|
|
81
|
+
padding: '10px 20px',
|
|
82
|
+
borderRadius: '8px',
|
|
83
|
+
border: '1px solid #333',
|
|
84
|
+
}}
|
|
85
|
+
>
|
|
86
|
+
<div style={{ color: '#CD6052' }}>$</div>
|
|
87
|
+
<div style={{ color: '#ededed' }}>npm install @valuerail/cli</div>
|
|
88
|
+
</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
),
|
|
93
|
+
{
|
|
94
|
+
...size,
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MetadataRoute } from 'next';
|
|
2
|
+
import { siteConfig } from '../lib/config';
|
|
3
|
+
|
|
4
|
+
export default function robots(): MetadataRoute.Robots {
|
|
5
|
+
const baseUrl = siteConfig.metadata.baseUrl;
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
rules: {
|
|
9
|
+
userAgent: '*',
|
|
10
|
+
allow: [...siteConfig.robots.allow],
|
|
11
|
+
disallow: [...siteConfig.robots.disallow],
|
|
12
|
+
},
|
|
13
|
+
sitemap: `${baseUrl}/sitemap.xml`,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MetadataRoute } from 'next';
|
|
2
|
+
import { siteConfig } from '../lib/config';
|
|
3
|
+
|
|
4
|
+
export default function sitemap(): MetadataRoute.Sitemap {
|
|
5
|
+
const baseUrl = siteConfig.metadata.baseUrl;
|
|
6
|
+
|
|
7
|
+
// Define your static routes here
|
|
8
|
+
const routes = [
|
|
9
|
+
'',
|
|
10
|
+
'/temp',
|
|
11
|
+
// Add more static routes
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
// Filter out excluded routes from config
|
|
15
|
+
const filteredRoutes = routes.filter(route =>
|
|
16
|
+
!siteConfig.sitemap.exclude.some(excludePath => route.startsWith(excludePath))
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
return filteredRoutes.map(route => ({
|
|
20
|
+
url: `${baseUrl}${route}`,
|
|
21
|
+
lastModified: new Date(),
|
|
22
|
+
changeFrequency: 'weekly',
|
|
23
|
+
priority: route === '' ? 1 : 0.8,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ValueRail Configuration
|
|
3
|
+
*
|
|
4
|
+
* This file controls the global settings for your application,
|
|
5
|
+
* including SEO parameters (sitemap, robots.txt) and metadata.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
metadata: {
|
|
10
|
+
title: "ValueRail App",
|
|
11
|
+
description: "Created with ValueRail CLI",
|
|
12
|
+
baseUrl: "https://example.com", // Change this to your actual specific domain
|
|
13
|
+
},
|
|
14
|
+
sitemap: {
|
|
15
|
+
// Routes to exclude from sitemap.xml
|
|
16
|
+
exclude: ['/temp', '/admin'],
|
|
17
|
+
},
|
|
18
|
+
robots: {
|
|
19
|
+
// Rules for robots.txt
|
|
20
|
+
allow: ['/'],
|
|
21
|
+
disallow: ['/temp', '/admin'],
|
|
22
|
+
}
|
|
23
|
+
} as const;
|
|
24
|
+
|
|
25
|
+
export default config;
|