@ttsc/playground 0.18.4 → 0.19.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.
Files changed (43) hide show
  1. package/README.md +1 -1
  2. package/lib/src/compiler/createWorkerCompiler.js +7 -191
  3. package/lib/src/compiler/createWorkerCompiler.js.map +1 -1
  4. package/lib/src/compiler/internal/createWorkerCompilerService.d.ts +18 -0
  5. package/lib/src/compiler/internal/createWorkerCompilerService.js +272 -0
  6. package/lib/src/compiler/internal/createWorkerCompilerService.js.map +1 -0
  7. package/lib/src/npm/collectExternalPackageNames.js +253 -9
  8. package/lib/src/npm/collectExternalPackageNames.js.map +1 -1
  9. package/lib/src/react/ConsoleViewer.js +17 -17
  10. package/lib/src/react/ConsoleViewer.js.map +1 -1
  11. package/lib/src/react/DependencyProgressModal.js +1 -1
  12. package/lib/src/react/DependencyProgressModal.js.map +1 -1
  13. package/lib/src/react/DiagnosticsPanel.js +2 -2
  14. package/lib/src/react/DiagnosticsPanel.js.map +1 -1
  15. package/lib/src/react/ExamplePicker.js +2 -2
  16. package/lib/src/react/ExamplePicker.js.map +1 -1
  17. package/lib/src/react/LintPane.js +3 -3
  18. package/lib/src/react/LintPane.js.map +1 -1
  19. package/lib/src/react/OptionsPanel.js +1 -1
  20. package/lib/src/react/OptionsPanel.js.map +1 -1
  21. package/lib/src/react/PlaygroundShell.js +14 -13
  22. package/lib/src/react/PlaygroundShell.js.map +1 -1
  23. package/lib/src/react/ResultViewer.d.ts +2 -2
  24. package/lib/src/react/ResultViewer.js +3 -3
  25. package/lib/src/react/ResultViewer.js.map +1 -1
  26. package/lib/src/react/SourceEditor.js +1 -1
  27. package/lib/src/react/SourceEditor.js.map +1 -1
  28. package/lib/src/sandbox/createSandboxRequire.js +34 -9
  29. package/lib/src/sandbox/createSandboxRequire.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/compiler/createWorkerCompiler.ts +8 -236
  32. package/src/compiler/internal/createWorkerCompilerService.ts +358 -0
  33. package/src/npm/collectExternalPackageNames.ts +262 -9
  34. package/src/react/ConsoleViewer.tsx +18 -18
  35. package/src/react/DependencyProgressModal.tsx +11 -11
  36. package/src/react/DiagnosticsPanel.tsx +11 -11
  37. package/src/react/ExamplePicker.tsx +7 -7
  38. package/src/react/LintPane.tsx +5 -5
  39. package/src/react/OptionsPanel.tsx +10 -10
  40. package/src/react/PlaygroundShell.tsx +64 -74
  41. package/src/react/ResultViewer.tsx +4 -4
  42. package/src/react/SourceEditor.tsx +2 -3
  43. package/src/sandbox/createSandboxRequire.ts +32 -9
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.collectExternalPackageNames = collectExternalPackageNames;
4
4
  const BUILT_IN_PLAYGROUND_PACKAGES_1 = require("./BUILT_IN_PLAYGROUND_PACKAGES");
5
5
  const packageNameFromSpecifier_1 = require("./packageNameFromSpecifier");
