@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
|
@@ -19,15 +19,13 @@ export const Route = createFileRoute('/demo/sentry/testing')({
|
|
|
19
19
|
Sentry.captureException(error)
|
|
20
20
|
}, [error])
|
|
21
21
|
return (
|
|
22
|
-
<
|
|
23
|
-
<
|
|
22
|
+
<main className="demo-page demo-center">
|
|
23
|
+
<section className="demo-panel text-center">
|
|
24
24
|
<SentryLogo />
|
|
25
|
-
<h1 className="
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
25
|
+
<h1 className="mt-4 mb-2 text-2xl font-bold">Something went wrong</h1>
|
|
26
|
+
<p className="demo-muted">{error.message}</p>
|
|
27
|
+
</section>
|
|
28
|
+
</main>
|
|
31
29
|
)
|
|
32
30
|
},
|
|
33
31
|
})
|
|
@@ -101,48 +99,36 @@ function SentryButton({
|
|
|
101
99
|
disabled?: boolean
|
|
102
100
|
loading?: boolean
|
|
103
101
|
}) {
|
|
104
|
-
const baseColor = variant === 'error' ? '#E50045' : '#553DB8'
|
|
105
|
-
const topColor = variant === 'error' ? '#FF1A5C' : '#7553FF'
|
|
106
|
-
|
|
107
102
|
return (
|
|
108
103
|
<button
|
|
109
104
|
type="button"
|
|
110
105
|
onClick={onClick}
|
|
111
106
|
disabled={disabled || loading}
|
|
112
|
-
className=
|
|
113
|
-
style={{ backgroundColor: baseColor }}
|
|
107
|
+
className={`demo-button w-full px-6 py-4 text-base ${variant === 'error' ? 'demo-button-danger' : ''}`}
|
|
114
108
|
>
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
className="opacity-75"
|
|
139
|
-
fill="currentColor"
|
|
140
|
-
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
141
|
-
/>
|
|
142
|
-
</svg>
|
|
143
|
-
)}
|
|
144
|
-
{children}
|
|
145
|
-
</span>
|
|
109
|
+
{loading && (
|
|
110
|
+
<svg
|
|
111
|
+
className="animate-spin h-5 w-5"
|
|
112
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
113
|
+
fill="none"
|
|
114
|
+
viewBox="0 0 24 24"
|
|
115
|
+
>
|
|
116
|
+
<circle
|
|
117
|
+
className="opacity-25"
|
|
118
|
+
cx="12"
|
|
119
|
+
cy="12"
|
|
120
|
+
r="10"
|
|
121
|
+
stroke="currentColor"
|
|
122
|
+
strokeWidth="4"
|
|
123
|
+
/>
|
|
124
|
+
<path
|
|
125
|
+
className="opacity-75"
|
|
126
|
+
fill="currentColor"
|
|
127
|
+
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
128
|
+
/>
|
|
129
|
+
</svg>
|
|
130
|
+
)}
|
|
131
|
+
{children}
|
|
146
132
|
</button>
|
|
147
133
|
)
|
|
148
134
|
}
|
|
@@ -158,14 +144,14 @@ function FeatureCard({
|
|
|
158
144
|
description: string
|
|
159
145
|
}) {
|
|
160
146
|
return (
|
|
161
|
-
<div className="
|
|
147
|
+
<div className="demo-card transition-all group">
|
|
162
148
|
<div className="flex items-center gap-3 mb-2">
|
|
163
|
-
<div className="text-[
|
|
149
|
+
<div className="text-[var(--lagoon-deep)] group-hover:scale-110 transition-transform">
|
|
164
150
|
{icon}
|
|
165
151
|
</div>
|
|
166
|
-
<h3 className="font-semibold text-
|
|
152
|
+
<h3 className="font-semibold text-[var(--sea-ink)]">{title}</h3>
|
|
167
153
|
</div>
|
|
168
|
-
<p className="
|
|
154
|
+
<p className="demo-muted pl-9 text-sm">{description}</p>
|
|
169
155
|
</div>
|
|
170
156
|
)
|
|
171
157
|
}
|
|
@@ -192,9 +178,9 @@ function ResultBadge({
|
|
|
192
178
|
return (
|
|
193
179
|
<div className="mt-4 space-y-3">
|
|
194
180
|
{type === 'error' && (
|
|
195
|
-
<div className="flex items-center gap-2
|
|
181
|
+
<div className="demo-alert demo-alert-danger flex items-center gap-2">
|
|
196
182
|
<svg
|
|
197
|
-
className="w-5 h-5 text-[#
|
|
183
|
+
className="w-5 h-5 text-[#9f3030]"
|
|
198
184
|
fill="none"
|
|
199
185
|
strokeLinecap="round"
|
|
200
186
|
strokeLinejoin="round"
|
|
@@ -205,16 +191,16 @@ function ResultBadge({
|
|
|
205
191
|
<title>Error captured</title>
|
|
206
192
|
<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
|
207
193
|
</svg>
|
|
208
|
-
<span className="text-
|
|
194
|
+
<span className="text-sm font-medium">
|
|
209
195
|
Error captured and sent to Sentry
|
|
210
196
|
</span>
|
|
211
197
|
</div>
|
|
212
198
|
)}
|
|
213
199
|
|
|
214
200
|
{type === 'success' && (
|
|
215
|
-
<div className="flex items-center gap-2
|
|
201
|
+
<div className="demo-alert flex items-center gap-2">
|
|
216
202
|
<svg
|
|
217
|
-
className="w-5 h-5 text-[
|
|
203
|
+
className="w-5 h-5 text-[var(--palm)]"
|
|
218
204
|
fill="none"
|
|
219
205
|
strokeLinecap="round"
|
|
220
206
|
strokeLinejoin="round"
|
|
@@ -225,7 +211,7 @@ function ResultBadge({
|
|
|
225
211
|
<title>Trace complete</title>
|
|
226
212
|
<path d="M5 13l4 4L19 7" />
|
|
227
213
|
</svg>
|
|
228
|
-
<span className="text-
|
|
214
|
+
<span className="text-sm font-medium">
|
|
229
215
|
Trace completed successfully
|
|
230
216
|
</span>
|
|
231
217
|
</div>
|
|
@@ -234,12 +220,12 @@ function ResultBadge({
|
|
|
234
220
|
<button
|
|
235
221
|
type="button"
|
|
236
222
|
onClick={handleCopy}
|
|
237
|
-
className="relative flex items-center gap-2
|
|
223
|
+
className="demo-list-item relative flex items-center gap-2 transition-all cursor-pointer w-full"
|
|
238
224
|
>
|
|
239
|
-
<span className="
|
|
240
|
-
<code className="
|
|
225
|
+
<span className="demo-muted text-sm">span.op:</span>
|
|
226
|
+
<code className="font-mono text-sm">{spanOp}</code>
|
|
241
227
|
<svg
|
|
242
|
-
className="w-4 h-4
|
|
228
|
+
className="w-4 h-4 demo-muted ml-auto"
|
|
243
229
|
fill="none"
|
|
244
230
|
strokeLinecap="round"
|
|
245
231
|
strokeLinejoin="round"
|
|
@@ -251,7 +237,7 @@ function ResultBadge({
|
|
|
251
237
|
<path d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" />
|
|
252
238
|
</svg>
|
|
253
239
|
{copied && (
|
|
254
|
-
<span className="absolute -top-8 left-1/2 -translate-x-1/2
|
|
240
|
+
<span className="demo-pill absolute -top-8 left-1/2 -translate-x-1/2 animate-pulse">
|
|
255
241
|
Copied!
|
|
256
242
|
</span>
|
|
257
243
|
)}
|
|
@@ -265,15 +251,15 @@ function ProgressBar({ loading }: { loading: boolean }) {
|
|
|
265
251
|
return (
|
|
266
252
|
<div className="mt-4 flex items-center gap-3">
|
|
267
253
|
<div
|
|
268
|
-
className={`w-3 h-3 rounded-full transition-all ${loading ? 'bg-[
|
|
254
|
+
className={`w-3 h-3 rounded-full transition-all ${loading ? 'bg-[var(--lagoon)] animate-pulse' : 'bg-[var(--palm)]'}`}
|
|
269
255
|
/>
|
|
270
|
-
<div className="flex-1 h-2 bg-[
|
|
256
|
+
<div className="flex-1 h-2 bg-[var(--line)] rounded-full overflow-hidden">
|
|
271
257
|
<div
|
|
272
|
-
className="h-full bg-
|
|
258
|
+
className="h-full bg-[var(--lagoon)] rounded-full transition-all duration-500"
|
|
273
259
|
style={{ width: loading ? '60%' : '100%' }}
|
|
274
260
|
/>
|
|
275
261
|
</div>
|
|
276
|
-
<span className="
|
|
262
|
+
<span className="demo-muted text-xs w-16 text-right">
|
|
277
263
|
{loading ? 'Running...' : 'Complete'}
|
|
278
264
|
</span>
|
|
279
265
|
</div>
|
|
@@ -378,39 +364,27 @@ function RouteComponent() {
|
|
|
378
364
|
}
|
|
379
365
|
|
|
380
366
|
return (
|
|
381
|
-
<
|
|
382
|
-
className="
|
|
383
|
-
style={{
|
|
384
|
-
fontFamily:
|
|
385
|
-
'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif',
|
|
386
|
-
background:
|
|
387
|
-
'linear-gradient(180deg, #181423 0%, #1C1825 50%, #181423 100%)',
|
|
388
|
-
}}
|
|
389
|
-
>
|
|
390
|
-
<div className="max-w-5xl mx-auto px-6 py-16">
|
|
391
|
-
{/* Header */}
|
|
367
|
+
<main className="demo-page demo-page-wide">
|
|
368
|
+
<div className="mx-auto max-w-5xl">
|
|
392
369
|
<div className="text-center mb-16">
|
|
393
370
|
<div className="inline-flex items-center gap-4 mb-8">
|
|
394
|
-
<div className="text-[
|
|
371
|
+
<div className="text-[var(--lagoon-deep)]">
|
|
395
372
|
<SentryLogo size={56} />
|
|
396
373
|
</div>
|
|
397
374
|
<div className="text-left">
|
|
398
|
-
<h1 className="
|
|
399
|
-
|
|
400
|
-
</h1>
|
|
401
|
-
<p className="text-[#A49FB5] text-sm">
|
|
375
|
+
<h1 className="demo-title">Sentry Demo</h1>
|
|
376
|
+
<p className="demo-muted text-sm">
|
|
402
377
|
Error monitoring & performance tracing
|
|
403
378
|
</p>
|
|
404
379
|
</div>
|
|
405
380
|
</div>
|
|
406
|
-
<p className="
|
|
381
|
+
<p className="demo-muted mx-auto max-w-xl text-lg leading-relaxed">
|
|
407
382
|
Click the buttons below to trigger errors and traces, then view them
|
|
408
383
|
in your{' '}
|
|
409
384
|
<a
|
|
410
385
|
href="https://sentry.io"
|
|
411
386
|
target="_blank"
|
|
412
387
|
rel="noopener noreferrer"
|
|
413
|
-
className="text-[#7553FF] hover:text-[#B3A1FF] underline transition-colors"
|
|
414
388
|
>
|
|
415
389
|
Sentry dashboard
|
|
416
390
|
</a>
|
|
@@ -420,9 +394,9 @@ function RouteComponent() {
|
|
|
420
394
|
|
|
421
395
|
{/* Sentry Not Initialized Warning */}
|
|
422
396
|
{showWarning && (
|
|
423
|
-
<div className="mb-8 flex items-center gap-3
|
|
397
|
+
<div className="demo-alert mb-8 flex items-center gap-3">
|
|
424
398
|
<svg
|
|
425
|
-
className="w-6 h-6 text-[
|
|
399
|
+
className="w-6 h-6 text-[var(--sea-ink-soft)] flex-shrink-0"
|
|
426
400
|
fill="none"
|
|
427
401
|
strokeLinecap="round"
|
|
428
402
|
strokeLinejoin="round"
|
|
@@ -434,11 +408,10 @@ function RouteComponent() {
|
|
|
434
408
|
<path d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
|
435
409
|
</svg>
|
|
436
410
|
<div>
|
|
437
|
-
<p className="
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
Set the <code className="bg-[#1C1825] px-1.5 py-0.5 rounded text-[#B3A1FF]">VITE_SENTRY_DSN</code> environment variable to enable error tracking and performance monitoring.
|
|
411
|
+
<p className="font-medium">Sentry is not initialized</p>
|
|
412
|
+
<p className="demo-muted text-sm mt-1">
|
|
413
|
+
Set the <code>VITE_SENTRY_DSN</code> environment variable to
|
|
414
|
+
enable error tracking and performance monitoring.
|
|
442
415
|
</p>
|
|
443
416
|
</div>
|
|
444
417
|
</div>
|
|
@@ -487,10 +460,10 @@ function RouteComponent() {
|
|
|
487
460
|
{/* Testing Panels */}
|
|
488
461
|
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
489
462
|
{/* Client-Side Panel */}
|
|
490
|
-
<div className="
|
|
463
|
+
<div className="demo-panel">
|
|
491
464
|
<div className="flex items-center gap-3 mb-6">
|
|
492
|
-
<div className="w-3 h-3 rounded-full bg-[
|
|
493
|
-
<h2 className="
|
|
465
|
+
<div className="w-3 h-3 rounded-full bg-[var(--palm)]" />
|
|
466
|
+
<h2 className="demo-section-title">Client-Side Testing</h2>
|
|
494
467
|
</div>
|
|
495
468
|
|
|
496
469
|
<div className="space-y-4">
|
|
@@ -539,10 +512,10 @@ function RouteComponent() {
|
|
|
539
512
|
</div>
|
|
540
513
|
|
|
541
514
|
{/* Server-Side Panel */}
|
|
542
|
-
<div className="
|
|
515
|
+
<div className="demo-panel">
|
|
543
516
|
<div className="flex items-center gap-3 mb-6">
|
|
544
|
-
<div className="w-3 h-3 rounded-full bg-[
|
|
545
|
-
<h2 className="
|
|
517
|
+
<div className="w-3 h-3 rounded-full bg-[var(--lagoon)]" />
|
|
518
|
+
<h2 className="demo-section-title">Server-Side Testing</h2>
|
|
546
519
|
</div>
|
|
547
520
|
|
|
548
521
|
<div className="space-y-4">
|
|
@@ -593,24 +566,20 @@ function RouteComponent() {
|
|
|
593
566
|
|
|
594
567
|
{/* Footer Note */}
|
|
595
568
|
<div className="mt-12 text-center">
|
|
596
|
-
<p className="
|
|
597
|
-
This page uses
|
|
598
|
-
|
|
599
|
-
@sentry/tanstackstart-react
|
|
600
|
-
</code>{' '}
|
|
601
|
-
for full-stack error monitoring.
|
|
569
|
+
<p className="demo-muted text-sm">
|
|
570
|
+
This page uses <code>@sentry/tanstackstart-react</code> for
|
|
571
|
+
full-stack error monitoring.
|
|
602
572
|
<br />
|
|
603
573
|
<a
|
|
604
574
|
href="https://docs.sentry.io/platforms/javascript/guides/tanstackstart-react/"
|
|
605
575
|
target="_blank"
|
|
606
576
|
rel="noopener noreferrer"
|
|
607
|
-
className="text-[#7553FF] hover:text-[#B3A1FF] underline transition-colors"
|
|
608
577
|
>
|
|
609
578
|
Read the documentation →
|
|
610
579
|
</a>
|
|
611
580
|
</p>
|
|
612
581
|
</div>
|
|
613
582
|
</div>
|
|
614
|
-
</
|
|
583
|
+
</main>
|
|
615
584
|
)
|
|
616
585
|
}
|
|
@@ -42,15 +42,15 @@ function DevtoolPanel() {
|
|
|
42
42
|
|
|
43
43
|
return (
|
|
44
44
|
<div className="p-4 grid gap-4 grid-cols-[1fr_10fr]">
|
|
45
|
-
<div className="
|
|
45
|
+
<div className="demo-muted whitespace-nowrap text-sm font-bold">
|
|
46
46
|
First Name
|
|
47
47
|
</div>
|
|
48
48
|
<div className="text-sm">{state?.firstName}</div>
|
|
49
|
-
<div className="
|
|
49
|
+
<div className="demo-muted whitespace-nowrap text-sm font-bold">
|
|
50
50
|
Last Name
|
|
51
51
|
</div>
|
|
52
52
|
<div className="text-sm">{state?.lastName}</div>
|
|
53
|
-
<div className="
|
|
53
|
+
<div className="demo-muted whitespace-nowrap text-sm font-bold">
|
|
54
54
|
Full Name
|
|
55
55
|
</div>
|
|
56
56
|
<div className="text-sm">{state?.fullName}</div>
|
|
@@ -19,7 +19,7 @@ function FirstName() {
|
|
|
19
19
|
onChange={(e) =>
|
|
20
20
|
store.setState((state) => ({ ...state, firstName: e.target.value }))
|
|
21
21
|
}
|
|
22
|
-
className="
|
|
22
|
+
className="demo-input"
|
|
23
23
|
/>
|
|
24
24
|
)
|
|
25
25
|
}
|
|
@@ -33,7 +33,7 @@ function LastName() {
|
|
|
33
33
|
onChange={(e) =>
|
|
34
34
|
store.setState((state) => ({ ...state, lastName: e.target.value }))
|
|
35
35
|
}
|
|
36
|
-
className="
|
|
36
|
+
className="demo-input"
|
|
37
37
|
/>
|
|
38
38
|
)
|
|
39
39
|
}
|
|
@@ -41,7 +41,7 @@ function LastName() {
|
|
|
41
41
|
function FullName() {
|
|
42
42
|
const fName = useStore(fullName, (state) => state)
|
|
43
43
|
return (
|
|
44
|
-
<div className="
|
|
44
|
+
<div className="demo-list-item font-medium">
|
|
45
45
|
{fName}
|
|
46
46
|
</div>
|
|
47
47
|
)
|
|
@@ -49,20 +49,15 @@ function FullName() {
|
|
|
49
49
|
|
|
50
50
|
function DemoStore() {
|
|
51
51
|
return (
|
|
52
|
-
<
|
|
53
|
-
className="
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'radial-gradient(50% 50% at 80% 80%, #f4a460 0%, #8b4513 70%, #1a0f0a 100%)',
|
|
57
|
-
}}
|
|
58
|
-
>
|
|
59
|
-
<div className="bg-white/10 backdrop-blur-lg rounded-xl p-8 shadow-lg flex flex-col gap-4 text-3xl min-w-1/2">
|
|
60
|
-
<h1 className="text-4xl font-bold mb-5">Store Example</h1>
|
|
52
|
+
<main className="demo-page demo-center">
|
|
53
|
+
<section className="demo-panel flex w-full max-w-xl flex-col gap-4">
|
|
54
|
+
<p className="island-kicker">TanStack Store</p>
|
|
55
|
+
<h1 className="demo-title mb-2">Store Example</h1>
|
|
61
56
|
<FirstName />
|
|
62
57
|
<LastName />
|
|
63
58
|
<FullName />
|
|
64
|
-
</
|
|
65
|
-
</
|
|
59
|
+
</section>
|
|
60
|
+
</main>
|
|
66
61
|
)
|
|
67
62
|
}
|
|
68
63
|
|
|
@@ -1,41 +1,38 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
export interface ButtonProps {
|
|
4
|
-
variant?:
|
|
5
|
-
size?:
|
|
6
|
-
children: React.ReactNode
|
|
7
|
-
onClick?: () => void
|
|
8
|
-
disabled?: boolean
|
|
9
|
-
type?:
|
|
10
|
-
className?: string
|
|
4
|
+
variant?: 'primary' | 'secondary' | 'danger'
|
|
5
|
+
size?: 'small' | 'medium' | 'large'
|
|
6
|
+
children: React.ReactNode
|
|
7
|
+
onClick?: () => void
|
|
8
|
+
disabled?: boolean
|
|
9
|
+
type?: 'button' | 'submit' | 'reset'
|
|
10
|
+
className?: string
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const Button: React.FC<ButtonProps> = ({
|
|
14
|
-
variant =
|
|
15
|
-
size =
|
|
14
|
+
variant = 'primary',
|
|
15
|
+
size = 'medium',
|
|
16
16
|
children,
|
|
17
17
|
onClick,
|
|
18
18
|
disabled = false,
|
|
19
|
-
type =
|
|
20
|
-
className =
|
|
19
|
+
type = 'button',
|
|
20
|
+
className = '',
|
|
21
21
|
}) => {
|
|
22
22
|
const baseStyles =
|
|
23
|
-
|
|
23
|
+
'demo-button disabled:opacity-50 disabled:cursor-not-allowed'
|
|
24
24
|
|
|
25
25
|
const variantStyles = {
|
|
26
|
-
primary:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
danger:
|
|
31
|
-
"bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 dark:bg-red-500 dark:hover:bg-red-600",
|
|
32
|
-
};
|
|
26
|
+
primary: '',
|
|
27
|
+
secondary: 'demo-button-secondary',
|
|
28
|
+
danger: 'demo-button-danger',
|
|
29
|
+
}
|
|
33
30
|
|
|
34
31
|
const sizeStyles = {
|
|
35
|
-
small:
|
|
36
|
-
medium:
|
|
37
|
-
large:
|
|
38
|
-
}
|
|
32
|
+
small: 'px-3 py-1.5 text-sm',
|
|
33
|
+
medium: 'px-4 py-2 text-base',
|
|
34
|
+
large: 'px-6 py-3 text-lg',
|
|
35
|
+
}
|
|
39
36
|
|
|
40
37
|
return (
|
|
41
38
|
<button
|
|
@@ -46,5 +43,5 @@ export const Button: React.FC<ButtonProps> = ({
|
|
|
46
43
|
>
|
|
47
44
|
{children}
|
|
48
45
|
</button>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
46
|
+
)
|
|
47
|
+
}
|
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
export interface DialogProps {
|
|
4
|
-
title: string
|
|
5
|
-
children: React.ReactNode
|
|
6
|
-
footer?: React.ReactNode
|
|
7
|
-
className?: string
|
|
4
|
+
title: string
|
|
5
|
+
children: React.ReactNode
|
|
6
|
+
footer?: React.ReactNode
|
|
7
|
+
className?: string
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export const Dialog: React.FC<DialogProps> = ({
|
|
11
11
|
title,
|
|
12
12
|
children,
|
|
13
13
|
footer,
|
|
14
|
-
className =
|
|
14
|
+
className = '',
|
|
15
15
|
}) => {
|
|
16
16
|
return (
|
|
17
|
-
<div
|
|
18
|
-
className=
|
|
19
|
-
|
|
20
|
-
<div className="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
|
|
21
|
-
<h2 className="text-xl font-semibold text-gray-900 dark:text-gray-100">
|
|
22
|
-
{title}
|
|
23
|
-
</h2>
|
|
17
|
+
<div className={`demo-panel overflow-hidden p-0 ${className}`}>
|
|
18
|
+
<div className="border-b border-[var(--line)] px-6 py-4">
|
|
19
|
+
<h2 className="demo-section-title">{title}</h2>
|
|
24
20
|
</div>
|
|
25
21
|
<div className="px-6 py-6">{children}</div>
|
|
26
22
|
{footer && (
|
|
27
|
-
<div className="
|
|
23
|
+
<div className="border-t border-[var(--line)] bg-[var(--chip-bg)] px-6 py-4">
|
|
28
24
|
{footer}
|
|
29
25
|
</div>
|
|
30
26
|
)}
|
|
31
27
|
</div>
|
|
32
|
-
)
|
|
33
|
-
}
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
export interface InputProps {
|
|
4
|
-
label: string
|
|
5
|
-
id: string
|
|
6
|
-
value?: string
|
|
7
|
-
onChange?: (value: string) => void
|
|
8
|
-
placeholder?: string
|
|
9
|
-
required?: boolean
|
|
10
|
-
className?: string
|
|
4
|
+
label: string
|
|
5
|
+
id: string
|
|
6
|
+
value?: string
|
|
7
|
+
onChange?: (value: string) => void
|
|
8
|
+
placeholder?: string
|
|
9
|
+
required?: boolean
|
|
10
|
+
className?: string
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const Input: React.FC<InputProps> = ({
|
|
14
14
|
label,
|
|
15
15
|
id,
|
|
16
|
-
value =
|
|
16
|
+
value = '',
|
|
17
17
|
onChange,
|
|
18
18
|
placeholder,
|
|
19
19
|
required = false,
|
|
20
|
-
className =
|
|
20
|
+
className = '',
|
|
21
21
|
}) => {
|
|
22
22
|
return (
|
|
23
23
|
<div className={`flex flex-col gap-2 ${className}`}>
|
|
24
|
-
<label
|
|
25
|
-
htmlFor={id}
|
|
26
|
-
className="text-sm font-medium text-gray-700 dark:text-gray-200"
|
|
27
|
-
>
|
|
24
|
+
<label htmlFor={id} className="text-sm font-medium text-[var(--sea-ink)]">
|
|
28
25
|
{label}
|
|
29
26
|
{required && <span className="text-red-500 ml-1">*</span>}
|
|
30
27
|
</label>
|
|
@@ -35,8 +32,8 @@ export const Input: React.FC<InputProps> = ({
|
|
|
35
32
|
onChange={(e) => onChange?.(e.target.value)}
|
|
36
33
|
placeholder={placeholder}
|
|
37
34
|
required={required}
|
|
38
|
-
className="
|
|
35
|
+
className="demo-input"
|
|
39
36
|
/>
|
|
40
37
|
</div>
|
|
41
|
-
)
|
|
42
|
-
}
|
|
38
|
+
)
|
|
39
|
+
}
|
package/src/frameworks/react/add-ons/storybook/assets/src/components/storybook/radio-group.tsx
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from 'react'
|
|
2
2
|
|
|
3
3
|
export interface RadioOption {
|
|
4
|
-
value: string
|
|
5
|
-
label: string
|
|
4
|
+
value: string
|
|
5
|
+
label: string
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export interface RadioGroupProps {
|
|
9
|
-
label: string
|
|
10
|
-
name: string
|
|
11
|
-
options: RadioOption[]
|
|
12
|
-
value?: string
|
|
13
|
-
onChange?: (value: string) => void
|
|
14
|
-
className?: string
|
|
9
|
+
label: string
|
|
10
|
+
name: string
|
|
11
|
+
options: RadioOption[]
|
|
12
|
+
value?: string
|
|
13
|
+
onChange?: (value: string) => void
|
|
14
|
+
className?: string
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export const RadioGroup: React.FC<RadioGroupProps> = ({
|
|
@@ -20,11 +20,11 @@ export const RadioGroup: React.FC<RadioGroupProps> = ({
|
|
|
20
20
|
options,
|
|
21
21
|
value,
|
|
22
22
|
onChange,
|
|
23
|
-
className =
|
|
23
|
+
className = '',
|
|
24
24
|
}) => {
|
|
25
25
|
return (
|
|
26
26
|
<div className={`flex flex-col gap-3 ${className}`}>
|
|
27
|
-
<label className="text-sm font-medium text-
|
|
27
|
+
<label className="text-sm font-medium text-[var(--sea-ink)]">
|
|
28
28
|
{label}
|
|
29
29
|
</label>
|
|
30
30
|
<div className="flex gap-4">
|
|
@@ -39,14 +39,14 @@ export const RadioGroup: React.FC<RadioGroupProps> = ({
|
|
|
39
39
|
value={option.value}
|
|
40
40
|
checked={value === option.value}
|
|
41
41
|
onChange={(e) => onChange?.(e.target.value)}
|
|
42
|
-
className="
|
|
42
|
+
className="h-4 w-4 cursor-pointer accent-[var(--lagoon-deep)]"
|
|
43
43
|
/>
|
|
44
|
-
<span className="
|
|
44
|
+
<span className="demo-muted text-sm transition-colors group-hover:text-[var(--sea-ink)]">
|
|
45
45
|
{option.label}
|
|
46
46
|
</span>
|
|
47
47
|
</label>
|
|
48
48
|
))}
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
51
|
+
)
|
|
52
|
+
}
|