@tanstack/create 0.68.0 → 0.68.1
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/CHANGELOG.md +10 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +15 -15
- package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +8 -6
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css +21 -21
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +14 -18
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx +20 -26
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-structured.tsx +56 -67
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +17 -22
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +21 -27
- package/dist/frameworks/react/add-ons/apollo-client/assets/src/routes/demo.apollo-client.tsx +35 -38
- package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +64 -64
- package/dist/frameworks/react/add-ons/clerk/assets/src/routes/demo/clerk.tsx +17 -25
- package/dist/frameworks/react/add-ons/convex/assets/src/routes/demo/convex.tsx +30 -45
- package/dist/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +5 -5
- package/dist/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +7 -11
- package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +5 -3
- package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +29 -79
- package/dist/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +12 -12
- package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +11 -10
- package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +11 -10
- package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/mcp-todos.tsx +10 -18
- package/dist/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +38 -57
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +10 -18
- package/dist/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +6 -7
- package/dist/frameworks/react/add-ons/posthog/assets/src/routes/demo/posthog.tsx +19 -22
- package/dist/frameworks/react/add-ons/powersync/assets/src/routes/demo/powersync.tsx +19 -18
- package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +29 -79
- package/dist/frameworks/react/add-ons/sentry/assets/src/routes/demo/sentry.testing.tsx +71 -102
- package/dist/frameworks/react/add-ons/store/assets/src/lib/demo-store-devtools.tsx +3 -3
- package/dist/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +9 -14
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/button.tsx +23 -26
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/dialog.tsx +12 -16
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/input.tsx +14 -17
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/radio-group.tsx +15 -15
- package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/slider.tsx +17 -17
- package/dist/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +25 -25
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/blocks/media.tsx +9 -9
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/blocks/quote.tsx +8 -8
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/markdown-content.tsx +52 -35
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/pagination.tsx +8 -14
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/search.tsx +12 -12
- package/dist/frameworks/react/add-ons/strapi/assets/src/components/strapi-image.tsx +15 -15
- package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.$articleId.tsx +52 -63
- package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +46 -61
- package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +10 -18
- package/dist/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +23 -22
- package/dist/frameworks/react/add-ons/tanstack-query/assets/src/routes/demo/tanstack-query.tsx.ejs +21 -35
- package/dist/frameworks/react/add-ons/workos/assets/src/components/workos-user.tsx +1 -1
- package/dist/frameworks/react/add-ons/workos/assets/src/routes/demo/workos.tsx +33 -43
- package/dist/frameworks/react/project/base/_dot_gitignore +1 -0
- package/dist/frameworks/react/project/base/src/styles.css.ejs +203 -0
- package/dist/frameworks/solid/add-ons/better-auth/assets/src/routes/demo.better-auth.tsx +62 -64
- package/dist/frameworks/solid/add-ons/convex/assets/src/routes/demo/convex.tsx +30 -43
- package/dist/frameworks/solid/add-ons/form/assets/src/routes/demo.form.tsx.ejs +22 -22
- package/dist/frameworks/solid/add-ons/sentry/assets/src/routes/demo.sentry.bad-event-handler.tsx +15 -10
- package/dist/frameworks/solid/add-ons/store/assets/src/routes/demo.store.tsx.ejs +9 -14
- package/dist/frameworks/solid/add-ons/strapi/assets/src/routes/demo/strapi.tsx +11 -15
- package/dist/frameworks/solid/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +11 -18
- package/dist/frameworks/solid/project/base/_dot_gitignore +1 -0
- package/dist/frameworks/solid/project/base/src/styles.css.ejs +203 -0
- package/package.json +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +15 -15
- package/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +8 -6
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css +21 -21
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +14 -18
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx +20 -26
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-structured.tsx +56 -67
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +17 -22
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +21 -27
- package/src/frameworks/react/add-ons/apollo-client/assets/src/routes/demo.apollo-client.tsx +35 -38
- package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +64 -64
- package/src/frameworks/react/add-ons/clerk/assets/src/routes/demo/clerk.tsx +17 -25
- package/src/frameworks/react/add-ons/convex/assets/src/routes/demo/convex.tsx +30 -45
- package/src/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +5 -5
- package/src/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +7 -11
- package/src/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +5 -3
- package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +29 -79
- package/src/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +12 -12
- package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +11 -10
- package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +11 -10
- package/src/frameworks/react/add-ons/mcp/assets/src/routes/demo/mcp-todos.tsx +10 -18
- package/src/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +38 -57
- package/src/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +10 -18
- package/src/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +6 -7
- package/src/frameworks/react/add-ons/posthog/assets/src/routes/demo/posthog.tsx +19 -22
- package/src/frameworks/react/add-ons/powersync/assets/src/routes/demo/powersync.tsx +19 -18
- package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +29 -79
- package/src/frameworks/react/add-ons/sentry/assets/src/routes/demo/sentry.testing.tsx +71 -102
- package/src/frameworks/react/add-ons/store/assets/src/lib/demo-store-devtools.tsx +3 -3
- package/src/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +9 -14
- package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/button.tsx +23 -26
- package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/dialog.tsx +12 -16
- package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/input.tsx +14 -17
- package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/radio-group.tsx +15 -15
- package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/slider.tsx +17 -17
- package/src/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +25 -25
- package/src/frameworks/react/add-ons/strapi/assets/src/components/blocks/media.tsx +9 -9
- package/src/frameworks/react/add-ons/strapi/assets/src/components/blocks/quote.tsx +8 -8
- package/src/frameworks/react/add-ons/strapi/assets/src/components/markdown-content.tsx +52 -35
- package/src/frameworks/react/add-ons/strapi/assets/src/components/pagination.tsx +8 -14
- package/src/frameworks/react/add-ons/strapi/assets/src/components/search.tsx +12 -12
- package/src/frameworks/react/add-ons/strapi/assets/src/components/strapi-image.tsx +15 -15
- package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.$articleId.tsx +52 -63
- package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +46 -61
- package/src/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +10 -18
- package/src/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +23 -22
- package/src/frameworks/react/add-ons/tanstack-query/assets/src/routes/demo/tanstack-query.tsx.ejs +21 -35
- package/src/frameworks/react/add-ons/workos/assets/src/components/workos-user.tsx +1 -1
- package/src/frameworks/react/add-ons/workos/assets/src/routes/demo/workos.tsx +33 -43
- package/src/frameworks/react/project/base/_dot_gitignore +1 -0
- package/src/frameworks/react/project/base/src/styles.css.ejs +203 -0
- package/src/frameworks/solid/add-ons/better-auth/assets/src/routes/demo.better-auth.tsx +62 -64
- package/src/frameworks/solid/add-ons/convex/assets/src/routes/demo/convex.tsx +30 -43
- package/src/frameworks/solid/add-ons/form/assets/src/routes/demo.form.tsx.ejs +22 -22
- package/src/frameworks/solid/add-ons/sentry/assets/src/routes/demo.sentry.bad-event-handler.tsx +15 -10
- package/src/frameworks/solid/add-ons/store/assets/src/routes/demo.store.tsx.ejs +9 -14
- package/src/frameworks/solid/add-ons/strapi/assets/src/routes/demo/strapi.tsx +11 -15
- package/src/frameworks/solid/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +11 -18
- package/src/frameworks/solid/project/base/_dot_gitignore +1 -0
- package/src/frameworks/solid/project/base/src/styles.css.ejs +203 -0
- package/tests/framework-template.test.ts +15 -0
|
@@ -21,61 +21,60 @@ function PostHogDemo() {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
return (
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
<
|
|
24
|
+
<main className="demo-page demo-center">
|
|
25
|
+
<section className="demo-panel w-full max-w-md">
|
|
26
|
+
<p className="island-kicker mb-2">Analytics</p>
|
|
27
|
+
<h1 className="demo-title mb-6">PostHog Demo</h1>
|
|
27
28
|
|
|
28
29
|
{!isConfigured && (
|
|
29
|
-
<div className="
|
|
30
|
-
<p className="text-
|
|
30
|
+
<div className="demo-alert mb-4">
|
|
31
|
+
<p className="text-sm">
|
|
31
32
|
<strong>Warning:</strong> VITE_POSTHOG_KEY is not configured.
|
|
32
|
-
Events won't be sent to PostHog. Add it to your{' '}
|
|
33
|
-
|
|
33
|
+
Events won't be sent to PostHog. Add it to your <code>.env</code>{' '}
|
|
34
|
+
file.
|
|
34
35
|
</p>
|
|
35
36
|
</div>
|
|
36
37
|
)}
|
|
37
38
|
|
|
38
|
-
<div className="
|
|
39
|
-
<p className="
|
|
39
|
+
<div className="demo-card">
|
|
40
|
+
<p className="demo-muted mb-4">
|
|
40
41
|
Click the button below to send events to PostHog. Check your PostHog
|
|
41
42
|
dashboard to see them appear in real-time.
|
|
42
43
|
</p>
|
|
43
44
|
|
|
44
45
|
<button
|
|
45
46
|
onClick={() => trackEvent('button_clicked', { button: 'demo' })}
|
|
46
|
-
className="w-full
|
|
47
|
+
className="demo-button w-full"
|
|
47
48
|
>
|
|
48
49
|
Track Click
|
|
49
50
|
</button>
|
|
50
51
|
|
|
51
52
|
{isConfigured && (
|
|
52
|
-
<div className="
|
|
53
|
-
<p className="
|
|
54
|
-
<p className="text-4xl font-bold
|
|
53
|
+
<div className="demo-list-item mt-6">
|
|
54
|
+
<p className="demo-muted text-sm">Events sent this session:</p>
|
|
55
|
+
<p className="text-4xl font-bold">{eventCount}</p>
|
|
55
56
|
</div>
|
|
56
57
|
)}
|
|
57
58
|
</div>
|
|
58
59
|
|
|
59
|
-
<p className="mt-4 text-sm
|
|
60
|
+
<p className="demo-muted mt-4 text-sm">
|
|
60
61
|
Open your{' '}
|
|
61
62
|
<a
|
|
62
63
|
href="https://app.posthog.com/events"
|
|
63
64
|
target="_blank"
|
|
64
65
|
rel="noopener noreferrer"
|
|
65
|
-
className="text-cyan-400 hover:text-cyan-300 underline"
|
|
66
66
|
>
|
|
67
67
|
PostHog Events
|
|
68
68
|
</a>{' '}
|
|
69
69
|
page to see these events appear.
|
|
70
70
|
</p>
|
|
71
71
|
|
|
72
|
-
<p className="mt-2 text-sm
|
|
72
|
+
<p className="demo-muted mt-2 text-sm">
|
|
73
73
|
Learn more in the{' '}
|
|
74
74
|
<a
|
|
75
75
|
href="https://posthog.com/docs/libraries/react"
|
|
76
76
|
target="_blank"
|
|
77
77
|
rel="noopener noreferrer"
|
|
78
|
-
className="text-cyan-400 hover:text-cyan-300 underline"
|
|
79
78
|
>
|
|
80
79
|
PostHog React docs
|
|
81
80
|
</a>
|
|
@@ -83,11 +82,9 @@ function PostHogDemo() {
|
|
|
83
82
|
</p>
|
|
84
83
|
|
|
85
84
|
<div className="mt-8">
|
|
86
|
-
<Link to="/"
|
|
87
|
-
← Back to Home
|
|
88
|
-
</Link>
|
|
85
|
+
<Link to="/">← Back to Home</Link>
|
|
89
86
|
</div>
|
|
90
|
-
</
|
|
91
|
-
</
|
|
87
|
+
</section>
|
|
88
|
+
</main>
|
|
92
89
|
)
|
|
93
90
|
}
|
|
@@ -54,21 +54,22 @@ function PowerSyncDemo() {
|
|
|
54
54
|
</p>
|
|
55
55
|
<h1 className="text-3xl font-semibold tracking-tight">PowerSync</h1>
|
|
56
56
|
<p className="text-sm text-[var(--sea-ink-soft)]">
|
|
57
|
-
This demo writes to the local SQLite database immediately. Replace
|
|
58
|
-
schema and backend connector with your real PowerSync
|
|
57
|
+
This demo writes to the local SQLite database immediately. Replace
|
|
58
|
+
the sample schema and backend connector with your real PowerSync
|
|
59
|
+
configuration.
|
|
59
60
|
</p>
|
|
60
61
|
</header>
|
|
61
62
|
|
|
62
|
-
<section className="
|
|
63
|
+
<section className="demo-card">
|
|
63
64
|
<h2 className="text-sm font-semibold uppercase tracking-[0.16em] text-[var(--sea-ink-soft)]">
|
|
64
65
|
Connection State
|
|
65
66
|
</h2>
|
|
66
|
-
<pre className="mt-3 overflow-auto
|
|
67
|
+
<pre className="demo-code-block mt-3 overflow-auto text-xs leading-6">
|
|
67
68
|
{JSON.stringify(status, null, 2)}
|
|
68
69
|
</pre>
|
|
69
70
|
</section>
|
|
70
71
|
|
|
71
|
-
<section className="
|
|
72
|
+
<section className="demo-card">
|
|
72
73
|
<h2 className="text-sm font-semibold uppercase tracking-[0.16em] text-[var(--sea-ink-soft)]">
|
|
73
74
|
Local Todos
|
|
74
75
|
</h2>
|
|
@@ -77,39 +78,39 @@ function PowerSyncDemo() {
|
|
|
77
78
|
{error}
|
|
78
79
|
</p>
|
|
79
80
|
) : null}
|
|
80
|
-
<form
|
|
81
|
+
<form
|
|
82
|
+
className="mt-4 flex flex-col gap-3 sm:flex-row"
|
|
83
|
+
onSubmit={addTodo}
|
|
84
|
+
>
|
|
81
85
|
<label className="sr-only" htmlFor="powersync-todo-description">
|
|
82
86
|
Todo description
|
|
83
87
|
</label>
|
|
84
88
|
<input
|
|
85
89
|
id="powersync-todo-description"
|
|
86
|
-
className="min-w-0 flex-1
|
|
90
|
+
className="demo-input min-w-0 flex-1"
|
|
87
91
|
onChange={(event) => setDescription(event.target.value)}
|
|
88
92
|
placeholder="Write to the local PowerSync database"
|
|
89
93
|
value={description}
|
|
90
94
|
/>
|
|
91
|
-
<button
|
|
92
|
-
className="rounded-2xl bg-[var(--sea-ink)] px-4 py-3 text-sm font-semibold text-white"
|
|
93
|
-
type="submit"
|
|
94
|
-
>
|
|
95
|
+
<button className="demo-button" type="submit">
|
|
95
96
|
Insert Local Row
|
|
96
97
|
</button>
|
|
97
98
|
</form>
|
|
98
99
|
|
|
99
100
|
<ul className="mt-5 space-y-3">
|
|
100
101
|
{todos.length === 0 ? (
|
|
101
|
-
<li className="
|
|
102
|
-
No rows yet. Insert one locally, then wire `uploadData()` to
|
|
102
|
+
<li className="demo-list-item text-sm text-[var(--sea-ink-soft)]">
|
|
103
|
+
No rows yet. Insert one locally, then wire `uploadData()` to
|
|
104
|
+
send it upstream.
|
|
103
105
|
</li>
|
|
104
106
|
) : (
|
|
105
107
|
todos.map((todo) => (
|
|
106
|
-
<li
|
|
107
|
-
className="rounded-2xl border border-[var(--line)] bg-[var(--chip-bg)] px-4 py-4"
|
|
108
|
-
key={todo.id}
|
|
109
|
-
>
|
|
108
|
+
<li className="demo-list-item" key={todo.id}>
|
|
110
109
|
<div className="flex items-start justify-between gap-4">
|
|
111
110
|
<div>
|
|
112
|
-
<p className="font-medium text-[var(--sea-ink)]">
|
|
111
|
+
<p className="font-medium text-[var(--sea-ink)]">
|
|
112
|
+
{todo.description}
|
|
113
|
+
</p>
|
|
113
114
|
<p className="mt-1 text-xs text-[var(--sea-ink-soft)]">
|
|
114
115
|
{todo.created_at}
|
|
115
116
|
</p>
|
|
@@ -46,141 +46,91 @@ function DemoPrisma() {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
return (
|
|
49
|
-
<
|
|
50
|
-
className="
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
style={{
|
|
59
|
-
background:
|
|
60
|
-
'linear-gradient(135deg, rgba(22, 32, 46, 0.95) 0%, rgba(12, 26, 43, 0.95) 100%)',
|
|
61
|
-
backdropFilter: 'blur(10px)',
|
|
62
|
-
}}
|
|
63
|
-
>
|
|
64
|
-
<div
|
|
65
|
-
className="flex items-center justify-center gap-4 mb-8 p-4 rounded-lg"
|
|
66
|
-
style={{
|
|
67
|
-
background:
|
|
68
|
-
'linear-gradient(90deg, rgba(93, 103, 227, 0.1) 0%, rgba(139, 92, 246, 0.1) 100%)',
|
|
69
|
-
border: '1px solid rgba(93, 103, 227, 0.2)',
|
|
70
|
-
}}
|
|
71
|
-
>
|
|
72
|
-
<div className="relative group">
|
|
73
|
-
<div className="absolute -inset-2 bg-gradient-to-r from-indigo-500 via-purple-500 to-indigo-500 rounded-lg blur-lg opacity-60 group-hover:opacity-100 transition duration-500"></div>
|
|
74
|
-
<div className="relative bg-gradient-to-br from-indigo-600 to-purple-600 p-3 rounded-lg">
|
|
75
|
-
<img
|
|
76
|
-
src="/prisma.svg"
|
|
77
|
-
alt="Prisma Logo"
|
|
78
|
-
className="w-8 h-8 transform group-hover:scale-110 transition-transform duration-300"
|
|
79
|
-
/>
|
|
80
|
-
</div>
|
|
49
|
+
<main className="demo-page demo-center">
|
|
50
|
+
<section className="demo-panel w-full max-w-2xl">
|
|
51
|
+
<header className="mb-8 flex items-center gap-4">
|
|
52
|
+
<span className="demo-card flex h-14 w-14 items-center justify-center p-3">
|
|
53
|
+
<img src="/prisma.svg" alt="Prisma Logo" className="h-8 w-8" />
|
|
54
|
+
</span>
|
|
55
|
+
<div>
|
|
56
|
+
<p className="island-kicker mb-2">Database</p>
|
|
57
|
+
<h1 className="demo-title">Prisma Demo</h1>
|
|
81
58
|
</div>
|
|
82
|
-
|
|
83
|
-
Prisma Database Demo
|
|
84
|
-
</h1>
|
|
85
|
-
</div>
|
|
59
|
+
</header>
|
|
86
60
|
|
|
87
|
-
<h2 className="
|
|
61
|
+
<h2 className="demo-section-title mb-4">Todos</h2>
|
|
88
62
|
|
|
89
63
|
<ul className="space-y-3 mb-6">
|
|
90
64
|
{todos.map((todo) => (
|
|
91
65
|
<li
|
|
92
66
|
key={todo.id}
|
|
93
|
-
className="
|
|
94
|
-
style={{
|
|
95
|
-
background:
|
|
96
|
-
'linear-gradient(135deg, rgba(93, 103, 227, 0.15) 0%, rgba(139, 92, 246, 0.15) 100%)',
|
|
97
|
-
borderColor: 'rgba(93, 103, 227, 0.3)',
|
|
98
|
-
}}
|
|
67
|
+
className="demo-list-item"
|
|
99
68
|
>
|
|
100
69
|
<div className="flex items-center justify-between">
|
|
101
|
-
<span className="
|
|
102
|
-
|
|
103
|
-
</span>
|
|
104
|
-
<span className="text-xs text-indigo-300/70">#{todo.id}</span>
|
|
70
|
+
<span className="font-medium">{todo.title}</span>
|
|
71
|
+
<span className="demo-muted text-xs">#{todo.id}</span>
|
|
105
72
|
</div>
|
|
106
73
|
</li>
|
|
107
74
|
))}
|
|
108
75
|
{todos.length === 0 && (
|
|
109
|
-
<li className="
|
|
76
|
+
<li className="demo-list-item text-center demo-muted">
|
|
110
77
|
No todos yet. Create one below!
|
|
111
78
|
</li>
|
|
112
79
|
)}
|
|
113
80
|
</ul>
|
|
114
81
|
|
|
115
|
-
<form onSubmit={handleSubmit} className="flex gap-2">
|
|
82
|
+
<form onSubmit={handleSubmit} className="flex flex-col gap-2 sm:flex-row">
|
|
116
83
|
<input
|
|
117
84
|
type="text"
|
|
118
85
|
name="title"
|
|
119
86
|
placeholder="Add a new todo..."
|
|
120
|
-
className="
|
|
121
|
-
style={{
|
|
122
|
-
background: 'rgba(93, 103, 227, 0.1)',
|
|
123
|
-
borderColor: 'rgba(93, 103, 227, 0.3)',
|
|
124
|
-
focusRing: 'rgba(93, 103, 227, 0.5)',
|
|
125
|
-
}}
|
|
87
|
+
className="demo-input min-w-0 flex-1"
|
|
126
88
|
/>
|
|
127
89
|
<button
|
|
128
90
|
type="submit"
|
|
129
|
-
className="
|
|
130
|
-
style={{
|
|
131
|
-
background: 'linear-gradient(135deg, #5d67e3 0%, #8b5cf6 100%)',
|
|
132
|
-
color: 'white',
|
|
133
|
-
}}
|
|
91
|
+
className="demo-button whitespace-nowrap"
|
|
134
92
|
>
|
|
135
93
|
Add Todo
|
|
136
94
|
</button>
|
|
137
95
|
</form>
|
|
138
96
|
|
|
139
|
-
<div
|
|
140
|
-
className="
|
|
141
|
-
style={{
|
|
142
|
-
background: 'rgba(93, 103, 227, 0.05)',
|
|
143
|
-
borderColor: 'rgba(93, 103, 227, 0.2)',
|
|
144
|
-
}}
|
|
145
|
-
>
|
|
146
|
-
<h3 className="text-lg font-semibold mb-2 text-indigo-200">
|
|
97
|
+
<div className="demo-card mt-8">
|
|
98
|
+
<h3 className="demo-section-title mb-2">
|
|
147
99
|
Powered by Prisma ORM
|
|
148
100
|
</h3>
|
|
149
|
-
<p className="
|
|
101
|
+
<p className="demo-muted mb-4 text-sm">
|
|
150
102
|
Next-generation ORM for Node.js & TypeScript with PostgreSQL
|
|
151
103
|
</p>
|
|
152
104
|
<div className="space-y-2 text-sm">
|
|
153
|
-
<p className="
|
|
154
|
-
<ol className="
|
|
105
|
+
<p className="font-medium">Setup Instructions:</p>
|
|
106
|
+
<ol className="demo-muted list-inside list-decimal space-y-2">
|
|
155
107
|
<li>
|
|
156
108
|
Configure your{' '}
|
|
157
|
-
<code
|
|
158
|
-
DATABASE_URL
|
|
159
|
-
</code>{' '}
|
|
109
|
+
<code>DATABASE_URL</code>{' '}
|
|
160
110
|
in .env.local
|
|
161
111
|
</li>
|
|
162
112
|
<li>
|
|
163
113
|
Run:{' '}
|
|
164
|
-
<code
|
|
114
|
+
<code>
|
|
165
115
|
<%- getPackageManagerExecuteScript('prisma', ['generate']) %>
|
|
166
116
|
</code>
|
|
167
117
|
</li>
|
|
168
118
|
<li>
|
|
169
119
|
Run:{' '}
|
|
170
|
-
<code
|
|
120
|
+
<code>
|
|
171
121
|
<%- getPackageManagerExecuteScript('prisma', ['db', 'push']) %>
|
|
172
122
|
</code>
|
|
173
123
|
</li>
|
|
174
124
|
<li>
|
|
175
125
|
Optional:{' '}
|
|
176
|
-
<code
|
|
126
|
+
<code>
|
|
177
127
|
<%- getPackageManagerExecuteScript('prisma', ['studio']) %>
|
|
178
128
|
</code>
|
|
179
129
|
</li>
|
|
180
130
|
</ol>
|
|
181
131
|
</div>
|
|
182
132
|
</div>
|
|
183
|
-
</
|
|
184
|
-
</
|
|
133
|
+
</section>
|
|
134
|
+
</main>
|
|
185
135
|
)
|
|
186
136
|
}
|