6
- const MODULE_SPECIFIER_REGEXP = /\b(?:import|export)\s+(?:type\s+)?(?:[^"'()]*?\s+from\s*)?["']([^"']+)["']|import\s*\(\s*["']([^"']+)["']\s*\)|require\s*\(\s*["']([^"']+)["']\s*\)/g;
7
6
  /**
8
7
  * Scan `source` for `import` / `require` specifiers and return the unique
9
8
  * sorted list of bare npm package names that are not in `ignoredPackages`.
@@ -18,17 +17,262 @@ function collectExternalPackageNames(source, ignoredPackages = BUILT_IN_PLAYGROU
18
17
  }
19
18
  return [...found].sort();
20
19
  }
20
+ /**
21
+ * Collect the string specifiers of every executable module-loading construct in
22
+ * `source`: `import`/`export ... from`, side-effect `import "x"`, dynamic
23
+ * `import("x")`, and `require("x")` calls.
24
+ *
25
+ * The scan tokenizes `source` first so import/export/require lookalikes that
26
+ * live inside comments, string or template contents, or regular-expression
27
+ * literals never become package requests — only real code-level string
28
+ * arguments are returned. Specifiers that cannot be resolved statically (a
29
+ * template-literal or computed argument) are intentionally skipped so inert
30
+ * text cannot drive a network install.
31
+ */
21
32
  function collectModuleSpecifiers(source) {
33
+ const tokens = tokenize(source);
22
34
  const out = [];
23
- MODULE_SPECIFIER_REGEXP.lastIndex = 0;
24
- for (;;) {
25
- const match = MODULE_SPECIFIER_REGEXP.exec(source);
26
- if (!match)
27
- break;
28
- const specifier = match[1] ?? match[2] ?? match[3];
29
- if (specifier)
30
- out.push(specifier);
35
+ const asString = (token) => token && token.kind === "string" ? token.value : null;
36
+ const isOpenParen = (token) => token !== undefined && token.kind === "punct" && token.value === "(";
37
+ const isMemberAccess = (token) => token !== undefined && token.kind === "punct" && token.value === ".";
38
+ for (let i = 0; i < tokens.length; i++) {
39
+ const token = tokens[i];
40
+ if (!token || token.kind !== "word")
41
+ continue;
42
+ if (token.value === "require") {
43
+ // `obj.require(...)` is an unrelated method call, not CommonJS require.
44
+ if (isMemberAccess(tokens[i - 1]))
45
+ continue;
46
+ if (isOpenParen(tokens[i + 1])) {
47
+ const spec = asString(tokens[i + 2]);
48
+ if (spec !== null)
49
+ out.push(spec);
50
+ }
51
+ continue;
52
+ }
53
+ if (token.value === "import" || token.value === "export") {
54
+ // `foo.import(...)` / `import.meta` are not module-loading imports.
55
+ if (token.value === "import" && isMemberAccess(tokens[i - 1]))
56
+ continue;
57
+ // Dynamic `import("x")`.
58
+ if (token.value === "import" && isOpenParen(tokens[i + 1])) {
59
+ const spec = asString(tokens[i + 2]);
60
+ if (spec !== null)
61
+ out.push(spec);
62
+ continue;
63
+ }
64
+ // Side-effect `import "x"`.
65
+ if (token.value === "import") {
66
+ const bare = asString(tokens[i + 1]);
67
+ if (bare !== null) {
68
+ out.push(bare);
69
+ continue;
70
+ }
71
+ }
72
+ // `import ... from "x"` / `export ... from "x"`.
73
+ const spec = findFromSpecifier(tokens, i + 1);
74
+ if (spec !== null)
75
+ out.push(spec);
76
+ }
31
77
  }
32
78
  return out;
33
79
  }
80
+ /**
81
+ * From token index `start`, find the specifier of a `... from "x"` clause,
82
+ * bounded to the current statement. Stops at a `;` terminator or the start of
83
+ * another `import`/`export` so a local `export const x = ...` never borrows a
84
+ * later statement's `from`.
85
+ */
86
+ function findFromSpecifier(tokens, start) {
87
+ for (let i = start; i < tokens.length; i++) {
88
+ const token = tokens[i];
89
+ if (!token)
90
+ break;
91
+ if (token.kind === "punct" && token.value === ";")
92
+ return null;
93
+ if (token.kind === "word" &&
94
+ (token.value === "import" || token.value === "export"))
95
+ return null;
96
+ if (token.kind === "word" && token.value === "from") {
97
+ const next = tokens[i + 1];
98
+ return next && next.kind === "string" ? next.value : null;
99
+ }
100
+ }
101
+ return null;
102
+ }
103
+ // Keywords after which a `/` begins a regular-expression literal rather than a
104
+ // division operator. After any other word (an identifier or value keyword such
105
+ // as `this`), `/` is division.
106
+ const REGEX_PRECEDING_KEYWORDS = new Set([
107
+ "return",
108
+ "typeof",
109
+ "instanceof",
110
+ "in",
111
+ "of",
112
+ "new",
113
+ "delete",
114
+ "void",
115
+ "do",
116
+ "else",
117
+ "yield",
118
+ "await",
119
+ "case",
120
+ "throw",
121
+ ]);
122
+ /**
123
+ * Lexically tokenize `source` into the coarse token stream the specifier
124
+ * collector needs. Comments are dropped; strings, templates, regex literals,
125
+ * and numbers become single tokens so their contents cannot leak into the
126
+ * grammar match.
127
+ */
128
+ function tokenize(source) {
129
+ const tokens = [];
130
+ const n = source.length;
131
+ const isIdStart = (c) => (c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c === "_" || c === "$";
132
+ const isIdPart = (c) => isIdStart(c) || (c >= "0" && c <= "9");
133
+ const isDigit = (c) => c >= "0" && c <= "9";
134
+ // A `/` opens a regex only in operator/statement position — never right after
135
+ // a value (identifier, number, string, template, regex, `)` or `]`).
136
+ const regexAllowed = () => {
137
+ const prev = tokens[tokens.length - 1];
138
+ if (!prev)
139
+ return true;
140
+ if (prev.kind === "string" || prev.kind === "other")
141
+ return false;
142
+ if (prev.kind === "word")
143
+ return REGEX_PRECEDING_KEYWORDS.has(prev.value);
144
+ return prev.value !== ")" && prev.value !== "]";
145
+ };
146
+ let i = 0;
147
+ while (i < n) {
148
+ const c = source[i];
149
+ // Whitespace.
150
+ if (c === " " ||
151
+ c === "\t" ||
152
+ c === "\r" ||
153
+ c === "\n" ||
154
+ c === "\f" ||
155
+ c === "\v") {
156
+ i++;
157
+ continue;
158
+ }
159
+ // Line comment.
160
+ if (c === "/" && source[i + 1] === "/") {
161
+ i += 2;
162
+ while (i < n && source[i] !== "\n")
163
+ i++;
164
+ continue;
165
+ }
166
+ // Block comment.
167
+ if (c === "/" && source[i + 1] === "*") {
168
+ i += 2;
169
+ while (i < n && !(source[i] === "*" && source[i + 1] === "/"))
170
+ i++;
171
+ i += 2;
172
+ continue;
173
+ }
174
+ // Regular-expression literal.
175
+ if (c === "/" && regexAllowed()) {
176
+ i++;
177
+ let inClass = false;
178
+ while (i < n) {
179
+ const d = source[i];
180
+ if (d === "\\") {
181
+ i += 2;
182
+ continue;
183
+ }
184
+ if (d === "\n")
185
+ break;
186
+ if (d === "[")
187
+ inClass = true;
188
+ else if (d === "]")
189
+ inClass = false;
190
+ else if (d === "/" && !inClass) {
191
+ i++;
192
+ break;
193
+ }
194
+ i++;
195
+ }
196
+ while (i < n && isIdPart(source[i]))
197
+ i++; // flags
198
+ tokens.push({ kind: "other" });
199
+ continue;
200
+ }
201
+ // String literal.
202
+ if (c === '"' || c === "'") {
203
+ i++;
204
+ let value = "";
205
+ while (i < n) {
206
+ const d = source[i];
207
+ if (d === "\\") {
208
+ value += source[i + 1] ?? "";
209
+ i += 2;
210
+ continue;
211
+ }
212
+ if (d === c) {
213
+ i++;
214
+ break;
215
+ }
216
+ if (d === "\n")
217
+ break; // unterminated single-line string
218
+ value += d;
219
+ i++;
220
+ }
221
+ tokens.push({ kind: "string", value });
222
+ continue;
223
+ }
224
+ // Template literal. Contents (including `${...}` expressions) are treated as
225
+ // opaque: a template specifier is not statically resolvable.
226
+ if (c === "`") {
227
+ i++;
228
+ let depth = 0;
229
+ while (i < n) {
230
+ const d = source[i];
231
+ if (d === "\\") {
232
+ i += 2;
233
+ continue;
234
+ }
235
+ if (depth === 0 && d === "`") {
236
+ i++;
237
+ break;
238
+ }
239
+ if (d === "$" && source[i + 1] === "{") {
240
+ depth++;
241
+ i += 2;
242
+ continue;
243
+ }
244
+ if (depth > 0 && d === "}") {
245
+ depth--;
246
+ i++;
247
+ continue;
248
+ }
249
+ i++;
250
+ }
251
+ tokens.push({ kind: "other" });
252
+ continue;
253
+ }
254
+ // Identifier / keyword.
255
+ if (isIdStart(c)) {
256
+ let j = i + 1;
257
+ while (j < n && isIdPart(source[j]))
258
+ j++;
259
+ tokens.push({ kind: "word", value: source.slice(i, j) });
260
+ i = j;
261
+ continue;
262
+ }
263
+ // Numeric literal.
264
+ if (isDigit(c) || (c === "." && isDigit(source[i + 1] ?? ""))) {
265
+ let j = i + 1;
266
+ while (j < n && /[0-9a-fA-FxXoObBeE._]/.test(source[j]))
267
+ j++;
268
+ tokens.push({ kind: "other" });
269
+ i = j;
270
+ continue;
271
+ }
272
+ // Single punctuation character.
273
+ tokens.push({ kind: "punct", value: c });
274
+ i++;
275
+ }
276
+ return tokens;
277
+ }
34
278
  //# sourceMappingURL=collectExternalPackageNames.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"collectExternalPackageNames.js","sourceRoot":"","sources":["../../../src/npm/collectExternalPackageNames.ts"],"names":[],"mappings":";;;AAAA,iFAA8E;AAC9E,yEAAsE;AAEtE,MAAM,uBAAuB,GAC3B,sJAAsJ,CAAC;AAEzJ;;;GAGG;AACH,qCACE,MAAc,EACd,eAAe,GAAqB,2DAA4B;IAEhE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,IAAA,mDAAwB,EAAC,SAAS,CAAC,CAAC;QACxD,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC7C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,uBAAuB,CAAC,SAAS,GAAG,CAAC,CAAC;IACtC,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"collectExternalPackageNames.js","sourceRoot":"","sources":["../../../src/npm/collectExternalPackageNames.ts"],"names":[],"mappings":"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"}
@@ -5,50 +5,50 @@ exports.ConsoleViewer = ConsoleViewer;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  function ConsoleViewer({ messages, empty = "No output yet. Click Execute to run the compiled JavaScript.", }) {
7
7
  if (messages.length === 0)
8
- return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full flex items-center justify-center text-neutral-600 font-mono text-[11px] px-4 text-center", children: empty }));
9
- return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full overflow-auto p-3 font-mono text-[12px] leading-snug", children: messages.map((msg, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "py-1 border-b border-neutral-900/70 last:border-b-0 flex gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 text-[10px] uppercase tracking-wider w-12 ${typeColor(msg.type)}`, children: msg.type }), (0, jsx_runtime_1.jsx)("span", { className: "flex-1 break-words whitespace-pre-wrap text-neutral-200", children: (Array.isArray(msg.value) ? msg.value : [msg.value]).map((arg, idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? " " : "", formatValue(arg)] }, idx))) })] }, i))) }));
8
+ return ((0, jsx_runtime_1.jsx)("div", { className: "flex h-full w-full items-center justify-center px-4 text-center font-mono text-[11px] text-slate-400", children: empty }));
9
+ return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full overflow-auto p-3 font-mono text-[12px] leading-snug", children: messages.map((msg, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 border-b border-[#d8e7f4] py-1 last:border-b-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 text-[10px] uppercase tracking-wider w-12 ${typeColor(msg.type)}`, children: msg.type }), (0, jsx_runtime_1.jsx)("span", { className: "flex-1 whitespace-pre-wrap break-words text-slate-700", children: (Array.isArray(msg.value) ? msg.value : [msg.value]).map((arg, idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? " " : "", formatValue(arg)] }, idx))) })] }, i))) }));
10
10
  }
