create-vista-app 0.2.16 → 0.3.2

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.
@@ -1,86 +1,86 @@
1
- import Image from 'vista/image';
2
- import { ThemeToggle } from '../utils/theme-toggle';
3
-
4
- export default function Index() {
5
- return (
6
- <main className="relative flex min-h-[100dvh] items-center overflow-hidden bg-background text-foreground selection:bg-primary/20 selection:text-primary">
7
- <div className="pointer-events-none absolute top-0 right-0 h-[380px] w-[380px] translate-x-1/4 -translate-y-1/4 rounded-full bg-primary opacity-20 blur-[110px]" />
8
- <div className="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-primary/45 to-transparent" />
9
-
10
- <section className="relative z-10 mx-auto w-full max-w-5xl px-6 py-8 md:px-10 lg:px-12">
11
- <div className="absolute right-0 top-0">
12
- <ThemeToggle compact />
13
- </div>
14
-
15
- <div className="grid items-center gap-8 lg:grid-cols-[minmax(0,1.08fr)_minmax(300px,0.92fr)]">
16
- <div className="max-w-2xl">
17
- <div className="inline-flex items-center gap-2 rounded-full border border-primary/30 bg-primary/10 px-4 py-2 text-[11px] font-medium uppercase tracking-[0.28em] text-primary">
18
- Flashpack starter
19
- </div>
20
- <h1 className="mt-6 max-w-2xl text-balance text-[clamp(2.9rem,5.8vw,5rem)] font-semibold leading-[0.94] tracking-tight text-foreground">
21
- Stay in flow while the app keeps moving.
22
- </h1>
23
- <p className="mt-5 max-w-xl text-pretty text-base leading-8 text-muted-foreground md:text-lg">
24
- Flashpack keeps the Vista workflow familiar, but gives you a tighter edit loop, clearer runtime traces,
25
- and a cleaner place to inspect what happened during dev, build, and start.
26
- </p>
27
-
28
- <div className="mt-6 flex flex-wrap items-center gap-3 text-sm text-muted-foreground">
29
- <span className="rounded-full border border-border bg-panel px-4 py-2">
30
- Same <code>vista dev</code> workflow
31
- </span>
32
- <span className="rounded-full border border-border bg-panel px-4 py-2">
33
- Traceable output in <code>.flash/</code>
34
- </span>
35
- <a
36
- href="https://vista.xyz/docs/env"
37
- className="rounded-full border border-border bg-panel px-4 py-2 text-foreground transition-colors hover:border-primary/50 hover:text-primary"
38
- >
39
- Read the env guide
40
- </a>
41
- </div>
42
-
43
- <p className="mt-5 text-sm text-muted-foreground">
44
- Edit <code className="rounded bg-panel px-2 py-1 text-foreground">app/index.tsx</code> to shape this screen.
45
- </p>
46
- </div>
47
-
48
- <aside className="space-y-4">
49
- <div className="rounded-[1.9rem] border border-border bg-panel-elevated/80 p-6 shadow-[0_28px_75px_rgba(0,0,0,0.22)] backdrop-blur-sm">
50
- <div className="mb-6 flex items-center justify-between text-[11px] uppercase tracking-[0.24em] text-muted-foreground">
51
- <span>Vista</span>
52
- <span>Flashpack</span>
53
- </div>
54
- <div className="flex justify-center">
55
- <Image
56
- src="/vista.svg"
57
- alt="Vista Logo"
58
- width={600}
59
- height={600}
60
- priority
61
- unoptimized
62
- className="h-auto w-[210px] opacity-95 dark:invert sm:w-[250px] lg:w-[280px]"
63
- />
64
- </div>
65
- </div>
66
-
67
- <div className="grid gap-4 sm:grid-cols-2">
68
- <article className="rounded-[1.6rem] border border-border bg-panel p-5">
69
- <p className="text-sm font-medium uppercase tracking-[0.22em] text-primary">Quicker feedback</p>
70
- <p className="mt-3 text-sm leading-7 text-muted-foreground">
71
- Keep editing without feeling pushed into long restart cycles every time the route tree shifts.
72
- </p>
73
- </article>
74
- <article className="rounded-[1.6rem] border border-border bg-panel p-5">
75
- <p className="text-sm font-medium uppercase tracking-[0.22em] text-primary">Readable artifacts</p>
76
- <p className="mt-3 text-sm leading-7 text-muted-foreground">
77
- Open graph, runtime, and log output when you want to understand how the engine moved.
78
- </p>
79
- </article>
80
- </div>
81
- </aside>
82
- </div>
83
- </section>
84
- </main>
85
- );
86
- }
1
+ import Image from 'vista/image';
2
+ import { ThemeToggle } from '../components/theme-toggle';
3
+
4
+ export default function Index() {
5
+ return (
6
+ <main className="relative flex min-h-[100dvh] items-center overflow-hidden bg-background text-foreground selection:bg-primary/20 selection:text-primary">
7
+ <div className="pointer-events-none absolute top-0 right-0 h-[380px] w-[380px] translate-x-1/4 -translate-y-1/4 rounded-full bg-primary opacity-20 blur-[110px]" />
8
+ <div className="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-primary/45 to-transparent" />
9
+
10
+ <section className="relative z-10 mx-auto w-full max-w-5xl px-6 py-8 md:px-10 lg:px-12">
11
+ <div className="absolute right-0 top-0">
12
+ <ThemeToggle compact />
13
+ </div>
14
+
15
+ <div className="grid items-center gap-8 lg:grid-cols-[minmax(0,1.08fr)_minmax(300px,0.92fr)]">
16
+ <div className="max-w-2xl">
17
+ <div className="inline-flex items-center gap-2 rounded-full border border-primary/30 bg-primary/10 px-4 py-2 text-[11px] font-medium uppercase tracking-[0.28em] text-primary">
18
+ Flashpack starter
19
+ </div>
20
+ <h1 className="mt-6 max-w-2xl text-balance text-[clamp(2.9rem,5.8vw,5rem)] font-semibold leading-[0.94] tracking-tight text-foreground">
21
+ Stay in flow while the app keeps moving.
22
+ </h1>
23
+ <p className="mt-5 max-w-xl text-pretty text-base leading-8 text-muted-foreground md:text-lg">
24
+ Flashpack keeps the Vista workflow familiar, but gives you a tighter edit loop, clearer runtime traces,
25
+ and a cleaner place to inspect what happened during dev, build, and start.
26
+ </p>
27
+
28
+ <div className="mt-6 flex flex-wrap items-center gap-3 text-sm text-muted-foreground">
29
+ <span className="rounded-full border border-border bg-panel px-4 py-2">
30
+ Same <code>vista dev</code> workflow
31
+ </span>
32
+ <span className="rounded-full border border-border bg-panel px-4 py-2">
33
+ Traceable output in <code>.flash/</code>
34
+ </span>
35
+ <a
36
+ href="https://vista.xyz/docs/env"
37
+ className="rounded-full border border-border bg-panel px-4 py-2 text-foreground transition-colors hover:border-primary/50 hover:text-primary"
38
+ >
39
+ Read the env guide
40
+ </a>
41
+ </div>
42
+
43
+ <p className="mt-5 text-sm text-muted-foreground">
44
+ Edit <code className="rounded bg-panel px-2 py-1 text-foreground">app/index.tsx</code> to shape this screen.
45
+ </p>
46
+ </div>
47
+
48
+ <aside className="space-y-4">
49
+ <div className="rounded-[1.9rem] border border-border bg-panel-elevated/80 p-6 shadow-[0_28px_75px_rgba(0,0,0,0.22)] backdrop-blur-sm">
50
+ <div className="mb-6 flex items-center justify-between text-[11px] uppercase tracking-[0.24em] text-muted-foreground">
51
+ <span>Vista</span>
52
+ <span>Flashpack</span>
53
+ </div>
54
+ <div className="flex justify-center">
55
+ <Image
56
+ src="/vista.svg"
57
+ alt="Vista Logo"
58
+ width={600}
59
+ height={600}
60
+ priority
61
+ unoptimized
62
+ className="h-auto w-[210px] opacity-95 dark:invert sm:w-[250px] lg:w-[280px]"
63
+ />
64
+ </div>
65
+ </div>
66
+
67
+ <div className="grid gap-4 sm:grid-cols-2">
68
+ <article className="rounded-[1.6rem] border border-border bg-panel p-5">
69
+ <p className="text-sm font-medium uppercase tracking-[0.22em] text-primary">Quicker feedback</p>
70
+ <p className="mt-3 text-sm leading-7 text-muted-foreground">
71
+ Keep editing without feeling pushed into long restart cycles every time the route tree shifts.
72
+ </p>
73
+ </article>
74
+ <article className="rounded-[1.6rem] border border-border bg-panel p-5">
75
+ <p className="text-sm font-medium uppercase tracking-[0.22em] text-primary">Readable artifacts</p>
76
+ <p className="mt-3 text-sm leading-7 text-muted-foreground">
77
+ Open graph, runtime, and log output when you want to understand how the engine moved.
78
+ </p>
79
+ </article>
80
+ </div>
81
+ </aside>
82
+ </div>
83
+ </section>
84
+ </main>
85
+ );
86
+ }
@@ -1,35 +1,35 @@
1
- import type { Metadata } from 'vista';
2
- import { Geist, Geist_Mono } from 'vista/font/google';
3
- import { ThemeProvider, ThemeScript } from 'vista/theme';
4
- import './globals.css';
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
-
16
- export const metadata: Metadata = {
17
- title: 'My Vista App',
18
- description: 'Built with Vista Framework',
19
- };
20
-
21
- export default function RootLayout({ children }: { children: React.ReactNode }) {
22
- return (
23
- <html lang="en" suppressHydrationWarning>
24
- <head>
25
- <ThemeScript defaultTheme="dark" />
26
- </head>
27
- <body
28
- className={`${geistSans.variable} ${geistMono.variable} min-h-screen overflow-x-hidden bg-background text-foreground antialiased`}
29
- suppressHydrationWarning
30
- >
31
- <ThemeProvider defaultTheme="dark">{children}</ThemeProvider>
32
- </body>
33
- </html>
34
- );
35
- }
1
+ import type { Metadata } from 'vista';
2
+ import { Geist, Geist_Mono } from 'vista/font/google';
3
+ import { ThemeProvider, ThemeScript } from 'vista/theme';
4
+ import './globals.css';
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
+
16
+ export const metadata: Metadata = {
17
+ title: 'My Vista App',
18
+ description: 'Built with Vista Framework',
19
+ };
20
+
21
+ export default function RootLayout({ children }: { children: React.ReactNode }) {
22
+ return (
23
+ <html lang="en" suppressHydrationWarning>
24
+ <head>
25
+ <ThemeScript defaultTheme="dark" />
26
+ </head>
27
+ <body
28
+ className={`${geistSans.variable} ${geistMono.variable} min-h-screen overflow-x-hidden bg-background text-foreground antialiased`}
29
+ suppressHydrationWarning
30
+ >
31
+ <ThemeProvider defaultTheme="dark">{children}</ThemeProvider>
32
+ </body>
33
+ </html>
34
+ );
35
+ }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "create-vista-app",
3
- "version": "0.2.16",
3
+ "version": "0.3.2",
4
4
  "description": "Create Vista applications with one command",
