sunpeak 0.16.5 → 0.16.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sunpeak",
3
- "version": "0.16.5",
3
+ "version": "0.16.9",
4
4
  "description": "Local-first MCP Apps framework. Quickstart, build, test, and ship your Claude or ChatGPT App!",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -93,11 +93,12 @@
93
93
  "react-dom": "^18.0.0 || ^19.0.0"
94
94
  },
95
95
  "dependencies": {
96
+ "@clack/prompts": "^1.1.0",
96
97
  "@modelcontextprotocol/ext-apps": "^1.0.1",
97
98
  "@modelcontextprotocol/sdk": "^1.25.2",
98
99
  "clsx": "^2.1.1",
99
- "tailwind-merge": "^3.4.0",
100
100
  "esbuild": "^0.27.0",
101
+ "tailwind-merge": "^3.4.0",
101
102
  "zod": "^3.25.76"
102
103
  },
103
104
  "devDependencies": {
@@ -126,42 +126,154 @@ interface ReviewState {
126
126
  // Section Renderers
127
127
  // ============================================================================
128
128
 
129
+ const changeIcons = {
130
+ create: (
131
+ <svg
132
+ width="12"
133
+ height="12"
134
+ viewBox="0 0 24 24"
135
+ fill="none"
136
+ stroke="currentColor"
137
+ strokeWidth="3"
138
+ strokeLinecap="round"
139
+ >
140
+ <line x1="12" y1="5" x2="12" y2="19" />
141
+ <line x1="5" y1="12" x2="19" y2="12" />
142
+ </svg>
143
+ ),
144
+ modify: (
145
+ <svg
146
+ width="12"
147
+ height="12"
148
+ viewBox="0 0 24 24"
149
+ fill="none"
150
+ stroke="currentColor"
151
+ strokeWidth="3"
152
+ strokeLinecap="round"
153
+ >
154
+ <path d="M4 15c2-3 5-5 8-2s6 1 8-2" />
155
+ </svg>
156
+ ),
157
+ delete: (
158
+ <svg
159
+ width="12"
160
+ height="12"
161
+ viewBox="0 0 24 24"
162
+ fill="none"
163
+ stroke="currentColor"
164
+ strokeWidth="3"
165
+ strokeLinecap="round"
166
+ >
167
+ <line x1="5" y1="12" x2="19" y2="12" />
168
+ </svg>
169
+ ),
170
+ action: (
171
+ <svg
172
+ width="12"
173
+ height="12"
174
+ viewBox="0 0 24 24"
175
+ fill="none"
176
+ stroke="currentColor"
177
+ strokeWidth="2.5"
178
+ strokeLinecap="round"
179
+ strokeLinejoin="round"
180
+ >
181
+ <line x1="5" y1="12" x2="19" y2="12" />
182
+ <polyline points="12 5 19 12 12 19" />
183
+ </svg>
184
+ ),
185
+ };
186
+
129
187
  const changeTypeConfig = {
130
- create: { icon: '+', color: 'light-dark(#16a34a, #4ade80)', bg: 'light-dark(#f0fdf4, #052e16)' },
131
- modify: { icon: '~', color: 'light-dark(#ca8a04, #facc15)', bg: 'light-dark(#fefce8, #422006)' },
132
- delete: {
133
- icon: '\u2212',
134
- color: 'light-dark(#dc2626, #f87171)',
135
- bg: 'light-dark(#fef2f2, #450a0a)',
136
- },
137
- action: {
138
- icon: '\u2192',
139
- color: 'light-dark(#2563eb, #60a5fa)',
140
- bg: 'light-dark(#eff6ff, #172554)',
141
- },
188
+ create: { color: 'light-dark(#16a34a, #4ade80)', bg: 'light-dark(#f0fdf4, #052e16)' },
189
+ modify: { color: 'light-dark(#ca8a04, #facc15)', bg: 'light-dark(#fefce8, #422006)' },
190
+ delete: { color: 'light-dark(#dc2626, #f87171)', bg: 'light-dark(#fef2f2, #450a0a)' },
191
+ action: { color: 'light-dark(#2563eb, #60a5fa)', bg: 'light-dark(#eff6ff, #172554)' },
192
+ };
193
+
194
+ const alertIcons = {
195
+ info: (
196
+ <svg
197
+ width="14"
198
+ height="14"
199
+ viewBox="0 0 24 24"
200
+ fill="none"
201
+ stroke="currentColor"
202
+ strokeWidth="2"
203
+ strokeLinecap="round"
204
+ strokeLinejoin="round"
205
+ >
206
+ <circle cx="12" cy="12" r="10" />
207
+ <line x1="12" y1="16" x2="12" y2="12" />
208
+ <line x1="12" y1="8" x2="12.01" y2="8" />
209
+ </svg>
210
+ ),
211
+ warning: (
212
+ <svg
213
+ width="14"
214
+ height="14"
215
+ viewBox="0 0 24 24"
216
+ fill="none"
217
+ stroke="currentColor"
218
+ strokeWidth="2"
219
+ strokeLinecap="round"
220
+ strokeLinejoin="round"
221
+ >
222
+ <path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z" />
223
+ <line x1="12" y1="9" x2="12" y2="13" />
224
+ <line x1="12" y1="17" x2="12.01" y2="17" />
225
+ </svg>
226
+ ),
227
+ error: (
228
+ <svg
229
+ width="14"
230
+ height="14"
231
+ viewBox="0 0 24 24"
232
+ fill="none"
233
+ stroke="currentColor"
234
+ strokeWidth="2"
235
+ strokeLinecap="round"
236
+ strokeLinejoin="round"
237
+ >
238
+ <circle cx="12" cy="12" r="10" />
239
+ <line x1="15" y1="9" x2="9" y2="15" />
240
+ <line x1="9" y1="9" x2="15" y2="15" />
241
+ </svg>
242
+ ),
243
+ success: (
244
+ <svg
245
+ width="14"
246
+ height="14"
247
+ viewBox="0 0 24 24"
248
+ fill="none"
249
+ stroke="currentColor"
250
+ strokeWidth="2"
251
+ strokeLinecap="round"
252
+ strokeLinejoin="round"
253
+ >
254
+ <circle cx="12" cy="12" r="10" />
255
+ <polyline points="9 12 12 15 16 10" />
256
+ </svg>
257
+ ),
142
258
  };
143
259
 
144
260
  const alertTypeConfig = {
145
261
  info: {
146
- icon: '\u2139',
147
262
  bg: 'light-dark(#eff6ff, #172554)',
148
263
  border: 'light-dark(#bfdbfe, #1e3a5f)',
149
264
  text: 'light-dark(#1e40af, #93c5fd)',
150
265
  },
151
266
  warning: {
152
- icon: '\u26A0',
153
267
  bg: 'light-dark(#fefce8, #422006)',
154
268
  border: 'light-dark(#fde047, #854d0e)',
155
269
  text: 'light-dark(#a16207, #fde047)',
156
270
  },
157
271
  error: {
158
- icon: '\u2715',
159
272
  bg: 'light-dark(#fef2f2, #450a0a)',
160
273
  border: 'light-dark(#fecaca, #7f1d1d)',
161
274
  text: 'light-dark(#b91c1c, #fca5a5)',
162
275
  },
163
276
  success: {
164
- icon: '\u2713',
165
277
  bg: 'light-dark(#f0fdf4, #052e16)',
166
278
  border: 'light-dark(#bbf7d0, #14532d)',
167
279
  text: 'light-dark(#15803d, #86efac)',
@@ -263,7 +375,7 @@ function ChangesSection({ content }: { content: Change[] }) {
263
375
  borderColor: config.color,
264
376
  }}
265
377
  >
266
- {config.icon}
378
+ {changeIcons[change.type]}
267
379
  </span>
268
380
  <div className="flex-1 min-w-0">
269
381
  {change.path && (
@@ -354,7 +466,7 @@ function AlertBanner({ alert }: { alert: Alert }) {
354
466
  const config = alertTypeConfig[alert.type];
355
467
  return (
356
468
  <div
357
- className="flex items-start gap-2 p-3 rounded-lg"
469
+ className="flex items-center gap-2 p-3 rounded-lg"
358
470
  style={{
359
471
  backgroundColor: config.bg,
360
472
  borderWidth: 1,
@@ -363,11 +475,11 @@ function AlertBanner({ alert }: { alert: Alert }) {
363
475
  }}
364
476
  >
365
477
  <span className="flex-shrink-0" style={{ color: config.text }}>
366
- {config.icon}
478
+ {alertIcons[alert.type]}
367
479
  </span>
368
- <p className="text-sm" style={{ color: config.text }}>
480
+ <span className="text-sm" style={{ color: config.text }}>
369
481
  {alert.message}
370
- </p>
482
+ </span>
371
483
  </div>
372
484
  );
373
485
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CLcr8IyR.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CaQmwZJc.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}