11
11
  function typeColor(type) {
12
12
  switch (type) {
13
13
  case "error":
14
- return "text-red-400";
14
+ return "text-red-600";
15
15
  case "warn":
16
- return "text-yellow-400";
16
+ return "text-amber-600";
17
17
  case "info":
18
- return "text-sky-400";
18
+ return "text-sky-700";
19
19
  case "debug":
20
- return "text-fuchsia-400";
20
+ return "text-fuchsia-700";
21
21
  case "dir":
22
22
  case "table":
23
- return "text-cyan-400";
23
+ return "text-cyan-700";
24
24
  default:
25
- return "text-emerald-400";
25
+ return "text-emerald-700";
26
26
  }
27
27
  }
28
28
  function formatValue(value, depth = 0) {
29
29
  if (typeof value === "string")
30
- return (0, jsx_runtime_1.jsx)("span", { className: "text-amber-200", children: JSON.stringify(value) });
30
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-amber-700", children: JSON.stringify(value) });
31
31
  if (typeof value === "number")
32
- return (0, jsx_runtime_1.jsx)("span", { className: "text-purple-300", children: String(value) });
32
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-purple-700", children: String(value) });
33
33
  if (typeof value === "boolean")
34
- return (0, jsx_runtime_1.jsx)("span", { className: "text-sky-300", children: String(value) });
34
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-sky-700", children: String(value) });
35
35
  if (value === null)
36
- return (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500", children: "null" });
36
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "null" });
37
37
  if (value === undefined)
