nipponboardspt 2.0.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/.lovable/plan/nippon-boards-landing-page-2026-09-22.md +27 -0
- package/.lovable/project.json +5 -0
- package/.prettierignore +8 -0
- package/.prettierrc +6 -0
- package/AGENTS.md +10 -0
- package/README.md +134 -0
- package/bun.lock +1048 -0
- package/bunfig.toml +7 -0
- package/components.json +22 -0
- package/eslint.config.js +40 -0
- package/package.json +91 -0
- package/public/favicon.svg +7 -0
- package/public/robots.txt +14 -0
- package/roadmap.md +6 -0
- package/src/assets/nippon-ecu-bench.jpg +0 -0
- package/src/assets/nippon-hero-lab.jpg +0 -0
- package/src/assets/nippon-microsolder.jpg +0 -0
- package/src/components/Button.tsx +37 -0
- package/src/components/ui/accordion.tsx +51 -0
- package/src/components/ui/alert-dialog.tsx +115 -0
- package/src/components/ui/alert.tsx +49 -0
- package/src/components/ui/aspect-ratio.tsx +5 -0
- package/src/components/ui/avatar.tsx +47 -0
- package/src/components/ui/badge.tsx +32 -0
- package/src/components/ui/breadcrumb.tsx +101 -0
- package/src/components/ui/button.tsx +49 -0
- package/src/components/ui/calendar.tsx +177 -0
- package/src/components/ui/card.tsx +55 -0
- package/src/components/ui/carousel.tsx +240 -0
- package/src/components/ui/chart.tsx +331 -0
- package/src/components/ui/checkbox.tsx +26 -0
- package/src/components/ui/collapsible.tsx +11 -0
- package/src/components/ui/command.tsx +143 -0
- package/src/components/ui/context-menu.tsx +186 -0
- package/src/components/ui/dialog.tsx +104 -0
- package/src/components/ui/drawer.tsx +98 -0
- package/src/components/ui/dropdown-menu.tsx +187 -0
- package/src/components/ui/form.tsx +171 -0
- package/src/components/ui/hover-card.tsx +27 -0
- package/src/components/ui/input-otp.tsx +73 -0
- package/src/components/ui/input.tsx +22 -0
- package/src/components/ui/label.tsx +21 -0
- package/src/components/ui/menubar.tsx +228 -0
- package/src/components/ui/navigation-menu.tsx +120 -0
- package/src/components/ui/pagination.tsx +98 -0
- package/src/components/ui/popover.tsx +31 -0
- package/src/components/ui/progress.tsx +25 -0
- package/src/components/ui/radio-group.tsx +36 -0
- package/src/components/ui/resizable.tsx +37 -0
- package/src/components/ui/scroll-area.tsx +44 -0
- package/src/components/ui/select.tsx +152 -0
- package/src/components/ui/separator.tsx +24 -0
- package/src/components/ui/sheet.tsx +122 -0
- package/src/components/ui/sidebar.tsx +744 -0
- package/src/components/ui/skeleton.tsx +7 -0
- package/src/components/ui/slider.tsx +23 -0
- package/src/components/ui/sonner.tsx +23 -0
- package/src/components/ui/switch.tsx +27 -0
- package/src/components/ui/table.tsx +94 -0
- package/src/components/ui/tabs.tsx +53 -0
- package/src/components/ui/textarea.tsx +21 -0
- package/src/components/ui/toggle-group.tsx +57 -0
- package/src/components/ui/toggle.tsx +42 -0
- package/src/components/ui/tooltip.tsx +32 -0
- package/src/hooks/use-mobile.tsx +19 -0
- package/src/lib/error-capture.ts +81 -0
- package/src/lib/error-page.ts +30 -0
- package/src/lib/lovable-error-reporting.ts +59 -0
- package/src/lib/utils.ts +6 -0
- package/src/routeTree.gen.ts +69 -0
- package/src/router.tsx +16 -0
- package/src/routes/README.md +21 -0
- package/src/routes/__root.tsx +123 -0
- package/src/routes/index.tsx +314 -0
- package/src/server.ts +61 -0
- package/src/start.ts +29 -0
- package/src/styles.css +259 -0
- package/tsconfig.json +30 -0
- package/vite.config.ts +15 -0
package/src/styles.css
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
@import "tailwindcss" source(none);
|
|
2
|
+
@source "../src";
|
|
3
|
+
@import "tw-animate-css";
|
|
4
|
+
|
|
5
|
+
@custom-variant dark (&:is(.dark *));
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* Design system definition.
|
|
9
|
+
*
|
|
10
|
+
* The @theme inline block maps CSS custom properties to Tailwind utility
|
|
11
|
+
* classes (e.g. --color-primary -> bg-primary, text-primary).
|
|
12
|
+
*
|
|
13
|
+
* The :root and .dark blocks define the actual color values using oklch.
|
|
14
|
+
* All colors MUST use oklch format.
|
|
15
|
+
*
|
|
16
|
+
* To add a new semantic color:
|
|
17
|
+
* 1. Add the variable to :root (light value) and .dark (dark value)
|
|
18
|
+
* 2. Register it in @theme inline as --color-<name>: var(--<name>)
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
@theme inline {
|
|
22
|
+
--font-sans: "Manrope", sans-serif;
|
|
23
|
+
--font-display: "Space Grotesk", sans-serif;
|
|
24
|
+
--font-mono: "IBM Plex Mono", monospace;
|
|
25
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
26
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
27
|
+
--radius-lg: var(--radius);
|
|
28
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
29
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
30
|
+
--radius-3xl: calc(var(--radius) + 12px);
|
|
31
|
+
--radius-4xl: calc(var(--radius) + 16px);
|
|
32
|
+
--color-background: var(--background);
|
|
33
|
+
--color-foreground: var(--foreground);
|
|
34
|
+
--color-card: var(--card);
|
|
35
|
+
--color-card-foreground: var(--card-foreground);
|
|
36
|
+
--color-popover: var(--popover);
|
|
37
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
38
|
+
--color-primary: var(--primary);
|
|
39
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
40
|
+
--color-secondary: var(--secondary);
|
|
41
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
42
|
+
--color-muted: var(--muted);
|
|
43
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
44
|
+
--color-accent: var(--accent);
|
|
45
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
46
|
+
--color-destructive: var(--destructive);
|
|
47
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
48
|
+
--color-border: var(--border);
|
|
49
|
+
--color-input: var(--input);
|
|
50
|
+
--color-ring: var(--ring);
|
|
51
|
+
--color-ring-offset-background: var(--background);
|
|
52
|
+
--color-chart-1: var(--chart-1);
|
|
53
|
+
--color-chart-2: var(--chart-2);
|
|
54
|
+
--color-chart-3: var(--chart-3);
|
|
55
|
+
--color-chart-4: var(--chart-4);
|
|
56
|
+
--color-chart-5: var(--chart-5);
|
|
57
|
+
--color-sidebar: var(--sidebar);
|
|
58
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
59
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
60
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
61
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
62
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
63
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
64
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
65
|
+
--color-hero: var(--hero);
|
|
66
|
+
--color-hero-foreground: var(--hero-foreground);
|
|
67
|
+
--color-hero-muted: var(--hero-muted);
|
|
68
|
+
--color-surface: var(--surface);
|
|
69
|
+
--color-primary-bright: var(--primary-bright);
|
|
70
|
+
--shadow-action: var(--shadow-action);
|
|
71
|
+
--shadow-form: var(--shadow-form);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:root {
|
|
75
|
+
--radius: 0.25rem;
|
|
76
|
+
--background: oklch(0.985 0.003 90);
|
|
77
|
+
--foreground: oklch(0.18 0.005 255);
|
|
78
|
+
--card: oklch(1 0 0);
|
|
79
|
+
--card-foreground: oklch(0.129 0.042 264.695);
|
|
80
|
+
--popover: oklch(1 0 0);
|
|
81
|
+
--popover-foreground: oklch(0.129 0.042 264.695);
|
|
82
|
+
--primary: oklch(0.56 0.22 26);
|
|
83
|
+
--primary-foreground: oklch(0.99 0 0);
|
|
84
|
+
--secondary: oklch(0.968 0.007 247.896);
|
|
85
|
+
--secondary-foreground: oklch(0.208 0.042 265.755);
|
|
86
|
+
--muted: oklch(0.968 0.007 247.896);
|
|
87
|
+
--muted-foreground: oklch(0.48 0.01 255);
|
|
88
|
+
--accent: oklch(0.968 0.007 247.896);
|
|
89
|
+
--accent-foreground: oklch(0.208 0.042 265.755);
|
|
90
|
+
--destructive: oklch(0.577 0.245 27.325);
|
|
91
|
+
--destructive-foreground: oklch(0.984 0.003 247.858);
|
|
92
|
+
--border: oklch(0.86 0.006 255);
|
|
93
|
+
--input: oklch(0.86 0.006 255);
|
|
94
|
+
--ring: oklch(0.56 0.22 26);
|
|
95
|
+
--hero: oklch(0.16 0.006 255);
|
|
96
|
+
--hero-foreground: oklch(0.97 0.003 90);
|
|
97
|
+
--hero-muted: oklch(0.72 0.008 255);
|
|
98
|
+
--surface: oklch(0.955 0.005 90);
|
|
99
|
+
--primary-bright: oklch(0.65 0.24 27);
|
|
100
|
+
--shadow-action: 0 10px 26px -14px color-mix(in oklab, var(--primary) 75%, transparent);
|
|
101
|
+
--shadow-form: 0 24px 70px -50px color-mix(in oklab, var(--foreground) 55%, transparent);
|
|
102
|
+
--chart-1: oklch(0.646 0.222 41.116);
|
|
103
|
+
--chart-2: oklch(0.6 0.118 184.704);
|
|
104
|
+
--chart-3: oklch(0.398 0.07 227.392);
|
|
105
|
+
--chart-4: oklch(0.828 0.189 84.429);
|
|
106
|
+
--chart-5: oklch(0.769 0.188 70.08);
|
|
107
|
+
--sidebar: oklch(0.984 0.003 247.858);
|
|
108
|
+
--sidebar-foreground: oklch(0.129 0.042 264.695);
|
|
109
|
+
--sidebar-primary: oklch(0.208 0.042 265.755);
|
|
110
|
+
--sidebar-primary-foreground: oklch(0.984 0.003 247.858);
|
|
111
|
+
--sidebar-accent: oklch(0.968 0.007 247.896);
|
|
112
|
+
--sidebar-accent-foreground: oklch(0.208 0.042 265.755);
|
|
113
|
+
--sidebar-border: oklch(0.929 0.013 255.508);
|
|
114
|
+
--sidebar-ring: oklch(0.704 0.04 256.788);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.dark {
|
|
118
|
+
--background: oklch(0.129 0.042 264.695);
|
|
119
|
+
--foreground: oklch(0.984 0.003 247.858);
|
|
120
|
+
--card: oklch(0.208 0.042 265.755);
|
|
121
|
+
--card-foreground: oklch(0.984 0.003 247.858);
|
|
122
|
+
--popover: oklch(0.208 0.042 265.755);
|
|
123
|
+
--popover-foreground: oklch(0.984 0.003 247.858);
|
|
124
|
+
--primary: oklch(0.929 0.013 255.508);
|
|
125
|
+
--primary-foreground: oklch(0.208 0.042 265.755);
|
|
126
|
+
--secondary: oklch(0.279 0.041 260.031);
|
|
127
|
+
--secondary-foreground: oklch(0.984 0.003 247.858);
|
|
128
|
+
--muted: oklch(0.279 0.041 260.031);
|
|
129
|
+
--muted-foreground: oklch(0.704 0.04 256.788);
|
|
130
|
+
--accent: oklch(0.279 0.041 260.031);
|
|
131
|
+
--accent-foreground: oklch(0.984 0.003 247.858);
|
|
132
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
133
|
+
--destructive-foreground: oklch(0.984 0.003 247.858);
|
|
134
|
+
--border: oklch(1 0 0 / 10%);
|
|
135
|
+
--input: oklch(1 0 0 / 15%);
|
|
136
|
+
--ring: oklch(0.551 0.027 264.364);
|
|
137
|
+
--chart-1: oklch(0.488 0.243 264.376);
|
|
138
|
+
--chart-2: oklch(0.696 0.17 162.48);
|
|
139
|
+
--chart-3: oklch(0.769 0.188 70.08);
|
|
140
|
+
--chart-4: oklch(0.627 0.265 303.9);
|
|
141
|
+
--chart-5: oklch(0.645 0.246 16.439);
|
|
142
|
+
--sidebar: oklch(0.208 0.042 265.755);
|
|
143
|
+
--sidebar-foreground: oklch(0.984 0.003 247.858);
|
|
144
|
+
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
145
|
+
--sidebar-primary-foreground: oklch(0.984 0.003 247.858);
|
|
146
|
+
--sidebar-accent: oklch(0.279 0.041 260.031);
|
|
147
|
+
--sidebar-accent-foreground: oklch(0.984 0.003 247.858);
|
|
148
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
149
|
+
--sidebar-ring: oklch(0.551 0.027 264.364);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@layer base {
|
|
153
|
+
* {
|
|
154
|
+
border-color: var(--color-border);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
body {
|
|
158
|
+
background-color: var(--color-background);
|
|
159
|
+
color: var(--color-foreground);
|
|
160
|
+
font-family: var(--font-sans);
|
|
161
|
+
letter-spacing: 0;
|
|
162
|
+
scroll-behavior: smooth;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
button, a, input, select, textarea { letter-spacing: 0; }
|
|
166
|
+
::selection { background: var(--primary); color: var(--primary-foreground); }
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@utility hero-overlay {
|
|
170
|
+
background: linear-gradient(90deg, color-mix(in oklab, var(--hero) 98%, transparent) 0%, color-mix(in oklab, var(--hero) 89%, transparent) 44%, color-mix(in oklab, var(--hero) 20%, transparent) 78%), linear-gradient(0deg, color-mix(in oklab, var(--hero) 88%, transparent) 0%, transparent 45%);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@utility section-light {
|
|
174
|
+
background-color: var(--background);
|
|
175
|
+
background-image: linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);
|
|
176
|
+
background-size: 64px 64px;
|
|
177
|
+
background-position: -1px -1px;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@utility eyebrow {
|
|
181
|
+
margin-bottom: 1rem;
|
|
182
|
+
font-size: 0.72rem;
|
|
183
|
+
line-height: 1rem;
|
|
184
|
+
font-weight: 700;
|
|
185
|
+
text-transform: uppercase;
|
|
186
|
+
color: var(--primary);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@utility section-title {
|
|
190
|
+
font-family: var(--font-display);
|
|
191
|
+
font-size: clamp(2.2rem, 5vw, 4.5rem);
|
|
192
|
+
line-height: 1.05;
|
|
193
|
+
font-weight: 600;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
@utility nav-link {
|
|
197
|
+
position: relative;
|
|
198
|
+
font-size: 0.72rem;
|
|
199
|
+
font-weight: 700;
|
|
200
|
+
text-transform: uppercase;
|
|
201
|
+
color: var(--hero-muted);
|
|
202
|
+
transition: color 180ms ease;
|
|
203
|
+
&:hover { color: var(--hero-foreground); }
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@utility brand {
|
|
207
|
+
display: inline-flex;
|
|
208
|
+
align-items: baseline;
|
|
209
|
+
color: var(--foreground);
|
|
210
|
+
font-family: var(--font-display);
|
|
211
|
+
font-size: 1.25rem;
|
|
212
|
+
line-height: 1;
|
|
213
|
+
font-weight: 700;
|
|
214
|
+
white-space: nowrap;
|
|
215
|
+
& small { margin-left: 0.25rem; font-size: 0.78rem; font-weight: 400; color: var(--muted-foreground); }
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@utility brand-light {
|
|
219
|
+
color: var(--hero-foreground);
|
|
220
|
+
& small { color: var(--hero-muted); }
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
@utility brand-disc {
|
|
224
|
+
display: inline-block;
|
|
225
|
+
width: 0.78em;
|
|
226
|
+
height: 0.78em;
|
|
227
|
+
margin-inline: 0.04em;
|
|
228
|
+
border-radius: 999px;
|
|
229
|
+
background: var(--primary);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@utility specialty-card {
|
|
233
|
+
min-height: 18rem;
|
|
234
|
+
transition: background-color 220ms ease;
|
|
235
|
+
&:hover { background-color: var(--surface); }
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@utility field {
|
|
239
|
+
display: flex;
|
|
240
|
+
min-width: 0;
|
|
241
|
+
flex-direction: column;
|
|
242
|
+
gap: 0.55rem;
|
|
243
|
+
& > span:first-child { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; color: var(--foreground); }
|
|
244
|
+
& input, & textarea, & select { width: 100%; border: 1px solid var(--input); border-radius: 0; background: var(--background); padding: 0.78rem 0.9rem; font-size: 0.9rem; outline: none; transition: border-color 180ms ease, box-shadow 180ms ease; }
|
|
245
|
+
& input:focus, & textarea:focus, & select:focus { border-color: var(--primary); box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary) 18%, transparent); }
|
|
246
|
+
& textarea { resize: vertical; }
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
@utility field-label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; }
|
|
250
|
+
@utility select-wrap { position: relative; display: flex; align-items: center; & svg { pointer-events: none; position: absolute; right: 0.8rem; color: var(--muted-foreground); } & select { appearance: none; } }
|
|
251
|
+
@utility radio { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; & input { accent-color: var(--primary); } }
|
|
252
|
+
@utility upload-box { display: flex; min-height: 8rem; cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 0.35rem; border: 1px dashed var(--input); background: var(--surface); padding: 1rem; text-align: center; transition: border-color 180ms ease; &:hover { border-color: var(--primary); } & strong { font-size: 0.85rem; } & small { color: var(--muted-foreground); } }
|
|
253
|
+
@utility faq-item { & summary { display: flex; cursor: pointer; list-style: none; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.5rem 0; font-family: var(--font-display); font-size: 1.1rem; font-weight: 600; } & summary::-webkit-details-marker { display: none; } & p { max-width: 42rem; padding: 0 2rem 1.5rem 0; line-height: 1.75; color: var(--muted-foreground); } &[open] .faq-plus { transform: rotate(45deg); color: var(--primary); } }
|
|
254
|
+
@utility faq-plus { font-size: 1.5rem; font-weight: 300; transition: transform 180ms ease; }
|
|
255
|
+
@utility footer-title { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; color: var(--hero-foreground); }
|
|
256
|
+
|
|
257
|
+
@media (prefers-reduced-motion: reduce) {
|
|
258
|
+
*, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
|
|
259
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"include": ["src/**/*.ts", "src/**/*.tsx", "vite.config.ts", "eslint.config.js"],
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "ES2022",
|
|
5
|
+
"jsx": "react-jsx",
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
8
|
+
"types": ["vite/client"],
|
|
9
|
+
|
|
10
|
+
"moduleResolution": "Bundler",
|
|
11
|
+
"allowImportingTsExtensions": true,
|
|
12
|
+
"verbatimModuleSyntax": false,
|
|
13
|
+
"noEmit": true,
|
|
14
|
+
|
|
15
|
+
"skipLibCheck": true,
|
|
16
|
+
"strict": true,
|
|
17
|
+
"noUnusedLocals": false,
|
|
18
|
+
"noUnusedParameters": false,
|
|
19
|
+
"noFallthroughCasesInSwitch": true,
|
|
20
|
+
"noImplicitOverride": true,
|
|
21
|
+
"noImplicitReturns": true,
|
|
22
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
23
|
+
"noUncheckedIndexedAccess": true,
|
|
24
|
+
"exactOptionalPropertyTypes": true,
|
|
25
|
+
"noUncheckedSideEffectImports": true,
|
|
26
|
+
"paths": {
|
|
27
|
+
"@/*": ["./src/*"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @lovable.dev/vite-tanstack-config already includes the following — do NOT add them manually
|
|
2
|
+
// or the app will break with duplicate plugins:
|
|
3
|
+
// - TanStack devtools (dev-only, first), tanstackStart, viteReact, tailwindcss, tsConfigPaths,
|
|
4
|
+
// nitro (build-only using cloudflare as a default target), VITE_* env injection, @ path alias,
|
|
5
|
+
// React/TanStack dedupe, error logger plugins, and sandbox detection (port/host/strictPort).
|
|
6
|
+
// You can pass additional config via defineConfig({ vite: { ... }, etc... }) if needed.
|
|
7
|
+
import { defineConfig } from "@lovable.dev/vite-tanstack-config";
|
|
8
|
+
|
|
9
|
+
export default defineConfig({
|
|
10
|
+
tanstackStart: {
|
|
11
|
+
// Redirect TanStack Start's bundled server entry to src/server.ts (our SSR error wrapper).
|
|
12
|
+
// nitro/vite builds from this
|
|
13
|
+
server: { entry: "server" },
|
|
14
|
+
},
|
|
15
|
+
});
|