5
5
  "bin": {
6
6
  "create-vista-app": "./bin/cli.js"
7
7
  },
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/vistakit/Vista-Js.git",
10
+ "url": "https://github.com/Mantitup-Org/vista.git",
11
11
  "directory": "packages/create-vista-app"
12
12
  },
13
13
  "author": "Vista Team",
@@ -35,5 +35,5 @@
35
35
  "react": "^19.0.0",
36
36
  "react-dom": "^19.0.0"
37
37
  },
38
- "gitHead": "18251c9e418c2b86bf42cab3d3318fda7be51a5d"
38
+ "gitHead": "d1b9f715d6365d8e1f553e96b752fbce8d98df7c"
39
39
  }
@@ -1,100 +1,60 @@
1
- # My Vista App
2
-
3
- Built with [Vista.js](https://github.com/vistakit/Vista-Js) — the React framework for visionaries.
4
-
5
- Selected engine for this app: `__VISTA_ENGINE__`
6
-
7
- Typed API starter: `__VISTA_TYPED_API__`
1
+ # My Vista App
8
2
 
9
- ## Getting Started
3
+ Built with [Vista.js](https://github.com/Mantitup-Org/vista).
10
4
 
11
- Run the development server:
5
+ Selected engine: `__VISTA_ENGINE__` · Typed API starter: `__VISTA_TYPED_API__`
6
+
7
+ ## Run
12
8
 
13
9
  ```bash
14
10
  npm run dev
15
- # or
16
- pnpm dev
17
11
  ```
18
12
 
19
- Open [http://localhost:3003](http://localhost:3003) in your browser.
20
-
21
- If you want typed API starter files in a fresh app:
22
-
23
- ```bash
24
- npx create-vista-app@latest my-vista-app --typed-api
25
- ```
13
+ Open [http://localhost:3003](http://localhost:3003).
14
+
15
+ ## What can you build?
16
+
17
+ | Goal | How |
18
+ | --- | --- |
19
+ | Normal React UI | Add pages under `app/`. Use `'use client'` for interactive components. |
20
+ | Fullstack APIs | Add `app/api/**/route.ts`, or run `vista g api-init` for typed procedures. |
21
+ | Auth | `vista g auth` then set `AUTH_SECRET`. Opens `/signin` (POST credentials + OAuth) and gates `/account`. |
22
+ | AI chat agent | `vista g agent support` → edit `app/agents/support/agent.ts`. |
23
+ | RAG over your docs | Use `InMemoryVectorStore` + `createRetrieverTool` + optional `embedText` from `vista/ai`. |
26
24
 
27
- ## Project Structure
25
+ ## Project structure
28
26
 
29
27
  ```
30
28
  app/
31
- ├── root.tsx # Root layout (<html>, <body>, fonts)
32
- ├── index.tsx # Home page
33
- ├── globals.css # Global styles (Tailwind CSS v4)
34
- └── about/
35
- └── page.tsx # Example nested route → /about
29
+ ├── root.tsx # Root layout
30
+ ├── index.tsx # Home → /
31
+ ├── globals.css
32
+ └── about/page.tsx # → /about
33
+ components/
36
34
  public/
37
- ├── vista.svg # Static assets
38
- vista.config.ts # Framework configuration
35
+ vista.config.ts
39
36
  ```
40
37
 
41
- ## Key Concepts
42
-
43
- - **`app/root.tsx`** Root layout that wraps every page. Defines `<html>`, fonts, and metadata.
44
- - **`app/index.tsx`** or **`app/page.tsx`** — Page components. Each folder = a route.
45
- - **`'use client'`** Add this directive to make a component interactive (client-side).
46
- - **Server Components** All components are server components by default (zero JS sent to browser).
47
-
48
- ## Available Commands
49
-
50
- | Command | Description |
51
- | ------------- | --------------------------------- |
52
- | `vista dev` | Start dev server with the engine selected in `vista.config.ts` |
53
- | `vista build` | Create production build with the engine selected in `vista.config.ts` |
54
- | `vista start` | Start production server with the engine selected in `vista.config.ts` |
55
- | `vista g api-init` | Generate typed API starter files |
56
- | `vista g router <name>` | Generate a typed router file |
57
- | `vista g procedure <name> [get\|post]` | Generate a typed procedure file |
58
-
59
- ## Engine Selection
60
-
61
- `create-vista-app` supports both engine variants:
62
-
63
- - `default` (webpack path)
64
- - `flashpack` (Rust-first path)
65
-
66
- You can choose at scaffold time, but the generated app still uses the same `npm run dev`, `npm run build`, and `npm run start` scripts. Vista reads the selected engine from `vista.config.ts`.
67
-
68
- Example:
69
-
70
- ```bash
71
- npx create-vista-app@latest my-vista-app --engine flashpack
72
- ```
73
-
74
- The generated config looks like:
75
-
76
- ```ts
77
- engine: {
78
- variant: 'flashpack'
79
- }
80
- ```
81
-
82
- Flashpack engine runtime/cache artifacts are stored in `.flash/`.
83
-
84
- ## Typed API Rollback
85
-
86
- Typed API is experimental and can be disabled anytime from `vista.config.ts`:
87
-
88
- ```ts
89
- experimental: {
90
- typedApi: {
91
- enabled: false
92
- }
93
- }
94
- ```
95
-
96
- ## Learn More
97
-
98
- - [Vista.js GitHub](https://github.com/vistakit/Vista-Js)
99
- - [React Server Components](https://react.dev/reference/rsc/server-components)
100
- - [Tailwind CSS v4](https://tailwindcss.com)
38
+ ## Commands
39
+
40
+ | Command | Description |
41
+ | --- | --- |
42
+ | `npm run dev` / `build` / `start` | Develop, build (`.vista/`), serve |
43
+ | `vista g api-init` | Typed API starter |
44
+ | `vista g auth` | Auth config, `/signin`, `/account`, middleware, SessionProvider |
45
+ | `vista g agent <name>` | Agent + streaming route + `app/AGENTS.md` |
46
+ | `npm run deploy` | Deploy helpers (Render, Vercel, Cloudflare, …) |
47
+
48
+ ## Models (AI)
49
+
50
+ Set `VISTA_AI_MODEL`, for example:
51
+
52
+ - `openai:gpt-4o` · `groq:llama-3.1-8b-instant` · `nvidia:meta/llama-3.1-8b-instruct` · `ollama:llama3`
53
+
54
+ ## Learn more
55
+
56
+ - [React app guide](https://vista-js.vercel.app/docs/getting-started/react-app)
57
+ - [Fullstack guide](https://vista-js.vercel.app/docs/getting-started/fullstack-app)
58
+ - [AI overview](https://vista-js.vercel.app/docs/ai/overview)
59
+ - [RAG guide](https://vista-js.vercel.app/docs/ai/rag)
60
+ - [GitHub](https://github.com/Mantitup-Org/vista)
@@ -1,70 +1,70 @@
1
- @import "tailwindcss";
2
-
3
- @custom-variant dark (&:where(.dark, .dark *));
4
-
5
- @theme inline {
6
- --color-background: var(--background);
7
- --color-foreground: var(--foreground);
8
- --color-primary: var(--primary);
9
- --color-muted: var(--muted);
10
- --color-muted-foreground: var(--muted-foreground);
11
- --color-border: var(--border);
12
- --color-panel: var(--panel);
13
- --color-panel-elevated: var(--panel-elevated);
14
- --font-sans: var(--font-geist-sans);
15
- --font-mono: var(--font-geist-mono);
16
- }
17
-
18
- html {
19
- min-height: 100%;
20
- overflow-x: hidden;
21
- scrollbar-gutter: stable;
22
- }
23
-
24
- :root {
25
- --background: #f3e8d8;
26
- --foreground: #171717;
27
- --primary: #ff4c30;
28
- --muted: #ebe4d9;
29
- --muted-foreground: #5f6570;
30
- --border: #ddd4c8;
31
- --panel: rgba(255, 255, 255, 0.76);
32
- --panel-elevated: rgba(255, 255, 255, 0.92);
33
- color-scheme: light;
34
- }
35
-
36
- :root.light {
37
- --background: #f3e8d8;
38
- --foreground: #171717;
39
- --primary: #ff4c30;
40
- --muted: #ebe4d9;
41
- --muted-foreground: #5f6570;
42
- --border: #ddd4c8;
43
- --panel: rgba(255, 255, 255, 0.76);
44
- --panel-elevated: rgba(255, 255, 255, 0.92);
45
- color-scheme: light;
46
- }
47
-
48
- :root.dark {
49
- --background: #0a0a0a;
50
- --foreground: #ededed;
51
- --primary: #ff4c30;
52
- --muted: #11141b;
53
- --muted-foreground: #97a0af;
54
- --border: #1f2632;
55
- --panel: rgba(15, 20, 30, 0.76);
56
- --panel-elevated: rgba(11, 16, 24, 0.9);
57
- color-scheme: dark;
58
- }
59
-
60
- body {
61
- min-height: 100vh;
62
- margin: 0;
63
- background: var(--background);
64
- color: var(--foreground);
65
- font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif;
66
- overflow-x: hidden;
67
- transition:
68
- background-color 180ms ease,
69
- color 180ms ease;
70
- }
1
+ @import "tailwindcss";
2
+
3
+ @custom-variant dark (&:where(.dark, .dark *));
4
+
5
+ @theme inline {
6
+ --color-background: var(--background);
7
+ --color-foreground: var(--foreground);
8
+ --color-primary: var(--primary);
9
+ --color-muted: var(--muted);
10
+ --color-muted-foreground: var(--muted-foreground);
11
+ --color-border: var(--border);
12
+ --color-panel: var(--panel);
13
+ --color-panel-elevated: var(--panel-elevated);
14
+ --font-sans: var(--font-geist-sans);
15
+ --font-mono: var(--font-geist-mono);
16
+ }
17
+
18
+ html {
19
+ min-height: 100%;
20
+ overflow-x: hidden;
21
+ scrollbar-gutter: stable;
22
+ }
23
+
24
+ :root {
25
+ --background: #f3e8d8;
26
+ --foreground: #171717;
27
+ --primary: #ff4c30;
28
+ --muted: #ebe4d9;
29
+ --muted-foreground: #5f6570;
30
+ --border: #ddd4c8;
31
+ --panel: rgba(255, 255, 255, 0.76);
32
+ --panel-elevated: rgba(255, 255, 255, 0.92);
33
+ color-scheme: light;
34
+ }
35
+
36
+ :root.light {
37
+ --background: #f3e8d8;
38
+ --foreground: #171717;
39
+ --primary: #ff4c30;
40
+ --muted: #ebe4d9;
41
+ --muted-foreground: #5f6570;
42
+ --border: #ddd4c8;
43
+ --panel: rgba(255, 255, 255, 0.76);
44
+ --panel-elevated: rgba(255, 255, 255, 0.92);
45
+ color-scheme: light;
46
+ }
47
+
48
+ :root.dark {
49
+ --background: #0a0a0a;
50
+ --foreground: #ededed;
51
+ --primary: #ff4c30;
52
+ --muted: #11141b;
53
+ --muted-foreground: #97a0af;
54
+ --border: #1f2632;
55
+ --panel: rgba(15, 20, 30, 0.76);
56
+ --panel-elevated: rgba(11, 16, 24, 0.9);
57
+ color-scheme: dark;
58
+ }
59
+
60
+ body {
61
+ min-height: 100vh;
62
+ margin: 0;
63
+ background: var(--background);
64
+ color: var(--foreground);
65
+ font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif;
66
+ overflow-x: hidden;
67
+ transition:
68
+ background-color 180ms ease,
69
+ color 180ms ease;
70
+ }