38
- return (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500", children: "undefined" });
38
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "undefined" });
39
39
  if (typeof value === "function")
40
- return (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500", children: "[Function]" });
40
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "[Function]" });
41
41
  if (Array.isArray(value))
42
42
  return ((0, jsx_runtime_1.jsxs)("span", { children: ["[", value.map((item, idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : "", formatValue(item, depth + 1)] }, idx))), "]"] }));
43
43
  if (value instanceof Error)
44
- return ((0, jsx_runtime_1.jsxs)("span", { className: "text-red-300", children: [value.name, ": ", value.message] }));
44
+ return ((0, jsx_runtime_1.jsxs)("span", { className: "text-red-700", children: [value.name, ": ", value.message] }));
45
45
  try {
46
46
  const entries = Object.entries(value);
47
47
  if (entries.length === 0)
48
48
  return (0, jsx_runtime_1.jsx)("span", { children: "{}" });
49
49
  if (depth > 4)
50
- return (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500", children: "[...]" });
51
- return ((0, jsx_runtime_1.jsxs)("span", { children: ["{", entries.map(([k, v], idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : " ", (0, jsx_runtime_1.jsx)("span", { className: "text-blue-300", children: k }), ":", " ", formatValue(v, depth + 1)] }, k))), " }"] }));
50
+ return (0, jsx_runtime_1.jsx)("span", { className: "text-slate-500", children: "[...]" });
51
+ return ((0, jsx_runtime_1.jsxs)("span", { children: ["{", entries.map(([k, v], idx) => ((0, jsx_runtime_1.jsxs)("span", { children: [idx > 0 ? ", " : " ", (0, jsx_runtime_1.jsx)("span", { className: "text-[#3178c6]", children: k }), ":", " ", formatValue(v, depth + 1)] }, k))), " }"] }));
52
52
  }
53
53
  catch {
54
54
  return (0, jsx_runtime_1.jsx)("span", { children: String(value) });
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleViewer.js","sourceRoot":"","sources":["../../../src/react/ConsoleViewer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleViewer.js","sourceRoot":"","sources":["../../../src/react/ConsoleViewer.tsx"],"names":[],"mappings":"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"}
@@ -11,6 +11,6 @@ function DependencyProgressModal({ progress, packages, }) {
11
11
  const activePackage = progress.packageName && progress.version
12
12
  ? `${progress.packageName}@${progress.version}`
13
13
  : progress.packageName;
14
- return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/70 px-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "w-full max-w-md rounded-lg border border-neutral-700 bg-neutral-950 p-5 shadow-2xl", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[11px] font-mono uppercase text-blue-300", children: "Dependencies" }), (0, jsx_runtime_1.jsx)("h2", { className: "mt-1 text-base font-mono text-white", children: "Installing npm packages" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-[11px] font-mono text-neutral-500", children: [progress.completed, "/", total] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4 h-2 overflow-hidden rounded-full bg-neutral-800", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-blue-400 transition-[width]", style: { width: `${Math.max(8, ratio * 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-4 space-y-1 font-mono", children: [activePackage && ((0, jsx_runtime_1.jsx)("div", { className: "text-[12px] text-neutral-200", children: activePackage })), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] text-neutral-400", children: progress.message })] }), packages.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "mt-4 flex flex-wrap gap-1.5", children: [packages.slice(0, 8).map((name) => ((0, jsx_runtime_1.jsx)("span", { className: "rounded border border-neutral-800 bg-neutral-900 px-2 py-1 text-[10px] font-mono text-neutral-300", children: name }, name))), packages.length > 8 && ((0, jsx_runtime_1.jsxs)("span", { className: "rounded border border-neutral-800 bg-neutral-900 px-2 py-1 text-[10px] font-mono text-neutral-500", children: ["+", packages.length - 8] }))] }))] }) }));
14
+ return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-[#102a43]/35 px-4 backdrop-blur-sm", children: (0, jsx_runtime_1.jsxs)("div", { className: "w-full max-w-md rounded-2xl border border-[#b9d5ee] bg-white p-5 shadow-[0_28px_70px_rgba(35,90,151,0.25)]", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[11px] uppercase text-[#3178c6]", children: "Dependencies" }), (0, jsx_runtime_1.jsx)("h2", { className: "mt-1 font-mono text-base text-[#102a43]", children: "Installing npm packages" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "font-mono text-[11px] text-slate-500", children: [progress.completed, "/", total] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4 h-2 overflow-hidden rounded-full bg-[#e7f0f8]", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-[#3178c6] transition-[width]", style: { width: `${Math.max(8, ratio * 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-4 space-y-1 font-mono", children: [activePackage && ((0, jsx_runtime_1.jsx)("div", { className: "text-[12px] text-slate-700", children: activePackage })), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] text-slate-500", children: progress.message })] }), packages.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "mt-4 flex flex-wrap gap-1.5", children: [packages.slice(0, 8).map((name) => ((0, jsx_runtime_1.jsx)("span", { className: "rounded border border-[#d2e4f4] bg-[#f7fbff] px-2 py-1 font-mono text-[10px] text-slate-600", children: name }, name))), packages.length > 8 && ((0, jsx_runtime_1.jsxs)("span", { className: "rounded border border-[#d2e4f4] bg-[#f7fbff] px-2 py-1 font-mono text-[10px] text-slate-500", children: ["+", packages.length - 8] }))] }))] }) }));
15
15
  }
