reset-framework-cli 1.1.1 → 1.1.4

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.
Files changed (34) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +47 -47
  3. package/package.json +4 -4
  4. package/src/commands/build.js +114 -113
  5. package/src/commands/dev.js +157 -153
  6. package/src/commands/doctor.js +89 -89
  7. package/src/commands/init.js +925 -920
  8. package/src/commands/package.js +49 -44
  9. package/src/index.js +213 -213
  10. package/src/lib/context.js +66 -66
  11. package/src/lib/framework.js +150 -28
  12. package/src/lib/logger.js +11 -11
  13. package/src/lib/output.js +214 -106
  14. package/src/lib/process.js +188 -181
  15. package/src/lib/project.js +559 -475
  16. package/src/lib/toolchain.js +62 -62
  17. package/src/lib/ui.js +244 -244
  18. package/templates/basic/README.md +15 -15
  19. package/templates/basic/frontend/README.md +73 -73
  20. package/templates/basic/frontend/eslint.config.js +23 -23
  21. package/templates/basic/frontend/index.html +13 -13
  22. package/templates/basic/frontend/package.json +31 -31
  23. package/templates/basic/frontend/public/icons.svg +24 -24
  24. package/templates/basic/frontend/src/App.css +216 -138
  25. package/templates/basic/frontend/src/App.tsx +77 -76
  26. package/templates/basic/frontend/src/assets/vite.svg +1 -1
  27. package/templates/basic/frontend/src/index.css +111 -111
  28. package/templates/basic/frontend/src/lib/reset.ts +1 -1
  29. package/templates/basic/frontend/src/main.tsx +10 -10
  30. package/templates/basic/frontend/tsconfig.app.json +28 -28
  31. package/templates/basic/frontend/tsconfig.json +7 -7
  32. package/templates/basic/frontend/tsconfig.node.json +26 -26
  33. package/templates/basic/frontend/vite.config.ts +16 -16
  34. package/templates/basic/reset.config.json +58 -58
