uidex 0.3.0 → 0.5.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/dist/cli/cli.cjs +1116 -112
- package/dist/cli/cli.cjs.map +1 -1
- package/dist/cloud/index.cjs +395 -72
- package/dist/cloud/index.cjs.map +1 -1
- package/dist/cloud/index.d.cts +60 -86
- package/dist/cloud/index.d.ts +60 -86
- package/dist/cloud/index.js +396 -71
- package/dist/cloud/index.js.map +1 -1
- package/dist/headless/index.cjs +1505 -791
- package/dist/headless/index.cjs.map +1 -1
- package/dist/headless/index.d.cts +83 -75
- package/dist/headless/index.d.ts +83 -75
- package/dist/headless/index.js +1514 -791
- package/dist/headless/index.js.map +1 -1
- package/dist/index.cjs +6281 -3190
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +337 -229
- package/dist/index.d.ts +337 -229
- package/dist/index.js +6362 -3231
- package/dist/index.js.map +1 -1
- package/dist/playwright/index.cjs +4 -4
- package/dist/playwright/index.cjs.map +1 -1
- package/dist/playwright/index.js +3 -3
- package/dist/playwright/index.js.map +1 -1
- package/dist/playwright/reporter.cjs +3 -3
- package/dist/playwright/reporter.cjs.map +1 -1
- package/dist/playwright/reporter.js +3 -3
- package/dist/playwright/reporter.js.map +1 -1
- package/dist/react/index.cjs +6291 -3206
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +239 -186
- package/dist/react/index.d.ts +239 -186
- package/dist/react/index.js +6338 -3208
- package/dist/react/index.js.map +1 -1
- package/dist/scan/index.cjs +212 -82
- package/dist/scan/index.cjs.map +1 -1
- package/dist/scan/index.d.cts +31 -0
- package/dist/scan/index.d.ts +31 -0
- package/dist/scan/index.js +211 -81
- package/dist/scan/index.js.map +1 -1
- package/package.json +10 -8
- package/templates/claude/api.md +110 -0
- package/templates/claude/audit.md +8 -2
- package/templates/claude/rules.md +15 -0
package/dist/headless/index.cjs
CHANGED
|
@@ -24,7 +24,7 @@ __export(headless_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(headless_exports);
|
|
26
26
|
|
|
27
|
-
// src/entities/types.ts
|
|
27
|
+
// src/shared/entities/types.ts
|
|
28
28
|
var ENTITY_KINDS = [
|
|
29
29
|
"route",
|
|
30
30
|
"page",
|
|
@@ -62,7 +62,7 @@ function assertEntityKind(kind) {
|
|
|
62
62
|
if (!KIND_SET.has(kind)) throw new UnknownEntityKindError(kind);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
// src/entities/registry.ts
|
|
65
|
+
// src/shared/entities/registry.ts
|
|
66
66
|
function emptyStore() {
|
|
67
67
|
return {
|
|
68
68
|
route: /* @__PURE__ */ new Map(),
|
|
@@ -144,71 +144,94 @@ function createRegistry() {
|
|
|
144
144
|
return ids.has(entity.id);
|
|
145
145
|
});
|
|
146
146
|
};
|
|
147
|
-
|
|
147
|
+
const reports = /* @__PURE__ */ new Map();
|
|
148
|
+
const reportsCbs = /* @__PURE__ */ new Set();
|
|
149
|
+
const setReports = (kind, id, records) => {
|
|
150
|
+
reports.set(`${kind}:${id}`, records);
|
|
151
|
+
for (const cb of reportsCbs) cb();
|
|
152
|
+
};
|
|
153
|
+
const getReports = (kind, id) => reports.get(`${kind}:${id}`) ?? [];
|
|
154
|
+
const listReportKeys = () => Array.from(reports.keys());
|
|
155
|
+
const onReportsChange = (cb) => {
|
|
156
|
+
reportsCbs.add(cb);
|
|
157
|
+
return () => reportsCbs.delete(cb);
|
|
158
|
+
};
|
|
159
|
+
return {
|
|
160
|
+
add,
|
|
161
|
+
get,
|
|
162
|
+
list,
|
|
163
|
+
query,
|
|
164
|
+
byScope,
|
|
165
|
+
touchedBy,
|
|
166
|
+
setReports,
|
|
167
|
+
getReports,
|
|
168
|
+
listReportKeys,
|
|
169
|
+
onReportsChange
|
|
170
|
+
};
|
|
148
171
|
}
|
|
149
172
|
|
|
150
|
-
// src/entities/style.ts
|
|
173
|
+
// src/shared/entities/style.ts
|
|
151
174
|
var import_lucide = require("lucide");
|
|
152
175
|
var KIND_STYLE = {
|
|
153
176
|
route: {
|
|
154
177
|
icon: import_lucide.Route,
|
|
155
|
-
tone: "text-blue-700 dark:text-blue-
|
|
156
|
-
chip: "bg-blue-
|
|
178
|
+
tone: "text-blue-700 dark:text-blue-400",
|
|
179
|
+
chip: "bg-blue-50 text-blue-700 inset-ring inset-ring-blue-700/10 group-data-hover:bg-blue-100 dark:bg-blue-400/10 dark:text-blue-400 dark:inset-ring-blue-400/30 dark:group-data-hover:bg-blue-400/20",
|
|
157
180
|
color: "#60a5fa",
|
|
158
181
|
label: "Route"
|
|
159
182
|
},
|
|
160
183
|
page: {
|
|
161
184
|
icon: import_lucide.FileText,
|
|
162
|
-
tone: "text-emerald-700 dark:text-emerald-
|
|
163
|
-
chip: "bg-emerald-
|
|
185
|
+
tone: "text-emerald-700 dark:text-emerald-400",
|
|
186
|
+
chip: "bg-emerald-50 text-emerald-700 inset-ring inset-ring-emerald-600/20 group-data-hover:bg-emerald-100 dark:bg-emerald-400/10 dark:text-emerald-400 dark:inset-ring-emerald-500/20 dark:group-data-hover:bg-emerald-400/20",
|
|
164
187
|
color: "#34d399",
|
|
165
188
|
label: "Page"
|
|
166
189
|
},
|
|
167
190
|
feature: {
|
|
168
191
|
icon: import_lucide.Sparkles,
|
|
169
|
-
tone: "text-amber-700 dark:text-amber-
|
|
170
|
-
chip: "bg-amber-
|
|
192
|
+
tone: "text-amber-700 dark:text-amber-500",
|
|
193
|
+
chip: "bg-amber-50 text-amber-800 inset-ring inset-ring-amber-600/20 group-data-hover:bg-amber-100 dark:bg-amber-400/10 dark:text-amber-500 dark:inset-ring-amber-400/20 dark:group-data-hover:bg-amber-400/20",
|
|
171
194
|
color: "#fbbf24",
|
|
172
195
|
label: "Feature"
|
|
173
196
|
},
|
|
174
197
|
widget: {
|
|
175
198
|
icon: import_lucide.LayoutGrid,
|
|
176
|
-
tone: "text-violet-700 dark:text-violet-
|
|
177
|
-
chip: "bg-violet-
|
|
199
|
+
tone: "text-violet-700 dark:text-violet-400",
|
|
200
|
+
chip: "bg-violet-50 text-violet-700 inset-ring inset-ring-violet-700/10 group-data-hover:bg-violet-100 dark:bg-violet-400/10 dark:text-violet-400 dark:inset-ring-violet-400/30 dark:group-data-hover:bg-violet-400/20",
|
|
178
201
|
color: "#a78bfa",
|
|
179
202
|
label: "Widget"
|
|
180
203
|
},
|
|
181
204
|
region: {
|
|
182
205
|
icon: import_lucide.LayoutPanelTop,
|
|
183
|
-
tone: "text-cyan-700 dark:text-cyan-
|
|
184
|
-
chip: "bg-cyan-
|
|
206
|
+
tone: "text-cyan-700 dark:text-cyan-400",
|
|
207
|
+
chip: "bg-cyan-50 text-cyan-700 inset-ring inset-ring-cyan-700/10 group-data-hover:bg-cyan-100 dark:bg-cyan-400/10 dark:text-cyan-400 dark:inset-ring-cyan-400/30 dark:group-data-hover:bg-cyan-400/20",
|
|
185
208
|
color: "#22d3ee",
|
|
186
209
|
label: "Region"
|
|
187
210
|
},
|
|
188
211
|
element: {
|
|
189
212
|
icon: import_lucide.MousePointerClick,
|
|
190
|
-
tone: "text-rose-700 dark:text-rose-
|
|
191
|
-
chip: "bg-rose-
|
|
213
|
+
tone: "text-rose-700 dark:text-rose-400",
|
|
214
|
+
chip: "bg-rose-50 text-rose-700 inset-ring inset-ring-rose-600/10 group-data-hover:bg-rose-100 dark:bg-rose-400/10 dark:text-rose-400 dark:inset-ring-rose-400/20 dark:group-data-hover:bg-rose-400/20",
|
|
192
215
|
color: "#fb7185",
|
|
193
216
|
label: "Element"
|
|
194
217
|
},
|
|
195
218
|
primitive: {
|
|
196
219
|
icon: import_lucide.Circle,
|
|
197
|
-
tone: "text-slate-
|
|
198
|
-
chip: "bg-slate-
|
|
220
|
+
tone: "text-slate-600 dark:text-slate-400",
|
|
221
|
+
chip: "bg-slate-50 text-slate-600 inset-ring inset-ring-slate-500/10 group-data-hover:bg-slate-100 dark:bg-slate-400/10 dark:text-slate-400 dark:inset-ring-slate-400/20 dark:group-data-hover:bg-slate-400/20",
|
|
199
222
|
color: "#94a3b8",
|
|
200
223
|
label: "Primitive"
|
|
201
224
|
},
|
|
202
225
|
flow: {
|
|
203
226
|
icon: import_lucide.Workflow,
|
|
204
|
-
tone: "text-fuchsia-700 dark:text-fuchsia-
|
|
205
|
-
chip: "bg-fuchsia-
|
|
227
|
+
tone: "text-fuchsia-700 dark:text-fuchsia-400",
|
|
228
|
+
chip: "bg-fuchsia-50 text-fuchsia-700 inset-ring inset-ring-fuchsia-700/10 group-data-hover:bg-fuchsia-100 dark:bg-fuchsia-400/10 dark:text-fuchsia-400 dark:inset-ring-fuchsia-400/20 dark:group-data-hover:bg-fuchsia-400/20",
|
|
206
229
|
color: "#e879f9",
|
|
207
230
|
label: "Flow"
|
|
208
231
|
}
|
|
209
232
|
};
|
|
210
233
|
|
|
211
|
-
// src/entities/display-name.ts
|
|
234
|
+
// src/shared/entities/display-name.ts
|
|
212
235
|
function prettify(id) {
|
|
213
236
|
const parts = id.split(/[-_]+/).filter(Boolean);
|
|
214
237
|
const words = parts.flatMap((part) => part.split(/(?=[A-Z])/).filter(Boolean));
|
|
@@ -226,7 +249,7 @@ function displayName(entity, node) {
|
|
|
226
249
|
return prettify(entity.id);
|
|
227
250
|
}
|
|
228
251
|
|
|
229
|
-
// src/internal/cleanup.ts
|
|
252
|
+
// src/browser/internal/cleanup.ts
|
|
230
253
|
function createCleanupStack() {
|
|
231
254
|
const stack = [];
|
|
232
255
|
return {
|
|
@@ -248,293 +271,147 @@ function createCleanupStack() {
|
|
|
248
271
|
};
|
|
249
272
|
}
|
|
250
273
|
|
|
251
|
-
// src/session/store.ts
|
|
252
|
-
var
|
|
253
|
-
var import_vanilla = require("zustand/vanilla");
|
|
274
|
+
// src/browser/session/store.ts
|
|
275
|
+
var import_vanilla3 = require("zustand/vanilla");
|
|
254
276
|
|
|
255
|
-
// src/
|
|
256
|
-
var
|
|
257
|
-
var
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
pinnedRef: null,
|
|
261
|
-
color: null
|
|
277
|
+
// src/browser/session/mode.ts
|
|
278
|
+
var import_vanilla = require("zustand/vanilla");
|
|
279
|
+
var COMMAND_PALETTE_ENTRY = {
|
|
280
|
+
id: "command-palette",
|
|
281
|
+
ref: null
|
|
262
282
|
};
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
283
|
+
function createModeStore(options) {
|
|
284
|
+
const { nav, bindings } = options;
|
|
285
|
+
const store = (0, import_vanilla.createStore)(() => ({
|
|
286
|
+
mode: "idle",
|
|
287
|
+
inspectorActive: false
|
|
288
|
+
}));
|
|
289
|
+
const transition = {
|
|
290
|
+
openPalette() {
|
|
291
|
+
const prev = store.getState();
|
|
292
|
+
if (prev.mode === "inspecting") {
|
|
293
|
+
bindings?.destroyInspector?.();
|
|
294
|
+
}
|
|
295
|
+
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
296
|
+
store.setState({ mode: "palette", inspectorActive: false });
|
|
267
297
|
},
|
|
268
|
-
|
|
298
|
+
openInspector() {
|
|
299
|
+
bindings?.mountInspector?.();
|
|
300
|
+
nav.nav.clear();
|
|
301
|
+
store.setState({ mode: "inspecting", inspectorActive: true });
|
|
269
302
|
},
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
id: "highlight",
|
|
275
|
-
initial: "none",
|
|
276
|
-
context: initialContext,
|
|
277
|
-
states: {
|
|
278
|
-
none: {
|
|
279
|
-
entry: [
|
|
280
|
-
(0, import_xstate.assign)({
|
|
281
|
-
ref: null,
|
|
282
|
-
element: null,
|
|
283
|
-
pinnedRef: null,
|
|
284
|
-
color: null
|
|
285
|
-
}),
|
|
286
|
-
{ type: "hideOverlay" }
|
|
287
|
-
],
|
|
288
|
-
on: {
|
|
289
|
-
HOVER: {
|
|
290
|
-
target: "transient",
|
|
291
|
-
actions: (0, import_xstate.assign)(({ event }) => ({
|
|
292
|
-
ref: event.ref,
|
|
293
|
-
element: event.element,
|
|
294
|
-
color: event.color ?? null
|
|
295
|
-
}))
|
|
296
|
-
},
|
|
297
|
-
PIN: {
|
|
298
|
-
target: "pinned",
|
|
299
|
-
actions: (0, import_xstate.assign)(({ context, event }) => ({
|
|
300
|
-
ref: event.ref ?? context.ref,
|
|
301
|
-
pinnedRef: event.ref ?? context.ref
|
|
302
|
-
}))
|
|
303
|
-
}
|
|
304
|
-
}
|
|
303
|
+
closeInspector() {
|
|
304
|
+
bindings?.destroyInspector?.();
|
|
305
|
+
nav.nav.clear();
|
|
306
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
305
307
|
},
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
(0, import_xstate.assign)(({ event }) => ({
|
|
312
|
-
ref: event.ref,
|
|
313
|
-
element: event.element,
|
|
314
|
-
color: event.color ?? null
|
|
315
|
-
})),
|
|
316
|
-
{ type: "updateOverlay" }
|
|
317
|
-
]
|
|
318
|
-
},
|
|
319
|
-
UNHOVER: { target: "none" },
|
|
320
|
-
PIN: {
|
|
321
|
-
target: "pinned",
|
|
322
|
-
actions: (0, import_xstate.assign)(({ context, event }) => ({
|
|
323
|
-
pinnedRef: event.ref ?? context.ref
|
|
324
|
-
}))
|
|
325
|
-
}
|
|
308
|
+
toggleInspector() {
|
|
309
|
+
if (store.getState().mode === "inspecting") {
|
|
310
|
+
transition.closeInspector();
|
|
311
|
+
} else {
|
|
312
|
+
transition.openInspector();
|
|
326
313
|
}
|
|
327
314
|
},
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
315
|
+
enterViewing(initialStack) {
|
|
316
|
+
const prev = store.getState();
|
|
317
|
+
if (prev.mode === "inspecting") {
|
|
318
|
+
bindings?.destroyInspector?.();
|
|
332
319
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
// src/flows/surface.ts
|
|
338
|
-
var import_xstate2 = require("xstate");
|
|
339
|
-
var initialContext2 = {
|
|
340
|
-
stack: [],
|
|
341
|
-
hover: null,
|
|
342
|
-
selection: null,
|
|
343
|
-
pinnedHighlight: null,
|
|
344
|
-
theme: "auto",
|
|
345
|
-
resolvedTheme: "light",
|
|
346
|
-
ingestActive: false
|
|
347
|
-
};
|
|
348
|
-
var surfaceMachine = (0, import_xstate2.setup)({
|
|
349
|
-
types: {},
|
|
350
|
-
actors: {
|
|
351
|
-
highlight: highlightMachine
|
|
352
|
-
},
|
|
353
|
-
actions: {
|
|
354
|
-
mountInspector: () => {
|
|
320
|
+
nav.nav.reset(initialStack);
|
|
321
|
+
store.setState({ mode: "viewing", inspectorActive: false });
|
|
355
322
|
},
|
|
356
|
-
|
|
323
|
+
dismiss() {
|
|
324
|
+
const prev = store.getState();
|
|
325
|
+
if (prev.mode === "inspecting") {
|
|
326
|
+
bindings?.destroyInspector?.();
|
|
327
|
+
}
|
|
328
|
+
nav.nav.clear();
|
|
329
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
357
330
|
},
|
|
358
|
-
|
|
331
|
+
popOrTransition() {
|
|
332
|
+
const { stack } = nav.getState();
|
|
333
|
+
if (stack.length > 2) {
|
|
334
|
+
nav.nav.pop();
|
|
335
|
+
} else if (stack.length === 2 && stack[0]?.id === "command-palette") {
|
|
336
|
+
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
337
|
+
store.setState({ mode: "palette", inspectorActive: false });
|
|
338
|
+
} else if (stack.length === 2) {
|
|
339
|
+
nav.nav.pop();
|
|
340
|
+
} else {
|
|
341
|
+
nav.nav.clear();
|
|
342
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
343
|
+
}
|
|
359
344
|
},
|
|
360
|
-
|
|
345
|
+
pushView(entry) {
|
|
346
|
+
const { mode } = store.getState();
|
|
347
|
+
const { stack } = nav.getState();
|
|
348
|
+
if (entry.id === "command-palette" && stack.length === 0) {
|
|
349
|
+
transition.openPalette();
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
switch (mode) {
|
|
353
|
+
case "idle":
|
|
354
|
+
transition.enterViewing([entry]);
|
|
355
|
+
break;
|
|
356
|
+
case "inspecting":
|
|
357
|
+
bindings?.destroyInspector?.();
|
|
358
|
+
nav.nav.reset([entry]);
|
|
359
|
+
store.setState({ mode: "viewing", inspectorActive: false });
|
|
360
|
+
break;
|
|
361
|
+
case "palette":
|
|
362
|
+
case "viewing":
|
|
363
|
+
nav.nav.push(entry);
|
|
364
|
+
if (mode === "palette") {
|
|
365
|
+
store.setState({ mode: "viewing" });
|
|
366
|
+
}
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
361
369
|
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
...input ?? {}
|
|
378
|
-
}),
|
|
379
|
-
invoke: {
|
|
380
|
-
id: "highlight",
|
|
381
|
-
src: "highlight"
|
|
382
|
-
},
|
|
383
|
-
on: {
|
|
384
|
-
HOVER: {
|
|
385
|
-
actions: [
|
|
386
|
-
(0, import_xstate2.assign)(({ event }) => ({ hover: event.ref })),
|
|
387
|
-
(0, import_xstate2.forwardTo)("highlight")
|
|
388
|
-
]
|
|
389
|
-
},
|
|
390
|
-
UNHOVER: {
|
|
391
|
-
actions: [(0, import_xstate2.assign)({ hover: null }), (0, import_xstate2.forwardTo)("highlight")]
|
|
392
|
-
},
|
|
393
|
-
PIN: {
|
|
394
|
-
actions: [
|
|
395
|
-
(0, import_xstate2.assign)(({ context, event }) => ({
|
|
396
|
-
pinnedHighlight: event.ref ?? context.hover
|
|
397
|
-
})),
|
|
398
|
-
(0, import_xstate2.forwardTo)("highlight")
|
|
399
|
-
]
|
|
400
|
-
},
|
|
401
|
-
UNPIN: {
|
|
402
|
-
actions: [(0, import_xstate2.assign)({ pinnedHighlight: null }), (0, import_xstate2.forwardTo)("highlight")]
|
|
403
|
-
},
|
|
404
|
-
SET_SELECTION: {
|
|
405
|
-
actions: (0, import_xstate2.assign)(({ event }) => ({ selection: event.ref }))
|
|
406
|
-
},
|
|
407
|
-
SET_THEME: {
|
|
408
|
-
actions: (0, import_xstate2.assign)(({ event }) => ({
|
|
409
|
-
theme: event.theme,
|
|
410
|
-
resolvedTheme: event.resolvedTheme
|
|
411
|
-
}))
|
|
370
|
+
};
|
|
371
|
+
const modeStore = store;
|
|
372
|
+
modeStore.transition = transition;
|
|
373
|
+
return modeStore;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// src/browser/session/navigation.ts
|
|
377
|
+
var import_vanilla2 = require("zustand/vanilla");
|
|
378
|
+
function createNavigationStore() {
|
|
379
|
+
const store = (0, import_vanilla2.createStore)(() => ({
|
|
380
|
+
stack: []
|
|
381
|
+
}));
|
|
382
|
+
const nav = {
|
|
383
|
+
push(entry) {
|
|
384
|
+
store.setState({ stack: [...store.getState().stack, entry] });
|
|
412
385
|
},
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
entry: (0, import_xstate2.assign)({ stack: [] }),
|
|
420
|
-
on: {
|
|
421
|
-
TOGGLE_INSPECTOR: { target: "inspecting" },
|
|
422
|
-
OPEN_PALETTE: { target: "palette" },
|
|
423
|
-
PUSH_VIEW: {
|
|
424
|
-
target: "viewing",
|
|
425
|
-
actions: (0, import_xstate2.assign)(({ event }) => ({ stack: [event.entry] }))
|
|
426
|
-
},
|
|
427
|
-
ESC: {
|
|
428
|
-
guard: "hasPinnedHighlight",
|
|
429
|
-
actions: [
|
|
430
|
-
(0, import_xstate2.assign)({ pinnedHighlight: null }),
|
|
431
|
-
(0, import_xstate2.sendTo)("highlight", { type: "UNPIN" })
|
|
432
|
-
]
|
|
433
|
-
}
|
|
386
|
+
pop() {
|
|
387
|
+
const s = store.getState().stack;
|
|
388
|
+
if (s.length <= 1) {
|
|
389
|
+
store.setState({ stack: [] });
|
|
390
|
+
} else {
|
|
391
|
+
store.setState({ stack: s.slice(0, -1) });
|
|
434
392
|
}
|
|
435
393
|
},
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
actions: (0, import_xstate2.assign)(({ context, event }) => ({
|
|
443
|
-
selection: event.ref,
|
|
444
|
-
stack: [...context.stack, event.entry]
|
|
445
|
-
}))
|
|
446
|
-
},
|
|
447
|
-
PUSH_VIEW: {
|
|
448
|
-
target: "viewing",
|
|
449
|
-
actions: (0, import_xstate2.assign)(({ event }) => ({ stack: [event.entry] }))
|
|
450
|
-
},
|
|
451
|
-
TOGGLE_INSPECTOR: { target: "idle" },
|
|
452
|
-
OPEN_PALETTE: { target: "palette" },
|
|
453
|
-
ESC: { target: "idle" }
|
|
394
|
+
replace(entry) {
|
|
395
|
+
const s = store.getState().stack;
|
|
396
|
+
if (s.length === 0) {
|
|
397
|
+
store.setState({ stack: [entry] });
|
|
398
|
+
} else {
|
|
399
|
+
store.setState({ stack: [...s.slice(0, -1), entry] });
|
|
454
400
|
}
|
|
455
401
|
},
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
on: {
|
|
459
|
-
PUSH_VIEW: {
|
|
460
|
-
target: "viewing",
|
|
461
|
-
actions: (0, import_xstate2.assign)(({ context, event }) => ({
|
|
462
|
-
stack: [...context.stack, event.entry]
|
|
463
|
-
}))
|
|
464
|
-
},
|
|
465
|
-
CLOSE: { target: "idle" },
|
|
466
|
-
ESC: { target: "idle" },
|
|
467
|
-
CMD_K: [
|
|
468
|
-
{
|
|
469
|
-
guard: "hasActions",
|
|
470
|
-
actions: { type: "openActionsPopup" }
|
|
471
|
-
},
|
|
472
|
-
{ target: "idle" }
|
|
473
|
-
]
|
|
474
|
-
}
|
|
402
|
+
clear() {
|
|
403
|
+
store.setState({ stack: [] });
|
|
475
404
|
},
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
PUSH_VIEW: {
|
|
479
|
-
actions: (0, import_xstate2.assign)(({ context, event }) => ({
|
|
480
|
-
stack: [...context.stack, event.entry]
|
|
481
|
-
}))
|
|
482
|
-
},
|
|
483
|
-
POP_VIEW: [
|
|
484
|
-
{
|
|
485
|
-
guard: "stackDeeperThanTwo",
|
|
486
|
-
actions: (0, import_xstate2.assign)(({ context }) => ({
|
|
487
|
-
stack: context.stack.slice(0, -1)
|
|
488
|
-
}))
|
|
489
|
-
},
|
|
490
|
-
{
|
|
491
|
-
guard: "paletteAtBottomDepthTwo",
|
|
492
|
-
target: "palette"
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
guard: "stackEqualsTwo",
|
|
496
|
-
actions: (0, import_xstate2.assign)(({ context }) => ({
|
|
497
|
-
stack: context.stack.slice(0, -1)
|
|
498
|
-
}))
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
guard: "stackEqualsOne",
|
|
502
|
-
target: "idle"
|
|
503
|
-
}
|
|
504
|
-
],
|
|
505
|
-
CLOSE: { target: "idle" },
|
|
506
|
-
ESC: [
|
|
507
|
-
{
|
|
508
|
-
guard: "popupOpen",
|
|
509
|
-
actions: { type: "closePopup" }
|
|
510
|
-
},
|
|
511
|
-
{
|
|
512
|
-
guard: "stackDeeperThanTwo",
|
|
513
|
-
actions: (0, import_xstate2.assign)(({ context }) => ({
|
|
514
|
-
stack: context.stack.slice(0, -1)
|
|
515
|
-
}))
|
|
516
|
-
},
|
|
517
|
-
{
|
|
518
|
-
guard: "paletteAtBottomDepthTwo",
|
|
519
|
-
target: "palette"
|
|
520
|
-
},
|
|
521
|
-
{
|
|
522
|
-
guard: "stackEqualsTwo",
|
|
523
|
-
actions: (0, import_xstate2.assign)(({ context }) => ({
|
|
524
|
-
stack: context.stack.slice(0, -1)
|
|
525
|
-
}))
|
|
526
|
-
},
|
|
527
|
-
{
|
|
528
|
-
guard: "stackEqualsOne",
|
|
529
|
-
target: "idle"
|
|
530
|
-
}
|
|
531
|
-
]
|
|
532
|
-
}
|
|
405
|
+
reset(stack) {
|
|
406
|
+
store.setState({ stack });
|
|
533
407
|
}
|
|
534
|
-
}
|
|
535
|
-
|
|
408
|
+
};
|
|
409
|
+
const navStore = store;
|
|
410
|
+
navStore.nav = nav;
|
|
411
|
+
return navStore;
|
|
412
|
+
}
|
|
536
413
|
|
|
537
|
-
// src/session/store.ts
|
|
414
|
+
// src/browser/session/store.ts
|
|
538
415
|
var defaultSnapshot = {
|
|
539
416
|
hover: null,
|
|
540
417
|
selection: null,
|
|
@@ -543,7 +420,8 @@ var defaultSnapshot = {
|
|
|
543
420
|
inspectorActive: false,
|
|
544
421
|
theme: "auto",
|
|
545
422
|
resolvedTheme: "light",
|
|
546
|
-
ingestActive: false
|
|
423
|
+
ingestActive: false,
|
|
424
|
+
user: null
|
|
547
425
|
};
|
|
548
426
|
function resolveTheme(preference, detect) {
|
|
549
427
|
if (preference !== "auto") return preference;
|
|
@@ -554,197 +432,188 @@ function resolveTheme(preference, detect) {
|
|
|
554
432
|
}
|
|
555
433
|
return "light";
|
|
556
434
|
}
|
|
557
|
-
function projectFromActor(actor) {
|
|
558
|
-
const sn = actor.getSnapshot();
|
|
559
|
-
const child = sn.children.highlight;
|
|
560
|
-
const childSnapshot = child?.getSnapshot();
|
|
561
|
-
const pinned = childSnapshot && childSnapshot.value === "pinned" ? childSnapshot.context.pinnedRef : null;
|
|
562
|
-
return {
|
|
563
|
-
hover: sn.context.hover,
|
|
564
|
-
selection: sn.context.selection,
|
|
565
|
-
stack: sn.context.stack,
|
|
566
|
-
pinnedHighlight: pinned,
|
|
567
|
-
inspectorActive: sn.matches("inspecting"),
|
|
568
|
-
theme: sn.context.theme,
|
|
569
|
-
resolvedTheme: sn.context.resolvedTheme,
|
|
570
|
-
ingestActive: sn.context.ingestActive
|
|
571
|
-
};
|
|
572
|
-
}
|
|
573
435
|
function createSession(options = {}) {
|
|
574
|
-
const {
|
|
436
|
+
const {
|
|
437
|
+
detectTheme,
|
|
438
|
+
onMountInspector,
|
|
439
|
+
onDestroyInspector,
|
|
440
|
+
onShowOverlay,
|
|
441
|
+
onHideOverlay,
|
|
442
|
+
onUpdateOverlay,
|
|
443
|
+
...overrides
|
|
444
|
+
} = options;
|
|
575
445
|
const initialPref = overrides.theme ?? defaultSnapshot.theme;
|
|
576
446
|
const initialResolved = overrides.resolvedTheme ?? resolveTheme(initialPref, detectTheme);
|
|
577
447
|
const initialStack = overrides.stack ?? [];
|
|
578
|
-
const
|
|
448
|
+
const nav = createNavigationStore();
|
|
449
|
+
const modeStore = createModeStore({
|
|
450
|
+
nav,
|
|
451
|
+
bindings: {
|
|
452
|
+
mountInspector: onMountInspector,
|
|
453
|
+
destroyInspector: onDestroyInspector
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
let highlightMode = "none";
|
|
457
|
+
const hlCtx = {
|
|
458
|
+
ref: null,
|
|
459
|
+
element: null,
|
|
460
|
+
pinnedRef: null,
|
|
461
|
+
color: null
|
|
462
|
+
};
|
|
463
|
+
const highlightActions = {
|
|
464
|
+
hover(ref, element, color) {
|
|
465
|
+
hlCtx.ref = ref;
|
|
466
|
+
hlCtx.element = element ?? null;
|
|
467
|
+
hlCtx.color = color ?? null;
|
|
468
|
+
if (highlightMode === "none") {
|
|
469
|
+
highlightMode = "transient";
|
|
470
|
+
onShowOverlay?.(hlCtx);
|
|
471
|
+
} else if (highlightMode === "transient") {
|
|
472
|
+
onUpdateOverlay?.(hlCtx);
|
|
473
|
+
}
|
|
474
|
+
store.setState({ hover: ref });
|
|
475
|
+
},
|
|
476
|
+
unhover() {
|
|
477
|
+
if (highlightMode === "transient") {
|
|
478
|
+
highlightMode = "none";
|
|
479
|
+
hlCtx.ref = null;
|
|
480
|
+
hlCtx.element = null;
|
|
481
|
+
hlCtx.color = null;
|
|
482
|
+
onHideOverlay?.();
|
|
483
|
+
}
|
|
484
|
+
store.setState({ hover: null });
|
|
485
|
+
},
|
|
486
|
+
pin(ref) {
|
|
487
|
+
const pinRef = ref ?? hlCtx.ref;
|
|
488
|
+
hlCtx.pinnedRef = pinRef;
|
|
489
|
+
if (highlightMode === "none") {
|
|
490
|
+
hlCtx.ref = pinRef;
|
|
491
|
+
}
|
|
492
|
+
if (highlightMode !== "pinned") {
|
|
493
|
+
highlightMode = "pinned";
|
|
494
|
+
onShowOverlay?.(hlCtx);
|
|
495
|
+
}
|
|
496
|
+
store.setState({ pinnedHighlight: hlCtx.pinnedRef });
|
|
497
|
+
},
|
|
498
|
+
unpin() {
|
|
499
|
+
if (highlightMode === "pinned") {
|
|
500
|
+
highlightMode = "none";
|
|
501
|
+
hlCtx.ref = null;
|
|
502
|
+
hlCtx.element = null;
|
|
503
|
+
hlCtx.pinnedRef = null;
|
|
504
|
+
hlCtx.color = null;
|
|
505
|
+
onHideOverlay?.();
|
|
506
|
+
}
|
|
507
|
+
store.setState({ pinnedHighlight: null });
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
const store = (0, import_vanilla3.createStore)(() => ({
|
|
511
|
+
...defaultSnapshot,
|
|
579
512
|
hover: overrides.hover ?? null,
|
|
580
513
|
selection: overrides.selection ?? null,
|
|
514
|
+
stack: [],
|
|
581
515
|
pinnedHighlight: null,
|
|
516
|
+
inspectorActive: false,
|
|
582
517
|
theme: initialPref,
|
|
583
518
|
resolvedTheme: initialResolved,
|
|
584
|
-
ingestActive: overrides.ingestActive ?? false
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
519
|
+
ingestActive: overrides.ingestActive ?? false,
|
|
520
|
+
user: overrides.user ?? null
|
|
521
|
+
}));
|
|
522
|
+
nav.subscribe(() => {
|
|
523
|
+
const { stack } = nav.getState();
|
|
524
|
+
if (store.getState().stack !== stack) {
|
|
525
|
+
store.setState({ stack });
|
|
591
526
|
}
|
|
592
527
|
});
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
openActionsPopup: () => bindings?.surface?.openActionsPopup?.(),
|
|
598
|
-
closePopup: () => bindings?.surface?.closePopup?.()
|
|
599
|
-
},
|
|
600
|
-
actors: {
|
|
601
|
-
highlight: providedHighlight
|
|
528
|
+
modeStore.subscribe(() => {
|
|
529
|
+
const { inspectorActive } = modeStore.getState();
|
|
530
|
+
if (store.getState().inspectorActive !== inspectorActive) {
|
|
531
|
+
store.setState({ inspectorActive });
|
|
602
532
|
}
|
|
603
533
|
});
|
|
604
|
-
const
|
|
605
|
-
|
|
534
|
+
const session = store;
|
|
535
|
+
session.nav = nav;
|
|
536
|
+
session.mode = modeStore;
|
|
537
|
+
session.highlight = highlightActions;
|
|
538
|
+
session.select = (ref) => {
|
|
539
|
+
if (sameRef(store.getState().selection, ref)) return;
|
|
540
|
+
store.setState({ selection: ref });
|
|
541
|
+
};
|
|
542
|
+
session.setTheme = (theme, resolved) => {
|
|
543
|
+
const state = store.getState();
|
|
544
|
+
const nextResolved = resolved ?? resolveTheme(theme, detectTheme);
|
|
545
|
+
if (state.theme === theme && state.resolvedTheme === nextResolved) return;
|
|
546
|
+
store.setState({ theme, resolvedTheme: nextResolved });
|
|
547
|
+
};
|
|
548
|
+
session.setIngest = (active) => {
|
|
549
|
+
if (store.getState().ingestActive === active) return;
|
|
550
|
+
store.setState({ ingestActive: active });
|
|
551
|
+
};
|
|
606
552
|
if (initialStack.length > 0) {
|
|
607
|
-
|
|
553
|
+
modeStore.transition.openPalette();
|
|
608
554
|
for (let i = 1; i < initialStack.length; i++) {
|
|
609
|
-
|
|
555
|
+
modeStore.transition.pushView(initialStack[i]);
|
|
610
556
|
}
|
|
611
557
|
} else if (overrides.inspectorActive) {
|
|
612
|
-
|
|
558
|
+
modeStore.transition.openInspector();
|
|
613
559
|
}
|
|
614
560
|
if (overrides.pinnedHighlight) {
|
|
615
|
-
|
|
616
|
-
}
|
|
617
|
-
const store = (0, import_vanilla.createStore)((_set, get) => ({
|
|
618
|
-
...projectFromActor(actor),
|
|
619
|
-
actions: {
|
|
620
|
-
hover(ref) {
|
|
621
|
-
if (sameRef(get().hover, ref)) return;
|
|
622
|
-
if (ref === null) {
|
|
623
|
-
actor.send({ type: "UNHOVER" });
|
|
624
|
-
} else {
|
|
625
|
-
actor.send({ type: "HOVER", ref, element: null });
|
|
626
|
-
}
|
|
627
|
-
},
|
|
628
|
-
select(ref) {
|
|
629
|
-
if (sameRef(get().selection, ref)) return;
|
|
630
|
-
actor.send({ type: "SET_SELECTION", ref });
|
|
631
|
-
},
|
|
632
|
-
pushStack(entry) {
|
|
633
|
-
if (entry.id === "command-palette" && get().stack.length === 0) {
|
|
634
|
-
actor.send({ type: "OPEN_PALETTE" });
|
|
635
|
-
} else {
|
|
636
|
-
actor.send({ type: "PUSH_VIEW", entry });
|
|
637
|
-
}
|
|
638
|
-
},
|
|
639
|
-
popStack() {
|
|
640
|
-
const sn = actor.getSnapshot();
|
|
641
|
-
if (sn.matches("palette")) {
|
|
642
|
-
actor.send({ type: "ESC" });
|
|
643
|
-
} else if (sn.matches("viewing")) {
|
|
644
|
-
actor.send({ type: "POP_VIEW" });
|
|
645
|
-
}
|
|
646
|
-
},
|
|
647
|
-
clearStack() {
|
|
648
|
-
if (get().stack.length === 0) return;
|
|
649
|
-
actor.send({ type: "CLOSE" });
|
|
650
|
-
},
|
|
651
|
-
openView(id, ref) {
|
|
652
|
-
const resolvedRef = ref === void 0 ? get().selection : ref;
|
|
653
|
-
get().actions.pushStack({ id, ref: resolvedRef });
|
|
654
|
-
},
|
|
655
|
-
closeView() {
|
|
656
|
-
get().actions.clearStack();
|
|
657
|
-
},
|
|
658
|
-
setInspectorActive(active) {
|
|
659
|
-
if (get().inspectorActive === active) return;
|
|
660
|
-
actor.send({ type: "TOGGLE_INSPECTOR" });
|
|
661
|
-
},
|
|
662
|
-
toggleInspector() {
|
|
663
|
-
actor.send({ type: "TOGGLE_INSPECTOR" });
|
|
664
|
-
},
|
|
665
|
-
pinHighlight(ref) {
|
|
666
|
-
if (sameRef(get().pinnedHighlight, ref)) return;
|
|
667
|
-
actor.send({ type: "PIN", ref });
|
|
668
|
-
},
|
|
669
|
-
clearPinnedHighlight() {
|
|
670
|
-
if (get().pinnedHighlight === null) return;
|
|
671
|
-
actor.send({ type: "UNPIN" });
|
|
672
|
-
},
|
|
673
|
-
setTheme(theme, resolved) {
|
|
674
|
-
const state = get();
|
|
675
|
-
const nextResolved = resolved ?? resolveTheme(theme, detectTheme);
|
|
676
|
-
if (state.theme === theme && state.resolvedTheme === nextResolved)
|
|
677
|
-
return;
|
|
678
|
-
actor.send({ type: "SET_THEME", theme, resolvedTheme: nextResolved });
|
|
679
|
-
},
|
|
680
|
-
setIngest(active) {
|
|
681
|
-
if (get().ingestActive === active) return;
|
|
682
|
-
actor.send({ type: "SET_INGEST", active });
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
}));
|
|
686
|
-
const projectAndSet = () => {
|
|
687
|
-
const next = projectFromActor(actor);
|
|
688
|
-
const prev = store.getState();
|
|
689
|
-
const updates = {};
|
|
690
|
-
if (!sameRef(prev.hover, next.hover)) updates.hover = next.hover;
|
|
691
|
-
if (!sameRef(prev.selection, next.selection))
|
|
692
|
-
updates.selection = next.selection;
|
|
693
|
-
if (prev.stack !== next.stack) updates.stack = next.stack;
|
|
694
|
-
if (!sameRef(prev.pinnedHighlight, next.pinnedHighlight))
|
|
695
|
-
updates.pinnedHighlight = next.pinnedHighlight;
|
|
696
|
-
if (prev.inspectorActive !== next.inspectorActive)
|
|
697
|
-
updates.inspectorActive = next.inspectorActive;
|
|
698
|
-
if (prev.theme !== next.theme) updates.theme = next.theme;
|
|
699
|
-
if (prev.resolvedTheme !== next.resolvedTheme)
|
|
700
|
-
updates.resolvedTheme = next.resolvedTheme;
|
|
701
|
-
if (prev.ingestActive !== next.ingestActive)
|
|
702
|
-
updates.ingestActive = next.ingestActive;
|
|
703
|
-
if (Object.keys(updates).length === 0) return;
|
|
704
|
-
store.setState(updates);
|
|
705
|
-
};
|
|
706
|
-
actor.subscribe(projectAndSet);
|
|
707
|
-
const session = store;
|
|
708
|
-
session.send = (event) => actor.send(event);
|
|
561
|
+
highlightActions.pin(overrides.pinnedHighlight);
|
|
562
|
+
}
|
|
709
563
|
return session;
|
|
710
564
|
}
|
|
711
565
|
|
|
712
|
-
// src/styles/tailwind.built.css
|
|
566
|
+
// src/browser/styles/tailwind.built.css
|
|
713
567
|
var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
714
568
|
@layer properties;
|
|
715
569
|
@layer theme, base, components, utilities;
|
|
716
570
|
@layer theme {
|
|
717
571
|
:root, :host {
|
|
572
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
573
|
+
Roboto, sans-serif;
|
|
718
574
|
--color-red-400: oklch(70.4% 0.191 22.216);
|
|
719
575
|
--color-red-500: oklch(63.7% 0.237 25.331);
|
|
720
576
|
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
721
|
-
--color-amber-
|
|
577
|
+
--color-amber-50: oklch(98.7% 0.022 95.277);
|
|
578
|
+
--color-amber-100: oklch(96.2% 0.059 95.617);
|
|
722
579
|
--color-amber-400: oklch(82.8% 0.189 84.429);
|
|
723
580
|
--color-amber-500: oklch(76.9% 0.188 70.08);
|
|
581
|
+
--color-amber-600: oklch(66.6% 0.179 58.318);
|
|
724
582
|
--color-amber-700: oklch(55.5% 0.163 48.998);
|
|
725
|
-
--color-
|
|
583
|
+
--color-amber-800: oklch(47.3% 0.137 46.201);
|
|
584
|
+
--color-emerald-50: oklch(97.9% 0.021 166.113);
|
|
585
|
+
--color-emerald-100: oklch(95% 0.052 163.051);
|
|
726
586
|
--color-emerald-400: oklch(76.5% 0.177 163.223);
|
|
727
587
|
--color-emerald-500: oklch(69.6% 0.17 162.48);
|
|
588
|
+
--color-emerald-600: oklch(59.6% 0.145 163.225);
|
|
728
589
|
--color-emerald-700: oklch(50.8% 0.118 165.612);
|
|
729
|
-
--color-cyan-
|
|
590
|
+
--color-cyan-50: oklch(98.4% 0.019 200.873);
|
|
591
|
+
--color-cyan-100: oklch(95.6% 0.045 203.388);
|
|
730
592
|
--color-cyan-400: oklch(78.9% 0.154 211.53);
|
|
731
593
|
--color-cyan-700: oklch(52% 0.105 223.128);
|
|
732
|
-
--color-blue-
|
|
594
|
+
--color-blue-50: oklch(97% 0.014 254.604);
|
|
595
|
+
--color-blue-100: oklch(93.2% 0.032 255.585);
|
|
733
596
|
--color-blue-400: oklch(70.7% 0.165 254.624);
|
|
734
597
|
--color-blue-500: oklch(62.3% 0.214 259.815);
|
|
735
598
|
--color-blue-700: oklch(48.8% 0.243 264.376);
|
|
736
|
-
--color-violet-
|
|
599
|
+
--color-violet-50: oklch(96.9% 0.016 293.756);
|
|
600
|
+
--color-violet-100: oklch(94.3% 0.029 294.588);
|
|
737
601
|
--color-violet-400: oklch(70.2% 0.183 293.541);
|
|
738
602
|
--color-violet-700: oklch(49.1% 0.27 292.581);
|
|
739
|
-
--color-fuchsia-
|
|
603
|
+
--color-fuchsia-50: oklch(97.7% 0.017 320.058);
|
|
604
|
+
--color-fuchsia-100: oklch(95.2% 0.037 318.852);
|
|
740
605
|
--color-fuchsia-400: oklch(74% 0.238 322.16);
|
|
741
606
|
--color-fuchsia-700: oklch(51.8% 0.253 323.949);
|
|
742
|
-
--color-rose-
|
|
607
|
+
--color-rose-50: oklch(96.9% 0.015 12.422);
|
|
608
|
+
--color-rose-100: oklch(94.1% 0.03 12.58);
|
|
743
609
|
--color-rose-400: oklch(71.2% 0.194 13.428);
|
|
610
|
+
--color-rose-600: oklch(58.6% 0.253 17.585);
|
|
744
611
|
--color-rose-700: oklch(51.4% 0.222 16.935);
|
|
745
|
-
--color-slate-
|
|
612
|
+
--color-slate-50: oklch(98.4% 0.003 247.858);
|
|
613
|
+
--color-slate-100: oklch(96.8% 0.007 247.896);
|
|
746
614
|
--color-slate-400: oklch(70.4% 0.04 256.788);
|
|
747
|
-
--color-slate-
|
|
615
|
+
--color-slate-500: oklch(55.4% 0.046 257.417);
|
|
616
|
+
--color-slate-600: oklch(44.6% 0.043 257.281);
|
|
748
617
|
--color-neutral-50: oklch(98.5% 0 0);
|
|
749
618
|
--color-neutral-100: oklch(97% 0 0);
|
|
750
619
|
--color-neutral-400: oklch(70.8% 0 0);
|
|
@@ -754,6 +623,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
754
623
|
--color-black: #000;
|
|
755
624
|
--color-white: #fff;
|
|
756
625
|
--spacing: 0.25rem;
|
|
626
|
+
--container-sm: 24rem;
|
|
757
627
|
--container-xl: 36rem;
|
|
758
628
|
--text-xs: 0.75rem;
|
|
759
629
|
--text-xs--line-height: calc(1 / 0.75);
|
|
@@ -761,20 +631,28 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
761
631
|
--text-sm--line-height: calc(1.25 / 0.875);
|
|
762
632
|
--text-base: 1rem;
|
|
763
633
|
--text-base--line-height: calc(1.5 / 1);
|
|
634
|
+
--text-xl: 1.25rem;
|
|
635
|
+
--text-xl--line-height: calc(1.75 / 1.25);
|
|
764
636
|
--font-weight-normal: 400;
|
|
765
637
|
--font-weight-medium: 500;
|
|
766
638
|
--font-weight-semibold: 600;
|
|
639
|
+
--font-weight-bold: 700;
|
|
640
|
+
--tracking-tight: -0.025em;
|
|
767
641
|
--tracking-widest: 0.1em;
|
|
768
642
|
--leading-relaxed: 1.625;
|
|
643
|
+
--radius-md: calc(var(--radius) * 0.8);
|
|
644
|
+
--radius-lg: var(--radius);
|
|
769
645
|
--radius-xl: calc(var(--radius) * 1.4);
|
|
770
646
|
--radius-2xl: calc(var(--radius) * 1.8);
|
|
771
647
|
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
648
|
+
--animate-spin: spin 1s linear infinite;
|
|
772
649
|
--blur-sm: 8px;
|
|
773
650
|
--default-transition-duration: 150ms;
|
|
774
651
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
775
652
|
--default-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
776
653
|
Roboto, sans-serif;
|
|
777
654
|
--default-mono-font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
655
|
+
--color-muted: var(--muted);
|
|
778
656
|
--color-border: var(--border);
|
|
779
657
|
}
|
|
780
658
|
}
|
|
@@ -930,6 +808,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
930
808
|
.pointer-events-none {
|
|
931
809
|
pointer-events: none;
|
|
932
810
|
}
|
|
811
|
+
.\\!visible {
|
|
812
|
+
visibility: visible !important;
|
|
813
|
+
}
|
|
814
|
+
.collapse {
|
|
815
|
+
visibility: collapse;
|
|
816
|
+
}
|
|
933
817
|
.invisible {
|
|
934
818
|
visibility: hidden;
|
|
935
819
|
}
|
|
@@ -965,18 +849,33 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
965
849
|
.end {
|
|
966
850
|
inset-inline-end: var(--spacing);
|
|
967
851
|
}
|
|
852
|
+
.-top-1 {
|
|
853
|
+
top: calc(var(--spacing) * -1);
|
|
854
|
+
}
|
|
855
|
+
.-right-1 {
|
|
856
|
+
right: calc(var(--spacing) * -1);
|
|
857
|
+
}
|
|
858
|
+
.right-0 {
|
|
859
|
+
right: calc(var(--spacing) * 0);
|
|
860
|
+
}
|
|
968
861
|
.right-2 {
|
|
969
862
|
right: calc(var(--spacing) * 2);
|
|
970
863
|
}
|
|
971
|
-
.
|
|
972
|
-
|
|
864
|
+
.bottom-full {
|
|
865
|
+
bottom: 100%;
|
|
866
|
+
}
|
|
867
|
+
.bottom-px {
|
|
868
|
+
bottom: 1px;
|
|
973
869
|
}
|
|
974
|
-
.
|
|
975
|
-
|
|
870
|
+
.z-1 {
|
|
871
|
+
z-index: 1;
|
|
976
872
|
}
|
|
977
873
|
.z-10 {
|
|
978
874
|
z-index: 10;
|
|
979
875
|
}
|
|
876
|
+
.z-\\[2147483647\\] {
|
|
877
|
+
z-index: 2147483647;
|
|
878
|
+
}
|
|
980
879
|
.container {
|
|
981
880
|
width: 100%;
|
|
982
881
|
@media (width >= 40rem) {
|
|
@@ -1013,6 +912,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1013
912
|
.mt-1 {
|
|
1014
913
|
margin-top: calc(var(--spacing) * 1);
|
|
1015
914
|
}
|
|
915
|
+
.mb-2 {
|
|
916
|
+
margin-bottom: calc(var(--spacing) * 2);
|
|
917
|
+
}
|
|
918
|
+
.mb-6 {
|
|
919
|
+
margin-bottom: calc(var(--spacing) * 6);
|
|
920
|
+
}
|
|
1016
921
|
.ml-auto {
|
|
1017
922
|
margin-left: auto;
|
|
1018
923
|
}
|
|
@@ -1043,6 +948,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1043
948
|
.table {
|
|
1044
949
|
display: table;
|
|
1045
950
|
}
|
|
951
|
+
.size-2 {
|
|
952
|
+
width: calc(var(--spacing) * 2);
|
|
953
|
+
height: calc(var(--spacing) * 2);
|
|
954
|
+
}
|
|
955
|
+
.size-3 {
|
|
956
|
+
width: calc(var(--spacing) * 3);
|
|
957
|
+
height: calc(var(--spacing) * 3);
|
|
958
|
+
}
|
|
1046
959
|
.size-3\\.5 {
|
|
1047
960
|
width: calc(var(--spacing) * 3.5);
|
|
1048
961
|
height: calc(var(--spacing) * 3.5);
|
|
@@ -1109,6 +1022,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1109
1022
|
.h-px {
|
|
1110
1023
|
height: 1px;
|
|
1111
1024
|
}
|
|
1025
|
+
.max-h-32 {
|
|
1026
|
+
max-height: calc(var(--spacing) * 32);
|
|
1027
|
+
}
|
|
1028
|
+
.max-h-full {
|
|
1029
|
+
max-height: 100%;
|
|
1030
|
+
}
|
|
1112
1031
|
.min-h-0 {
|
|
1113
1032
|
min-height: calc(var(--spacing) * 0);
|
|
1114
1033
|
}
|
|
@@ -1127,6 +1046,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1127
1046
|
.w-4 {
|
|
1128
1047
|
width: calc(var(--spacing) * 4);
|
|
1129
1048
|
}
|
|
1049
|
+
.w-20 {
|
|
1050
|
+
width: calc(var(--spacing) * 20);
|
|
1051
|
+
}
|
|
1052
|
+
.w-36 {
|
|
1053
|
+
width: calc(var(--spacing) * 36);
|
|
1054
|
+
}
|
|
1130
1055
|
.w-56 {
|
|
1131
1056
|
width: calc(var(--spacing) * 56);
|
|
1132
1057
|
}
|
|
@@ -1139,6 +1064,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1139
1064
|
.w-px {
|
|
1140
1065
|
width: 1px;
|
|
1141
1066
|
}
|
|
1067
|
+
.max-w-full {
|
|
1068
|
+
max-width: 100%;
|
|
1069
|
+
}
|
|
1070
|
+
.max-w-sm {
|
|
1071
|
+
max-width: var(--container-sm);
|
|
1072
|
+
}
|
|
1142
1073
|
.max-w-xl {
|
|
1143
1074
|
max-width: var(--container-xl);
|
|
1144
1075
|
}
|
|
@@ -1166,9 +1097,41 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1166
1097
|
.shrink-0 {
|
|
1167
1098
|
flex-shrink: 0;
|
|
1168
1099
|
}
|
|
1100
|
+
.origin-bottom-left {
|
|
1101
|
+
transform-origin: 0 100%;
|
|
1102
|
+
}
|
|
1103
|
+
.origin-bottom-right {
|
|
1104
|
+
transform-origin: 100% 100%;
|
|
1105
|
+
}
|
|
1106
|
+
.-translate-x-0\\.5 {
|
|
1107
|
+
--tw-translate-x: calc(var(--spacing) * -0.5);
|
|
1108
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1109
|
+
}
|
|
1110
|
+
.translate-x-0\\.5 {
|
|
1111
|
+
--tw-translate-x: calc(var(--spacing) * 0.5);
|
|
1112
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1113
|
+
}
|
|
1114
|
+
.scale-84 {
|
|
1115
|
+
--tw-scale-x: 84%;
|
|
1116
|
+
--tw-scale-y: 84%;
|
|
1117
|
+
--tw-scale-z: 84%;
|
|
1118
|
+
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
1119
|
+
}
|
|
1120
|
+
.-rotate-10 {
|
|
1121
|
+
rotate: calc(10deg * -1);
|
|
1122
|
+
}
|
|
1123
|
+
.rotate-10 {
|
|
1124
|
+
rotate: 10deg;
|
|
1125
|
+
}
|
|
1169
1126
|
.transform {
|
|
1170
1127
|
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
|
1171
1128
|
}
|
|
1129
|
+
.animate-skeleton {
|
|
1130
|
+
animation: skeleton 2s -1s infinite linear;
|
|
1131
|
+
}
|
|
1132
|
+
.animate-spin {
|
|
1133
|
+
animation: var(--animate-spin);
|
|
1134
|
+
}
|
|
1172
1135
|
.cursor-default {
|
|
1173
1136
|
cursor: default;
|
|
1174
1137
|
}
|
|
@@ -1193,9 +1156,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1193
1156
|
.flex-row {
|
|
1194
1157
|
flex-direction: row;
|
|
1195
1158
|
}
|
|
1196
|
-
.flex-wrap {
|
|
1197
|
-
flex-wrap: wrap;
|
|
1198
|
-
}
|
|
1199
1159
|
.items-center {
|
|
1200
1160
|
align-items: center;
|
|
1201
1161
|
}
|
|
@@ -1214,6 +1174,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1214
1174
|
.gap-0 {
|
|
1215
1175
|
gap: calc(var(--spacing) * 0);
|
|
1216
1176
|
}
|
|
1177
|
+
.gap-0\\.5 {
|
|
1178
|
+
gap: calc(var(--spacing) * 0.5);
|
|
1179
|
+
}
|
|
1217
1180
|
.gap-1 {
|
|
1218
1181
|
gap: calc(var(--spacing) * 1);
|
|
1219
1182
|
}
|
|
@@ -1229,6 +1192,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1229
1192
|
.gap-4 {
|
|
1230
1193
|
gap: calc(var(--spacing) * 4);
|
|
1231
1194
|
}
|
|
1195
|
+
.gap-6 {
|
|
1196
|
+
gap: calc(var(--spacing) * 6);
|
|
1197
|
+
}
|
|
1232
1198
|
.self-start {
|
|
1233
1199
|
align-self: flex-start;
|
|
1234
1200
|
}
|
|
@@ -1249,6 +1215,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1249
1215
|
.rounded-\\[0\\.25rem\\] {
|
|
1250
1216
|
border-radius: 0.25rem;
|
|
1251
1217
|
}
|
|
1218
|
+
.rounded-full {
|
|
1219
|
+
border-radius: calc(infinity * 1px);
|
|
1220
|
+
}
|
|
1252
1221
|
.rounded-lg {
|
|
1253
1222
|
border-radius: var(--radius);
|
|
1254
1223
|
}
|
|
@@ -1258,6 +1227,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1258
1227
|
.rounded-sm {
|
|
1259
1228
|
border-radius: calc(var(--radius) * 0.6);
|
|
1260
1229
|
}
|
|
1230
|
+
.rounded-xl {
|
|
1231
|
+
border-radius: calc(var(--radius) * 1.4);
|
|
1232
|
+
}
|
|
1261
1233
|
.rounded-t-xl {
|
|
1262
1234
|
border-top-left-radius: calc(var(--radius) * 1.4);
|
|
1263
1235
|
border-top-right-radius: calc(var(--radius) * 1.4);
|
|
@@ -1278,12 +1250,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1278
1250
|
border-bottom-style: var(--tw-border-style);
|
|
1279
1251
|
border-bottom-width: 0px;
|
|
1280
1252
|
}
|
|
1253
|
+
.border-amber-500\\/40 {
|
|
1254
|
+
border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 40%, transparent);
|
|
1255
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1256
|
+
border-color: color-mix(in oklab, var(--color-amber-500) 40%, transparent);
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1281
1259
|
.border-border {
|
|
1282
1260
|
border-color: var(--border);
|
|
1283
1261
|
}
|
|
1284
1262
|
.border-destructive {
|
|
1285
1263
|
border-color: var(--destructive);
|
|
1286
1264
|
}
|
|
1265
|
+
.border-info\\/40 {
|
|
1266
|
+
border-color: var(--info);
|
|
1267
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1268
|
+
border-color: color-mix(in oklab, var(--info) 40%, transparent);
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1287
1271
|
.border-input {
|
|
1288
1272
|
border-color: var(--input);
|
|
1289
1273
|
}
|
|
@@ -1293,10 +1277,13 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1293
1277
|
.border-transparent {
|
|
1294
1278
|
border-color: transparent;
|
|
1295
1279
|
}
|
|
1296
|
-
.bg-amber-
|
|
1297
|
-
background-color: color-
|
|
1280
|
+
.bg-amber-50 {
|
|
1281
|
+
background-color: var(--color-amber-50);
|
|
1282
|
+
}
|
|
1283
|
+
.bg-amber-500\\/15 {
|
|
1284
|
+
background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 15%, transparent);
|
|
1298
1285
|
@supports (color: color-mix(in lab, red, red)) {
|
|
1299
|
-
background-color: color-mix(in oklab, var(--color-amber-
|
|
1286
|
+
background-color: color-mix(in oklab, var(--color-amber-500) 15%, transparent);
|
|
1300
1287
|
}
|
|
1301
1288
|
}
|
|
1302
1289
|
.bg-background {
|
|
@@ -1308,20 +1295,23 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1308
1295
|
background-color: color-mix(in oklab, var(--color-black) 32%, transparent);
|
|
1309
1296
|
}
|
|
1310
1297
|
}
|
|
1311
|
-
.bg-
|
|
1312
|
-
background-color: color-mix(in srgb,
|
|
1298
|
+
.bg-black\\/80 {
|
|
1299
|
+
background-color: color-mix(in srgb, #000 80%, transparent);
|
|
1313
1300
|
@supports (color: color-mix(in lab, red, red)) {
|
|
1314
|
-
background-color: color-mix(in oklab, var(--color-
|
|
1301
|
+
background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
|
|
1315
1302
|
}
|
|
1316
1303
|
}
|
|
1304
|
+
.bg-blue-50 {
|
|
1305
|
+
background-color: var(--color-blue-50);
|
|
1306
|
+
}
|
|
1317
1307
|
.bg-border {
|
|
1318
1308
|
background-color: var(--border);
|
|
1319
1309
|
}
|
|
1320
|
-
.bg-
|
|
1321
|
-
background-color:
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1310
|
+
.bg-card {
|
|
1311
|
+
background-color: var(--card);
|
|
1312
|
+
}
|
|
1313
|
+
.bg-cyan-50 {
|
|
1314
|
+
background-color: var(--color-cyan-50);
|
|
1325
1315
|
}
|
|
1326
1316
|
.bg-destructive {
|
|
1327
1317
|
background-color: var(--destructive);
|
|
@@ -1332,17 +1322,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1332
1322
|
background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
|
|
1333
1323
|
}
|
|
1334
1324
|
}
|
|
1335
|
-
.bg-emerald-
|
|
1336
|
-
background-color: color-
|
|
1337
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1338
|
-
background-color: color-mix(in oklab, var(--color-emerald-400) 20%, transparent);
|
|
1339
|
-
}
|
|
1325
|
+
.bg-emerald-50 {
|
|
1326
|
+
background-color: var(--color-emerald-50);
|
|
1340
1327
|
}
|
|
1341
|
-
.bg-
|
|
1342
|
-
background-color: color-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1328
|
+
.bg-emerald-500 {
|
|
1329
|
+
background-color: var(--color-emerald-500);
|
|
1330
|
+
}
|
|
1331
|
+
.bg-fuchsia-50 {
|
|
1332
|
+
background-color: var(--color-fuchsia-50);
|
|
1333
|
+
}
|
|
1334
|
+
.bg-info {
|
|
1335
|
+
background-color: var(--info);
|
|
1346
1336
|
}
|
|
1347
1337
|
.bg-info\\/10 {
|
|
1348
1338
|
background-color: var(--info);
|
|
@@ -1350,6 +1340,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1350
1340
|
background-color: color-mix(in oklab, var(--info) 10%, transparent);
|
|
1351
1341
|
}
|
|
1352
1342
|
}
|
|
1343
|
+
.bg-info\\/15 {
|
|
1344
|
+
background-color: var(--info);
|
|
1345
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1346
|
+
background-color: color-mix(in oklab, var(--info) 15%, transparent);
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1353
1349
|
.bg-muted {
|
|
1354
1350
|
background-color: var(--muted);
|
|
1355
1351
|
}
|
|
@@ -1359,20 +1355,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1359
1355
|
.bg-primary {
|
|
1360
1356
|
background-color: var(--primary);
|
|
1361
1357
|
}
|
|
1362
|
-
.bg-rose-
|
|
1363
|
-
background-color: color-
|
|
1364
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1365
|
-
background-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
1366
|
-
}
|
|
1358
|
+
.bg-rose-50 {
|
|
1359
|
+
background-color: var(--color-rose-50);
|
|
1367
1360
|
}
|
|
1368
1361
|
.bg-secondary {
|
|
1369
1362
|
background-color: var(--secondary);
|
|
1370
1363
|
}
|
|
1371
|
-
.bg-slate-
|
|
1372
|
-
background-color: color-
|
|
1373
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1374
|
-
background-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
1375
|
-
}
|
|
1364
|
+
.bg-slate-50 {
|
|
1365
|
+
background-color: var(--color-slate-50);
|
|
1376
1366
|
}
|
|
1377
1367
|
.bg-success\\/10 {
|
|
1378
1368
|
background-color: var(--success);
|
|
@@ -1383,11 +1373,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1383
1373
|
.bg-transparent {
|
|
1384
1374
|
background-color: transparent;
|
|
1385
1375
|
}
|
|
1386
|
-
.bg-violet-
|
|
1387
|
-
background-color: color-
|
|
1388
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1389
|
-
background-color: color-mix(in oklab, var(--color-violet-400) 20%, transparent);
|
|
1390
|
-
}
|
|
1376
|
+
.bg-violet-50 {
|
|
1377
|
+
background-color: var(--color-violet-50);
|
|
1391
1378
|
}
|
|
1392
1379
|
.bg-warning\\/10 {
|
|
1393
1380
|
background-color: var(--warning);
|
|
@@ -1404,15 +1391,27 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1404
1391
|
.bg-no-repeat {
|
|
1405
1392
|
background-repeat: no-repeat;
|
|
1406
1393
|
}
|
|
1394
|
+
.object-cover {
|
|
1395
|
+
object-fit: cover;
|
|
1396
|
+
}
|
|
1397
|
+
.object-top {
|
|
1398
|
+
object-position: top;
|
|
1399
|
+
}
|
|
1407
1400
|
.p-1 {
|
|
1408
1401
|
padding: calc(var(--spacing) * 1);
|
|
1409
1402
|
}
|
|
1403
|
+
.p-1\\.5 {
|
|
1404
|
+
padding: calc(var(--spacing) * 1.5);
|
|
1405
|
+
}
|
|
1410
1406
|
.p-2 {
|
|
1411
1407
|
padding: calc(var(--spacing) * 2);
|
|
1412
1408
|
}
|
|
1413
1409
|
.p-4 {
|
|
1414
1410
|
padding: calc(var(--spacing) * 4);
|
|
1415
1411
|
}
|
|
1412
|
+
.p-6 {
|
|
1413
|
+
padding: calc(var(--spacing) * 6);
|
|
1414
|
+
}
|
|
1416
1415
|
.px-0 {
|
|
1417
1416
|
padding-inline: calc(var(--spacing) * 0);
|
|
1418
1417
|
}
|
|
@@ -1437,8 +1436,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1437
1436
|
.px-4 {
|
|
1438
1437
|
padding-inline: calc(var(--spacing) * 4);
|
|
1439
1438
|
}
|
|
1440
|
-
.px-
|
|
1441
|
-
padding-inline: calc(var(--spacing) *
|
|
1439
|
+
.px-6 {
|
|
1440
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
1442
1441
|
}
|
|
1443
1442
|
.py-0 {
|
|
1444
1443
|
padding-block: calc(var(--spacing) * 0);
|
|
@@ -1452,12 +1451,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1452
1451
|
.py-2 {
|
|
1453
1452
|
padding-block: calc(var(--spacing) * 2);
|
|
1454
1453
|
}
|
|
1455
|
-
.py-3 {
|
|
1456
|
-
padding-block: calc(var(--spacing) * 3);
|
|
1457
|
-
}
|
|
1458
1454
|
.py-4 {
|
|
1459
1455
|
padding-block: calc(var(--spacing) * 4);
|
|
1460
1456
|
}
|
|
1457
|
+
.py-12 {
|
|
1458
|
+
padding-block: calc(var(--spacing) * 12);
|
|
1459
|
+
}
|
|
1461
1460
|
.py-\\[max\\(1rem\\,4vh\\)\\] {
|
|
1462
1461
|
padding-block: max(1rem, 4vh);
|
|
1463
1462
|
}
|
|
@@ -1467,6 +1466,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1467
1466
|
.pe-3 {
|
|
1468
1467
|
padding-inline-end: calc(var(--spacing) * 3);
|
|
1469
1468
|
}
|
|
1469
|
+
.pt-2 {
|
|
1470
|
+
padding-top: calc(var(--spacing) * 2);
|
|
1471
|
+
}
|
|
1470
1472
|
.pr-8 {
|
|
1471
1473
|
padding-right: calc(var(--spacing) * 8);
|
|
1472
1474
|
}
|
|
@@ -1498,6 +1500,10 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1498
1500
|
font-size: var(--text-sm);
|
|
1499
1501
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
1500
1502
|
}
|
|
1503
|
+
.text-xl {
|
|
1504
|
+
font-size: var(--text-xl);
|
|
1505
|
+
line-height: var(--tw-leading, var(--text-xl--line-height));
|
|
1506
|
+
}
|
|
1501
1507
|
.text-xs {
|
|
1502
1508
|
font-size: var(--text-xs);
|
|
1503
1509
|
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
@@ -1505,10 +1511,27 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1505
1511
|
.text-\\[0\\.625rem\\] {
|
|
1506
1512
|
font-size: 0.625rem;
|
|
1507
1513
|
}
|
|
1514
|
+
.text-\\[9px\\] {
|
|
1515
|
+
font-size: 9px;
|
|
1516
|
+
}
|
|
1517
|
+
.text-\\[10px\\] {
|
|
1518
|
+
font-size: 10px;
|
|
1519
|
+
}
|
|
1520
|
+
.text-\\[11px\\] {
|
|
1521
|
+
font-size: 11px;
|
|
1522
|
+
}
|
|
1523
|
+
.leading-none {
|
|
1524
|
+
--tw-leading: 1;
|
|
1525
|
+
line-height: 1;
|
|
1526
|
+
}
|
|
1508
1527
|
.leading-relaxed {
|
|
1509
1528
|
--tw-leading: var(--leading-relaxed);
|
|
1510
1529
|
line-height: var(--leading-relaxed);
|
|
1511
1530
|
}
|
|
1531
|
+
.font-bold {
|
|
1532
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
1533
|
+
font-weight: var(--font-weight-bold);
|
|
1534
|
+
}
|
|
1512
1535
|
.font-medium {
|
|
1513
1536
|
--tw-font-weight: var(--font-weight-medium);
|
|
1514
1537
|
font-weight: var(--font-weight-medium);
|
|
@@ -1521,10 +1544,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1521
1544
|
--tw-font-weight: var(--font-weight-semibold);
|
|
1522
1545
|
font-weight: var(--font-weight-semibold);
|
|
1523
1546
|
}
|
|
1547
|
+
.tracking-tight {
|
|
1548
|
+
--tw-tracking: var(--tracking-tight);
|
|
1549
|
+
letter-spacing: var(--tracking-tight);
|
|
1550
|
+
}
|
|
1524
1551
|
.tracking-widest {
|
|
1525
1552
|
--tw-tracking: var(--tracking-widest);
|
|
1526
1553
|
letter-spacing: var(--tracking-widest);
|
|
1527
1554
|
}
|
|
1555
|
+
.text-balance {
|
|
1556
|
+
text-wrap: balance;
|
|
1557
|
+
}
|
|
1528
1558
|
.break-words {
|
|
1529
1559
|
overflow-wrap: break-word;
|
|
1530
1560
|
}
|
|
@@ -1534,15 +1564,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1534
1564
|
.whitespace-nowrap {
|
|
1535
1565
|
white-space: nowrap;
|
|
1536
1566
|
}
|
|
1567
|
+
.text-amber-600 {
|
|
1568
|
+
color: var(--color-amber-600);
|
|
1569
|
+
}
|
|
1537
1570
|
.text-amber-700 {
|
|
1538
1571
|
color: var(--color-amber-700);
|
|
1539
1572
|
}
|
|
1573
|
+
.text-amber-800 {
|
|
1574
|
+
color: var(--color-amber-800);
|
|
1575
|
+
}
|
|
1540
1576
|
.text-blue-700 {
|
|
1541
1577
|
color: var(--color-blue-700);
|
|
1542
1578
|
}
|
|
1543
1579
|
.text-cyan-700 {
|
|
1544
1580
|
color: var(--color-cyan-700);
|
|
1545
1581
|
}
|
|
1582
|
+
.text-destructive {
|
|
1583
|
+
color: var(--destructive);
|
|
1584
|
+
}
|
|
1546
1585
|
.text-destructive-foreground {
|
|
1547
1586
|
color: var(--destructive-foreground);
|
|
1548
1587
|
}
|
|
@@ -1579,8 +1618,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1579
1618
|
.text-secondary-foreground {
|
|
1580
1619
|
color: var(--secondary-foreground);
|
|
1581
1620
|
}
|
|
1582
|
-
.text-slate-
|
|
1583
|
-
color: var(--color-slate-
|
|
1621
|
+
.text-slate-600 {
|
|
1622
|
+
color: var(--color-slate-600);
|
|
1584
1623
|
}
|
|
1585
1624
|
.text-success-foreground {
|
|
1586
1625
|
color: var(--success-foreground);
|
|
@@ -1597,6 +1636,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1597
1636
|
.lowercase {
|
|
1598
1637
|
text-transform: lowercase;
|
|
1599
1638
|
}
|
|
1639
|
+
.ordinal {
|
|
1640
|
+
--tw-ordinal: ordinal;
|
|
1641
|
+
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
1642
|
+
}
|
|
1643
|
+
.tabular-nums {
|
|
1644
|
+
--tw-numeric-spacing: tabular-nums;
|
|
1645
|
+
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
1646
|
+
}
|
|
1600
1647
|
.line-through {
|
|
1601
1648
|
text-decoration-line: line-through;
|
|
1602
1649
|
}
|
|
@@ -1612,6 +1659,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1612
1659
|
.accent-primary {
|
|
1613
1660
|
accent-color: var(--primary);
|
|
1614
1661
|
}
|
|
1662
|
+
.opacity-50 {
|
|
1663
|
+
opacity: 50%;
|
|
1664
|
+
}
|
|
1615
1665
|
.opacity-80 {
|
|
1616
1666
|
opacity: 80%;
|
|
1617
1667
|
}
|
|
@@ -1620,6 +1670,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1620
1670
|
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%)), 0 4px 6px -4px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%));
|
|
1621
1671
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1622
1672
|
}
|
|
1673
|
+
.shadow-sm\\/5 {
|
|
1674
|
+
--tw-shadow-alpha: 5%;
|
|
1675
|
+
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%)), 0 1px 2px -1px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 5%));
|
|
1676
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1677
|
+
}
|
|
1623
1678
|
.shadow-xs\\/5 {
|
|
1624
1679
|
--tw-shadow-alpha: 5%;
|
|
1625
1680
|
--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.05) l a b / 5%));
|
|
@@ -1645,6 +1700,58 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1645
1700
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
1646
1701
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1647
1702
|
}
|
|
1703
|
+
.inset-ring {
|
|
1704
|
+
--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);
|
|
1705
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1706
|
+
}
|
|
1707
|
+
.inset-ring-amber-600\\/20 {
|
|
1708
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(66.6% 0.179 58.318) 20%, transparent);
|
|
1709
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1710
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-amber-600) 20%, transparent);
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
.inset-ring-blue-700\\/10 {
|
|
1714
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(48.8% 0.243 264.376) 10%, transparent);
|
|
1715
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1716
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-blue-700) 10%, transparent);
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
.inset-ring-cyan-700\\/10 {
|
|
1720
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(52% 0.105 223.128) 10%, transparent);
|
|
1721
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1722
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-cyan-700) 10%, transparent);
|
|
1723
|
+
}
|
|
1724
|
+
}
|
|
1725
|
+
.inset-ring-emerald-600\\/20 {
|
|
1726
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(59.6% 0.145 163.225) 20%, transparent);
|
|
1727
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1728
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-emerald-600) 20%, transparent);
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
.inset-ring-fuchsia-700\\/10 {
|
|
1732
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(51.8% 0.253 323.949) 10%, transparent);
|
|
1733
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1734
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-fuchsia-700) 10%, transparent);
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
.inset-ring-rose-600\\/10 {
|
|
1738
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(58.6% 0.253 17.585) 10%, transparent);
|
|
1739
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1740
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-rose-600) 10%, transparent);
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
.inset-ring-slate-500\\/10 {
|
|
1744
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(55.4% 0.046 257.417) 10%, transparent);
|
|
1745
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1746
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-slate-500) 10%, transparent);
|
|
1747
|
+
}
|
|
1748
|
+
}
|
|
1749
|
+
.inset-ring-violet-700\\/10 {
|
|
1750
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(49.1% 0.27 292.581) 10%, transparent);
|
|
1751
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1752
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-violet-700) 10%, transparent);
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1648
1755
|
.outline {
|
|
1649
1756
|
outline-style: var(--tw-outline-style);
|
|
1650
1757
|
outline-width: 1px;
|
|
@@ -1688,76 +1795,61 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1688
1795
|
-webkit-user-select: none;
|
|
1689
1796
|
user-select: none;
|
|
1690
1797
|
}
|
|
1798
|
+
.\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/64\\%\\)\\] {
|
|
1799
|
+
--skeleton-highlight: color-mix(in srgb, #fff 64%, transparent);
|
|
1800
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1801
|
+
--skeleton-highlight: color-mix(in oklab, var(--color-white) 64%, transparent);
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
.\\[background\\:linear-gradient\\(120deg\\,transparent_40\\%\\,var\\(--skeleton-highlight\\)\\,transparent_60\\%\\)_var\\(--color-muted\\)_0_0\\/200\\%_100\\%_fixed\\] {
|
|
1805
|
+
background: linear-gradient(120deg,transparent 40%,var(--skeleton-highlight),transparent 60%) var(--color-muted) 0 0/200% 100% fixed;
|
|
1806
|
+
}
|
|
1691
1807
|
.\\[clip-path\\:inset\\(0_1px\\)\\] {
|
|
1692
1808
|
clip-path: inset(0 1px);
|
|
1693
1809
|
}
|
|
1694
1810
|
.not-dark\\:bg-clip-padding {
|
|
1695
|
-
&:not(*:is(.dark *)) {
|
|
1811
|
+
&:not(*:is(.dark *, :host(.dark) *)) {
|
|
1696
1812
|
background-clip: padding-box;
|
|
1697
1813
|
}
|
|
1698
1814
|
}
|
|
1699
|
-
.group-data-hover\\:bg-amber-
|
|
1815
|
+
.group-data-hover\\:bg-amber-100 {
|
|
1700
1816
|
&:is(:where(.group)[data-hover] *) {
|
|
1701
|
-
background-color: color-
|
|
1702
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1703
|
-
background-color: color-mix(in oklab, var(--color-amber-400) 30%, transparent);
|
|
1704
|
-
}
|
|
1817
|
+
background-color: var(--color-amber-100);
|
|
1705
1818
|
}
|
|
1706
1819
|
}
|
|
1707
|
-
.group-data-hover\\:bg-blue-
|
|
1820
|
+
.group-data-hover\\:bg-blue-100 {
|
|
1708
1821
|
&:is(:where(.group)[data-hover] *) {
|
|
1709
|
-
background-color: color-
|
|
1710
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1711
|
-
background-color: color-mix(in oklab, var(--color-blue-400) 30%, transparent);
|
|
1712
|
-
}
|
|
1822
|
+
background-color: var(--color-blue-100);
|
|
1713
1823
|
}
|
|
1714
1824
|
}
|
|
1715
|
-
.group-data-hover\\:bg-cyan-
|
|
1825
|
+
.group-data-hover\\:bg-cyan-100 {
|
|
1716
1826
|
&:is(:where(.group)[data-hover] *) {
|
|
1717
|
-
background-color: color-
|
|
1718
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1719
|
-
background-color: color-mix(in oklab, var(--color-cyan-400) 30%, transparent);
|
|
1720
|
-
}
|
|
1827
|
+
background-color: var(--color-cyan-100);
|
|
1721
1828
|
}
|
|
1722
1829
|
}
|
|
1723
|
-
.group-data-hover\\:bg-emerald-
|
|
1830
|
+
.group-data-hover\\:bg-emerald-100 {
|
|
1724
1831
|
&:is(:where(.group)[data-hover] *) {
|
|
1725
|
-
background-color: color-
|
|
1726
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1727
|
-
background-color: color-mix(in oklab, var(--color-emerald-400) 30%, transparent);
|
|
1728
|
-
}
|
|
1832
|
+
background-color: var(--color-emerald-100);
|
|
1729
1833
|
}
|
|
1730
1834
|
}
|
|
1731
|
-
.group-data-hover\\:bg-fuchsia-
|
|
1835
|
+
.group-data-hover\\:bg-fuchsia-100 {
|
|
1732
1836
|
&:is(:where(.group)[data-hover] *) {
|
|
1733
|
-
background-color: color-
|
|
1734
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1735
|
-
background-color: color-mix(in oklab, var(--color-fuchsia-400) 30%, transparent);
|
|
1736
|
-
}
|
|
1837
|
+
background-color: var(--color-fuchsia-100);
|
|
1737
1838
|
}
|
|
1738
1839
|
}
|
|
1739
|
-
.group-data-hover\\:bg-rose-
|
|
1840
|
+
.group-data-hover\\:bg-rose-100 {
|
|
1740
1841
|
&:is(:where(.group)[data-hover] *) {
|
|
1741
|
-
background-color: color-
|
|
1742
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1743
|
-
background-color: color-mix(in oklab, var(--color-rose-400) 30%, transparent);
|
|
1744
|
-
}
|
|
1842
|
+
background-color: var(--color-rose-100);
|
|
1745
1843
|
}
|
|
1746
1844
|
}
|
|
1747
|
-
.group-data-hover\\:bg-slate-
|
|
1845
|
+
.group-data-hover\\:bg-slate-100 {
|
|
1748
1846
|
&:is(:where(.group)[data-hover] *) {
|
|
1749
|
-
background-color: color-
|
|
1750
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1751
|
-
background-color: color-mix(in oklab, var(--color-slate-400) 30%, transparent);
|
|
1752
|
-
}
|
|
1847
|
+
background-color: var(--color-slate-100);
|
|
1753
1848
|
}
|
|
1754
1849
|
}
|
|
1755
|
-
.group-data-hover\\:bg-violet-
|
|
1850
|
+
.group-data-hover\\:bg-violet-100 {
|
|
1756
1851
|
&:is(:where(.group)[data-hover] *) {
|
|
1757
|
-
background-color: color-
|
|
1758
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1759
|
-
background-color: color-mix(in oklab, var(--color-violet-400) 30%, transparent);
|
|
1760
|
-
}
|
|
1852
|
+
background-color: var(--color-violet-100);
|
|
1761
1853
|
}
|
|
1762
1854
|
}
|
|
1763
1855
|
.placeholder\\:text-muted-foreground {
|
|
@@ -1789,6 +1881,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1789
1881
|
border-radius: calc(var(--radius-2xl) - 1px);
|
|
1790
1882
|
}
|
|
1791
1883
|
}
|
|
1884
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-lg\\)-1px\\)\\] {
|
|
1885
|
+
&::before {
|
|
1886
|
+
content: var(--tw-content);
|
|
1887
|
+
border-radius: calc(var(--radius-lg) - 1px);
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-md\\)-1px\\)\\] {
|
|
1891
|
+
&::before {
|
|
1892
|
+
content: var(--tw-content);
|
|
1893
|
+
border-radius: calc(var(--radius-md) - 1px);
|
|
1894
|
+
}
|
|
1895
|
+
}
|
|
1896
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
|
|
1897
|
+
&::before {
|
|
1898
|
+
content: var(--tw-content);
|
|
1899
|
+
border-radius: calc(var(--radius-xl) - 1px);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1792
1902
|
.before\\:rounded-t-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
|
|
1793
1903
|
&::before {
|
|
1794
1904
|
content: var(--tw-content);
|
|
@@ -1820,16 +1930,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1820
1930
|
border-color: var(--ring);
|
|
1821
1931
|
}
|
|
1822
1932
|
}
|
|
1823
|
-
.focus-within\\:bg-accent {
|
|
1824
|
-
&:focus-within {
|
|
1825
|
-
background-color: var(--accent);
|
|
1826
|
-
}
|
|
1827
|
-
}
|
|
1828
|
-
.focus-within\\:text-accent-foreground {
|
|
1829
|
-
&:focus-within {
|
|
1830
|
-
color: var(--accent-foreground);
|
|
1831
|
-
}
|
|
1832
|
-
}
|
|
1833
1933
|
.focus-within\\:ring-\\[3px\\] {
|
|
1834
1934
|
&:focus-within {
|
|
1835
1935
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
@@ -1861,6 +1961,16 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1861
1961
|
}
|
|
1862
1962
|
}
|
|
1863
1963
|
}
|
|
1964
|
+
.hover\\:bg-amber-500\\/20 {
|
|
1965
|
+
&:hover {
|
|
1966
|
+
@media (hover: hover) {
|
|
1967
|
+
background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 20%, transparent);
|
|
1968
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1969
|
+
background-color: color-mix(in oklab, var(--color-amber-500) 20%, transparent);
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1864
1974
|
.hover\\:bg-destructive\\/5 {
|
|
1865
1975
|
&:hover {
|
|
1866
1976
|
@media (hover: hover) {
|
|
@@ -1881,6 +1991,16 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1881
1991
|
}
|
|
1882
1992
|
}
|
|
1883
1993
|
}
|
|
1994
|
+
.hover\\:bg-info\\/20 {
|
|
1995
|
+
&:hover {
|
|
1996
|
+
@media (hover: hover) {
|
|
1997
|
+
background-color: var(--info);
|
|
1998
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1999
|
+
background-color: color-mix(in oklab, var(--info) 20%, transparent);
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
1884
2004
|
.hover\\:bg-primary\\/90 {
|
|
1885
2005
|
&:hover {
|
|
1886
2006
|
@media (hover: hover) {
|
|
@@ -1915,16 +2035,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1915
2035
|
}
|
|
1916
2036
|
}
|
|
1917
2037
|
}
|
|
1918
|
-
.focus\\:bg-accent {
|
|
1919
|
-
&:focus {
|
|
1920
|
-
background-color: var(--accent);
|
|
1921
|
-
}
|
|
1922
|
-
}
|
|
1923
|
-
.focus\\:text-accent-foreground {
|
|
1924
|
-
&:focus {
|
|
1925
|
-
color: var(--accent-foreground);
|
|
1926
|
-
}
|
|
1927
|
-
}
|
|
1928
2038
|
.focus\\:outline-none {
|
|
1929
2039
|
&:focus {
|
|
1930
2040
|
--tw-outline-style: none;
|
|
@@ -1982,6 +2092,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1982
2092
|
cursor: not-allowed;
|
|
1983
2093
|
}
|
|
1984
2094
|
}
|
|
2095
|
+
.disabled\\:opacity-50 {
|
|
2096
|
+
&:disabled {
|
|
2097
|
+
opacity: 50%;
|
|
2098
|
+
}
|
|
2099
|
+
}
|
|
1985
2100
|
.disabled\\:opacity-60 {
|
|
1986
2101
|
&:disabled {
|
|
1987
2102
|
opacity: 60%;
|
|
@@ -2015,11 +2130,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2015
2130
|
pointer-events: none;
|
|
2016
2131
|
}
|
|
2017
2132
|
}
|
|
2018
|
-
.data-\\[disabled\\]\\:opacity-60 {
|
|
2019
|
-
&[data-disabled] {
|
|
2020
|
-
opacity: 60%;
|
|
2021
|
-
}
|
|
2022
|
-
}
|
|
2023
2133
|
.data-\\[disabled\\]\\:opacity-64 {
|
|
2024
2134
|
&[data-disabled] {
|
|
2025
2135
|
opacity: 64%;
|
|
@@ -2058,7 +2168,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2058
2168
|
}
|
|
2059
2169
|
}
|
|
2060
2170
|
.dark\\:bg-amber-400\\/10 {
|
|
2061
|
-
&:is(.dark *) {
|
|
2171
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2062
2172
|
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 10%, transparent);
|
|
2063
2173
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2064
2174
|
background-color: color-mix(in oklab, var(--color-amber-400) 10%, transparent);
|
|
@@ -2066,7 +2176,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2066
2176
|
}
|
|
2067
2177
|
}
|
|
2068
2178
|
.dark\\:bg-blue-400\\/10 {
|
|
2069
|
-
&:is(.dark *) {
|
|
2179
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2070
2180
|
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 10%, transparent);
|
|
2071
2181
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2072
2182
|
background-color: color-mix(in oklab, var(--color-blue-400) 10%, transparent);
|
|
@@ -2074,7 +2184,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2074
2184
|
}
|
|
2075
2185
|
}
|
|
2076
2186
|
.dark\\:bg-cyan-400\\/10 {
|
|
2077
|
-
&:is(.dark *) {
|
|
2187
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2078
2188
|
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 10%, transparent);
|
|
2079
2189
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2080
2190
|
background-color: color-mix(in oklab, var(--color-cyan-400) 10%, transparent);
|
|
@@ -2082,7 +2192,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2082
2192
|
}
|
|
2083
2193
|
}
|
|
2084
2194
|
.dark\\:bg-destructive\\/20 {
|
|
2085
|
-
&:is(.dark *) {
|
|
2195
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2086
2196
|
background-color: var(--destructive);
|
|
2087
2197
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2088
2198
|
background-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
|
@@ -2090,7 +2200,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2090
2200
|
}
|
|
2091
2201
|
}
|
|
2092
2202
|
.dark\\:bg-emerald-400\\/10 {
|
|
2093
|
-
&:is(.dark *) {
|
|
2203
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2094
2204
|
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223) 10%, transparent);
|
|
2095
2205
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2096
2206
|
background-color: color-mix(in oklab, var(--color-emerald-400) 10%, transparent);
|
|
@@ -2098,7 +2208,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2098
2208
|
}
|
|
2099
2209
|
}
|
|
2100
2210
|
.dark\\:bg-fuchsia-400\\/10 {
|
|
2101
|
-
&:is(.dark *) {
|
|
2211
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2102
2212
|
background-color: color-mix(in srgb, oklch(74% 0.238 322.16) 10%, transparent);
|
|
2103
2213
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2104
2214
|
background-color: color-mix(in oklab, var(--color-fuchsia-400) 10%, transparent);
|
|
@@ -2106,7 +2216,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2106
2216
|
}
|
|
2107
2217
|
}
|
|
2108
2218
|
.dark\\:bg-info\\/20 {
|
|
2109
|
-
&:is(.dark *) {
|
|
2219
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2110
2220
|
background-color: var(--info);
|
|
2111
2221
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2112
2222
|
background-color: color-mix(in oklab, var(--info) 20%, transparent);
|
|
@@ -2114,7 +2224,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2114
2224
|
}
|
|
2115
2225
|
}
|
|
2116
2226
|
.dark\\:bg-input\\/30 {
|
|
2117
|
-
&:is(.dark *) {
|
|
2227
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2118
2228
|
background-color: var(--input);
|
|
2119
2229
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2120
2230
|
background-color: color-mix(in oklab, var(--input) 30%, transparent);
|
|
@@ -2122,7 +2232,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2122
2232
|
}
|
|
2123
2233
|
}
|
|
2124
2234
|
.dark\\:bg-rose-400\\/10 {
|
|
2125
|
-
&:is(.dark *) {
|
|
2235
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2126
2236
|
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 10%, transparent);
|
|
2127
2237
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2128
2238
|
background-color: color-mix(in oklab, var(--color-rose-400) 10%, transparent);
|
|
@@ -2130,7 +2240,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2130
2240
|
}
|
|
2131
2241
|
}
|
|
2132
2242
|
.dark\\:bg-slate-400\\/10 {
|
|
2133
|
-
&:is(.dark *) {
|
|
2243
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2134
2244
|
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 10%, transparent);
|
|
2135
2245
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2136
2246
|
background-color: color-mix(in oklab, var(--color-slate-400) 10%, transparent);
|
|
@@ -2138,7 +2248,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2138
2248
|
}
|
|
2139
2249
|
}
|
|
2140
2250
|
.dark\\:bg-success\\/20 {
|
|
2141
|
-
&:is(.dark *) {
|
|
2251
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2142
2252
|
background-color: var(--success);
|
|
2143
2253
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2144
2254
|
background-color: color-mix(in oklab, var(--success) 20%, transparent);
|
|
@@ -2146,7 +2256,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2146
2256
|
}
|
|
2147
2257
|
}
|
|
2148
2258
|
.dark\\:bg-violet-400\\/10 {
|
|
2149
|
-
&:is(.dark *) {
|
|
2259
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2150
2260
|
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 10%, transparent);
|
|
2151
2261
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2152
2262
|
background-color: color-mix(in oklab, var(--color-violet-400) 10%, transparent);
|
|
@@ -2154,135 +2264,212 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2154
2264
|
}
|
|
2155
2265
|
}
|
|
2156
2266
|
.dark\\:bg-warning\\/20 {
|
|
2157
|
-
&:is(.dark *) {
|
|
2267
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2158
2268
|
background-color: var(--warning);
|
|
2159
2269
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2160
2270
|
background-color: color-mix(in oklab, var(--warning) 20%, transparent);
|
|
2161
2271
|
}
|
|
2162
2272
|
}
|
|
2163
2273
|
}
|
|
2164
|
-
.dark\\:text-amber-
|
|
2165
|
-
&:is(.dark *) {
|
|
2166
|
-
color: var(--color-amber-
|
|
2274
|
+
.dark\\:text-amber-400 {
|
|
2275
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2276
|
+
color: var(--color-amber-400);
|
|
2277
|
+
}
|
|
2278
|
+
}
|
|
2279
|
+
.dark\\:text-amber-500 {
|
|
2280
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2281
|
+
color: var(--color-amber-500);
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
.dark\\:text-blue-400 {
|
|
2285
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2286
|
+
color: var(--color-blue-400);
|
|
2287
|
+
}
|
|
2288
|
+
}
|
|
2289
|
+
.dark\\:text-cyan-400 {
|
|
2290
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2291
|
+
color: var(--color-cyan-400);
|
|
2167
2292
|
}
|
|
2168
2293
|
}
|
|
2169
|
-
.dark\\:text-
|
|
2170
|
-
&:is(.dark *) {
|
|
2171
|
-
color: var(--color-
|
|
2294
|
+
.dark\\:text-emerald-400 {
|
|
2295
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2296
|
+
color: var(--color-emerald-400);
|
|
2172
2297
|
}
|
|
2173
2298
|
}
|
|
2174
|
-
.dark\\:text-
|
|
2175
|
-
&:is(.dark *) {
|
|
2176
|
-
color: var(--color-
|
|
2299
|
+
.dark\\:text-fuchsia-400 {
|
|
2300
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2301
|
+
color: var(--color-fuchsia-400);
|
|
2177
2302
|
}
|
|
2178
2303
|
}
|
|
2179
|
-
.dark\\:text-
|
|
2180
|
-
&:is(.dark *) {
|
|
2181
|
-
color: var(--color-
|
|
2304
|
+
.dark\\:text-rose-400 {
|
|
2305
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2306
|
+
color: var(--color-rose-400);
|
|
2307
|
+
}
|
|
2308
|
+
}
|
|
2309
|
+
.dark\\:text-slate-400 {
|
|
2310
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2311
|
+
color: var(--color-slate-400);
|
|
2312
|
+
}
|
|
2313
|
+
}
|
|
2314
|
+
.dark\\:text-violet-400 {
|
|
2315
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2316
|
+
color: var(--color-violet-400);
|
|
2317
|
+
}
|
|
2318
|
+
}
|
|
2319
|
+
.dark\\:inset-ring-amber-400\\/20 {
|
|
2320
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2321
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 20%, transparent);
|
|
2322
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2323
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-amber-400) 20%, transparent);
|
|
2324
|
+
}
|
|
2325
|
+
}
|
|
2326
|
+
}
|
|
2327
|
+
.dark\\:inset-ring-blue-400\\/30 {
|
|
2328
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2329
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 30%, transparent);
|
|
2330
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2331
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-blue-400) 30%, transparent);
|
|
2332
|
+
}
|
|
2333
|
+
}
|
|
2334
|
+
}
|
|
2335
|
+
.dark\\:inset-ring-cyan-400\\/30 {
|
|
2336
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2337
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 30%, transparent);
|
|
2338
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2339
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-cyan-400) 30%, transparent);
|
|
2340
|
+
}
|
|
2341
|
+
}
|
|
2342
|
+
}
|
|
2343
|
+
.dark\\:inset-ring-emerald-500\\/20 {
|
|
2344
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2345
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 20%, transparent);
|
|
2346
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2347
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-emerald-500) 20%, transparent);
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
.dark\\:inset-ring-fuchsia-400\\/20 {
|
|
2352
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2353
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(74% 0.238 322.16) 20%, transparent);
|
|
2354
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2355
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-fuchsia-400) 20%, transparent);
|
|
2356
|
+
}
|
|
2182
2357
|
}
|
|
2183
2358
|
}
|
|
2184
|
-
.dark\\:
|
|
2185
|
-
&:is(.dark *) {
|
|
2186
|
-
color:
|
|
2359
|
+
.dark\\:inset-ring-rose-400\\/20 {
|
|
2360
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2361
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 20%, transparent);
|
|
2362
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2363
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
2364
|
+
}
|
|
2187
2365
|
}
|
|
2188
2366
|
}
|
|
2189
|
-
.dark\\:
|
|
2190
|
-
&:is(.dark *) {
|
|
2191
|
-
color:
|
|
2367
|
+
.dark\\:inset-ring-slate-400\\/20 {
|
|
2368
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2369
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 20%, transparent);
|
|
2370
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2371
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
2372
|
+
}
|
|
2192
2373
|
}
|
|
2193
2374
|
}
|
|
2194
|
-
.dark\\:
|
|
2195
|
-
&:is(.dark *) {
|
|
2196
|
-
color:
|
|
2375
|
+
.dark\\:inset-ring-violet-400\\/30 {
|
|
2376
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2377
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 30%, transparent);
|
|
2378
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2379
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-violet-400) 30%, transparent);
|
|
2380
|
+
}
|
|
2197
2381
|
}
|
|
2198
2382
|
}
|
|
2199
|
-
.dark
|
|
2200
|
-
&:is(.dark *) {
|
|
2201
|
-
|
|
2383
|
+
.dark\\:\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/4\\%\\)\\] {
|
|
2384
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2385
|
+
--skeleton-highlight: color-mix(in srgb, #fff 4%, transparent);
|
|
2386
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2387
|
+
--skeleton-highlight: color-mix(in oklab, var(--color-white) 4%, transparent);
|
|
2388
|
+
}
|
|
2202
2389
|
}
|
|
2203
2390
|
}
|
|
2204
|
-
.dark\\:group-data-hover\\:bg-amber-400\\/
|
|
2205
|
-
&:is(.dark *) {
|
|
2391
|
+
.dark\\:group-data-hover\\:bg-amber-400\\/20 {
|
|
2392
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2206
2393
|
&:is(:where(.group)[data-hover] *) {
|
|
2207
|
-
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429)
|
|
2394
|
+
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 20%, transparent);
|
|
2208
2395
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2209
|
-
background-color: color-mix(in oklab, var(--color-amber-400)
|
|
2396
|
+
background-color: color-mix(in oklab, var(--color-amber-400) 20%, transparent);
|
|
2210
2397
|
}
|
|
2211
2398
|
}
|
|
2212
2399
|
}
|
|
2213
2400
|
}
|
|
2214
|
-
.dark\\:group-data-hover\\:bg-blue-400\\/
|
|
2215
|
-
&:is(.dark *) {
|
|
2401
|
+
.dark\\:group-data-hover\\:bg-blue-400\\/20 {
|
|
2402
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2216
2403
|
&:is(:where(.group)[data-hover] *) {
|
|
2217
|
-
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624)
|
|
2404
|
+
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 20%, transparent);
|
|
2218
2405
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2219
|
-
background-color: color-mix(in oklab, var(--color-blue-400)
|
|
2406
|
+
background-color: color-mix(in oklab, var(--color-blue-400) 20%, transparent);
|
|
2220
2407
|
}
|
|
2221
2408
|
}
|
|
2222
2409
|
}
|
|
2223
2410
|
}
|
|
2224
|
-
.dark\\:group-data-hover\\:bg-cyan-400\\/
|
|
2225
|
-
&:is(.dark *) {
|
|
2411
|
+
.dark\\:group-data-hover\\:bg-cyan-400\\/20 {
|
|
2412
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2226
2413
|
&:is(:where(.group)[data-hover] *) {
|
|
2227
|
-
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53)
|
|
2414
|
+
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 20%, transparent);
|
|
2228
2415
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2229
|
-
background-color: color-mix(in oklab, var(--color-cyan-400)
|
|
2416
|
+
background-color: color-mix(in oklab, var(--color-cyan-400) 20%, transparent);
|
|
2230
2417
|
}
|
|
2231
2418
|
}
|
|
2232
2419
|
}
|
|
2233
2420
|
}
|
|
2234
|
-
.dark\\:group-data-hover\\:bg-emerald-400\\/
|
|
2235
|
-
&:is(.dark *) {
|
|
2421
|
+
.dark\\:group-data-hover\\:bg-emerald-400\\/20 {
|
|
2422
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2236
2423
|
&:is(:where(.group)[data-hover] *) {
|
|
2237
|
-
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223)
|
|
2424
|
+
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223) 20%, transparent);
|
|
2238
2425
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2239
|
-
background-color: color-mix(in oklab, var(--color-emerald-400)
|
|
2426
|
+
background-color: color-mix(in oklab, var(--color-emerald-400) 20%, transparent);
|
|
2240
2427
|
}
|
|
2241
2428
|
}
|
|
2242
2429
|
}
|
|
2243
2430
|
}
|
|
2244
|
-
.dark\\:group-data-hover\\:bg-fuchsia-400\\/
|
|
2245
|
-
&:is(.dark *) {
|
|
2431
|
+
.dark\\:group-data-hover\\:bg-fuchsia-400\\/20 {
|
|
2432
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2246
2433
|
&:is(:where(.group)[data-hover] *) {
|
|
2247
|
-
background-color: color-mix(in srgb, oklch(74% 0.238 322.16)
|
|
2434
|
+
background-color: color-mix(in srgb, oklch(74% 0.238 322.16) 20%, transparent);
|
|
2248
2435
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2249
|
-
background-color: color-mix(in oklab, var(--color-fuchsia-400)
|
|
2436
|
+
background-color: color-mix(in oklab, var(--color-fuchsia-400) 20%, transparent);
|
|
2250
2437
|
}
|
|
2251
2438
|
}
|
|
2252
2439
|
}
|
|
2253
2440
|
}
|
|
2254
|
-
.dark\\:group-data-hover\\:bg-rose-400\\/
|
|
2255
|
-
&:is(.dark *) {
|
|
2441
|
+
.dark\\:group-data-hover\\:bg-rose-400\\/20 {
|
|
2442
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2256
2443
|
&:is(:where(.group)[data-hover] *) {
|
|
2257
|
-
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428)
|
|
2444
|
+
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 20%, transparent);
|
|
2258
2445
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2259
|
-
background-color: color-mix(in oklab, var(--color-rose-400)
|
|
2446
|
+
background-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
2260
2447
|
}
|
|
2261
2448
|
}
|
|
2262
2449
|
}
|
|
2263
2450
|
}
|
|
2264
|
-
.dark\\:group-data-hover\\:bg-slate-400\\/
|
|
2265
|
-
&:is(.dark *) {
|
|
2451
|
+
.dark\\:group-data-hover\\:bg-slate-400\\/20 {
|
|
2452
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2266
2453
|
&:is(:where(.group)[data-hover] *) {
|
|
2267
|
-
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788)
|
|
2454
|
+
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 20%, transparent);
|
|
2268
2455
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2269
|
-
background-color: color-mix(in oklab, var(--color-slate-400)
|
|
2456
|
+
background-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
2270
2457
|
}
|
|
2271
2458
|
}
|
|
2272
2459
|
}
|
|
2273
2460
|
}
|
|
2274
|
-
.dark\\:group-data-hover\\:bg-violet-400\\/
|
|
2275
|
-
&:is(.dark *) {
|
|
2461
|
+
.dark\\:group-data-hover\\:bg-violet-400\\/20 {
|
|
2462
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2276
2463
|
&:is(:where(.group)[data-hover] *) {
|
|
2277
|
-
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541)
|
|
2464
|
+
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 20%, transparent);
|
|
2278
2465
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2279
|
-
background-color: color-mix(in oklab, var(--color-violet-400)
|
|
2466
|
+
background-color: color-mix(in oklab, var(--color-violet-400) 20%, transparent);
|
|
2280
2467
|
}
|
|
2281
2468
|
}
|
|
2282
2469
|
}
|
|
2283
2470
|
}
|
|
2284
2471
|
.dark\\:before\\:shadow-\\[0_-1px_--theme\\(--color-white\\/6\\%\\)\\] {
|
|
2285
|
-
&:is(.dark *) {
|
|
2472
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2286
2473
|
&::before {
|
|
2287
2474
|
content: var(--tw-content);
|
|
2288
2475
|
--tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));
|
|
@@ -2320,6 +2507,66 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2320
2507
|
height: calc(var(--spacing) * 4);
|
|
2321
2508
|
}
|
|
2322
2509
|
}
|
|
2510
|
+
.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4\\.5 {
|
|
2511
|
+
& svg:not([class*='size-']) {
|
|
2512
|
+
width: calc(var(--spacing) * 4.5);
|
|
2513
|
+
height: calc(var(--spacing) * 4.5);
|
|
2514
|
+
}
|
|
2515
|
+
}
|
|
2516
|
+
.\\[\\&\\>svg\\]\\:pointer-events-none {
|
|
2517
|
+
&>svg {
|
|
2518
|
+
pointer-events: none;
|
|
2519
|
+
}
|
|
2520
|
+
}
|
|
2521
|
+
.\\[\\&\\>svg\\]\\:-mx-0\\.5 {
|
|
2522
|
+
&>svg {
|
|
2523
|
+
margin-inline: calc(var(--spacing) * -0.5);
|
|
2524
|
+
}
|
|
2525
|
+
}
|
|
2526
|
+
.\\[\\&\\>svg\\]\\:shrink-0 {
|
|
2527
|
+
&>svg {
|
|
2528
|
+
flex-shrink: 0;
|
|
2529
|
+
}
|
|
2530
|
+
}
|
|
2531
|
+
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'opacity-\\'\\]\\)\\]\\:opacity-80 {
|
|
2532
|
+
&>svg:not([class*='opacity-']) {
|
|
2533
|
+
opacity: 80%;
|
|
2534
|
+
}
|
|
2535
|
+
}
|
|
2536
|
+
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {
|
|
2537
|
+
&>svg:not([class*='size-']) {
|
|
2538
|
+
width: calc(var(--spacing) * 4);
|
|
2539
|
+
height: calc(var(--spacing) * 4);
|
|
2540
|
+
}
|
|
2541
|
+
}
|
|
2542
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:bg-accent {
|
|
2543
|
+
[data-kbd-nav] & {
|
|
2544
|
+
&:focus-within {
|
|
2545
|
+
background-color: var(--accent);
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
}
|
|
2549
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:text-accent-foreground {
|
|
2550
|
+
[data-kbd-nav] & {
|
|
2551
|
+
&:focus-within {
|
|
2552
|
+
color: var(--accent-foreground);
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
}
|
|
2556
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus\\:bg-accent {
|
|
2557
|
+
[data-kbd-nav] & {
|
|
2558
|
+
&:focus {
|
|
2559
|
+
background-color: var(--accent);
|
|
2560
|
+
}
|
|
2561
|
+
}
|
|
2562
|
+
}
|
|
2563
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus\\:text-accent-foreground {
|
|
2564
|
+
[data-kbd-nav] & {
|
|
2565
|
+
&:focus {
|
|
2566
|
+
color: var(--accent-foreground);
|
|
2567
|
+
}
|
|
2568
|
+
}
|
|
2569
|
+
}
|
|
2323
2570
|
}
|
|
2324
2571
|
@layer base {
|
|
2325
2572
|
*, ::after, ::before {
|
|
@@ -2327,6 +2574,30 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2327
2574
|
}
|
|
2328
2575
|
}
|
|
2329
2576
|
@layer components {
|
|
2577
|
+
[data-highlighted] {
|
|
2578
|
+
background-color: var(--accent);
|
|
2579
|
+
color: var(--accent-foreground);
|
|
2580
|
+
transition: background-color 150ms ease-out;
|
|
2581
|
+
}
|
|
2582
|
+
[data-kbd-nav] [data-highlighted]:not([data-kbd-highlighted]) {
|
|
2583
|
+
background-color: transparent;
|
|
2584
|
+
color: inherit;
|
|
2585
|
+
}
|
|
2586
|
+
[data-kbd-highlighted] {
|
|
2587
|
+
background-color: var(--accent);
|
|
2588
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2589
|
+
background-color: color-mix(in srgb, var(--accent) 200%, transparent);
|
|
2590
|
+
}
|
|
2591
|
+
color: var(--accent-foreground);
|
|
2592
|
+
}
|
|
2593
|
+
.uidex-item-interactive:hover {
|
|
2594
|
+
background-color: var(--accent);
|
|
2595
|
+
color: var(--accent-foreground);
|
|
2596
|
+
}
|
|
2597
|
+
[data-kbd-nav] .uidex-item-interactive:hover:not(:focus):not(:focus-within) {
|
|
2598
|
+
background-color: transparent;
|
|
2599
|
+
color: inherit;
|
|
2600
|
+
}
|
|
2330
2601
|
.uidex-scrollbar {
|
|
2331
2602
|
scrollbar-width: thin;
|
|
2332
2603
|
scrollbar-color: var(--muted-foreground) transparent;
|
|
@@ -2360,6 +2631,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2360
2631
|
background: transparent;
|
|
2361
2632
|
}
|
|
2362
2633
|
}
|
|
2634
|
+
@keyframes skeleton {
|
|
2635
|
+
to {
|
|
2636
|
+
background-position: -200% 0;
|
|
2637
|
+
}
|
|
2638
|
+
}
|
|
2363
2639
|
:where(:host, :root) {
|
|
2364
2640
|
--background: color-mix(
|
|
2365
2641
|
in srgb,
|
|
@@ -2495,6 +2771,36 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2495
2771
|
--warning: var(--color-amber-500);
|
|
2496
2772
|
--warning-foreground: var(--color-amber-700);
|
|
2497
2773
|
}
|
|
2774
|
+
@property --tw-translate-x {
|
|
2775
|
+
syntax: "*";
|
|
2776
|
+
inherits: false;
|
|
2777
|
+
initial-value: 0;
|
|
2778
|
+
}
|
|
2779
|
+
@property --tw-translate-y {
|
|
2780
|
+
syntax: "*";
|
|
2781
|
+
inherits: false;
|
|
2782
|
+
initial-value: 0;
|
|
2783
|
+
}
|
|
2784
|
+
@property --tw-translate-z {
|
|
2785
|
+
syntax: "*";
|
|
2786
|
+
inherits: false;
|
|
2787
|
+
initial-value: 0;
|
|
2788
|
+
}
|
|
2789
|
+
@property --tw-scale-x {
|
|
2790
|
+
syntax: "*";
|
|
2791
|
+
inherits: false;
|
|
2792
|
+
initial-value: 1;
|
|
2793
|
+
}
|
|
2794
|
+
@property --tw-scale-y {
|
|
2795
|
+
syntax: "*";
|
|
2796
|
+
inherits: false;
|
|
2797
|
+
initial-value: 1;
|
|
2798
|
+
}
|
|
2799
|
+
@property --tw-scale-z {
|
|
2800
|
+
syntax: "*";
|
|
2801
|
+
inherits: false;
|
|
2802
|
+
initial-value: 1;
|
|
2803
|
+
}
|
|
2498
2804
|
@property --tw-rotate-x {
|
|
2499
2805
|
syntax: "*";
|
|
2500
2806
|
inherits: false;
|
|
@@ -2532,6 +2838,26 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2532
2838
|
syntax: "*";
|
|
2533
2839
|
inherits: false;
|
|
2534
2840
|
}
|
|
2841
|
+
@property --tw-ordinal {
|
|
2842
|
+
syntax: "*";
|
|
2843
|
+
inherits: false;
|
|
2844
|
+
}
|
|
2845
|
+
@property --tw-slashed-zero {
|
|
2846
|
+
syntax: "*";
|
|
2847
|
+
inherits: false;
|
|
2848
|
+
}
|
|
2849
|
+
@property --tw-numeric-figure {
|
|
2850
|
+
syntax: "*";
|
|
2851
|
+
inherits: false;
|
|
2852
|
+
}
|
|
2853
|
+
@property --tw-numeric-spacing {
|
|
2854
|
+
syntax: "*";
|
|
2855
|
+
inherits: false;
|
|
2856
|
+
}
|
|
2857
|
+
@property --tw-numeric-fraction {
|
|
2858
|
+
syntax: "*";
|
|
2859
|
+
inherits: false;
|
|
2860
|
+
}
|
|
2535
2861
|
@property --tw-shadow {
|
|
2536
2862
|
syntax: "*";
|
|
2537
2863
|
inherits: false;
|
|
@@ -2700,9 +3026,20 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2700
3026
|
initial-value: "";
|
|
2701
3027
|
inherits: false;
|
|
2702
3028
|
}
|
|
3029
|
+
@keyframes spin {
|
|
3030
|
+
to {
|
|
3031
|
+
transform: rotate(360deg);
|
|
3032
|
+
}
|
|
3033
|
+
}
|
|
2703
3034
|
@layer properties {
|
|
2704
3035
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
2705
3036
|
*, ::before, ::after, ::backdrop {
|
|
3037
|
+
--tw-translate-x: 0;
|
|
3038
|
+
--tw-translate-y: 0;
|
|
3039
|
+
--tw-translate-z: 0;
|
|
3040
|
+
--tw-scale-x: 1;
|
|
3041
|
+
--tw-scale-y: 1;
|
|
3042
|
+
--tw-scale-z: 1;
|
|
2706
3043
|
--tw-rotate-x: initial;
|
|
2707
3044
|
--tw-rotate-y: initial;
|
|
2708
3045
|
--tw-rotate-z: initial;
|
|
@@ -2712,6 +3049,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2712
3049
|
--tw-leading: initial;
|
|
2713
3050
|
--tw-font-weight: initial;
|
|
2714
3051
|
--tw-tracking: initial;
|
|
3052
|
+
--tw-ordinal: initial;
|
|
3053
|
+
--tw-slashed-zero: initial;
|
|
3054
|
+
--tw-numeric-figure: initial;
|
|
3055
|
+
--tw-numeric-spacing: initial;
|
|
3056
|
+
--tw-numeric-fraction: initial;
|
|
2715
3057
|
--tw-shadow: 0 0 #0000;
|
|
2716
3058
|
--tw-shadow-color: initial;
|
|
2717
3059
|
--tw-shadow-alpha: 100%;
|
|
@@ -2756,12 +3098,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2756
3098
|
}
|
|
2757
3099
|
`;
|
|
2758
3100
|
|
|
2759
|
-
// src/surface/constants.ts
|
|
3101
|
+
// src/browser/surface/constants.ts
|
|
2760
3102
|
var SURFACE_HOST_CLASS = "uidex-surface-host";
|
|
2761
3103
|
var SURFACE_CONTAINER_CLASS = "uidex-container";
|
|
2762
|
-
var Z_BASE =
|
|
2763
|
-
var Z_OVERLAY =
|
|
2764
|
-
var Z_CHROME =
|
|
3104
|
+
var Z_BASE = 2147483630;
|
|
3105
|
+
var Z_OVERLAY = 2147483635;
|
|
3106
|
+
var Z_CHROME = 2147483645;
|
|
2765
3107
|
var SURFACE_IGNORE_SELECTOR = `.${SURFACE_HOST_CLASS},.${SURFACE_CONTAINER_CLASS}`;
|
|
2766
3108
|
var UIDEX_ATTR_TO_KIND = [
|
|
2767
3109
|
["data-uidex", "element"],
|
|
@@ -2770,7 +3112,7 @@ var UIDEX_ATTR_TO_KIND = [
|
|
|
2770
3112
|
["data-uidex-primitive", "primitive"]
|
|
2771
3113
|
];
|
|
2772
3114
|
|
|
2773
|
-
// src/surface/host.ts
|
|
3115
|
+
// src/browser/surface/host.ts
|
|
2774
3116
|
function createSurfaceHost(options) {
|
|
2775
3117
|
const { mount, stylesheets = [], initialTheme = "light" } = options;
|
|
2776
3118
|
const hostEl = document.createElement("div");
|
|
@@ -2784,6 +3126,8 @@ function createSurfaceHost(options) {
|
|
|
2784
3126
|
applyStylesheets(shadow, [tailwind_built_default, ...stylesheets]);
|
|
2785
3127
|
const chromeEl = document.createElement("div");
|
|
2786
3128
|
chromeEl.classList.add("uidex-chrome");
|
|
3129
|
+
chromeEl.style.position = "relative";
|
|
3130
|
+
chromeEl.style.zIndex = String(Z_CHROME);
|
|
2787
3131
|
chromeEl.style.pointerEvents = "auto";
|
|
2788
3132
|
shadow.appendChild(chromeEl);
|
|
2789
3133
|
mount.appendChild(hostEl);
|
|
@@ -2831,29 +3175,29 @@ function supportsConstructableStylesheets(shadow) {
|
|
|
2831
3175
|
}
|
|
2832
3176
|
}
|
|
2833
3177
|
|
|
2834
|
-
// src/surface/cursor-tooltip.ts
|
|
3178
|
+
// src/browser/surface/cursor-tooltip.ts
|
|
2835
3179
|
var import_lucide2 = require("lucide");
|
|
2836
3180
|
var DEFAULT_TOOLTIP_COLOR = "#34d399";
|
|
2837
3181
|
var TOOLTIP_OFFSET = 16;
|
|
2838
3182
|
var ARROW_SIZE = 5;
|
|
2839
3183
|
function createCursorTooltip(deps) {
|
|
2840
3184
|
const { container } = deps;
|
|
2841
|
-
const
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
3185
|
+
const el2 = document.createElement("div");
|
|
3186
|
+
el2.setAttribute("data-uidex-cursor-tooltip", "");
|
|
3187
|
+
el2.style.position = "fixed";
|
|
3188
|
+
el2.style.pointerEvents = "none";
|
|
3189
|
+
el2.style.zIndex = String(Z_CHROME);
|
|
3190
|
+
el2.style.padding = "4px 8px";
|
|
3191
|
+
el2.style.fontSize = "12px";
|
|
3192
|
+
el2.style.fontFamily = "ui-sans-serif, system-ui, sans-serif";
|
|
3193
|
+
el2.style.borderRadius = "6px";
|
|
3194
|
+
el2.style.background = DEFAULT_TOOLTIP_COLOR;
|
|
3195
|
+
el2.style.color = "#0a0a0a";
|
|
3196
|
+
el2.style.display = "none";
|
|
3197
|
+
el2.style.whiteSpace = "nowrap";
|
|
3198
|
+
el2.style.transform = "translate(-50%, 0)";
|
|
3199
|
+
el2.style.alignItems = "center";
|
|
3200
|
+
el2.style.gap = "6px";
|
|
2857
3201
|
const arrow = document.createElement("div");
|
|
2858
3202
|
arrow.setAttribute("data-uidex-cursor-tooltip-arrow", "");
|
|
2859
3203
|
arrow.style.position = "absolute";
|
|
@@ -2865,18 +3209,18 @@ function createCursorTooltip(deps) {
|
|
|
2865
3209
|
arrow.style.borderLeft = `${ARROW_SIZE}px solid transparent`;
|
|
2866
3210
|
arrow.style.borderRight = `${ARROW_SIZE}px solid transparent`;
|
|
2867
3211
|
arrow.style.borderBottom = `${ARROW_SIZE}px solid ${DEFAULT_TOOLTIP_COLOR}`;
|
|
2868
|
-
|
|
3212
|
+
el2.appendChild(arrow);
|
|
2869
3213
|
const body = document.createElement("span");
|
|
2870
3214
|
body.setAttribute("data-uidex-cursor-tooltip-body", "");
|
|
2871
3215
|
body.style.display = "inline-flex";
|
|
2872
3216
|
body.style.alignItems = "center";
|
|
2873
3217
|
body.style.gap = "6px";
|
|
2874
|
-
|
|
2875
|
-
container.appendChild(
|
|
3218
|
+
el2.appendChild(body);
|
|
3219
|
+
container.appendChild(el2);
|
|
2876
3220
|
let currentContent = null;
|
|
2877
3221
|
let currentCursor = null;
|
|
2878
3222
|
const applyColor = (color) => {
|
|
2879
|
-
|
|
3223
|
+
el2.style.background = color;
|
|
2880
3224
|
arrow.style.borderBottom = `${ARROW_SIZE}px solid ${color}`;
|
|
2881
3225
|
};
|
|
2882
3226
|
const renderBody = () => {
|
|
@@ -2889,7 +3233,9 @@ function createCursorTooltip(deps) {
|
|
|
2889
3233
|
if (!currentContent) return;
|
|
2890
3234
|
const { entity, node } = currentContent;
|
|
2891
3235
|
const style = KIND_STYLE[entity.kind];
|
|
3236
|
+
const demoted = entity.kind === "primitive";
|
|
2892
3237
|
applyColor(style?.color ?? DEFAULT_TOOLTIP_COLOR);
|
|
3238
|
+
el2.style.opacity = demoted ? "0.55" : "1";
|
|
2893
3239
|
if (style) {
|
|
2894
3240
|
const svg = (0, import_lucide2.createElement)(style.icon);
|
|
2895
3241
|
svg.setAttribute("aria-hidden", "true");
|
|
@@ -2900,26 +3246,28 @@ function createCursorTooltip(deps) {
|
|
|
2900
3246
|
}
|
|
2901
3247
|
const label = displayName(entity, node);
|
|
2902
3248
|
body.append(document.createTextNode(label));
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
3249
|
+
if (currentContent.layer) {
|
|
3250
|
+
const counter = document.createElement("span");
|
|
3251
|
+
counter.setAttribute("data-uidex-cursor-tooltip-layer", "");
|
|
3252
|
+
counter.style.fontFamily = "ui-monospace, SFMono-Regular, Menlo, monospace";
|
|
3253
|
+
counter.style.fontSize = "10px";
|
|
3254
|
+
counter.style.lineHeight = "1";
|
|
3255
|
+
counter.style.padding = "2px 5px";
|
|
3256
|
+
counter.style.borderRadius = "4px";
|
|
3257
|
+
counter.style.background = "rgba(0,0,0,0.18)";
|
|
3258
|
+
counter.textContent = `${currentContent.layer.index + 1}/${currentContent.layer.total}`;
|
|
3259
|
+
body.append(counter);
|
|
2912
3260
|
}
|
|
2913
3261
|
};
|
|
2914
3262
|
const render = () => {
|
|
2915
3263
|
if (!currentContent || !currentCursor) {
|
|
2916
|
-
|
|
3264
|
+
el2.style.display = "none";
|
|
2917
3265
|
return;
|
|
2918
3266
|
}
|
|
2919
3267
|
renderBody();
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
3268
|
+
el2.style.display = "inline-flex";
|
|
3269
|
+
el2.style.left = `${currentCursor.x}px`;
|
|
3270
|
+
el2.style.top = `${currentCursor.y + TOOLTIP_OFFSET}px`;
|
|
2923
3271
|
};
|
|
2924
3272
|
return {
|
|
2925
3273
|
update(content, cursor) {
|
|
@@ -2928,14 +3276,14 @@ function createCursorTooltip(deps) {
|
|
|
2928
3276
|
render();
|
|
2929
3277
|
},
|
|
2930
3278
|
destroy() {
|
|
2931
|
-
|
|
3279
|
+
el2.remove();
|
|
2932
3280
|
currentContent = null;
|
|
2933
3281
|
currentCursor = null;
|
|
2934
3282
|
}
|
|
2935
3283
|
};
|
|
2936
3284
|
}
|
|
2937
3285
|
|
|
2938
|
-
// src/surface/inspector.ts
|
|
3286
|
+
// src/browser/surface/inspector.ts
|
|
2939
3287
|
function entityForRef(ref, registry) {
|
|
2940
3288
|
if (registry) {
|
|
2941
3289
|
const found = registry.get(ref.kind, ref.id);
|
|
@@ -2943,70 +3291,108 @@ function entityForRef(ref, registry) {
|
|
|
2943
3291
|
}
|
|
2944
3292
|
if (ref.kind === "route") return { kind: "route", path: ref.id, page: ref.id };
|
|
2945
3293
|
if (ref.kind === "flow") {
|
|
2946
|
-
return {
|
|
3294
|
+
return {
|
|
3295
|
+
kind: "flow",
|
|
3296
|
+
id: ref.id,
|
|
3297
|
+
loc: { file: "" },
|
|
3298
|
+
touches: [],
|
|
3299
|
+
steps: []
|
|
3300
|
+
};
|
|
2947
3301
|
}
|
|
2948
3302
|
return { kind: ref.kind, id: ref.id };
|
|
2949
3303
|
}
|
|
2950
|
-
function
|
|
2951
|
-
if (target.closest(SURFACE_IGNORE_SELECTOR)) return
|
|
3304
|
+
function defaultResolveAllMatches(target, registry) {
|
|
3305
|
+
if (target.closest(SURFACE_IGNORE_SELECTOR)) return [];
|
|
3306
|
+
const semantic = [];
|
|
3307
|
+
const primitives = [];
|
|
3308
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2952
3309
|
let node = target;
|
|
2953
3310
|
while (node) {
|
|
2954
3311
|
if (node instanceof HTMLElement) {
|
|
2955
3312
|
for (const [attr, kind] of UIDEX_ATTR_TO_KIND) {
|
|
2956
3313
|
const id = node.getAttribute(attr);
|
|
2957
3314
|
if (id) {
|
|
2958
|
-
const
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
ref,
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
3315
|
+
const key = `${kind}:${id}`;
|
|
3316
|
+
if (!seen.has(key)) {
|
|
3317
|
+
seen.add(key);
|
|
3318
|
+
const ref = { kind, id };
|
|
3319
|
+
const entity = entityForRef(ref, registry);
|
|
3320
|
+
const match = {
|
|
3321
|
+
element: node,
|
|
3322
|
+
ref,
|
|
3323
|
+
entity,
|
|
3324
|
+
label: displayName(entity, node)
|
|
3325
|
+
};
|
|
3326
|
+
if (kind === "primitive") {
|
|
3327
|
+
primitives.push(match);
|
|
3328
|
+
} else {
|
|
3329
|
+
semantic.push(match);
|
|
3330
|
+
}
|
|
3331
|
+
}
|
|
2966
3332
|
}
|
|
2967
3333
|
}
|
|
2968
3334
|
}
|
|
2969
3335
|
node = node.parentElement;
|
|
2970
3336
|
}
|
|
2971
|
-
return
|
|
3337
|
+
return semantic.concat(primitives);
|
|
2972
3338
|
}
|
|
2973
3339
|
function createInspector(options) {
|
|
2974
3340
|
const {
|
|
2975
3341
|
session,
|
|
2976
3342
|
registry,
|
|
2977
|
-
|
|
3343
|
+
resolveAll = (target) => defaultResolveAllMatches(target, registry),
|
|
2978
3344
|
onHover,
|
|
2979
|
-
onSelect
|
|
3345
|
+
onSelect,
|
|
3346
|
+
onCycle
|
|
2980
3347
|
} = options;
|
|
2981
3348
|
let mounted = false;
|
|
2982
3349
|
let currentEl = null;
|
|
2983
3350
|
let cursorStyleEl = null;
|
|
3351
|
+
let stack = [];
|
|
3352
|
+
let layerIndex = 0;
|
|
3353
|
+
let lastCursor = { x: 0, y: 0 };
|
|
3354
|
+
const makeStack = () => stack.length > 0 ? { matches: stack, index: layerIndex, current: stack[layerIndex] } : null;
|
|
2984
3355
|
const onMouseMove = (e) => {
|
|
2985
3356
|
if (!(e.target instanceof Element)) return;
|
|
2986
|
-
const
|
|
3357
|
+
const matches = resolveAll(e.target);
|
|
2987
3358
|
const cursor = { x: e.clientX, y: e.clientY };
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
3359
|
+
lastCursor = cursor;
|
|
3360
|
+
const topEl = matches.length > 0 ? matches[0].element : null;
|
|
3361
|
+
if (topEl) {
|
|
3362
|
+
if (topEl !== currentEl) {
|
|
3363
|
+
currentEl = topEl;
|
|
3364
|
+
stack = matches;
|
|
3365
|
+
layerIndex = 0;
|
|
3366
|
+
session.highlight.hover(stack[0].ref);
|
|
2992
3367
|
}
|
|
2993
|
-
onHover?.(
|
|
3368
|
+
onHover?.(makeStack(), cursor);
|
|
2994
3369
|
} else if (currentEl) {
|
|
2995
3370
|
currentEl = null;
|
|
2996
|
-
|
|
3371
|
+
stack = [];
|
|
3372
|
+
layerIndex = 0;
|
|
3373
|
+
session.highlight.unhover();
|
|
2997
3374
|
onHover?.(null, cursor);
|
|
2998
3375
|
}
|
|
2999
3376
|
};
|
|
3000
3377
|
const onClick = (e) => {
|
|
3001
3378
|
if (!(e.target instanceof Element)) return;
|
|
3002
3379
|
if (e.target.closest(SURFACE_IGNORE_SELECTOR)) return;
|
|
3003
|
-
|
|
3004
|
-
if (!match) return;
|
|
3380
|
+
if (stack.length === 0) return;
|
|
3005
3381
|
e.preventDefault();
|
|
3006
3382
|
e.stopPropagation();
|
|
3007
|
-
|
|
3383
|
+
const match = stack[layerIndex];
|
|
3384
|
+
session.select(match.ref);
|
|
3008
3385
|
onSelect?.(match, { x: e.clientX, y: e.clientY });
|
|
3009
3386
|
};
|
|
3387
|
+
const onContextMenu = (e) => {
|
|
3388
|
+
if (stack.length <= 1) return;
|
|
3389
|
+
e.preventDefault();
|
|
3390
|
+
e.stopPropagation();
|
|
3391
|
+
layerIndex = (layerIndex + 1) % stack.length;
|
|
3392
|
+
const match = stack[layerIndex];
|
|
3393
|
+
session.highlight.hover(match.ref);
|
|
3394
|
+
onCycle?.(makeStack(), lastCursor);
|
|
3395
|
+
};
|
|
3010
3396
|
return {
|
|
3011
3397
|
mount() {
|
|
3012
3398
|
if (mounted) return;
|
|
@@ -3019,124 +3405,354 @@ function createInspector(options) {
|
|
|
3019
3405
|
}
|
|
3020
3406
|
document.addEventListener("mousemove", onMouseMove);
|
|
3021
3407
|
document.addEventListener("click", onClick, true);
|
|
3408
|
+
document.addEventListener("contextmenu", onContextMenu, true);
|
|
3022
3409
|
},
|
|
3023
3410
|
destroy() {
|
|
3024
3411
|
if (!mounted) return;
|
|
3025
3412
|
mounted = false;
|
|
3026
3413
|
currentEl = null;
|
|
3414
|
+
stack = [];
|
|
3415
|
+
layerIndex = 0;
|
|
3027
3416
|
if (cursorStyleEl) {
|
|
3028
3417
|
cursorStyleEl.remove();
|
|
3029
3418
|
cursorStyleEl = null;
|
|
3030
3419
|
}
|
|
3031
3420
|
document.removeEventListener("mousemove", onMouseMove);
|
|
3032
3421
|
document.removeEventListener("click", onClick, true);
|
|
3033
|
-
|
|
3422
|
+
document.removeEventListener("contextmenu", onContextMenu, true);
|
|
3423
|
+
session.highlight.unhover();
|
|
3034
3424
|
onHover?.(null, null);
|
|
3035
3425
|
}
|
|
3036
3426
|
};
|
|
3037
3427
|
}
|
|
3038
3428
|
|
|
3039
|
-
// src/surface/menu-bar.ts
|
|
3429
|
+
// src/browser/surface/menu-bar.ts
|
|
3430
|
+
var import_lucide3 = require("lucide");
|
|
3431
|
+
|
|
3432
|
+
// src/browser/internal/cn.ts
|
|
3433
|
+
var import_clsx = require("clsx");
|
|
3434
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
3435
|
+
function cn(...inputs) {
|
|
3436
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
3437
|
+
}
|
|
3438
|
+
|
|
3439
|
+
// src/browser/internal/el.ts
|
|
3440
|
+
function el(tag, options = {}, children = []) {
|
|
3441
|
+
const node = document.createElement(tag);
|
|
3442
|
+
if (options.class) node.className = cn(options.class);
|
|
3443
|
+
if (options.attrs) {
|
|
3444
|
+
for (const [key, value] of Object.entries(options.attrs)) {
|
|
3445
|
+
if (value === void 0 || value === null || value === false) continue;
|
|
3446
|
+
if (value === true) {
|
|
3447
|
+
node.setAttribute(key, "");
|
|
3448
|
+
} else {
|
|
3449
|
+
node.setAttribute(key, String(value));
|
|
3450
|
+
}
|
|
3451
|
+
}
|
|
3452
|
+
}
|
|
3453
|
+
if (options.dataset) {
|
|
3454
|
+
for (const [key, value] of Object.entries(options.dataset)) {
|
|
3455
|
+
node.dataset[key] = value;
|
|
3456
|
+
}
|
|
3457
|
+
}
|
|
3458
|
+
if (options.style) {
|
|
3459
|
+
Object.assign(node.style, options.style);
|
|
3460
|
+
}
|
|
3461
|
+
if (options.text !== void 0) {
|
|
3462
|
+
node.textContent = options.text;
|
|
3463
|
+
}
|
|
3464
|
+
const list = Array.isArray(children) ? children : [children];
|
|
3465
|
+
for (const child of list) {
|
|
3466
|
+
if (child === null || child === void 0 || child === false) continue;
|
|
3467
|
+
node.append(
|
|
3468
|
+
typeof child === "string" ? document.createTextNode(child) : child
|
|
3469
|
+
);
|
|
3470
|
+
}
|
|
3471
|
+
return node;
|
|
3472
|
+
}
|
|
3473
|
+
|
|
3474
|
+
// src/browser/surface/keys.ts
|
|
3475
|
+
var INSPECT_SHORTCUT = { key: "i" };
|
|
3476
|
+
function formatShortcutLabel(shortcut) {
|
|
3477
|
+
const parts = [];
|
|
3478
|
+
if (shortcut.mod !== false) parts.push("\u2318");
|
|
3479
|
+
if (shortcut.shift) parts.push("\u21E7");
|
|
3480
|
+
parts.push(shortcut.key.toUpperCase());
|
|
3481
|
+
return parts.join("");
|
|
3482
|
+
}
|
|
3483
|
+
|
|
3484
|
+
// src/browser/surface/menu-bar.ts
|
|
3485
|
+
var ROOT_CLASS = "inline-flex items-center gap-1.5 rounded-xl border border-border bg-popover p-1.5 font-sans text-xs text-popover-foreground shadow-lg/5 select-none not-dark:bg-clip-padding before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-xl)-1px)] before:bg-muted/72 before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]";
|
|
3486
|
+
var BUTTON_CLASS = "relative z-1 inline-flex size-6 shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring";
|
|
3487
|
+
var BUTTON_ACTIVE_CLASS = "border-info/40 bg-info/15 text-info-foreground hover:bg-info/20";
|
|
3488
|
+
var TITLE_CLASS = "relative z-1 whitespace-nowrap px-1.5 text-xs font-semibold tracking-tight text-foreground";
|
|
3489
|
+
var BUTTON_HIGHLIGHT_ACTIVE_CLASS = "border-amber-500/40 bg-amber-500/15 text-amber-600 hover:bg-amber-500/20 dark:text-amber-400";
|
|
3040
3490
|
function createMenuBar(options) {
|
|
3041
3491
|
const {
|
|
3042
3492
|
container,
|
|
3043
3493
|
session,
|
|
3044
3494
|
initialCorner = "bottom-right",
|
|
3045
|
-
appTitle
|
|
3495
|
+
appTitle,
|
|
3496
|
+
channel = null,
|
|
3497
|
+
pinLayer: initialPinLayer = null
|
|
3046
3498
|
} = options;
|
|
3047
|
-
|
|
3048
|
-
root
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
color: "#f5f5f5",
|
|
3061
|
-
fontFamily: "ui-sans-serif, system-ui, sans-serif",
|
|
3062
|
-
fontSize: "12px",
|
|
3063
|
-
userSelect: "none",
|
|
3064
|
-
cursor: "grab"
|
|
3499
|
+
let activePinLayer = initialPinLayer;
|
|
3500
|
+
const root = el("div", {
|
|
3501
|
+
class: ROOT_CLASS,
|
|
3502
|
+
attrs: {
|
|
3503
|
+
"data-uidex-menubar": "",
|
|
3504
|
+
role: "toolbar"
|
|
3505
|
+
},
|
|
3506
|
+
style: {
|
|
3507
|
+
position: "fixed",
|
|
3508
|
+
zIndex: String(Z_CHROME),
|
|
3509
|
+
pointerEvents: "auto",
|
|
3510
|
+
cursor: "grab"
|
|
3511
|
+
}
|
|
3065
3512
|
});
|
|
3066
|
-
|
|
3067
|
-
background: "rgba(255,255,255,0.08)",
|
|
3068
|
-
color: "inherit",
|
|
3069
|
-
border: "1px solid rgba(255,255,255,0.12)",
|
|
3070
|
-
borderRadius: "6px",
|
|
3071
|
-
padding: "4px 8px",
|
|
3072
|
-
font: "inherit",
|
|
3073
|
-
cursor: "pointer"
|
|
3074
|
-
};
|
|
3075
|
-
const buttonActiveStyle = {
|
|
3076
|
-
background: "rgba(120, 180, 255, 0.28)",
|
|
3077
|
-
borderColor: "rgba(120, 180, 255, 0.55)"
|
|
3078
|
-
};
|
|
3513
|
+
let titleEl = null;
|
|
3079
3514
|
if (appTitle) {
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
padding: "0 6px 0 4px",
|
|
3085
|
-
fontWeight: "600",
|
|
3086
|
-
letterSpacing: "0.01em",
|
|
3087
|
-
whiteSpace: "nowrap"
|
|
3515
|
+
titleEl = el("span", {
|
|
3516
|
+
class: TITLE_CLASS,
|
|
3517
|
+
attrs: { "data-uidex-menubar-title": "" },
|
|
3518
|
+
text: appTitle
|
|
3088
3519
|
});
|
|
3089
3520
|
root.appendChild(titleEl);
|
|
3090
3521
|
}
|
|
3091
|
-
const
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3522
|
+
const highlightIcon = (0, import_lucide3.createElement)(import_lucide3.Highlighter);
|
|
3523
|
+
highlightIcon.setAttribute("class", "size-3.5");
|
|
3524
|
+
highlightIcon.setAttribute("aria-hidden", "true");
|
|
3525
|
+
const highlightBtn = el(
|
|
3526
|
+
"button",
|
|
3527
|
+
{
|
|
3528
|
+
class: BUTTON_CLASS,
|
|
3529
|
+
attrs: {
|
|
3530
|
+
type: "button",
|
|
3531
|
+
"data-uidex-menubar-highlight": "",
|
|
3532
|
+
"aria-label": "Dismiss highlight"
|
|
3533
|
+
}
|
|
3534
|
+
},
|
|
3535
|
+
highlightIcon
|
|
3536
|
+
);
|
|
3537
|
+
highlightBtn.hidden = true;
|
|
3538
|
+
highlightBtn.addEventListener("click", (e) => {
|
|
3539
|
+
e.stopPropagation();
|
|
3540
|
+
session.highlight.unpin();
|
|
3104
3541
|
});
|
|
3105
|
-
root.appendChild(
|
|
3106
|
-
const
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
inspectBtn
|
|
3110
|
-
|
|
3542
|
+
root.appendChild(highlightBtn);
|
|
3543
|
+
const inspectIcon = (0, import_lucide3.createElement)(import_lucide3.MousePointerClick);
|
|
3544
|
+
inspectIcon.setAttribute("class", "size-3.5");
|
|
3545
|
+
inspectIcon.setAttribute("aria-hidden", "true");
|
|
3546
|
+
const inspectBtn = el(
|
|
3547
|
+
"button",
|
|
3548
|
+
{
|
|
3549
|
+
class: BUTTON_CLASS,
|
|
3550
|
+
attrs: {
|
|
3551
|
+
type: "button",
|
|
3552
|
+
"data-uidex-menubar-inspect": "",
|
|
3553
|
+
"aria-label": `Inspect (${formatShortcutLabel(INSPECT_SHORTCUT)})`
|
|
3554
|
+
}
|
|
3555
|
+
},
|
|
3556
|
+
inspectIcon
|
|
3557
|
+
);
|
|
3111
3558
|
inspectBtn.addEventListener("click", (e) => {
|
|
3112
3559
|
e.stopPropagation();
|
|
3113
|
-
session.
|
|
3560
|
+
session.mode.transition.toggleInspector();
|
|
3561
|
+
inspectBtn.blur();
|
|
3114
3562
|
});
|
|
3115
3563
|
root.appendChild(inspectBtn);
|
|
3116
|
-
const
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3564
|
+
const pinIcon = (0, import_lucide3.createElement)(import_lucide3.MapPin);
|
|
3565
|
+
pinIcon.setAttribute("class", "size-3.5");
|
|
3566
|
+
pinIcon.setAttribute("aria-hidden", "true");
|
|
3567
|
+
const pinBtn = el(
|
|
3568
|
+
"button",
|
|
3569
|
+
{
|
|
3570
|
+
class: BUTTON_CLASS,
|
|
3571
|
+
attrs: {
|
|
3572
|
+
type: "button",
|
|
3573
|
+
"data-uidex-menubar-pins": "",
|
|
3574
|
+
"aria-label": "Report pins"
|
|
3575
|
+
}
|
|
3576
|
+
},
|
|
3577
|
+
pinIcon
|
|
3578
|
+
);
|
|
3579
|
+
const commitCycler = el("div", {
|
|
3580
|
+
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3581
|
+
attrs: { "data-uidex-menubar-commit-cycler": "" }
|
|
3582
|
+
});
|
|
3583
|
+
commitCycler.hidden = true;
|
|
3584
|
+
const prevIcon = (0, import_lucide3.createElement)(import_lucide3.ChevronLeft);
|
|
3585
|
+
prevIcon.setAttribute("class", "size-3");
|
|
3586
|
+
prevIcon.setAttribute("aria-hidden", "true");
|
|
3587
|
+
const prevBtn = el(
|
|
3588
|
+
"button",
|
|
3589
|
+
{
|
|
3590
|
+
class: BUTTON_CLASS,
|
|
3591
|
+
attrs: { type: "button", "aria-label": "Previous commit" },
|
|
3592
|
+
style: { width: "18px", height: "18px" }
|
|
3593
|
+
},
|
|
3594
|
+
prevIcon
|
|
3595
|
+
);
|
|
3596
|
+
const commitLabel = el("span", {
|
|
3597
|
+
class: "relative z-1 whitespace-nowrap px-1 text-[10px] font-mono text-muted-foreground",
|
|
3598
|
+
attrs: { "data-uidex-menubar-commit-label": "" }
|
|
3599
|
+
});
|
|
3600
|
+
const nextIcon = (0, import_lucide3.createElement)(import_lucide3.ChevronRight);
|
|
3601
|
+
nextIcon.setAttribute("class", "size-3");
|
|
3602
|
+
nextIcon.setAttribute("aria-hidden", "true");
|
|
3603
|
+
const nextBtn = el(
|
|
3604
|
+
"button",
|
|
3605
|
+
{
|
|
3606
|
+
class: BUTTON_CLASS,
|
|
3607
|
+
attrs: { type: "button", "aria-label": "Next commit" },
|
|
3608
|
+
style: { width: "18px", height: "18px" }
|
|
3609
|
+
},
|
|
3610
|
+
nextIcon
|
|
3611
|
+
);
|
|
3612
|
+
commitCycler.appendChild(prevBtn);
|
|
3613
|
+
commitCycler.appendChild(commitLabel);
|
|
3614
|
+
commitCycler.appendChild(nextBtn);
|
|
3615
|
+
const pinWrapper = el("div", {
|
|
3616
|
+
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3617
|
+
attrs: { "data-uidex-menubar-pin-wrapper": "" }
|
|
3618
|
+
});
|
|
3619
|
+
pinWrapper.hidden = true;
|
|
3620
|
+
pinWrapper.appendChild(pinBtn);
|
|
3621
|
+
pinWrapper.appendChild(commitCycler);
|
|
3622
|
+
root.appendChild(pinWrapper);
|
|
3623
|
+
const updatePinUI = () => {
|
|
3624
|
+
if (!activePinLayer) {
|
|
3625
|
+
pinWrapper.hidden = true;
|
|
3626
|
+
return;
|
|
3627
|
+
}
|
|
3628
|
+
const pinsVisible = activePinLayer.visible;
|
|
3629
|
+
const state = activePinLayer.filterState;
|
|
3630
|
+
const hasCommits = state.commits.length > 0;
|
|
3631
|
+
pinWrapper.hidden = false;
|
|
3632
|
+
commitCycler.hidden = !pinsVisible || !hasCommits;
|
|
3633
|
+
if (state.commitIndex === -1 || !state.commits[state.commitIndex]) {
|
|
3634
|
+
commitLabel.textContent = `all (${state.commits.length})`;
|
|
3635
|
+
} else {
|
|
3636
|
+
const sha = state.commits[state.commitIndex] ?? "";
|
|
3637
|
+
commitLabel.textContent = sha.slice(0, 7);
|
|
3638
|
+
}
|
|
3639
|
+
pinBtn.className = cn(BUTTON_CLASS, pinsVisible && BUTTON_ACTIVE_CLASS);
|
|
3640
|
+
};
|
|
3641
|
+
pinBtn.addEventListener("click", (e) => {
|
|
3642
|
+
e.stopPropagation();
|
|
3643
|
+
if (activePinLayer) {
|
|
3644
|
+
activePinLayer.setVisible(!activePinLayer.visible);
|
|
3645
|
+
}
|
|
3646
|
+
});
|
|
3647
|
+
prevBtn.addEventListener("click", (e) => {
|
|
3648
|
+
e.stopPropagation();
|
|
3649
|
+
activePinLayer?.prevCommit();
|
|
3650
|
+
});
|
|
3651
|
+
nextBtn.addEventListener("click", (e) => {
|
|
3652
|
+
e.stopPropagation();
|
|
3653
|
+
activePinLayer?.nextCommit();
|
|
3654
|
+
});
|
|
3655
|
+
let unsubscribePinFilter = activePinLayer?.onFilterChange(() => updatePinUI());
|
|
3656
|
+
const presenceIcon = (0, import_lucide3.createElement)(import_lucide3.Users);
|
|
3657
|
+
presenceIcon.setAttribute("class", "size-3.5");
|
|
3658
|
+
presenceIcon.setAttribute("aria-hidden", "true");
|
|
3659
|
+
const presenceBtn = el(
|
|
3660
|
+
"button",
|
|
3661
|
+
{
|
|
3662
|
+
class: BUTTON_CLASS,
|
|
3663
|
+
attrs: {
|
|
3664
|
+
type: "button",
|
|
3665
|
+
"data-uidex-menubar-presence": "",
|
|
3666
|
+
"aria-label": "Online users"
|
|
3667
|
+
}
|
|
3668
|
+
},
|
|
3669
|
+
presenceIcon
|
|
3670
|
+
);
|
|
3671
|
+
presenceBtn.hidden = true;
|
|
3672
|
+
const presenceBadge = el("span", {
|
|
3673
|
+
class: "absolute -top-1 -right-1 z-1 inline-flex size-3.5 items-center justify-center rounded-full bg-info text-[9px] font-bold leading-none text-info-foreground"
|
|
3674
|
+
});
|
|
3675
|
+
presenceBtn.appendChild(presenceBadge);
|
|
3676
|
+
const presencePopover = el("div", {
|
|
3677
|
+
class: "absolute bottom-full mb-2 right-0 min-w-32 rounded-lg border border-border bg-popover p-2 text-xs text-popover-foreground shadow-lg"
|
|
3678
|
+
});
|
|
3679
|
+
presencePopover.hidden = true;
|
|
3680
|
+
let presencePopoverVisible = false;
|
|
3681
|
+
presenceBtn.addEventListener("click", (e) => {
|
|
3682
|
+
e.stopPropagation();
|
|
3683
|
+
presencePopoverVisible = !presencePopoverVisible;
|
|
3684
|
+
presencePopover.hidden = !presencePopoverVisible;
|
|
3685
|
+
});
|
|
3686
|
+
const presenceWrapper = el("div", { class: "relative z-1 inline-flex" }, [
|
|
3687
|
+
presenceBtn,
|
|
3688
|
+
presencePopover
|
|
3689
|
+
]);
|
|
3690
|
+
presenceWrapper.hidden = true;
|
|
3691
|
+
root.appendChild(presenceWrapper);
|
|
3692
|
+
let presenceUsers = [];
|
|
3693
|
+
const updatePresenceUI = () => {
|
|
3694
|
+
const localUserId = session.getState().user?.id ?? null;
|
|
3695
|
+
const peers = localUserId ? presenceUsers.filter((u) => u.userId !== localUserId) : presenceUsers;
|
|
3696
|
+
const count = peers.length;
|
|
3697
|
+
presenceWrapper.hidden = count === 0;
|
|
3698
|
+
presenceBadge.textContent = String(count);
|
|
3699
|
+
presenceBtn.setAttribute(
|
|
3700
|
+
"aria-label",
|
|
3701
|
+
count === 1 ? "1 other user online" : `${count} other users online`
|
|
3702
|
+
);
|
|
3703
|
+
presencePopover.innerHTML = "";
|
|
3704
|
+
for (const user of peers) {
|
|
3705
|
+
const row = el("div", {
|
|
3706
|
+
class: "flex items-center gap-2 rounded px-1.5 py-1"
|
|
3707
|
+
});
|
|
3708
|
+
const dot = el("span", {
|
|
3709
|
+
class: "inline-block size-2 shrink-0 rounded-full bg-emerald-500"
|
|
3710
|
+
});
|
|
3711
|
+
const name = el("span", {
|
|
3712
|
+
class: "truncate",
|
|
3713
|
+
text: user.name || "Anonymous"
|
|
3714
|
+
});
|
|
3715
|
+
row.appendChild(dot);
|
|
3716
|
+
row.appendChild(name);
|
|
3717
|
+
presencePopover.appendChild(row);
|
|
3718
|
+
}
|
|
3719
|
+
};
|
|
3720
|
+
const paletteIcon = (0, import_lucide3.createElement)(import_lucide3.Command);
|
|
3721
|
+
paletteIcon.setAttribute("class", "size-3.5");
|
|
3722
|
+
paletteIcon.setAttribute("aria-hidden", "true");
|
|
3723
|
+
const paletteBtn = el(
|
|
3724
|
+
"button",
|
|
3725
|
+
{
|
|
3726
|
+
class: BUTTON_CLASS,
|
|
3727
|
+
attrs: {
|
|
3728
|
+
type: "button",
|
|
3729
|
+
"data-uidex-menubar-palette": "",
|
|
3730
|
+
"aria-label": "Command palette"
|
|
3731
|
+
}
|
|
3732
|
+
},
|
|
3733
|
+
paletteIcon
|
|
3734
|
+
);
|
|
3121
3735
|
paletteBtn.addEventListener("click", (e) => {
|
|
3122
3736
|
e.stopPropagation();
|
|
3123
3737
|
if (session.getState().stack.length > 0) {
|
|
3124
|
-
session.
|
|
3738
|
+
session.mode.transition.dismiss();
|
|
3125
3739
|
} else {
|
|
3126
|
-
session.
|
|
3740
|
+
session.mode.transition.openPalette();
|
|
3127
3741
|
}
|
|
3742
|
+
paletteBtn.blur();
|
|
3128
3743
|
});
|
|
3129
3744
|
root.appendChild(paletteBtn);
|
|
3130
3745
|
container.appendChild(root);
|
|
3131
3746
|
const syncButtonStates = () => {
|
|
3132
3747
|
const state = session.getState();
|
|
3748
|
+
const inspectActive = state.inspectorActive;
|
|
3133
3749
|
inspectBtn.setAttribute(
|
|
3134
3750
|
"data-uidex-menubar-inspect-active",
|
|
3135
|
-
|
|
3751
|
+
inspectActive ? "true" : "false"
|
|
3136
3752
|
);
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3753
|
+
inspectBtn.className = cn(
|
|
3754
|
+
BUTTON_CLASS,
|
|
3755
|
+
inspectActive && BUTTON_ACTIVE_CLASS
|
|
3140
3756
|
);
|
|
3141
3757
|
const top = state.stack[state.stack.length - 1] ?? null;
|
|
3142
3758
|
const paletteOpen = top?.id === "command-palette";
|
|
@@ -3144,16 +3760,17 @@ function createMenuBar(options) {
|
|
|
3144
3760
|
"data-uidex-menubar-palette-active",
|
|
3145
3761
|
paletteOpen ? "true" : "false"
|
|
3146
3762
|
);
|
|
3147
|
-
|
|
3148
|
-
paletteBtn.style,
|
|
3149
|
-
paletteOpen ? buttonActiveStyle : buttonStyle
|
|
3150
|
-
);
|
|
3763
|
+
paletteBtn.className = cn(BUTTON_CLASS, paletteOpen && BUTTON_ACTIVE_CLASS);
|
|
3151
3764
|
const highlightActive = state.pinnedHighlight !== null;
|
|
3152
|
-
|
|
3765
|
+
highlightBtn.setAttribute(
|
|
3153
3766
|
"data-uidex-menubar-highlight-active",
|
|
3154
3767
|
highlightActive ? "true" : "false"
|
|
3155
3768
|
);
|
|
3156
|
-
|
|
3769
|
+
highlightBtn.className = cn(
|
|
3770
|
+
BUTTON_CLASS,
|
|
3771
|
+
highlightActive && BUTTON_HIGHLIGHT_ACTIVE_CLASS
|
|
3772
|
+
);
|
|
3773
|
+
highlightBtn.hidden = !highlightActive;
|
|
3157
3774
|
};
|
|
3158
3775
|
syncButtonStates();
|
|
3159
3776
|
const unsubscribeSession = session.subscribe(syncButtonStates);
|
|
@@ -3214,14 +3831,28 @@ function createMenuBar(options) {
|
|
|
3214
3831
|
const vertical = y / (window.innerHeight || 1) < 0.5 ? "top" : "bottom";
|
|
3215
3832
|
snapTo(`${vertical}-${horizontal}`);
|
|
3216
3833
|
}
|
|
3834
|
+
const unsubscribePresence = channel?.onPresence(
|
|
3835
|
+
(users) => {
|
|
3836
|
+
presenceUsers = users;
|
|
3837
|
+
updatePresenceUI();
|
|
3838
|
+
}
|
|
3839
|
+
);
|
|
3217
3840
|
return {
|
|
3218
3841
|
destroy() {
|
|
3842
|
+
unsubscribePinFilter?.();
|
|
3843
|
+
unsubscribePresence?.();
|
|
3219
3844
|
unsubscribeSession();
|
|
3220
3845
|
root.removeEventListener("mousedown", onMouseDown);
|
|
3221
3846
|
document.removeEventListener("mousemove", onMouseMove);
|
|
3222
3847
|
document.removeEventListener("mouseup", onMouseUp);
|
|
3223
3848
|
root.remove();
|
|
3224
3849
|
},
|
|
3850
|
+
setPinLayer(layer) {
|
|
3851
|
+
unsubscribePinFilter?.();
|
|
3852
|
+
activePinLayer = layer;
|
|
3853
|
+
unsubscribePinFilter = layer.onFilterChange(() => updatePinUI());
|
|
3854
|
+
updatePinUI();
|
|
3855
|
+
},
|
|
3225
3856
|
snapTo,
|
|
3226
3857
|
snapToNearest,
|
|
3227
3858
|
get corner() {
|
|
@@ -3233,19 +3864,38 @@ function createMenuBar(options) {
|
|
|
3233
3864
|
};
|
|
3234
3865
|
}
|
|
3235
3866
|
|
|
3236
|
-
// src/surface/overlay.ts
|
|
3867
|
+
// src/browser/surface/overlay.ts
|
|
3237
3868
|
var DEFAULT_COLOR = "#34d399";
|
|
3238
3869
|
var DEFAULT_BORDER_WIDTH = 2;
|
|
3239
3870
|
var DEFAULT_FILL_OPACITY = 0.08;
|
|
3871
|
+
var BACKDROP_OPACITY = 0.45;
|
|
3240
3872
|
function createOverlay(deps) {
|
|
3241
3873
|
const { container } = deps;
|
|
3874
|
+
const backdrop = document.createElement("div");
|
|
3875
|
+
backdrop.setAttribute("data-uidex-overlay-backdrop", "");
|
|
3876
|
+
backdrop.style.position = "fixed";
|
|
3877
|
+
backdrop.style.inset = "0";
|
|
3878
|
+
backdrop.style.zIndex = String(Z_OVERLAY);
|
|
3879
|
+
backdrop.style.backgroundColor = `rgba(0, 0, 0, ${BACKDROP_OPACITY})`;
|
|
3880
|
+
backdrop.style.opacity = "0";
|
|
3881
|
+
backdrop.style.visibility = "hidden";
|
|
3882
|
+
backdrop.style.transition = "opacity 150ms ease-out";
|
|
3883
|
+
backdrop.style.pointerEvents = "auto";
|
|
3884
|
+
backdrop.style.cursor = "default";
|
|
3885
|
+
backdrop.addEventListener("click", (e) => {
|
|
3886
|
+
e.stopPropagation();
|
|
3887
|
+
overlay.onDismiss?.();
|
|
3888
|
+
});
|
|
3889
|
+
container.appendChild(backdrop);
|
|
3242
3890
|
const box = document.createElement("div");
|
|
3243
3891
|
box.setAttribute("data-uidex-overlay", "");
|
|
3244
3892
|
box.style.position = "fixed";
|
|
3245
3893
|
box.style.pointerEvents = "none";
|
|
3246
|
-
box.style.zIndex = String(Z_OVERLAY);
|
|
3894
|
+
box.style.zIndex = String(Z_OVERLAY + 1);
|
|
3247
3895
|
box.style.boxSizing = "border-box";
|
|
3248
|
-
box.style.
|
|
3896
|
+
box.style.opacity = "0";
|
|
3897
|
+
box.style.transition = "opacity 150ms ease-out";
|
|
3898
|
+
box.style.visibility = "hidden";
|
|
3249
3899
|
const label = document.createElement("div");
|
|
3250
3900
|
label.setAttribute("data-uidex-overlay-label", "");
|
|
3251
3901
|
label.style.position = "absolute";
|
|
@@ -3258,6 +3908,17 @@ function createOverlay(deps) {
|
|
|
3258
3908
|
label.style.whiteSpace = "nowrap";
|
|
3259
3909
|
label.style.color = "#0a0a0a";
|
|
3260
3910
|
label.style.display = "none";
|
|
3911
|
+
box.addEventListener("transitionend", () => {
|
|
3912
|
+
if (box.style.opacity === "0") {
|
|
3913
|
+
box.style.visibility = "hidden";
|
|
3914
|
+
}
|
|
3915
|
+
});
|
|
3916
|
+
backdrop.addEventListener("transitionend", () => {
|
|
3917
|
+
if (backdrop.style.opacity === "0") {
|
|
3918
|
+
backdrop.style.visibility = "hidden";
|
|
3919
|
+
backdrop.style.clipPath = "";
|
|
3920
|
+
}
|
|
3921
|
+
});
|
|
3261
3922
|
box.appendChild(label);
|
|
3262
3923
|
container.appendChild(box);
|
|
3263
3924
|
let target = null;
|
|
@@ -3267,7 +3928,8 @@ function createOverlay(deps) {
|
|
|
3267
3928
|
padding: 0,
|
|
3268
3929
|
borderStyle: "solid",
|
|
3269
3930
|
borderWidth: DEFAULT_BORDER_WIDTH,
|
|
3270
|
-
fillOpacity: DEFAULT_FILL_OPACITY
|
|
3931
|
+
fillOpacity: DEFAULT_FILL_OPACITY,
|
|
3932
|
+
backdrop: false
|
|
3271
3933
|
};
|
|
3272
3934
|
let rafId = null;
|
|
3273
3935
|
let attached = false;
|
|
@@ -3311,16 +3973,26 @@ function createOverlay(deps) {
|
|
|
3311
3973
|
if (!target) return;
|
|
3312
3974
|
const rect = target.getBoundingClientRect();
|
|
3313
3975
|
const pad = opts.padding;
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3976
|
+
const top = rect.top - pad;
|
|
3977
|
+
const left = rect.left - pad;
|
|
3978
|
+
const w = rect.width + pad * 2;
|
|
3979
|
+
const h = rect.height + pad * 2;
|
|
3980
|
+
box.style.top = `${top}px`;
|
|
3981
|
+
box.style.left = `${left}px`;
|
|
3982
|
+
box.style.width = `${w}px`;
|
|
3983
|
+
box.style.height = `${h}px`;
|
|
3984
|
+
if (opts.backdrop) {
|
|
3985
|
+
const vw = window.innerWidth;
|
|
3986
|
+
const vh = window.innerHeight;
|
|
3987
|
+
backdrop.style.clipPath = cutoutPath(vw, vh, left, top, w, h);
|
|
3988
|
+
}
|
|
3318
3989
|
}
|
|
3319
3990
|
function applyStyles() {
|
|
3320
3991
|
box.style.borderColor = opts.color;
|
|
3321
3992
|
box.style.borderStyle = opts.borderStyle;
|
|
3322
3993
|
box.style.borderWidth = `${opts.borderWidth}px`;
|
|
3323
3994
|
box.style.backgroundColor = rgbaFromColor(opts.color, opts.fillOpacity);
|
|
3995
|
+
box.style.borderRadius = "6px";
|
|
3324
3996
|
if (opts.label) {
|
|
3325
3997
|
label.textContent = opts.label;
|
|
3326
3998
|
label.style.backgroundColor = opts.color;
|
|
@@ -3329,9 +4001,19 @@ function createOverlay(deps) {
|
|
|
3329
4001
|
label.textContent = "";
|
|
3330
4002
|
label.style.display = "none";
|
|
3331
4003
|
}
|
|
4004
|
+
if (opts.backdrop) {
|
|
4005
|
+
backdrop.style.visibility = "visible";
|
|
4006
|
+
backdrop.style.opacity = "1";
|
|
4007
|
+
} else {
|
|
4008
|
+
backdrop.style.opacity = "0";
|
|
4009
|
+
backdrop.style.visibility = "hidden";
|
|
4010
|
+
backdrop.style.clipPath = "";
|
|
4011
|
+
}
|
|
3332
4012
|
}
|
|
3333
|
-
|
|
4013
|
+
const overlay = {
|
|
4014
|
+
onDismiss: null,
|
|
3334
4015
|
show(nextTarget, showOpts) {
|
|
4016
|
+
const wasVisible = target !== null;
|
|
3335
4017
|
target = nextTarget;
|
|
3336
4018
|
opts = {
|
|
3337
4019
|
label: showOpts?.label ?? "",
|
|
@@ -3339,27 +4021,41 @@ function createOverlay(deps) {
|
|
|
3339
4021
|
padding: showOpts?.padding ?? 0,
|
|
3340
4022
|
borderStyle: showOpts?.borderStyle ?? "solid",
|
|
3341
4023
|
borderWidth: showOpts?.borderWidth ?? DEFAULT_BORDER_WIDTH,
|
|
3342
|
-
fillOpacity: showOpts?.fillOpacity ?? DEFAULT_FILL_OPACITY
|
|
4024
|
+
fillOpacity: showOpts?.fillOpacity ?? DEFAULT_FILL_OPACITY,
|
|
4025
|
+
backdrop: showOpts?.backdrop ?? false
|
|
3343
4026
|
};
|
|
3344
4027
|
applyStyles();
|
|
3345
4028
|
updatePosition();
|
|
3346
|
-
|
|
4029
|
+
if (!wasVisible) {
|
|
4030
|
+
box.style.opacity = "0";
|
|
4031
|
+
box.style.visibility = "visible";
|
|
4032
|
+
box.offsetHeight;
|
|
4033
|
+
}
|
|
4034
|
+
box.style.opacity = "1";
|
|
3347
4035
|
attach();
|
|
3348
4036
|
},
|
|
3349
4037
|
hide() {
|
|
3350
4038
|
target = null;
|
|
3351
|
-
box.style.
|
|
4039
|
+
box.style.opacity = "0";
|
|
4040
|
+
backdrop.style.opacity = "0";
|
|
3352
4041
|
detach();
|
|
3353
4042
|
},
|
|
3354
4043
|
destroy() {
|
|
3355
4044
|
detach();
|
|
3356
4045
|
box.remove();
|
|
4046
|
+
backdrop.remove();
|
|
3357
4047
|
target = null;
|
|
3358
4048
|
},
|
|
3359
4049
|
get isVisible() {
|
|
3360
4050
|
return target !== null;
|
|
3361
4051
|
}
|
|
3362
4052
|
};
|
|
4053
|
+
return overlay;
|
|
4054
|
+
}
|
|
4055
|
+
function cutoutPath(vw, vh, x, y, w, h) {
|
|
4056
|
+
const outer = `M0 0H${vw}V${vh}H0Z`;
|
|
4057
|
+
const inner = `M${x} ${y}V${y + h}H${x + w}V${y}Z`;
|
|
4058
|
+
return `path(evenodd,"${outer}${inner}")`;
|
|
3363
4059
|
}
|
|
3364
4060
|
function rgbaFromColor(color, alpha) {
|
|
3365
4061
|
if (color.startsWith("#")) {
|
|
@@ -3376,7 +4072,7 @@ function rgbaFromColor(color, alpha) {
|
|
|
3376
4072
|
return color;
|
|
3377
4073
|
}
|
|
3378
4074
|
|
|
3379
|
-
// src/surface/theme.ts
|
|
4075
|
+
// src/browser/surface/theme.ts
|
|
3380
4076
|
function createThemeDetector(deps) {
|
|
3381
4077
|
const { session, onResolve } = deps;
|
|
3382
4078
|
let resolved = session.getState().resolvedTheme;
|
|
@@ -3394,7 +4090,7 @@ function createThemeDetector(deps) {
|
|
|
3394
4090
|
const next = detect(preference);
|
|
3395
4091
|
if (next === resolved) return;
|
|
3396
4092
|
resolved = next;
|
|
3397
|
-
session.
|
|
4093
|
+
session.setTheme(preference, next);
|
|
3398
4094
|
onResolve?.(next);
|
|
3399
4095
|
};
|
|
3400
4096
|
push();
|
|
@@ -3445,7 +4141,7 @@ function readHtmlClassToken() {
|
|
|
3445
4141
|
return null;
|
|
3446
4142
|
}
|
|
3447
4143
|
|
|
3448
|
-
// src/surface/shell.ts
|
|
4144
|
+
// src/browser/surface/shell.ts
|
|
3449
4145
|
function createSurfaceShell(options) {
|
|
3450
4146
|
const cleanup = createCleanupStack();
|
|
3451
4147
|
const host = createSurfaceHost({
|
|
@@ -3459,7 +4155,7 @@ function createSurfaceShell(options) {
|
|
|
3459
4155
|
onResolve: (theme) => host.applyTheme(theme)
|
|
3460
4156
|
});
|
|
3461
4157
|
cleanup.add(themeDetector);
|
|
3462
|
-
const overlay = createOverlay({ container: host.
|
|
4158
|
+
const overlay = createOverlay({ container: host.shadowRoot });
|
|
3463
4159
|
cleanup.add(overlay);
|
|
3464
4160
|
const tooltip = createCursorTooltip({
|
|
3465
4161
|
container: host.chromeEl,
|
|
@@ -3467,21 +4163,37 @@ function createSurfaceShell(options) {
|
|
|
3467
4163
|
});
|
|
3468
4164
|
cleanup.add(tooltip);
|
|
3469
4165
|
const afterHover = options.inspector?.onAfterHover;
|
|
4166
|
+
const showStack = (stack, cursor) => {
|
|
4167
|
+
if (!stack) {
|
|
4168
|
+
overlay.hide();
|
|
4169
|
+
tooltip.update(null, cursor);
|
|
4170
|
+
return;
|
|
4171
|
+
}
|
|
4172
|
+
const { current } = stack;
|
|
4173
|
+
const demoted = current.ref.kind === "primitive";
|
|
4174
|
+
overlay.show(current.element, {
|
|
4175
|
+
color: KIND_STYLE[current.ref.kind].color,
|
|
4176
|
+
...demoted && { borderStyle: "dashed", fillOpacity: 0.04 }
|
|
4177
|
+
});
|
|
4178
|
+
tooltip.update(
|
|
4179
|
+
{
|
|
4180
|
+
entity: current.entity,
|
|
4181
|
+
node: current.element,
|
|
4182
|
+
layer: stack.matches.length > 1 ? { index: stack.index, total: stack.matches.length } : void 0
|
|
4183
|
+
},
|
|
4184
|
+
cursor
|
|
4185
|
+
);
|
|
4186
|
+
};
|
|
3470
4187
|
const inspector = createInspector({
|
|
3471
4188
|
session: options.session,
|
|
3472
4189
|
registry: options.registry,
|
|
3473
4190
|
onSelect: options.inspector?.onSelect,
|
|
3474
|
-
onHover: (
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
color: KIND_STYLE[match.ref.kind].color
|
|
3481
|
-
});
|
|
3482
|
-
tooltip.update({ entity: match.entity, node: match.element }, cursor);
|
|
3483
|
-
}
|
|
3484
|
-
afterHover?.(match, cursor);
|
|
4191
|
+
onHover: (stack, cursor) => {
|
|
4192
|
+
showStack(stack, cursor);
|
|
4193
|
+
afterHover?.(stack?.current ?? null, cursor);
|
|
4194
|
+
},
|
|
4195
|
+
onCycle: (stack, cursor) => {
|
|
4196
|
+
showStack(stack, cursor);
|
|
3485
4197
|
}
|
|
3486
4198
|
});
|
|
3487
4199
|
cleanup.add(inspector);
|
|
@@ -3489,7 +4201,9 @@ function createSurfaceShell(options) {
|
|
|
3489
4201
|
container: host.chromeEl,
|
|
3490
4202
|
session: options.session,
|
|
3491
4203
|
initialCorner: options.initialCorner,
|
|
3492
|
-
appTitle: options.appTitle
|
|
4204
|
+
appTitle: options.appTitle,
|
|
4205
|
+
channel: options.channel ?? null,
|
|
4206
|
+
pinLayer: options.pinLayer ?? null
|
|
3493
4207
|
});
|
|
3494
4208
|
cleanup.add(menuBar);
|
|
3495
4209
|
return {
|