16
16
  //# sourceMappingURL=DependencyProgressModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyProgressModal.js","sourceRoot":"","sources":["../../../src/react/DependencyProgressModal.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AASb,iCAAwC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GACjB,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO;QACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC/C,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3B,OAAO,CACL,gCAAK,SAAS,EAAC,sEAAsE,YACnF,iCAAK,SAAS,EAAC,oFAAoF,aACjG,iCAAK,SAAS,EAAC,wCAAwC,aACrD,4CACE,gCAAK,SAAS,EAAC,+CAA+C,6BAExD,EACN,+BAAI,SAAS,EAAC,qCAAqC,wCAE9C,IACD,EACN,iCAAK,SAAS,EAAC,wCAAwC,aACpD,QAAQ,CAAC,SAAS,OAAG,KAAK,IACvB,IACF,EAEN,gCAAK,SAAS,EAAC,sDAAsD,YACnE,gCACE,SAAS,EAAC,uCAAuC,EACjD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAChD,GACE,EAEN,iCAAK,SAAS,EAAC,0BAA0B,aACtC,aAAa,IAAI,CAChB,gCAAK,SAAS,EAAC,8BAA8B,YAAE,aAAa,GAAO,CACpE,EACD,gCAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,CAAC,OAAO,GAAO,IAClE,EAEL,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,iCAAK,SAAS,EAAC,6BAA6B,aACzC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClC,iCAEE,SAAS,EAAC,mGAAmG,YAE5G,IAAI,IAHA,IAAI,CAIJ,CACR,CAAC,EACD,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,kCAAM,SAAS,EAAC,mGAAmG,kBAC/G,QAAQ,CAAC,MAAM,GAAG,CAAC,IAChB,CACR,IACG,CACP,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"DependencyProgressModal.js","sourceRoot":"","sources":["../../../src/react/DependencyProgressModal.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AASb,iCAAwC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GACjB,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO;QACtC,CAAC,CAAC,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;QAC/C,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAE3B,OAAO,CACL,gCAAK,SAAS,EAAC,2FAA2F,YACxG,iCAAK,SAAS,EAAC,4GAA4G,aACzH,iCAAK,SAAS,EAAC,wCAAwC,aACrD,4CACE,gCAAK,SAAS,EAAC,gDAAgD,6BAEzD,EACN,+BAAI,SAAS,EAAC,yCAAyC,wCAElD,IACD,EACN,iCAAK,SAAS,EAAC,sCAAsC,aAClD,QAAQ,CAAC,SAAS,OAAG,KAAK,IACvB,IACF,EAEN,gCAAK,SAAS,EAAC,oDAAoD,YACjE,gCACE,SAAS,EAAC,wCAAwC,EAClD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAChD,GACE,EAEN,iCAAK,SAAS,EAAC,0BAA0B,aACtC,aAAa,IAAI,CAChB,gCAAK,SAAS,EAAC,4BAA4B,YAAE,aAAa,GAAO,CAClE,EACD,gCAAK,SAAS,EAAC,4BAA4B,YAAE,QAAQ,CAAC,OAAO,GAAO,IAChE,EAEL,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,iCAAK,SAAS,EAAC,6BAA6B,aACzC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClC,iCAEE,SAAS,EAAC,6FAA6F,YAEtG,IAAI,IAHA,IAAI,CAIJ,CACR,CAAC,EACD,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,kCAAM,SAAS,EAAC,6FAA6F,kBACzG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAChB,CACR,IACG,CACP,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -9,7 +9,7 @@ function DiagnosticsPanel({ diagnostics, }) {
9
9
  const errorCount = diagnostics.filter((d) => d.severity === "error").length;
10
10
  const warnCount = diagnostics.filter((d) => d.severity === "warning").length;
11
11
  if (diagnostics.length === 0)