@@ -1,138 +1,216 @@
1
- .reset-container {
2
- min-height: 100svh;
3
- display: flex;
4
- flex-direction: column;
5
- align-items: center;
6
- justify-content: center;
7
- padding: 2rem;
8
- position: relative;
9
- overflow: hidden;
10
- }
11
-
12
- .ambient-background {
13
- position: absolute;
14
- top: 0;
15
- left: 0;
16
- right: 0;
17
- height: 600px;
18
- background: radial-gradient(circle at 50% 0%, var(--accent-bg) 0%, transparent 70%);
19
- opacity: 0.4;
20
- z-index: -1;
21
- pointer-events: none;
22
- }
23
-
24
- .content-wrapper {
25
- max-width: 800px;
26
- text-align: center;
27
- animation: fade-in-up 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
28
- display: flex;
29
- flex-direction: column;
30
- align-items: center;
31
- }
32
-
33
- .badge {
34
- display: inline-flex;
35
- align-items: center;
36
- padding: 6px 14px;
37
- border-radius: 20px;
38
- background: var(--code-bg);
39
- color: var(--text);
40
- font-size: 0.85rem;
41
- font-weight: 500;
42
- letter-spacing: 0.5px;
43
- border: 1px solid var(--border);
44
- margin-bottom: 2.5rem;
45
- box-shadow: 0 2px 8px rgba(0,0,0,0.02);
46
- }
47
-
48
- .title {
49
- font-size: 5.5rem;
50
- line-height: 1.05;
51
- margin: 0 0 1.5rem 0;
52
- letter-spacing: -0.04em;
53
- font-weight: 600;
54
- color: var(--text-h);
55
- }
56
-
57
- .text-muted {
58
- color: var(--text);
59
- }
60
-
61
- .subtitle {
62
- font-size: 1.25rem;
63
- color: var(--text);
64
- margin: 0 auto 3rem auto;
65
- line-height: 1.6;
66
- max-width: 560px;
67
- font-weight: 400;
68
- }
69
-
70
- .actions {
71
- display: flex;
72
- gap: 1rem;
73
- justify-content: center;
74
- align-items: center;
75
- margin-bottom: 4rem;
76
- }
77
-
78
- .primary-btn, .secondary-btn {
79
- padding: 0.75rem 1.75rem;
80
- border-radius: 8px;
81
- font-size: 1rem;
82
- font-weight: 500;
83
- cursor: pointer;
84
- transition: all 0.2s ease;
85
- font-family: inherit;
86
- text-decoration: none;
87
- }
88
-
89
- .primary-btn {
90
- background: var(--text-h);
91
- color: var(--bg);
92
- border: 1px solid var(--text-h);
93
- }
94
-
95
- .primary-btn:hover {
96
- opacity: 0.9;
97
- transform: translateY(-1px);
98
- box-shadow: 0 4px 12px rgba(0,0,0,0.1);
99
- }
100
-
101
- .secondary-btn {
102
- background: transparent;
103
- color: var(--text-h);
104
- border: 1px solid var(--border);
105
- }
106
-
107
- .secondary-btn:hover {
108
- background: var(--code-bg);
109
- border-color: var(--text);
110
- }
111
-
112
- .terminal-snippet {
113
- margin-top: 1rem;
114
- opacity: 0;
115
- animation: fade-in-up 1s cubic-bezier(0.16, 1, 0.3, 1) 0.2s forwards;
116
- }
117
-
118
- .terminal-snippet code {
119
- font-family: var(--mono);
120
- font-size: 0.9rem;
121
- padding: 0.85rem 1.5rem;
122
- border-radius: 8px;
123
- background: var(--code-bg);
124
- border: 1px solid var(--border);
125
- color: var(--text-h);
126
- box-shadow: inset 0 1px 4px rgba(0,0,0,0.02);
127
- }
128
-
129
- @keyframes fade-in-up {
130
- from { opacity: 0; transform: translateY(15px); }
131
- to { opacity: 1; transform: translateY(0); }
132
- }
133
-
134
- @media (max-width: 768px) {
135
- .title { font-size: 3.5rem; }
136
- .actions { flex-direction: column; width: 100%; max-width: 300px; }
137
- .primary-btn, .secondary-btn { width: 100%; display: flex; justify-content: center; }
138
- }
1
+ .reset-premium-container {
2
+ min-height: 100svh;
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ justify-content: center;
7
+ padding: 2rem;
8
+ position: relative;
9
+ overflow: hidden;
10
+ background-color: var(--bg);
11
+ opacity: 0;
12
+ transition: opacity 0.8s filter 0.8s cubic-bezier(0.16, 1, 0.3, 1);
13
+ filter: blur(10px);
14
+ }
15
+
16
+ .reset-premium-container.loaded {
17
+ opacity: 1;
18
+ filter: blur(0);
19
+ }
20
+
21
+ .ambient-glow {
22
+ position: absolute;
23
+ top: -20vh;
24
+ left: 50%;
25
+ transform: translateX(-50%);
26
+ width: 60vw;
27
+ height: 60vw;
28
+ background: radial-gradient(circle, var(--accent-bg) 0%, transparent 60%);
29
+ opacity: 0.6;
30
+ z-index: 0;
31
+ pointer-events: none;
32
+ filter: blur(40px);
33
+ }
34
+
35
+ .content {
36
+ position: relative;
37
+ z-index: 1;
38
+ max-width: 800px;
39
+ text-align: center;
40
+ display: flex;
41
+ flex-direction: column;
42
+ align-items: center;
43
+ animation: float-up 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
44
+ }
45
+
46
+ .status-pill {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ gap: 8px;
50
+ padding: 6px 16px;
51
+ border-radius: 9999px;
52
+ background: rgba(255, 255, 255, 0.03);
53
+ backdrop-filter: blur(10px);
54
+ border: 1px solid var(--border);
55
+ color: var(--text-h);
56
+ font-size: 0.85rem;
57
+ font-weight: 500;
58
+ letter-spacing: 0.3px;
59
+ margin-bottom: 2.5rem;
60
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.04);
61
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
62
+ }
63
+
64
+ .status-pill:hover {
65
+ transform: translateY(-1px);
66
+ box-shadow: 0 6px 32px rgba(0, 0, 0, 0.08);
67
+ }
68
+
69
+ .status-dot {
70
+ width: 8px;
71
+ height: 8px;
72
+ border-radius: 50%;
73
+ background-color: var(--accent);
74
+ box-shadow: 0 0 12px var(--accent);
75
+ animation: pulse 2s infinite ease-in-out;
76
+ }
77
+
78
+ .hero-title {
79
+ font-size: 5rem;
80
+ line-height: 1.1;
81
+ margin: 0 0 1.5rem 0;
82
+ letter-spacing: -0.05em;
83
+ font-weight: 700;
84
+ color: var(--text-h);
85
+ }
86
+
87
+ .hero-title span {
88
+ display: inline-block;
89
+ background: linear-gradient(135deg, var(--text-h) 0%, var(--text) 100%);
90
+ -webkit-background-clip: text;
91
+ -webkit-text-fill-color: transparent;
92
+ }
93
+
94
+ .hero-title .text-dim {
95
+ background: linear-gradient(135deg, var(--text) 0%, rgba(100,100,100,0.5) 100%);
96
+ -webkit-background-clip: text;
97
+ -webkit-text-fill-color: transparent;
98
+ opacity: 0.8;
99
+ }
100
+
101
+ .hero-subtitle {
102
+ font-size: 1.15rem;
103
+ color: var(--text);
104
+ margin: 0 auto 3.5rem auto;
105
+ line-height: 1.6;
106
+ max-width: 500px;
107
+ font-weight: 400;
108
+ letter-spacing: -0.01em;
109
+ }
110
+
111
+ .button-group {
112
+ display: flex;
113
+ gap: 1.25rem;
114
+ margin-bottom: 3.5rem;
115
+ }
116
+
117
+ .btn-primary, .btn-secondary {
118
+ padding: 0.8rem 1.8rem;
119
+ border-radius: 12px;
120
+ font-size: 0.95rem;
121
+ font-weight: 500;
122
+ cursor: pointer;
123
+ transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
124
+ font-family: inherit;
125
+ text-decoration: none;
126
+ display: inline-flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ }
130
+
131
+ .btn-primary {
132
+ background: var(--text-h);
133
+ color: var(--bg);
134
+ border: 1px solid transparent;
135
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
136
+ }
137
+
138
+ .btn-primary:hover {
139
+ transform: translateY(-2px);
140
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
141
+ background: var(--text);
142
+ }
143
+
144
+ .btn-primary:active {
145
+ transform: translateY(0);
146
+ }
147
+
148
+ .btn-secondary {
149
+ background: rgba(255, 255, 255, 0.02);
150
+ color: var(--text-h);
151
+ border: 1px solid var(--border);
152
+ backdrop-filter: blur(10px);
153
+ }
154
+
155
+ .btn-secondary:hover {
156
+ background: var(--code-bg);
157
+ border-color: var(--text);
158
+ transform: translateY(-2px);
159
+ }
160
+
161
+ .btn-secondary:active {
162
+ transform: translateY(0);
163
+ }
164
+
165
+ .code-snippet-box {
166
+ padding: 1rem 1.75rem;
167
+ border-radius: 12px;
168
+ background: rgba(0, 0, 0, 0.02);
169
+ border: 1px solid var(--border);
170
+ backdrop-filter: blur(20px);
171
+ transition: all 0.3s ease;
172
+ }
173
+
174
+ @media (prefers-color-scheme: dark) {
175
+ .code-snippet-box {
176
+ background: rgba(255, 255, 255, 0.02);
177
+ }
178
+ }
179
+
180
+ .code-snippet-box:hover {
181
+ border-color: var(--text);
182
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.05);
183
+ }
184
+
185
+ .code-snippet-box code {
186
+ background: transparent;
187
+ padding: 0;
188
+ font-family: var(--mono);
189
+ font-size: 0.9rem;
190
+ color: var(--text-h);
191
+ letter-spacing: 0px;
192
+ }
193
+
194
+ .code-prompt {
195
+ color: var(--accent);
196
+ margin-right: 0.5rem;
197
+ user-select: none;
198
+ }
199
+
200
+ @keyframes float-up {
201
+ from { opacity: 0; transform: translateY(20px); }
202
+ to { opacity: 1; transform: translateY(0); }
203
+ }
204
+
205
+ @keyframes pulse {
206
+ 0% { opacity: 0.6; transform: scale(0.95); }
207
+ 50% { opacity: 1; transform: scale(1.05); }
208
+ 100% { opacity: 0.6; transform: scale(0.95); }
209
+ }
210
+
211
+ @media (max-width: 768px) {
212
+ .hero-title { font-size: 3.5rem; }
213
+ .button-group { flex-direction: column; width: 100%; max-width: 280px; }
214
+ .btn-primary, .btn-secondary { width: 100%; }
215
+ }
216
+
@@ -1,76 +1,77 @@
1
- import { useEffect, useState } from 'react'
2
- import './App.css'
3
- import { reset } from './lib/reset'
4
-
5
- function App() {
6
- const [count, setCount] = useState(0)
7
- const [appName, setAppName] = useState('Reset Framework')
8
- const [appVersion, setAppVersion] = useState('0.0.0')
9
- const [platform, setPlatform] = useState('unknown')
10
- const [bridgeVersion, setBridgeVersion] = useState('1')
11
-
12
- useEffect(() => {
13
- let cancelled = false
14
-
15
- async function loadRuntimeInfo() {
16
- try {
17
- const [appInfo, runtimeInfo] = await Promise.all([
18
- reset.app.getInfo(),
19
- reset.runtime.getInfo(),
20
- ])
21
-
22
- if (cancelled) {
23
- return
24
- }
25
-
26
- setAppName(appInfo.name)
27
- setAppVersion(appInfo.version)
28
- setPlatform(runtimeInfo.platform)
29
- setBridgeVersion(runtimeInfo.bridgeVersion)
30
- } catch (error) {
31
- console.error('Failed to load runtime info', error)
32
- }
33
- }
34
-
35
- loadRuntimeInfo()
36
-
37
- return () => {
38
- cancelled = true
39
- }
40
- }, [])
41
-
42
- return (
43
- <main className="reset-container">
44
- <div className="ambient-background"></div>
45
-
46
- <div className="content-wrapper">
47
- <div className="badge">{appName} v{appVersion} on {platform}</div>
48
-
49
- <h1 className="title">
50
- Native performance.<br />
51
- <span className="text-muted">Web experience.</span>
52
- </h1>
53
-
54
- <p className="subtitle">
55
- A ridiculously lightweight desktop runtime powered by C++ and system webviews.
56
- Drop the Chromium baggage and build with the tools you already know.
57
- </p>
58
-
59
- <div className="actions">
60
- <button className="primary-btn" onClick={() => setCount(c => c + 1)}>
61
- Count is {count}
62
- </button>
63
- <a href="#" className="secondary-btn">
64
- Bridge v{bridgeVersion}
65
- </a>
66
- </div>
67
-
68
- <div className="terminal-snippet">
69
- <code>reset-framework-cli create-app my-app</code>
70
- </div>
71
- </div>
72
- </main>
73
- )
74
- }
75
-
76
- export default App
1
+ import { useEffect, useState } from 'react'
2
+ import './App.css'
3
+ import { reset } from './lib/reset'
4
+
5
+ function App() {
6
+ const [count, setCount] = useState(0)
7
+ const [appInfo, setAppInfo] = useState({ name: 'Reset App', version: '0.0.0' })
8
+ const [runtimeInfo, setRuntimeInfo] = useState({ platform: 'unknown', bridge: '1' })
9
+ const [isLoaded, setIsLoaded] = useState(false)
10
+
11
+ useEffect(() => {
12
+ let cancelled = false
13
+
14
+ async function loadRuntimeInfo() {
15
+ try {
16
+ const [app, runtime] = await Promise.all([
17
+ reset.app.getInfo(),
18
+ reset.runtime.getInfo(),
19
+ ])
20
+
21
+ if (cancelled) return
22
+
23
+ setAppInfo({ name: app.name, version: app.version })
24
+ setRuntimeInfo({ platform: runtime.platform, bridge: runtime.bridgeVersion })
25
+ setIsLoaded(true)
26
+ } catch (error) {
27
+ console.error('Failed to load runtime info', error)
28
+ setIsLoaded(true)
29
+ }
30
+ }
31
+
32
+ loadRuntimeInfo()
33
+
34
+ return () => {
35
+ cancelled = true
36
+ }
37
+ }, [])
38
+
39
+ return (
40
+ <div className={`reset-premium-container ${isLoaded ? 'loaded' : ''}`}>
41
+ <div className="ambient-glow" />
42
+
43
+ <main className="content">
44
+ <div className="status-pill">
45
+ <div className="status-dot" />
46
+ <span>{appInfo.name} v{appInfo.version} &mdash; {runtimeInfo.platform}</span>
47
+ </div>
48
+
49
+ <h1 className="hero-title">
50
+ <span>Native performance.</span><br />
51
+ <span className="text-dim">Web experience.</span>
52
+ </h1>
53
+
54
+ <p className="hero-subtitle">
55
+ A radically lightweight desktop runtime. <br/>
56
+ Drop the heavy Chromium baggage and build with the tools you already know.
57
+ </p>
58
+
59
+ <div className="button-group">
60
+ <button className="btn-primary" onClick={() => setCount(c => c + 1)}>
61
+ Clicked {count} times
62
+ </button>
63
+ <a href="https://github.com/reset-framework" target="_blank" rel="noreferrer" className="btn-secondary">
64
+ View Documentation
65
+ </a>
66
+ </div>
67
+
68
+ <div className="code-snippet-box">
69
+ <code><span className="code-prompt">$</span> reset-framework-cli dev</code>
70
+ </div>
71
+ </main>
72
+ </div>
73
+ )
74
+ }
75
+
76
+ export default App
77
+
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="77" height="47" fill="none" aria-labelledby="vite-logo-title" viewBox="0 0 77 47"><title id="vite-logo-title">Vite</title><style>.parenthesis{fill:#000}@media (prefers-color-scheme:dark){.parenthesis{fill:#fff}}</style><path fill="#9135ff" d="M40.151 45.71c-.663.844-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.493c-.92 0-1.457-1.04-.92-1.788l7.479-10.471c1.07-1.498 0-3.578-1.842-3.578H15.443c-.92 0-1.456-1.04-.92-1.788l9.696-13.576c.213-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.472c-1.07 1.497 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.087.89 1.83L40.153 45.712z"/><mask id="a" width="48" height="47" x="14" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M40.047 45.71c-.663.843-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.389c-.92 0-1.457-1.04-.92-1.788l7.479-10.472c1.07-1.497 0-3.578-1.842-3.578H15.34c-.92 0-1.456-1.04-.92-1.788l9.696-13.575c.213-.297.556-.474.92-.474H53.93c.92 0 1.456 1.04.92 1.788L47.37 13.03c-1.07 1.498 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.088.89 1.831L40.049 45.712z"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#eee6ff" rx="5.508" ry="14.704" transform="rotate(269.814 20.96 11.29)scale(-1 1)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#eee6ff" rx="10.399" ry="29.851" transform="rotate(89.814 -16.902 -8.275)scale(1 -1)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#8900ff" rx="5.508" ry="30.487" transform="rotate(89.814 -19.197 -7.127)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.928 4.177)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.738 5.52)scale(1 -1)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#eee6ff" rx="14.072" ry="22.078" transform="rotate(93.35 31.245 55.578)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx="14.592" cy="9.743" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(39.51 14.592 9.743)"/></g><g filter="url(#k)"><ellipse cx="61.728" cy="-5.321" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 61.728 -5.32)"/></g><g filter="url(#l)"><ellipse cx="55.618" cy="7.104" fill="#00c2ff" rx="5.971" ry="9.665" transform="rotate(37.892 55.618 7.104)"/></g><g filter="url(#m)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#n)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#o)"><ellipse cx="49.857" cy="30.678" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 49.857 30.678)"/></g><g filter="url(#p)"><ellipse cx="52.623" cy="33.171" fill="#00c2ff" rx="5.971" ry="15.297" transform="rotate(37.892 52.623 33.17)"/></g></g><path d="M6.919 0c-9.198 13.166-9.252 33.575 0 46.789h6.215c-9.25-13.214-9.196-33.623 0-46.789zm62.424 0h-6.215c9.198 13.166 9.252 33.575 0 46.789h6.215c9.25-13.214 9.196-33.623 0-46.789" class="parenthesis"/><defs><filter id="b" width="60.045" height="41.654" x="-5.564" y="16.92" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-40.407" y="-6.762" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-35.435" y="2.801" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-30.84" y="20.8" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-29.307" y="21.949" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="29.961" y="-17.13" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-13.43" y="-22.082" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="34.321" y="-37.644" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="38.847" y="-10.552" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="22.45" y="-1.645" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="32.919" y="11.36" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter></defs></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="77" height="47" fill="none" aria-labelledby="vite-logo-title" viewBox="0 0 77 47"><title id="vite-logo-title">Vite</title><style>.parenthesis{fill:#000}@media (prefers-color-scheme:dark){.parenthesis{fill:#fff}}</style><path fill="#9135ff" d="M40.151 45.71c-.663.844-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.493c-.92 0-1.457-1.04-.92-1.788l7.479-10.471c1.07-1.498 0-3.578-1.842-3.578H15.443c-.92 0-1.456-1.04-.92-1.788l9.696-13.576c.213-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.472c-1.07 1.497 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.087.89 1.83L40.153 45.712z"/><mask id="a" width="48" height="47" x="14" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M40.047 45.71c-.663.843-2.02.374-2.02-.699V34.708a2.26 2.26 0 0 0-2.262-2.262H24.389c-.92 0-1.457-1.04-.92-1.788l7.479-10.472c1.07-1.497 0-3.578-1.842-3.578H15.34c-.92 0-1.456-1.04-.92-1.788l9.696-13.575c.213-.297.556-.474.92-.474H53.93c.92 0 1.456 1.04.92 1.788L47.37 13.03c-1.07 1.498 0 3.578 1.842 3.578h11.376c.944 0 1.474 1.088.89 1.831L40.049 45.712z"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#eee6ff" rx="5.508" ry="14.704" transform="rotate(269.814 20.96 11.29)scale(-1 1)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#eee6ff" rx="10.399" ry="29.851" transform="rotate(89.814 -16.902 -8.275)scale(1 -1)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#8900ff" rx="5.508" ry="30.487" transform="rotate(89.814 -19.197 -7.127)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.928 4.177)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#8900ff" rx="5.508" ry="30.599" transform="rotate(89.814 -25.738 5.52)scale(1 -1)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#eee6ff" rx="14.072" ry="22.078" transform="rotate(93.35 31.245 55.578)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#8900ff" rx="3.47" ry="21.501" transform="rotate(89.009 35.419 55.202)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx="14.592" cy="9.743" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(39.51 14.592 9.743)"/></g><g filter="url(#k)"><ellipse cx="61.728" cy="-5.321" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 61.728 -5.32)"/></g><g filter="url(#l)"><ellipse cx="55.618" cy="7.104" fill="#00c2ff" rx="5.971" ry="9.665" transform="rotate(37.892 55.618 7.104)"/></g><g filter="url(#m)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#n)"><ellipse cx="12.326" cy="39.103" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 12.326 39.103)"/></g><g filter="url(#o)"><ellipse cx="49.857" cy="30.678" fill="#8900ff" rx="4.407" ry="29.108" transform="rotate(37.892 49.857 30.678)"/></g><g filter="url(#p)"><ellipse cx="52.623" cy="33.171" fill="#00c2ff" rx="5.971" ry="15.297" transform="rotate(37.892 52.623 33.17)"/></g></g><path d="M6.919 0c-9.198 13.166-9.252 33.575 0 46.789h6.215c-9.25-13.214-9.196-33.623 0-46.789zm62.424 0h-6.215c9.198 13.166 9.252 33.575 0 46.789h6.215c9.25-13.214 9.196-33.623 0-46.789" class="parenthesis"/><defs><filter id="b" width="60.045" height="41.654" x="-5.564" y="16.92" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-40.407" y="-6.762" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-35.435" y="2.801" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-30.84" y="20.8" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-29.307" y="21.949" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="29.961" y="-17.13" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="37.754" y="3.055" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-13.43" y="-22.082" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="34.321" y="-37.644" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="38.847" y="-10.552" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-15.081" y="6.78" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="22.45" y="-1.645" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="32.919" y="11.36" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17286" stdDeviation="4.596"/></filter></defs></svg>