12
- return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0 px-4 py-2 border-t border-neutral-800/70 bg-neutral-950 flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xs", children: "\u25CF" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[12px] font-mono text-neutral-400", children: "0 errors \u00B7 0 warnings" })] }));
13
- return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0 border-t border-neutral-800/70 bg-neutral-950", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setExpanded((v) => !v), className: "w-full px-4 py-2 flex items-center gap-3 hover:bg-neutral-900/50 transition-colors text-left", children: [(0, jsx_runtime_1.jsx)("span", { className: `text-xs ${errorCount > 0 ? "text-red-400" : "text-yellow-400"}`, children: "\u25CF" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-[12px] font-mono text-neutral-300", children: [errorCount, " error", errorCount === 1 ? "" : "s", " \u00B7 ", warnCount, " warning", warnCount === 1 ? "" : "s"] }), (0, jsx_runtime_1.jsx)("span", { className: "ml-auto text-[10px] font-mono text-neutral-600", children: expanded ? "▲ collapse" : "▼ expand" })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "border-t border-neutral-800/70 max-h-48 overflow-auto", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "px-4 py-2 flex gap-3 text-[12px] font-mono border-b border-neutral-900 last:border-b-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 ${d.severity === "error" ? "text-red-400" : "text-yellow-400"}`, children: d.severity === "error" ? "✗" : "!" }), (0, jsx_runtime_1.jsxs)("span", { className: "shrink-0 text-neutral-500 w-16", children: [d.line, ":", d.column] }), (0, jsx_runtime_1.jsx)("span", { className: "shrink-0 text-neutral-600 w-16", children: d.code ?? "" }), (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-200", children: d.message })] }, i))) }))] }));
12
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex shrink-0 items-center gap-3 border-t border-[#c7dff4] bg-[#eef6ff] px-4 py-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xs", children: "\u25CF" }), (0, jsx_runtime_1.jsx)("span", { className: "font-mono text-[12px] text-slate-600", children: "0 errors \u00B7 0 warnings" })] }));
13
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "shrink-0 border-t border-[#c7dff4] bg-[#eef6ff]", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setExpanded((v) => !v), className: "flex w-full items-center gap-3 px-4 py-2 text-left transition-colors hover:bg-[#e1effc]", children: [(0, jsx_runtime_1.jsx)("span", { className: `text-xs ${errorCount > 0 ? "text-red-400" : "text-yellow-400"}`, children: "\u25CF" }), (0, jsx_runtime_1.jsxs)("span", { className: "font-mono text-[12px] text-slate-700", children: [errorCount, " error", errorCount === 1 ? "" : "s", " \u00B7 ", warnCount, " warning", warnCount === 1 ? "" : "s"] }), (0, jsx_runtime_1.jsx)("span", { className: "ml-auto font-mono text-[10px] text-slate-400", children: expanded ? "▲ collapse" : "▼ expand" })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "max-h-48 overflow-auto border-t border-[#c7dff4]", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3 border-b border-[#d8e7f4] px-4 py-2 font-mono text-[12px] last:border-b-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `shrink-0 ${d.severity === "error" ? "text-red-400" : "text-yellow-400"}`, children: d.severity === "error" ? "✗" : "!" }), (0, jsx_runtime_1.jsxs)("span", { className: "w-16 shrink-0 text-slate-500", children: [d.line, ":", d.column] }), (0, jsx_runtime_1.jsx)("span", { className: "w-16 shrink-0 text-slate-400", children: d.code ?? "" }), (0, jsx_runtime_1.jsx)("span", { className: "text-slate-700", children: d.message })] }, i))) }))] }));
14
14
  }
15
15
  //# sourceMappingURL=DiagnosticsPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticsPanel.js","sourceRoot":"","sources":["../../../src/react/DiagnosticsPanel.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAAiC;AAIjC,0BAAiC,EAC/B,WAAW,GAGZ;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,0FAA0F,aACvG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,iCAAM,SAAS,EAAC,wCAAwC,2CAEjD,IACH,CACP,CAAC;IAEJ,OAAO,CACL,iCAAK,SAAS,EAAC,wDAAwD,aACrE,oCACE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACrC,SAAS,EAAC,8FAA8F,aAExG,iCACE,SAAS,EAAE,WACT,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBACpC,EAAE,uBAGG,EACP,kCAAM,SAAS,EAAC,wCAAwC,aACrD,UAAU,YAAQ,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAK,SAAS,cAC3D,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IACtB,EACP,iCAAM,SAAS,EAAC,gDAAgD,YAC7D,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,GAChC,IACA,EACR,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,uDAAuD,YACnE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,wFAAwF,aAElG,iCACE,SAAS,EAAE,YACT,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAC5C,EAAE,YAED,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC9B,EACP,kCAAM,SAAS,EAAC,gCAAgC,aAC7C,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,EACP,iCAAM,SAAS,EAAC,gCAAgC,YAC7C,CAAC,CAAC,IAAI,IAAI,EAAE,GACR,EACP,iCAAM,SAAS,EAAC,kBAAkB,YAAE,CAAC,CAAC,OAAO,GAAQ,KAhBhD,CAAC,CAiBF,CACP,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"DiagnosticsPanel.js","sourceRoot":"","sources":["../../../src/react/DiagnosticsPanel.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAAiC;AAIjC,0BAAiC,EAC/B,WAAW,GAGZ;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAE7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,mFAAmF,aAChG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,iCAAM,SAAS,EAAC,sCAAsC,2CAE/C,IACH,CACP,CAAC;IAEJ,OAAO,CACL,iCAAK,SAAS,EAAC,iDAAiD,aAC9D,oCACE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACrC,SAAS,EAAC,yFAAyF,aAEnG,iCACE,SAAS,EAAE,WACT,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBACpC,EAAE,uBAGG,EACP,kCAAM,SAAS,EAAC,sCAAsC,aACnD,UAAU,YAAQ,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAK,SAAS,cAC3D,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IACtB,EACP,iCAAM,SAAS,EAAC,8CAA8C,YAC3D,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,GAChC,IACA,EACR,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,kDAAkD,YAC9D,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,sFAAsF,aAEhG,iCACE,SAAS,EAAE,YACT,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAC5C,EAAE,YAED,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAC9B,EACP,kCAAM,SAAS,EAAC,8BAA8B,aAC3C,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,EACP,iCAAM,SAAS,EAAC,8BAA8B,YAC3C,CAAC,CAAC,IAAI,IAAI,EAAE,GACR,EACP,iCAAM,SAAS,EAAC,gBAAgB,YAAE,CAAC,CAAC,OAAO,GAAQ,KAhB9C,CAAC,CAiBF,CACP,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -35,9 +35,9 @@ function ExamplePicker({ examples, onPick, groupLabels, }) {
35
35
  }, [examples]);
36
36
  if (examples.length === 0)
37
37
  return null;
38
- return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: "relative", children: [(0, jsx_runtime_1.jsx)("button", { "data-playground-examples-toggle": true, onClick: () => setOpen((v) => !v), className: "px-3 py-1.5 text-xs font-mono text-neutral-300 border border-neutral-800 rounded-md hover:border-neutral-600 hover:bg-neutral-900 transition-colors", title: "Cmd/Ctrl+K", children: "Examples \u25BE" }), open && ((0, jsx_runtime_1.jsx)("div", { className: "absolute right-0 top-full mt-2 w-80 rounded-lg border border-neutral-800 bg-neutral-950 shadow-[0_10px_40px_rgba(0,0,0,0.6)] z-10 overflow-hidden", children: Object.entries(grouped).map(([group, items]) => ((0, jsx_runtime_1.jsxs)("div", { className: "border-b border-neutral-900 last:border-b-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "px-3 py-1.5 text-[10px] font-mono uppercase tracking-wider text-neutral-600", children: groupLabels?.[group] ?? group }), items.map((item) => ((0, jsx_runtime_1.jsxs)("button", { onClick: () => {
38
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: ref, className: "relative", children: [(0, jsx_runtime_1.jsx)("button", { "data-playground-examples-toggle": true, onClick: () => setOpen((v) => !v), className: "rounded-md border border-[#b9d5ee] bg-white px-3 py-1.5 font-mono text-xs text-[#235a97] transition-colors hover:border-[#3178c6] hover:bg-[#eaf4ff]", title: "Cmd/Ctrl+K", children: "Examples \u25BE" }), open && ((0, jsx_runtime_1.jsx)("div", { className: "absolute right-0 top-full z-10 mt-2 w-80 overflow-hidden rounded-xl border border-[#b9d5ee] bg-white shadow-[0_14px_42px_rgba(49,120,198,0.18)]", children: Object.entries(grouped).map(([group, items]) => ((0, jsx_runtime_1.jsxs)("div", { className: "border-b border-[#d8e7f4] last:border-b-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-[#f7fbff] px-3 py-1.5 font-mono text-[10px] uppercase tracking-wider text-slate-500", children: groupLabels?.[group] ?? group }), items.map((item) => ((0, jsx_runtime_1.jsxs)("button", { onClick: () => {
39
39
  onPick(item.id);
40
40
  setOpen(false);
41
- }, className: "w-full text-left px-3 py-2 hover:bg-neutral-900 transition-colors", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[12px] font-mono text-neutral-100", children: item.title }), (0, jsx_runtime_1.jsx)("div", { className: "text-[10px] text-neutral-500 mt-0.5 leading-snug", children: item.description })] }, item.id)))] }, group))) }))] }));
41
+ }, className: "w-full px-3 py-2 text-left transition-colors hover:bg-[#eaf4ff]", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[12px] text-[#102a43]", children: item.title }), (0, jsx_runtime_1.jsx)("div", { className: "mt-0.5 text-[10px] leading-snug text-slate-500", children: item.description })] }, item.id)))] }, group))) }))] }));
42
42
  }
43
43
  //# sourceMappingURL=ExamplePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExamplePicker.js","sourceRoot":"","sources":["../../../src/react/ExamplePicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExamplePicker.js","sourceRoot":"","sources":["../../../src/react/ExamplePicker.tsx"],"names":[],"mappings":"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"}
@@ -9,9 +9,9 @@ const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  */
10
10
  function LintPane({ diagnostics, emptyHint = "Powered by @ttsc/lint inside playground.wasm.", }) {
11
11
  if (diagnostics.length === 0)
12
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center justify-center h-full text-neutral-500 font-mono text-sm gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xl", children: "\u2713" }), (0, jsx_runtime_1.jsx)("span", { children: "No lint diagnostics." }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] text-neutral-600 max-w-xs text-center", children: emptyHint })] }));
13
- return ((0, jsx_runtime_1.jsx)("div", { className: "overflow-auto h-full p-4 space-y-2", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3 p-3 rounded-md bg-neutral-900/60 border border-neutral-800/80", children: [(0, jsx_runtime_1.jsx)("span", { className: `mt-0.5 text-[10px] font-mono px-1.5 py-0.5 rounded shrink-0 ${d.severity === "error"
12
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col items-center justify-center gap-2 font-mono text-sm text-slate-500", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-emerald-400 text-xl", children: "\u2713" }), (0, jsx_runtime_1.jsx)("span", { children: "No lint diagnostics." }), (0, jsx_runtime_1.jsx)("span", { className: "max-w-xs text-center text-[10px] text-slate-400", children: emptyHint })] }));
13
+ return ((0, jsx_runtime_1.jsx)("div", { className: "overflow-auto h-full p-4 space-y-2", children: diagnostics.map((d, i) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-3 rounded-lg border border-[#d2e4f4] bg-[#f7fbff] p-3", children: [(0, jsx_runtime_1.jsx)("span", { className: `mt-0.5 text-[10px] font-mono px-1.5 py-0.5 rounded shrink-0 ${d.severity === "error"
14
14
  ? "text-red-300 bg-red-500/10"
15
- : "text-yellow-300 bg-yellow-500/10"}`, children: d.severity }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-[11px] font-mono text-neutral-500 mb-1", children: [(0, jsx_runtime_1.jsx)("span", { children: d.code }), (0, jsx_runtime_1.jsx)("span", { children: "\u00B7" }), (0, jsx_runtime_1.jsxs)("span", { children: [d.line, ":", d.column] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-[13px] text-neutral-200 font-mono", children: d.message })] })] }, i))) }));
15
+ : "text-yellow-300 bg-yellow-500/10"}`, children: d.severity }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-1 flex items-center gap-2 font-mono text-[11px] text-slate-500", children: [(0, jsx_runtime_1.jsx)("span", { children: d.code }), (0, jsx_runtime_1.jsx)("span", { children: "\u00B7" }), (0, jsx_runtime_1.jsxs)("span", { children: [d.line, ":", d.column] })] }), (0, jsx_runtime_1.jsx)("div", { className: "font-mono text-[13px] text-slate-700", children: d.message })] })] }, i))) }));
16
16
  }
17
17
  //# sourceMappingURL=LintPane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LintPane.js","sourceRoot":"","sources":["../../../src/react/LintPane.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAIb;;;GAGG;AACH,kBAAyB,EACvB,WAAW,EACX,SAAS,GAAG,+CAA+C,GAI5D;IACC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,2FAA2F,aACxG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,oEAAiC,EACjC,iCAAM,SAAS,EAAC,mDAAmD,YAChE,SAAS,GACL,IACH,CACP,CAAC;IACJ,OAAO,CACL,gCAAK,SAAS,EAAC,oCAAoC,YAChD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,0EAA0E,aAEpF,iCACE,SAAS,EAAE,+DACT,CAAC,CAAC,QAAQ,KAAK,OAAO;wBACpB,CAAC,CAAC,4BAA4B;wBAC9B,CAAC,CAAC,kCACN,EAAE,YAED,CAAC,CAAC,QAAQ,GACN,EACP,iCAAK,SAAS,EAAC,gBAAgB,aAC7B,iCAAK,SAAS,EAAC,qEAAqE,aAClF,2CAAO,CAAC,CAAC,IAAI,GAAQ,EACrB,sDAAc,EACd,6CACG,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,IACH,EACN,gCAAK,SAAS,EAAC,wCAAwC,YACpD,CAAC,CAAC,OAAO,GACN,IACF,KAvBD,CAAC,CAwBF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"LintPane.js","sourceRoot":"","sources":["../../../src/react/LintPane.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAIb;;;GAGG;AACH,kBAAyB,EACvB,WAAW,EACX,SAAS,GAAG,+CAA+C,GAI5D;IACC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO,CACL,iCAAK,SAAS,EAAC,yFAAyF,aACtG,iCAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,oEAAiC,EACjC,iCAAM,SAAS,EAAC,iDAAiD,YAC9D,SAAS,GACL,IACH,CACP,CAAC;IACJ,OAAO,CACL,gCAAK,SAAS,EAAC,oCAAoC,YAChD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,iCAEE,SAAS,EAAC,gEAAgE,aAE1E,iCACE,SAAS,EAAE,+DACT,CAAC,CAAC,QAAQ,KAAK,OAAO;wBACpB,CAAC,CAAC,4BAA4B;wBAC9B,CAAC,CAAC,kCACN,EAAE,YAED,CAAC,CAAC,QAAQ,GACN,EACP,iCAAK,SAAS,EAAC,gBAAgB,aAC7B,iCAAK,SAAS,EAAC,mEAAmE,aAChF,2CAAO,CAAC,CAAC,IAAI,GAAQ,EACrB,sDAAc,EACd,6CACG,CAAC,CAAC,IAAI,OAAG,CAAC,CAAC,MAAM,IACb,IACH,EACN,gCAAK,SAAS,EAAC,sCAAsC,YAClD,CAAC,CAAC,OAAO,GACN,IACF,KAvBD,CAAC,CAwBF,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -38,6 +38,6 @@ function OptionsPanel({ options, onChange, onClose, toggles = DEFAULT_OPTION_TOG
38
38
  focusable?.focus();
39
39
  return () => window.removeEventListener("keydown", onKey);
40
40
  }, [onClose]);
41
- return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 bg-black/60 backdrop-blur-sm flex items-center justify-center", onClick: onClose, children: (0, jsx_runtime_1.jsxs)("div", { ref: dialogRef, role: "dialog", "aria-modal": "true", "aria-labelledby": "playground-options-title", className: "w-[480px] max-w-[90vw] rounded-2xl border border-neutral-800 bg-neutral-950 shadow-[0_30px_80px_rgba(0,0,0,0.7)]", onClick: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between px-6 py-4 border-b border-neutral-800/70", children: [(0, jsx_runtime_1.jsx)("h2", { id: "playground-options-title", className: "text-base font-semibold text-white", children: title }), (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "text-neutral-500 hover:text-white transition-colors", "aria-label": "Close options", children: "\u2715" })] }), (0, jsx_runtime_1.jsx)("div", { className: "p-6 space-y-6", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] font-mono uppercase tracking-wider text-neutral-600 mb-3", children: "Plugins" }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: toggles.map((t) => ((0, jsx_runtime_1.jsxs)("label", { className: "flex items-start gap-3 cursor-pointer group", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: !!options[t.key], onChange: () => toggle(t.key), className: "mt-1 w-4 h-4 accent-blue-500" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm font-mono text-neutral-100 group-hover:text-white transition-colors", children: t.label }), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] text-neutral-500 leading-snug", children: t.description })] })] }, t.key))) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "px-6 py-4 border-t border-neutral-800/70 flex justify-end", children: (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "px-4 py-2 text-xs font-mono text-neutral-900 bg-white rounded-md hover:shadow-[0_0_30px_rgba(255,255,255,0.2)] transition-shadow", children: "Done" }) })] }) }));
41
+ return ((0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-[#102a43]/35 backdrop-blur-sm", onClick: onClose, children: (0, jsx_runtime_1.jsxs)("div", { ref: dialogRef, role: "dialog", "aria-modal": "true", "aria-labelledby": "playground-options-title", className: "w-[480px] max-w-[90vw] rounded-2xl border border-[#b9d5ee] bg-white shadow-[0_30px_80px_rgba(35,90,151,0.25)]", onClick: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between border-b border-[#c7dff4] bg-[#f7fbff] px-6 py-4", children: [(0, jsx_runtime_1.jsx)("h2", { id: "playground-options-title", className: "text-base font-semibold text-[#102a43]", children: title }), (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "text-slate-400 transition-colors hover:text-[#235a97]", "aria-label": "Close options", children: "\u2715" })] }), (0, jsx_runtime_1.jsx)("div", { className: "p-6 space-y-6", children: (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "mb-3 font-mono text-[10px] uppercase tracking-wider text-slate-500", children: "Plugins" }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: toggles.map((t) => ((0, jsx_runtime_1.jsxs)("label", { className: "flex items-start gap-3 cursor-pointer group", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: !!options[t.key], onChange: () => toggle(t.key), className: "mt-1 w-4 h-4 accent-blue-500" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("div", { className: "font-mono text-sm text-slate-800 transition-colors group-hover:text-[#235a97]", children: t.label }), (0, jsx_runtime_1.jsx)("div", { className: "text-[11px] leading-snug text-slate-500", children: t.description })] })] }, t.key))) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex justify-end border-t border-[#c7dff4] bg-[#f7fbff] px-6 py-4", children: (0, jsx_runtime_1.jsx)("button", { onClick: onClose, className: "rounded-md bg-[#3178c6] px-4 py-2 font-mono text-xs text-white transition-colors hover:bg-[#235a97]", children: "Done" }) })] }) }));
42
42
  }
43
43
  //# sourceMappingURL=OptionsPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionsPanel.js","sourceRoot":"","sources":["../../../src/react/OptionsPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OptionsPanel.js","sourceRoot":"","sources":["../../../src/react/OptionsPanel.tsx"],"names":[],"mappings":"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"}