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.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/entities/types.ts
|
|
1
|
+
// src/shared/entities/types.ts
|
|
2
2
|
var ENTITY_KINDS = [
|
|
3
3
|
"route",
|
|
4
4
|
"page",
|
|
@@ -36,7 +36,7 @@ function assertEntityKind(kind) {
|
|
|
36
36
|
if (!KIND_SET.has(kind)) throw new UnknownEntityKindError(kind);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
// src/entities/registry.ts
|
|
39
|
+
// src/shared/entities/registry.ts
|
|
40
40
|
function emptyStore() {
|
|
41
41
|
return {
|
|
42
42
|
route: /* @__PURE__ */ new Map(),
|
|
@@ -118,10 +118,33 @@ function createRegistry() {
|
|
|
118
118
|
return ids.has(entity.id);
|
|
119
119
|
});
|
|
120
120
|
};
|
|
121
|
-
|
|
121
|
+
const reports = /* @__PURE__ */ new Map();
|
|
122
|
+
const reportsCbs = /* @__PURE__ */ new Set();
|
|
123
|
+
const setReports = (kind, id, records) => {
|
|
124
|
+
reports.set(`${kind}:${id}`, records);
|
|
125
|
+
for (const cb of reportsCbs) cb();
|
|
126
|
+
};
|
|
127
|
+
const getReports = (kind, id) => reports.get(`${kind}:${id}`) ?? [];
|
|
128
|
+
const listReportKeys = () => Array.from(reports.keys());
|
|
129
|
+
const onReportsChange = (cb) => {
|
|
130
|
+
reportsCbs.add(cb);
|
|
131
|
+
return () => reportsCbs.delete(cb);
|
|
132
|
+
};
|
|
133
|
+
return {
|
|
134
|
+
add,
|
|
135
|
+
get,
|
|
136
|
+
list,
|
|
137
|
+
query,
|
|
138
|
+
byScope,
|
|
139
|
+
touchedBy,
|
|
140
|
+
setReports,
|
|
141
|
+
getReports,
|
|
142
|
+
listReportKeys,
|
|
143
|
+
onReportsChange
|
|
144
|
+
};
|
|
122
145
|
}
|
|
123
146
|
|
|
124
|
-
// src/entities/style.ts
|
|
147
|
+
// src/shared/entities/style.ts
|
|
125
148
|
import {
|
|
126
149
|
Circle,
|
|
127
150
|
FileText,
|
|
@@ -135,63 +158,63 @@ import {
|
|
|
135
158
|
var KIND_STYLE = {
|
|
136
159
|
route: {
|
|
137
160
|
icon: RouteIcon,
|
|
138
|
-
tone: "text-blue-700 dark:text-blue-
|
|
139
|
-
chip: "bg-blue-
|
|
161
|
+
tone: "text-blue-700 dark:text-blue-400",
|
|
162
|
+
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",
|
|
140
163
|
color: "#60a5fa",
|
|
141
164
|
label: "Route"
|
|
142
165
|
},
|
|
143
166
|
page: {
|
|
144
167
|
icon: FileText,
|
|
145
|
-
tone: "text-emerald-700 dark:text-emerald-
|
|
146
|
-
chip: "bg-emerald-
|
|
168
|
+
tone: "text-emerald-700 dark:text-emerald-400",
|
|
169
|
+
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",
|
|
147
170
|
color: "#34d399",
|
|
148
171
|
label: "Page"
|
|
149
172
|
},
|
|
150
173
|
feature: {
|
|
151
174
|
icon: Sparkles,
|
|
152
|
-
tone: "text-amber-700 dark:text-amber-
|
|
153
|
-
chip: "bg-amber-
|
|
175
|
+
tone: "text-amber-700 dark:text-amber-500",
|
|
176
|
+
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",
|
|
154
177
|
color: "#fbbf24",
|
|
155
178
|
label: "Feature"
|
|
156
179
|
},
|
|
157
180
|
widget: {
|
|
158
181
|
icon: LayoutGrid,
|
|
159
|
-
tone: "text-violet-700 dark:text-violet-
|
|
160
|
-
chip: "bg-violet-
|
|
182
|
+
tone: "text-violet-700 dark:text-violet-400",
|
|
183
|
+
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",
|
|
161
184
|
color: "#a78bfa",
|
|
162
185
|
label: "Widget"
|
|
163
186
|
},
|
|
164
187
|
region: {
|
|
165
188
|
icon: LayoutPanelTop,
|
|
166
|
-
tone: "text-cyan-700 dark:text-cyan-
|
|
167
|
-
chip: "bg-cyan-
|
|
189
|
+
tone: "text-cyan-700 dark:text-cyan-400",
|
|
190
|
+
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",
|
|
168
191
|
color: "#22d3ee",
|
|
169
192
|
label: "Region"
|
|
170
193
|
},
|
|
171
194
|
element: {
|
|
172
195
|
icon: MousePointerClick,
|
|
173
|
-
tone: "text-rose-700 dark:text-rose-
|
|
174
|
-
chip: "bg-rose-
|
|
196
|
+
tone: "text-rose-700 dark:text-rose-400",
|
|
197
|
+
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",
|
|
175
198
|
color: "#fb7185",
|
|
176
199
|
label: "Element"
|
|
177
200
|
},
|
|
178
201
|
primitive: {
|
|
179
202
|
icon: Circle,
|
|
180
|
-
tone: "text-slate-
|
|
181
|
-
chip: "bg-slate-
|
|
203
|
+
tone: "text-slate-600 dark:text-slate-400",
|
|
204
|
+
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",
|
|
182
205
|
color: "#94a3b8",
|
|
183
206
|
label: "Primitive"
|
|
184
207
|
},
|
|
185
208
|
flow: {
|
|
186
209
|
icon: Workflow,
|
|
187
|
-
tone: "text-fuchsia-700 dark:text-fuchsia-
|
|
188
|
-
chip: "bg-fuchsia-
|
|
210
|
+
tone: "text-fuchsia-700 dark:text-fuchsia-400",
|
|
211
|
+
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",
|
|
189
212
|
color: "#e879f9",
|
|
190
213
|
label: "Flow"
|
|
191
214
|
}
|
|
192
215
|
};
|
|
193
216
|
|
|
194
|
-
// src/entities/display-name.ts
|
|
217
|
+
// src/shared/entities/display-name.ts
|
|
195
218
|
function prettify(id) {
|
|
196
219
|
const parts = id.split(/[-_]+/).filter(Boolean);
|
|
197
220
|
const words = parts.flatMap((part) => part.split(/(?=[A-Z])/).filter(Boolean));
|
|
@@ -209,7 +232,7 @@ function displayName(entity, node) {
|
|
|
209
232
|
return prettify(entity.id);
|
|
210
233
|
}
|
|
211
234
|
|
|
212
|
-
// src/internal/cleanup.ts
|
|
235
|
+
// src/browser/internal/cleanup.ts
|
|
213
236
|
function createCleanupStack() {
|
|
214
237
|
const stack = [];
|
|
215
238
|
return {
|
|
@@ -231,293 +254,147 @@ function createCleanupStack() {
|
|
|
231
254
|
};
|
|
232
255
|
}
|
|
233
256
|
|
|
234
|
-
// src/session/store.ts
|
|
235
|
-
import {
|
|
236
|
-
import { createStore } from "zustand/vanilla";
|
|
257
|
+
// src/browser/session/store.ts
|
|
258
|
+
import { createStore as createStore3 } from "zustand/vanilla";
|
|
237
259
|
|
|
238
|
-
// src/
|
|
239
|
-
import {
|
|
240
|
-
var
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
pinnedRef: null,
|
|
244
|
-
color: null
|
|
260
|
+
// src/browser/session/mode.ts
|
|
261
|
+
import { createStore } from "zustand/vanilla";
|
|
262
|
+
var COMMAND_PALETTE_ENTRY = {
|
|
263
|
+
id: "command-palette",
|
|
264
|
+
ref: null
|
|
245
265
|
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
266
|
+
function createModeStore(options) {
|
|
267
|
+
const { nav, bindings } = options;
|
|
268
|
+
const store = createStore(() => ({
|
|
269
|
+
mode: "idle",
|
|
270
|
+
inspectorActive: false
|
|
271
|
+
}));
|
|
272
|
+
const transition = {
|
|
273
|
+
openPalette() {
|
|
274
|
+
const prev = store.getState();
|
|
275
|
+
if (prev.mode === "inspecting") {
|
|
276
|
+
bindings?.destroyInspector?.();
|
|
277
|
+
}
|
|
278
|
+
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
279
|
+
store.setState({ mode: "palette", inspectorActive: false });
|
|
250
280
|
},
|
|
251
|
-
|
|
281
|
+
openInspector() {
|
|
282
|
+
bindings?.mountInspector?.();
|
|
283
|
+
nav.nav.clear();
|
|
284
|
+
store.setState({ mode: "inspecting", inspectorActive: true });
|
|
252
285
|
},
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
id: "highlight",
|
|
258
|
-
initial: "none",
|
|
259
|
-
context: initialContext,
|
|
260
|
-
states: {
|
|
261
|
-
none: {
|
|
262
|
-
entry: [
|
|
263
|
-
assign({
|
|
264
|
-
ref: null,
|
|
265
|
-
element: null,
|
|
266
|
-
pinnedRef: null,
|
|
267
|
-
color: null
|
|
268
|
-
}),
|
|
269
|
-
{ type: "hideOverlay" }
|
|
270
|
-
],
|
|
271
|
-
on: {
|
|
272
|
-
HOVER: {
|
|
273
|
-
target: "transient",
|
|
274
|
-
actions: assign(({ event }) => ({
|
|
275
|
-
ref: event.ref,
|
|
276
|
-
element: event.element,
|
|
277
|
-
color: event.color ?? null
|
|
278
|
-
}))
|
|
279
|
-
},
|
|
280
|
-
PIN: {
|
|
281
|
-
target: "pinned",
|
|
282
|
-
actions: assign(({ context, event }) => ({
|
|
283
|
-
ref: event.ref ?? context.ref,
|
|
284
|
-
pinnedRef: event.ref ?? context.ref
|
|
285
|
-
}))
|
|
286
|
-
}
|
|
287
|
-
}
|
|
286
|
+
closeInspector() {
|
|
287
|
+
bindings?.destroyInspector?.();
|
|
288
|
+
nav.nav.clear();
|
|
289
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
288
290
|
},
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
assign(({ event }) => ({
|
|
295
|
-
ref: event.ref,
|
|
296
|
-
element: event.element,
|
|
297
|
-
color: event.color ?? null
|
|
298
|
-
})),
|
|
299
|
-
{ type: "updateOverlay" }
|
|
300
|
-
]
|
|
301
|
-
},
|
|
302
|
-
UNHOVER: { target: "none" },
|
|
303
|
-
PIN: {
|
|
304
|
-
target: "pinned",
|
|
305
|
-
actions: assign(({ context, event }) => ({
|
|
306
|
-
pinnedRef: event.ref ?? context.ref
|
|
307
|
-
}))
|
|
308
|
-
}
|
|
291
|
+
toggleInspector() {
|
|
292
|
+
if (store.getState().mode === "inspecting") {
|
|
293
|
+
transition.closeInspector();
|
|
294
|
+
} else {
|
|
295
|
+
transition.openInspector();
|
|
309
296
|
}
|
|
310
297
|
},
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
298
|
+
enterViewing(initialStack) {
|
|
299
|
+
const prev = store.getState();
|
|
300
|
+
if (prev.mode === "inspecting") {
|
|
301
|
+
bindings?.destroyInspector?.();
|
|
315
302
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
// src/flows/surface.ts
|
|
321
|
-
import { assign as assign2, forwardTo, sendTo, setup as setup2 } from "xstate";
|
|
322
|
-
var initialContext2 = {
|
|
323
|
-
stack: [],
|
|
324
|
-
hover: null,
|
|
325
|
-
selection: null,
|
|
326
|
-
pinnedHighlight: null,
|
|
327
|
-
theme: "auto",
|
|
328
|
-
resolvedTheme: "light",
|
|
329
|
-
ingestActive: false
|
|
330
|
-
};
|
|
331
|
-
var surfaceMachine = setup2({
|
|
332
|
-
types: {},
|
|
333
|
-
actors: {
|
|
334
|
-
highlight: highlightMachine
|
|
335
|
-
},
|
|
336
|
-
actions: {
|
|
337
|
-
mountInspector: () => {
|
|
303
|
+
nav.nav.reset(initialStack);
|
|
304
|
+
store.setState({ mode: "viewing", inspectorActive: false });
|
|
338
305
|
},
|
|
339
|
-
|
|
306
|
+
dismiss() {
|
|
307
|
+
const prev = store.getState();
|
|
308
|
+
if (prev.mode === "inspecting") {
|
|
309
|
+
bindings?.destroyInspector?.();
|
|
310
|
+
}
|
|
311
|
+
nav.nav.clear();
|
|
312
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
340
313
|
},
|
|
341
|
-
|
|
314
|
+
popOrTransition() {
|
|
315
|
+
const { stack } = nav.getState();
|
|
316
|
+
if (stack.length > 2) {
|
|
317
|
+
nav.nav.pop();
|
|
318
|
+
} else if (stack.length === 2 && stack[0]?.id === "command-palette") {
|
|
319
|
+
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
320
|
+
store.setState({ mode: "palette", inspectorActive: false });
|
|
321
|
+
} else if (stack.length === 2) {
|
|
322
|
+
nav.nav.pop();
|
|
323
|
+
} else {
|
|
324
|
+
nav.nav.clear();
|
|
325
|
+
store.setState({ mode: "idle", inspectorActive: false });
|
|
326
|
+
}
|
|
342
327
|
},
|
|
343
|
-
|
|
328
|
+
pushView(entry) {
|
|
329
|
+
const { mode } = store.getState();
|
|
330
|
+
const { stack } = nav.getState();
|
|
331
|
+
if (entry.id === "command-palette" && stack.length === 0) {
|
|
332
|
+
transition.openPalette();
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
switch (mode) {
|
|
336
|
+
case "idle":
|
|
337
|
+
transition.enterViewing([entry]);
|
|
338
|
+
break;
|
|
339
|
+
case "inspecting":
|
|
340
|
+
bindings?.destroyInspector?.();
|
|
341
|
+
nav.nav.reset([entry]);
|
|
342
|
+
store.setState({ mode: "viewing", inspectorActive: false });
|
|
343
|
+
break;
|
|
344
|
+
case "palette":
|
|
345
|
+
case "viewing":
|
|
346
|
+
nav.nav.push(entry);
|
|
347
|
+
if (mode === "palette") {
|
|
348
|
+
store.setState({ mode: "viewing" });
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
344
352
|
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
...input ?? {}
|
|
361
|
-
}),
|
|
362
|
-
invoke: {
|
|
363
|
-
id: "highlight",
|
|
364
|
-
src: "highlight"
|
|
365
|
-
},
|
|
366
|
-
on: {
|
|
367
|
-
HOVER: {
|
|
368
|
-
actions: [
|
|
369
|
-
assign2(({ event }) => ({ hover: event.ref })),
|
|
370
|
-
forwardTo("highlight")
|
|
371
|
-
]
|
|
372
|
-
},
|
|
373
|
-
UNHOVER: {
|
|
374
|
-
actions: [assign2({ hover: null }), forwardTo("highlight")]
|
|
375
|
-
},
|
|
376
|
-
PIN: {
|
|
377
|
-
actions: [
|
|
378
|
-
assign2(({ context, event }) => ({
|
|
379
|
-
pinnedHighlight: event.ref ?? context.hover
|
|
380
|
-
})),
|
|
381
|
-
forwardTo("highlight")
|
|
382
|
-
]
|
|
383
|
-
},
|
|
384
|
-
UNPIN: {
|
|
385
|
-
actions: [assign2({ pinnedHighlight: null }), forwardTo("highlight")]
|
|
386
|
-
},
|
|
387
|
-
SET_SELECTION: {
|
|
388
|
-
actions: assign2(({ event }) => ({ selection: event.ref }))
|
|
389
|
-
},
|
|
390
|
-
SET_THEME: {
|
|
391
|
-
actions: assign2(({ event }) => ({
|
|
392
|
-
theme: event.theme,
|
|
393
|
-
resolvedTheme: event.resolvedTheme
|
|
394
|
-
}))
|
|
353
|
+
};
|
|
354
|
+
const modeStore = store;
|
|
355
|
+
modeStore.transition = transition;
|
|
356
|
+
return modeStore;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// src/browser/session/navigation.ts
|
|
360
|
+
import { createStore as createStore2 } from "zustand/vanilla";
|
|
361
|
+
function createNavigationStore() {
|
|
362
|
+
const store = createStore2(() => ({
|
|
363
|
+
stack: []
|
|
364
|
+
}));
|
|
365
|
+
const nav = {
|
|
366
|
+
push(entry) {
|
|
367
|
+
store.setState({ stack: [...store.getState().stack, entry] });
|
|
395
368
|
},
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
entry: assign2({ stack: [] }),
|
|
403
|
-
on: {
|
|
404
|
-
TOGGLE_INSPECTOR: { target: "inspecting" },
|
|
405
|
-
OPEN_PALETTE: { target: "palette" },
|
|
406
|
-
PUSH_VIEW: {
|
|
407
|
-
target: "viewing",
|
|
408
|
-
actions: assign2(({ event }) => ({ stack: [event.entry] }))
|
|
409
|
-
},
|
|
410
|
-
ESC: {
|
|
411
|
-
guard: "hasPinnedHighlight",
|
|
412
|
-
actions: [
|
|
413
|
-
assign2({ pinnedHighlight: null }),
|
|
414
|
-
sendTo("highlight", { type: "UNPIN" })
|
|
415
|
-
]
|
|
416
|
-
}
|
|
369
|
+
pop() {
|
|
370
|
+
const s = store.getState().stack;
|
|
371
|
+
if (s.length <= 1) {
|
|
372
|
+
store.setState({ stack: [] });
|
|
373
|
+
} else {
|
|
374
|
+
store.setState({ stack: s.slice(0, -1) });
|
|
417
375
|
}
|
|
418
376
|
},
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
actions: assign2(({ context, event }) => ({
|
|
426
|
-
selection: event.ref,
|
|
427
|
-
stack: [...context.stack, event.entry]
|
|
428
|
-
}))
|
|
429
|
-
},
|
|
430
|
-
PUSH_VIEW: {
|
|
431
|
-
target: "viewing",
|
|
432
|
-
actions: assign2(({ event }) => ({ stack: [event.entry] }))
|
|
433
|
-
},
|
|
434
|
-
TOGGLE_INSPECTOR: { target: "idle" },
|
|
435
|
-
OPEN_PALETTE: { target: "palette" },
|
|
436
|
-
ESC: { target: "idle" }
|
|
377
|
+
replace(entry) {
|
|
378
|
+
const s = store.getState().stack;
|
|
379
|
+
if (s.length === 0) {
|
|
380
|
+
store.setState({ stack: [entry] });
|
|
381
|
+
} else {
|
|
382
|
+
store.setState({ stack: [...s.slice(0, -1), entry] });
|
|
437
383
|
}
|
|
438
384
|
},
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
on: {
|
|
442
|
-
PUSH_VIEW: {
|
|
443
|
-
target: "viewing",
|
|
444
|
-
actions: assign2(({ context, event }) => ({
|
|
445
|
-
stack: [...context.stack, event.entry]
|
|
446
|
-
}))
|
|
447
|
-
},
|
|
448
|
-
CLOSE: { target: "idle" },
|
|
449
|
-
ESC: { target: "idle" },
|
|
450
|
-
CMD_K: [
|
|
451
|
-
{
|
|
452
|
-
guard: "hasActions",
|
|
453
|
-
actions: { type: "openActionsPopup" }
|
|
454
|
-
},
|
|
455
|
-
{ target: "idle" }
|
|
456
|
-
]
|
|
457
|
-
}
|
|
385
|
+
clear() {
|
|
386
|
+
store.setState({ stack: [] });
|
|
458
387
|
},
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
PUSH_VIEW: {
|
|
462
|
-
actions: assign2(({ context, event }) => ({
|
|
463
|
-
stack: [...context.stack, event.entry]
|
|
464
|
-
}))
|
|
465
|
-
},
|
|
466
|
-
POP_VIEW: [
|
|
467
|
-
{
|
|
468
|
-
guard: "stackDeeperThanTwo",
|
|
469
|
-
actions: assign2(({ context }) => ({
|
|
470
|
-
stack: context.stack.slice(0, -1)
|
|
471
|
-
}))
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
guard: "paletteAtBottomDepthTwo",
|
|
475
|
-
target: "palette"
|
|
476
|
-
},
|
|
477
|
-
{
|
|
478
|
-
guard: "stackEqualsTwo",
|
|
479
|
-
actions: assign2(({ context }) => ({
|
|
480
|
-
stack: context.stack.slice(0, -1)
|
|
481
|
-
}))
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
guard: "stackEqualsOne",
|
|
485
|
-
target: "idle"
|
|
486
|
-
}
|
|
487
|
-
],
|
|
488
|
-
CLOSE: { target: "idle" },
|
|
489
|
-
ESC: [
|
|
490
|
-
{
|
|
491
|
-
guard: "popupOpen",
|
|
492
|
-
actions: { type: "closePopup" }
|
|
493
|
-
},
|
|
494
|
-
{
|
|
495
|
-
guard: "stackDeeperThanTwo",
|
|
496
|
-
actions: assign2(({ context }) => ({
|
|
497
|
-
stack: context.stack.slice(0, -1)
|
|
498
|
-
}))
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
guard: "paletteAtBottomDepthTwo",
|
|
502
|
-
target: "palette"
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
guard: "stackEqualsTwo",
|
|
506
|
-
actions: assign2(({ context }) => ({
|
|
507
|
-
stack: context.stack.slice(0, -1)
|
|
508
|
-
}))
|
|
509
|
-
},
|
|
510
|
-
{
|
|
511
|
-
guard: "stackEqualsOne",
|
|
512
|
-
target: "idle"
|
|
513
|
-
}
|
|
514
|
-
]
|
|
515
|
-
}
|
|
388
|
+
reset(stack) {
|
|
389
|
+
store.setState({ stack });
|
|
516
390
|
}
|
|
517
|
-
}
|
|
518
|
-
|
|
391
|
+
};
|
|
392
|
+
const navStore = store;
|
|
393
|
+
navStore.nav = nav;
|
|
394
|
+
return navStore;
|
|
395
|
+
}
|
|
519
396
|
|
|
520
|
-
// src/session/store.ts
|
|
397
|
+
// src/browser/session/store.ts
|
|
521
398
|
var defaultSnapshot = {
|
|
522
399
|
hover: null,
|
|
523
400
|
selection: null,
|
|
@@ -526,7 +403,8 @@ var defaultSnapshot = {
|
|
|
526
403
|
inspectorActive: false,
|
|
527
404
|
theme: "auto",
|
|
528
405
|
resolvedTheme: "light",
|
|
529
|
-
ingestActive: false
|
|
406
|
+
ingestActive: false,
|
|
407
|
+
user: null
|
|
530
408
|
};
|
|
531
409
|
function resolveTheme(preference, detect) {
|
|
532
410
|
if (preference !== "auto") return preference;
|
|
@@ -537,197 +415,188 @@ function resolveTheme(preference, detect) {
|
|
|
537
415
|
}
|
|
538
416
|
return "light";
|
|
539
417
|
}
|
|
540
|
-
function projectFromActor(actor) {
|
|
541
|
-
const sn = actor.getSnapshot();
|
|
542
|
-
const child = sn.children.highlight;
|
|
543
|
-
const childSnapshot = child?.getSnapshot();
|
|
544
|
-
const pinned = childSnapshot && childSnapshot.value === "pinned" ? childSnapshot.context.pinnedRef : null;
|
|
545
|
-
return {
|
|
546
|
-
hover: sn.context.hover,
|
|
547
|
-
selection: sn.context.selection,
|
|
548
|
-
stack: sn.context.stack,
|
|
549
|
-
pinnedHighlight: pinned,
|
|
550
|
-
inspectorActive: sn.matches("inspecting"),
|
|
551
|
-
theme: sn.context.theme,
|
|
552
|
-
resolvedTheme: sn.context.resolvedTheme,
|
|
553
|
-
ingestActive: sn.context.ingestActive
|
|
554
|
-
};
|
|
555
|
-
}
|
|
556
418
|
function createSession(options = {}) {
|
|
557
|
-
const {
|
|
419
|
+
const {
|
|
420
|
+
detectTheme,
|
|
421
|
+
onMountInspector,
|
|
422
|
+
onDestroyInspector,
|
|
423
|
+
onShowOverlay,
|
|
424
|
+
onHideOverlay,
|
|
425
|
+
onUpdateOverlay,
|
|
426
|
+
...overrides
|
|
427
|
+
} = options;
|
|
558
428
|
const initialPref = overrides.theme ?? defaultSnapshot.theme;
|
|
559
429
|
const initialResolved = overrides.resolvedTheme ?? resolveTheme(initialPref, detectTheme);
|
|
560
430
|
const initialStack = overrides.stack ?? [];
|
|
561
|
-
const
|
|
431
|
+
const nav = createNavigationStore();
|
|
432
|
+
const modeStore = createModeStore({
|
|
433
|
+
nav,
|
|
434
|
+
bindings: {
|
|
435
|
+
mountInspector: onMountInspector,
|
|
436
|
+
destroyInspector: onDestroyInspector
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
let highlightMode = "none";
|
|
440
|
+
const hlCtx = {
|
|
441
|
+
ref: null,
|
|
442
|
+
element: null,
|
|
443
|
+
pinnedRef: null,
|
|
444
|
+
color: null
|
|
445
|
+
};
|
|
446
|
+
const highlightActions = {
|
|
447
|
+
hover(ref, element, color) {
|
|
448
|
+
hlCtx.ref = ref;
|
|
449
|
+
hlCtx.element = element ?? null;
|
|
450
|
+
hlCtx.color = color ?? null;
|
|
451
|
+
if (highlightMode === "none") {
|
|
452
|
+
highlightMode = "transient";
|
|
453
|
+
onShowOverlay?.(hlCtx);
|
|
454
|
+
} else if (highlightMode === "transient") {
|
|
455
|
+
onUpdateOverlay?.(hlCtx);
|
|
456
|
+
}
|
|
457
|
+
store.setState({ hover: ref });
|
|
458
|
+
},
|
|
459
|
+
unhover() {
|
|
460
|
+
if (highlightMode === "transient") {
|
|
461
|
+
highlightMode = "none";
|
|
462
|
+
hlCtx.ref = null;
|
|
463
|
+
hlCtx.element = null;
|
|
464
|
+
hlCtx.color = null;
|
|
465
|
+
onHideOverlay?.();
|
|
466
|
+
}
|
|
467
|
+
store.setState({ hover: null });
|
|
468
|
+
},
|
|
469
|
+
pin(ref) {
|
|
470
|
+
const pinRef = ref ?? hlCtx.ref;
|
|
471
|
+
hlCtx.pinnedRef = pinRef;
|
|
472
|
+
if (highlightMode === "none") {
|
|
473
|
+
hlCtx.ref = pinRef;
|
|
474
|
+
}
|
|
475
|
+
if (highlightMode !== "pinned") {
|
|
476
|
+
highlightMode = "pinned";
|
|
477
|
+
onShowOverlay?.(hlCtx);
|
|
478
|
+
}
|
|
479
|
+
store.setState({ pinnedHighlight: hlCtx.pinnedRef });
|
|
480
|
+
},
|
|
481
|
+
unpin() {
|
|
482
|
+
if (highlightMode === "pinned") {
|
|
483
|
+
highlightMode = "none";
|
|
484
|
+
hlCtx.ref = null;
|
|
485
|
+
hlCtx.element = null;
|
|
486
|
+
hlCtx.pinnedRef = null;
|
|
487
|
+
hlCtx.color = null;
|
|
488
|
+
onHideOverlay?.();
|
|
489
|
+
}
|
|
490
|
+
store.setState({ pinnedHighlight: null });
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
const store = createStore3(() => ({
|
|
494
|
+
...defaultSnapshot,
|
|
562
495
|
hover: overrides.hover ?? null,
|
|
563
496
|
selection: overrides.selection ?? null,
|
|
497
|
+
stack: [],
|
|
564
498
|
pinnedHighlight: null,
|
|
499
|
+
inspectorActive: false,
|
|
565
500
|
theme: initialPref,
|
|
566
501
|
resolvedTheme: initialResolved,
|
|
567
|
-
ingestActive: overrides.ingestActive ?? false
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
502
|
+
ingestActive: overrides.ingestActive ?? false,
|
|
503
|
+
user: overrides.user ?? null
|
|
504
|
+
}));
|
|
505
|
+
nav.subscribe(() => {
|
|
506
|
+
const { stack } = nav.getState();
|
|
507
|
+
if (store.getState().stack !== stack) {
|
|
508
|
+
store.setState({ stack });
|
|
574
509
|
}
|
|
575
510
|
});
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
openActionsPopup: () => bindings?.surface?.openActionsPopup?.(),
|
|
581
|
-
closePopup: () => bindings?.surface?.closePopup?.()
|
|
582
|
-
},
|
|
583
|
-
actors: {
|
|
584
|
-
highlight: providedHighlight
|
|
511
|
+
modeStore.subscribe(() => {
|
|
512
|
+
const { inspectorActive } = modeStore.getState();
|
|
513
|
+
if (store.getState().inspectorActive !== inspectorActive) {
|
|
514
|
+
store.setState({ inspectorActive });
|
|
585
515
|
}
|
|
586
516
|
});
|
|
587
|
-
const
|
|
588
|
-
|
|
517
|
+
const session = store;
|
|
518
|
+
session.nav = nav;
|
|
519
|
+
session.mode = modeStore;
|
|
520
|
+
session.highlight = highlightActions;
|
|
521
|
+
session.select = (ref) => {
|
|
522
|
+
if (sameRef(store.getState().selection, ref)) return;
|
|
523
|
+
store.setState({ selection: ref });
|
|
524
|
+
};
|
|
525
|
+
session.setTheme = (theme, resolved) => {
|
|
526
|
+
const state = store.getState();
|
|
527
|
+
const nextResolved = resolved ?? resolveTheme(theme, detectTheme);
|
|
528
|
+
if (state.theme === theme && state.resolvedTheme === nextResolved) return;
|
|
529
|
+
store.setState({ theme, resolvedTheme: nextResolved });
|
|
530
|
+
};
|
|
531
|
+
session.setIngest = (active) => {
|
|
532
|
+
if (store.getState().ingestActive === active) return;
|
|
533
|
+
store.setState({ ingestActive: active });
|
|
534
|
+
};
|
|
589
535
|
if (initialStack.length > 0) {
|
|
590
|
-
|
|
536
|
+
modeStore.transition.openPalette();
|
|
591
537
|
for (let i = 1; i < initialStack.length; i++) {
|
|
592
|
-
|
|
538
|
+
modeStore.transition.pushView(initialStack[i]);
|
|
593
539
|
}
|
|
594
540
|
} else if (overrides.inspectorActive) {
|
|
595
|
-
|
|
541
|
+
modeStore.transition.openInspector();
|
|
596
542
|
}
|
|
597
543
|
if (overrides.pinnedHighlight) {
|
|
598
|
-
|
|
599
|
-
}
|
|
600
|
-
const store = createStore((_set, get) => ({
|
|
601
|
-
...projectFromActor(actor),
|
|
602
|
-
actions: {
|
|
603
|
-
hover(ref) {
|
|
604
|
-
if (sameRef(get().hover, ref)) return;
|
|
605
|
-
if (ref === null) {
|
|
606
|
-
actor.send({ type: "UNHOVER" });
|
|
607
|
-
} else {
|
|
608
|
-
actor.send({ type: "HOVER", ref, element: null });
|
|
609
|
-
}
|
|
610
|
-
},
|
|
611
|
-
select(ref) {
|
|
612
|
-
if (sameRef(get().selection, ref)) return;
|
|
613
|
-
actor.send({ type: "SET_SELECTION", ref });
|
|
614
|
-
},
|
|
615
|
-
pushStack(entry) {
|
|
616
|
-
if (entry.id === "command-palette" && get().stack.length === 0) {
|
|
617
|
-
actor.send({ type: "OPEN_PALETTE" });
|
|
618
|
-
} else {
|
|
619
|
-
actor.send({ type: "PUSH_VIEW", entry });
|
|
620
|
-
}
|
|
621
|
-
},
|
|
622
|
-
popStack() {
|
|
623
|
-
const sn = actor.getSnapshot();
|
|
624
|
-
if (sn.matches("palette")) {
|
|
625
|
-
actor.send({ type: "ESC" });
|
|
626
|
-
} else if (sn.matches("viewing")) {
|
|
627
|
-
actor.send({ type: "POP_VIEW" });
|
|
628
|
-
}
|
|
629
|
-
},
|
|
630
|
-
clearStack() {
|
|
631
|
-
if (get().stack.length === 0) return;
|
|
632
|
-
actor.send({ type: "CLOSE" });
|
|
633
|
-
},
|
|
634
|
-
openView(id, ref) {
|
|
635
|
-
const resolvedRef = ref === void 0 ? get().selection : ref;
|
|
636
|
-
get().actions.pushStack({ id, ref: resolvedRef });
|
|
637
|
-
},
|
|
638
|
-
closeView() {
|
|
639
|
-
get().actions.clearStack();
|
|
640
|
-
},
|
|
641
|
-
setInspectorActive(active) {
|
|
642
|
-
if (get().inspectorActive === active) return;
|
|
643
|
-
actor.send({ type: "TOGGLE_INSPECTOR" });
|
|
644
|
-
},
|
|
645
|
-
toggleInspector() {
|
|
646
|
-
actor.send({ type: "TOGGLE_INSPECTOR" });
|
|
647
|
-
},
|
|
648
|
-
pinHighlight(ref) {
|
|
649
|
-
if (sameRef(get().pinnedHighlight, ref)) return;
|
|
650
|
-
actor.send({ type: "PIN", ref });
|
|
651
|
-
},
|
|
652
|
-
clearPinnedHighlight() {
|
|
653
|
-
if (get().pinnedHighlight === null) return;
|
|
654
|
-
actor.send({ type: "UNPIN" });
|
|
655
|
-
},
|
|
656
|
-
setTheme(theme, resolved) {
|
|
657
|
-
const state = get();
|
|
658
|
-
const nextResolved = resolved ?? resolveTheme(theme, detectTheme);
|
|
659
|
-
if (state.theme === theme && state.resolvedTheme === nextResolved)
|
|
660
|
-
return;
|
|
661
|
-
actor.send({ type: "SET_THEME", theme, resolvedTheme: nextResolved });
|
|
662
|
-
},
|
|
663
|
-
setIngest(active) {
|
|
664
|
-
if (get().ingestActive === active) return;
|
|
665
|
-
actor.send({ type: "SET_INGEST", active });
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
}));
|
|
669
|
-
const projectAndSet = () => {
|
|
670
|
-
const next = projectFromActor(actor);
|
|
671
|
-
const prev = store.getState();
|
|
672
|
-
const updates = {};
|
|
673
|
-
if (!sameRef(prev.hover, next.hover)) updates.hover = next.hover;
|
|
674
|
-
if (!sameRef(prev.selection, next.selection))
|
|
675
|
-
updates.selection = next.selection;
|
|
676
|
-
if (prev.stack !== next.stack) updates.stack = next.stack;
|
|
677
|
-
if (!sameRef(prev.pinnedHighlight, next.pinnedHighlight))
|
|
678
|
-
updates.pinnedHighlight = next.pinnedHighlight;
|
|
679
|
-
if (prev.inspectorActive !== next.inspectorActive)
|
|
680
|
-
updates.inspectorActive = next.inspectorActive;
|
|
681
|
-
if (prev.theme !== next.theme) updates.theme = next.theme;
|
|
682
|
-
if (prev.resolvedTheme !== next.resolvedTheme)
|
|
683
|
-
updates.resolvedTheme = next.resolvedTheme;
|
|
684
|
-
if (prev.ingestActive !== next.ingestActive)
|
|
685
|
-
updates.ingestActive = next.ingestActive;
|
|
686
|
-
if (Object.keys(updates).length === 0) return;
|
|
687
|
-
store.setState(updates);
|
|
688
|
-
};
|
|
689
|
-
actor.subscribe(projectAndSet);
|
|
690
|
-
const session = store;
|
|
691
|
-
session.send = (event) => actor.send(event);
|
|
544
|
+
highlightActions.pin(overrides.pinnedHighlight);
|
|
545
|
+
}
|
|
692
546
|
return session;
|
|
693
547
|
}
|
|
694
548
|
|
|
695
|
-
// src/styles/tailwind.built.css
|
|
549
|
+
// src/browser/styles/tailwind.built.css
|
|
696
550
|
var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
697
551
|
@layer properties;
|
|
698
552
|
@layer theme, base, components, utilities;
|
|
699
553
|
@layer theme {
|
|
700
554
|
:root, :host {
|
|
555
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
556
|
+
Roboto, sans-serif;
|
|
701
557
|
--color-red-400: oklch(70.4% 0.191 22.216);
|
|
702
558
|
--color-red-500: oklch(63.7% 0.237 25.331);
|
|
703
559
|
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
704
|
-
--color-amber-
|
|
560
|
+
--color-amber-50: oklch(98.7% 0.022 95.277);
|
|
561
|
+
--color-amber-100: oklch(96.2% 0.059 95.617);
|
|
705
562
|
--color-amber-400: oklch(82.8% 0.189 84.429);
|
|
706
563
|
--color-amber-500: oklch(76.9% 0.188 70.08);
|
|
564
|
+
--color-amber-600: oklch(66.6% 0.179 58.318);
|
|
707
565
|
--color-amber-700: oklch(55.5% 0.163 48.998);
|
|
708
|
-
--color-
|
|
566
|
+
--color-amber-800: oklch(47.3% 0.137 46.201);
|
|
567
|
+
--color-emerald-50: oklch(97.9% 0.021 166.113);
|
|
568
|
+
--color-emerald-100: oklch(95% 0.052 163.051);
|
|
709
569
|
--color-emerald-400: oklch(76.5% 0.177 163.223);
|
|
710
570
|
--color-emerald-500: oklch(69.6% 0.17 162.48);
|
|
571
|
+
--color-emerald-600: oklch(59.6% 0.145 163.225);
|
|
711
572
|
--color-emerald-700: oklch(50.8% 0.118 165.612);
|
|
712
|
-
--color-cyan-
|
|
573
|
+
--color-cyan-50: oklch(98.4% 0.019 200.873);
|
|
574
|
+
--color-cyan-100: oklch(95.6% 0.045 203.388);
|
|
713
575
|
--color-cyan-400: oklch(78.9% 0.154 211.53);
|
|
714
576
|
--color-cyan-700: oklch(52% 0.105 223.128);
|
|
715
|
-
--color-blue-
|
|
577
|
+
--color-blue-50: oklch(97% 0.014 254.604);
|
|
578
|
+
--color-blue-100: oklch(93.2% 0.032 255.585);
|
|
716
579
|
--color-blue-400: oklch(70.7% 0.165 254.624);
|
|
717
580
|
--color-blue-500: oklch(62.3% 0.214 259.815);
|
|
718
581
|
--color-blue-700: oklch(48.8% 0.243 264.376);
|
|
719
|
-
--color-violet-
|
|
582
|
+
--color-violet-50: oklch(96.9% 0.016 293.756);
|
|
583
|
+
--color-violet-100: oklch(94.3% 0.029 294.588);
|
|
720
584
|
--color-violet-400: oklch(70.2% 0.183 293.541);
|
|
721
585
|
--color-violet-700: oklch(49.1% 0.27 292.581);
|
|
722
|
-
--color-fuchsia-
|
|
586
|
+
--color-fuchsia-50: oklch(97.7% 0.017 320.058);
|
|
587
|
+
--color-fuchsia-100: oklch(95.2% 0.037 318.852);
|
|
723
588
|
--color-fuchsia-400: oklch(74% 0.238 322.16);
|
|
724
589
|
--color-fuchsia-700: oklch(51.8% 0.253 323.949);
|
|
725
|
-
--color-rose-
|
|
590
|
+
--color-rose-50: oklch(96.9% 0.015 12.422);
|
|
591
|
+
--color-rose-100: oklch(94.1% 0.03 12.58);
|
|
726
592
|
--color-rose-400: oklch(71.2% 0.194 13.428);
|
|
593
|
+
--color-rose-600: oklch(58.6% 0.253 17.585);
|
|
727
594
|
--color-rose-700: oklch(51.4% 0.222 16.935);
|
|
728
|
-
--color-slate-
|
|
595
|
+
--color-slate-50: oklch(98.4% 0.003 247.858);
|
|
596
|
+
--color-slate-100: oklch(96.8% 0.007 247.896);
|
|
729
597
|
--color-slate-400: oklch(70.4% 0.04 256.788);
|
|
730
|
-
--color-slate-
|
|
598
|
+
--color-slate-500: oklch(55.4% 0.046 257.417);
|
|
599
|
+
--color-slate-600: oklch(44.6% 0.043 257.281);
|
|
731
600
|
--color-neutral-50: oklch(98.5% 0 0);
|
|
732
601
|
--color-neutral-100: oklch(97% 0 0);
|
|
733
602
|
--color-neutral-400: oklch(70.8% 0 0);
|
|
@@ -737,6 +606,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
737
606
|
--color-black: #000;
|
|
738
607
|
--color-white: #fff;
|
|
739
608
|
--spacing: 0.25rem;
|
|
609
|
+
--container-sm: 24rem;
|
|
740
610
|
--container-xl: 36rem;
|
|
741
611
|
--text-xs: 0.75rem;
|
|
742
612
|
--text-xs--line-height: calc(1 / 0.75);
|
|
@@ -744,20 +614,28 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
744
614
|
--text-sm--line-height: calc(1.25 / 0.875);
|
|
745
615
|
--text-base: 1rem;
|
|
746
616
|
--text-base--line-height: calc(1.5 / 1);
|
|
617
|
+
--text-xl: 1.25rem;
|
|
618
|
+
--text-xl--line-height: calc(1.75 / 1.25);
|
|
747
619
|
--font-weight-normal: 400;
|
|
748
620
|
--font-weight-medium: 500;
|
|
749
621
|
--font-weight-semibold: 600;
|
|
622
|
+
--font-weight-bold: 700;
|
|
623
|
+
--tracking-tight: -0.025em;
|
|
750
624
|
--tracking-widest: 0.1em;
|
|
751
625
|
--leading-relaxed: 1.625;
|
|
626
|
+
--radius-md: calc(var(--radius) * 0.8);
|
|
627
|
+
--radius-lg: var(--radius);
|
|
752
628
|
--radius-xl: calc(var(--radius) * 1.4);
|
|
753
629
|
--radius-2xl: calc(var(--radius) * 1.8);
|
|
754
630
|
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
631
|
+
--animate-spin: spin 1s linear infinite;
|
|
755
632
|
--blur-sm: 8px;
|
|
756
633
|
--default-transition-duration: 150ms;
|
|
757
634
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
758
635
|
--default-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
759
636
|
Roboto, sans-serif;
|
|
760
637
|
--default-mono-font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
638
|
+
--color-muted: var(--muted);
|
|
761
639
|
--color-border: var(--border);
|
|
762
640
|
}
|
|
763
641
|
}
|
|
@@ -913,6 +791,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
913
791
|
.pointer-events-none {
|
|
914
792
|
pointer-events: none;
|
|
915
793
|
}
|
|
794
|
+
.\\!visible {
|
|
795
|
+
visibility: visible !important;
|
|
796
|
+
}
|
|
797
|
+
.collapse {
|
|
798
|
+
visibility: collapse;
|
|
799
|
+
}
|
|
916
800
|
.invisible {
|
|
917
801
|
visibility: hidden;
|
|
918
802
|
}
|
|
@@ -948,18 +832,33 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
948
832
|
.end {
|
|
949
833
|
inset-inline-end: var(--spacing);
|
|
950
834
|
}
|
|
835
|
+
.-top-1 {
|
|
836
|
+
top: calc(var(--spacing) * -1);
|
|
837
|
+
}
|
|
838
|
+
.-right-1 {
|
|
839
|
+
right: calc(var(--spacing) * -1);
|
|
840
|
+
}
|
|
841
|
+
.right-0 {
|
|
842
|
+
right: calc(var(--spacing) * 0);
|
|
843
|
+
}
|
|
951
844
|
.right-2 {
|
|
952
845
|
right: calc(var(--spacing) * 2);
|
|
953
846
|
}
|
|
954
|
-
.
|
|
955
|
-
|
|
847
|
+
.bottom-full {
|
|
848
|
+
bottom: 100%;
|
|
849
|
+
}
|
|
850
|
+
.bottom-px {
|
|
851
|
+
bottom: 1px;
|
|
956
852
|
}
|
|
957
|
-
.
|
|
958
|
-
|
|
853
|
+
.z-1 {
|
|
854
|
+
z-index: 1;
|
|
959
855
|
}
|
|
960
856
|
.z-10 {
|
|
961
857
|
z-index: 10;
|
|
962
858
|
}
|
|
859
|
+
.z-\\[2147483647\\] {
|
|
860
|
+
z-index: 2147483647;
|
|
861
|
+
}
|
|
963
862
|
.container {
|
|
964
863
|
width: 100%;
|
|
965
864
|
@media (width >= 40rem) {
|
|
@@ -996,6 +895,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
996
895
|
.mt-1 {
|
|
997
896
|
margin-top: calc(var(--spacing) * 1);
|
|
998
897
|
}
|
|
898
|
+
.mb-2 {
|
|
899
|
+
margin-bottom: calc(var(--spacing) * 2);
|
|
900
|
+
}
|
|
901
|
+
.mb-6 {
|
|
902
|
+
margin-bottom: calc(var(--spacing) * 6);
|
|
903
|
+
}
|
|
999
904
|
.ml-auto {
|
|
1000
905
|
margin-left: auto;
|
|
1001
906
|
}
|
|
@@ -1026,6 +931,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1026
931
|
.table {
|
|
1027
932
|
display: table;
|
|
1028
933
|
}
|
|
934
|
+
.size-2 {
|
|
935
|
+
width: calc(var(--spacing) * 2);
|
|
936
|
+
height: calc(var(--spacing) * 2);
|
|
937
|
+
}
|
|
938
|
+
.size-3 {
|
|
939
|
+
width: calc(var(--spacing) * 3);
|
|
940
|
+
height: calc(var(--spacing) * 3);
|
|
941
|
+
}
|
|
1029
942
|
.size-3\\.5 {
|
|
1030
943
|
width: calc(var(--spacing) * 3.5);
|
|
1031
944
|
height: calc(var(--spacing) * 3.5);
|
|
@@ -1092,6 +1005,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1092
1005
|
.h-px {
|
|
1093
1006
|
height: 1px;
|
|
1094
1007
|
}
|
|
1008
|
+
.max-h-32 {
|
|
1009
|
+
max-height: calc(var(--spacing) * 32);
|
|
1010
|
+
}
|
|
1011
|
+
.max-h-full {
|
|
1012
|
+
max-height: 100%;
|
|
1013
|
+
}
|
|
1095
1014
|
.min-h-0 {
|
|
1096
1015
|
min-height: calc(var(--spacing) * 0);
|
|
1097
1016
|
}
|
|
@@ -1110,6 +1029,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1110
1029
|
.w-4 {
|
|
1111
1030
|
width: calc(var(--spacing) * 4);
|
|
1112
1031
|
}
|
|
1032
|
+
.w-20 {
|
|
1033
|
+
width: calc(var(--spacing) * 20);
|
|
1034
|
+
}
|
|
1035
|
+
.w-36 {
|
|
1036
|
+
width: calc(var(--spacing) * 36);
|
|
1037
|
+
}
|
|
1113
1038
|
.w-56 {
|
|
1114
1039
|
width: calc(var(--spacing) * 56);
|
|
1115
1040
|
}
|
|
@@ -1122,6 +1047,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1122
1047
|
.w-px {
|
|
1123
1048
|
width: 1px;
|
|
1124
1049
|
}
|
|
1050
|
+
.max-w-full {
|
|
1051
|
+
max-width: 100%;
|
|
1052
|
+
}
|
|
1053
|
+
.max-w-sm {
|
|
1054
|
+
max-width: var(--container-sm);
|
|
1055
|
+
}
|
|
1125
1056
|
.max-w-xl {
|
|
1126
1057
|
max-width: var(--container-xl);
|
|
1127
1058
|
}
|
|
@@ -1149,9 +1080,41 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1149
1080
|
.shrink-0 {
|
|
1150
1081
|
flex-shrink: 0;
|
|
1151
1082
|
}
|
|
1083
|
+
.origin-bottom-left {
|
|
1084
|
+
transform-origin: 0 100%;
|
|
1085
|
+
}
|
|
1086
|
+
.origin-bottom-right {
|
|
1087
|
+
transform-origin: 100% 100%;
|
|
1088
|
+
}
|
|
1089
|
+
.-translate-x-0\\.5 {
|
|
1090
|
+
--tw-translate-x: calc(var(--spacing) * -0.5);
|
|
1091
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1092
|
+
}
|
|
1093
|
+
.translate-x-0\\.5 {
|
|
1094
|
+
--tw-translate-x: calc(var(--spacing) * 0.5);
|
|
1095
|
+
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1096
|
+
}
|
|
1097
|
+
.scale-84 {
|
|
1098
|
+
--tw-scale-x: 84%;
|
|
1099
|
+
--tw-scale-y: 84%;
|
|
1100
|
+
--tw-scale-z: 84%;
|
|
1101
|
+
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
1102
|
+
}
|
|
1103
|
+
.-rotate-10 {
|
|
1104
|
+
rotate: calc(10deg * -1);
|
|
1105
|
+
}
|
|
1106
|
+
.rotate-10 {
|
|
1107
|
+
rotate: 10deg;
|
|
1108
|
+
}
|
|
1152
1109
|
.transform {
|
|
1153
1110
|
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
|
1154
1111
|
}
|
|
1112
|
+
.animate-skeleton {
|
|
1113
|
+
animation: skeleton 2s -1s infinite linear;
|
|
1114
|
+
}
|
|
1115
|
+
.animate-spin {
|
|
1116
|
+
animation: var(--animate-spin);
|
|
1117
|
+
}
|
|
1155
1118
|
.cursor-default {
|
|
1156
1119
|
cursor: default;
|
|
1157
1120
|
}
|
|
@@ -1176,9 +1139,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1176
1139
|
.flex-row {
|
|
1177
1140
|
flex-direction: row;
|
|
1178
1141
|
}
|
|
1179
|
-
.flex-wrap {
|
|
1180
|
-
flex-wrap: wrap;
|
|
1181
|
-
}
|
|
1182
1142
|
.items-center {
|
|
1183
1143
|
align-items: center;
|
|
1184
1144
|
}
|
|
@@ -1197,6 +1157,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1197
1157
|
.gap-0 {
|
|
1198
1158
|
gap: calc(var(--spacing) * 0);
|
|
1199
1159
|
}
|
|
1160
|
+
.gap-0\\.5 {
|
|
1161
|
+
gap: calc(var(--spacing) * 0.5);
|
|
1162
|
+
}
|
|
1200
1163
|
.gap-1 {
|
|
1201
1164
|
gap: calc(var(--spacing) * 1);
|
|
1202
1165
|
}
|
|
@@ -1212,6 +1175,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1212
1175
|
.gap-4 {
|
|
1213
1176
|
gap: calc(var(--spacing) * 4);
|
|
1214
1177
|
}
|
|
1178
|
+
.gap-6 {
|
|
1179
|
+
gap: calc(var(--spacing) * 6);
|
|
1180
|
+
}
|
|
1215
1181
|
.self-start {
|
|
1216
1182
|
align-self: flex-start;
|
|
1217
1183
|
}
|
|
@@ -1232,6 +1198,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1232
1198
|
.rounded-\\[0\\.25rem\\] {
|
|
1233
1199
|
border-radius: 0.25rem;
|
|
1234
1200
|
}
|
|
1201
|
+
.rounded-full {
|
|
1202
|
+
border-radius: calc(infinity * 1px);
|
|
1203
|
+
}
|
|
1235
1204
|
.rounded-lg {
|
|
1236
1205
|
border-radius: var(--radius);
|
|
1237
1206
|
}
|
|
@@ -1241,6 +1210,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1241
1210
|
.rounded-sm {
|
|
1242
1211
|
border-radius: calc(var(--radius) * 0.6);
|
|
1243
1212
|
}
|
|
1213
|
+
.rounded-xl {
|
|
1214
|
+
border-radius: calc(var(--radius) * 1.4);
|
|
1215
|
+
}
|
|
1244
1216
|
.rounded-t-xl {
|
|
1245
1217
|
border-top-left-radius: calc(var(--radius) * 1.4);
|
|
1246
1218
|
border-top-right-radius: calc(var(--radius) * 1.4);
|
|
@@ -1261,12 +1233,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1261
1233
|
border-bottom-style: var(--tw-border-style);
|
|
1262
1234
|
border-bottom-width: 0px;
|
|
1263
1235
|
}
|
|
1236
|
+
.border-amber-500\\/40 {
|
|
1237
|
+
border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 40%, transparent);
|
|
1238
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1239
|
+
border-color: color-mix(in oklab, var(--color-amber-500) 40%, transparent);
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1264
1242
|
.border-border {
|
|
1265
1243
|
border-color: var(--border);
|
|
1266
1244
|
}
|
|
1267
1245
|
.border-destructive {
|
|
1268
1246
|
border-color: var(--destructive);
|
|
1269
1247
|
}
|
|
1248
|
+
.border-info\\/40 {
|
|
1249
|
+
border-color: var(--info);
|
|
1250
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1251
|
+
border-color: color-mix(in oklab, var(--info) 40%, transparent);
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1270
1254
|
.border-input {
|
|
1271
1255
|
border-color: var(--input);
|
|
1272
1256
|
}
|
|
@@ -1276,10 +1260,13 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1276
1260
|
.border-transparent {
|
|
1277
1261
|
border-color: transparent;
|
|
1278
1262
|
}
|
|
1279
|
-
.bg-amber-
|
|
1280
|
-
background-color: color-
|
|
1263
|
+
.bg-amber-50 {
|
|
1264
|
+
background-color: var(--color-amber-50);
|
|
1265
|
+
}
|
|
1266
|
+
.bg-amber-500\\/15 {
|
|
1267
|
+
background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 15%, transparent);
|
|
1281
1268
|
@supports (color: color-mix(in lab, red, red)) {
|
|
1282
|
-
background-color: color-mix(in oklab, var(--color-amber-
|
|
1269
|
+
background-color: color-mix(in oklab, var(--color-amber-500) 15%, transparent);
|
|
1283
1270
|
}
|
|
1284
1271
|
}
|
|
1285
1272
|
.bg-background {
|
|
@@ -1291,20 +1278,23 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1291
1278
|
background-color: color-mix(in oklab, var(--color-black) 32%, transparent);
|
|
1292
1279
|
}
|
|
1293
1280
|
}
|
|
1294
|
-
.bg-
|
|
1295
|
-
background-color: color-mix(in srgb,
|
|
1281
|
+
.bg-black\\/80 {
|
|
1282
|
+
background-color: color-mix(in srgb, #000 80%, transparent);
|
|
1296
1283
|
@supports (color: color-mix(in lab, red, red)) {
|
|
1297
|
-
background-color: color-mix(in oklab, var(--color-
|
|
1284
|
+
background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
|
|
1298
1285
|
}
|
|
1299
1286
|
}
|
|
1287
|
+
.bg-blue-50 {
|
|
1288
|
+
background-color: var(--color-blue-50);
|
|
1289
|
+
}
|
|
1300
1290
|
.bg-border {
|
|
1301
1291
|
background-color: var(--border);
|
|
1302
1292
|
}
|
|
1303
|
-
.bg-
|
|
1304
|
-
background-color:
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1293
|
+
.bg-card {
|
|
1294
|
+
background-color: var(--card);
|
|
1295
|
+
}
|
|
1296
|
+
.bg-cyan-50 {
|
|
1297
|
+
background-color: var(--color-cyan-50);
|
|
1308
1298
|
}
|
|
1309
1299
|
.bg-destructive {
|
|
1310
1300
|
background-color: var(--destructive);
|
|
@@ -1315,17 +1305,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1315
1305
|
background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
|
|
1316
1306
|
}
|
|
1317
1307
|
}
|
|
1318
|
-
.bg-emerald-
|
|
1319
|
-
background-color: color-
|
|
1320
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1321
|
-
background-color: color-mix(in oklab, var(--color-emerald-400) 20%, transparent);
|
|
1322
|
-
}
|
|
1308
|
+
.bg-emerald-50 {
|
|
1309
|
+
background-color: var(--color-emerald-50);
|
|
1323
1310
|
}
|
|
1324
|
-
.bg-
|
|
1325
|
-
background-color: color-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1311
|
+
.bg-emerald-500 {
|
|
1312
|
+
background-color: var(--color-emerald-500);
|
|
1313
|
+
}
|
|
1314
|
+
.bg-fuchsia-50 {
|
|
1315
|
+
background-color: var(--color-fuchsia-50);
|
|
1316
|
+
}
|
|
1317
|
+
.bg-info {
|
|
1318
|
+
background-color: var(--info);
|
|
1329
1319
|
}
|
|
1330
1320
|
.bg-info\\/10 {
|
|
1331
1321
|
background-color: var(--info);
|
|
@@ -1333,6 +1323,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1333
1323
|
background-color: color-mix(in oklab, var(--info) 10%, transparent);
|
|
1334
1324
|
}
|
|
1335
1325
|
}
|
|
1326
|
+
.bg-info\\/15 {
|
|
1327
|
+
background-color: var(--info);
|
|
1328
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1329
|
+
background-color: color-mix(in oklab, var(--info) 15%, transparent);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1336
1332
|
.bg-muted {
|
|
1337
1333
|
background-color: var(--muted);
|
|
1338
1334
|
}
|
|
@@ -1342,20 +1338,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1342
1338
|
.bg-primary {
|
|
1343
1339
|
background-color: var(--primary);
|
|
1344
1340
|
}
|
|
1345
|
-
.bg-rose-
|
|
1346
|
-
background-color: color-
|
|
1347
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1348
|
-
background-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
1349
|
-
}
|
|
1341
|
+
.bg-rose-50 {
|
|
1342
|
+
background-color: var(--color-rose-50);
|
|
1350
1343
|
}
|
|
1351
1344
|
.bg-secondary {
|
|
1352
1345
|
background-color: var(--secondary);
|
|
1353
1346
|
}
|
|
1354
|
-
.bg-slate-
|
|
1355
|
-
background-color: color-
|
|
1356
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1357
|
-
background-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
1358
|
-
}
|
|
1347
|
+
.bg-slate-50 {
|
|
1348
|
+
background-color: var(--color-slate-50);
|
|
1359
1349
|
}
|
|
1360
1350
|
.bg-success\\/10 {
|
|
1361
1351
|
background-color: var(--success);
|
|
@@ -1366,11 +1356,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1366
1356
|
.bg-transparent {
|
|
1367
1357
|
background-color: transparent;
|
|
1368
1358
|
}
|
|
1369
|
-
.bg-violet-
|
|
1370
|
-
background-color: color-
|
|
1371
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1372
|
-
background-color: color-mix(in oklab, var(--color-violet-400) 20%, transparent);
|
|
1373
|
-
}
|
|
1359
|
+
.bg-violet-50 {
|
|
1360
|
+
background-color: var(--color-violet-50);
|
|
1374
1361
|
}
|
|
1375
1362
|
.bg-warning\\/10 {
|
|
1376
1363
|
background-color: var(--warning);
|
|
@@ -1387,15 +1374,27 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1387
1374
|
.bg-no-repeat {
|
|
1388
1375
|
background-repeat: no-repeat;
|
|
1389
1376
|
}
|
|
1377
|
+
.object-cover {
|
|
1378
|
+
object-fit: cover;
|
|
1379
|
+
}
|
|
1380
|
+
.object-top {
|
|
1381
|
+
object-position: top;
|
|
1382
|
+
}
|
|
1390
1383
|
.p-1 {
|
|
1391
1384
|
padding: calc(var(--spacing) * 1);
|
|
1392
1385
|
}
|
|
1386
|
+
.p-1\\.5 {
|
|
1387
|
+
padding: calc(var(--spacing) * 1.5);
|
|
1388
|
+
}
|
|
1393
1389
|
.p-2 {
|
|
1394
1390
|
padding: calc(var(--spacing) * 2);
|
|
1395
1391
|
}
|
|
1396
1392
|
.p-4 {
|
|
1397
1393
|
padding: calc(var(--spacing) * 4);
|
|
1398
1394
|
}
|
|
1395
|
+
.p-6 {
|
|
1396
|
+
padding: calc(var(--spacing) * 6);
|
|
1397
|
+
}
|
|
1399
1398
|
.px-0 {
|
|
1400
1399
|
padding-inline: calc(var(--spacing) * 0);
|
|
1401
1400
|
}
|
|
@@ -1420,8 +1419,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1420
1419
|
.px-4 {
|
|
1421
1420
|
padding-inline: calc(var(--spacing) * 4);
|
|
1422
1421
|
}
|
|
1423
|
-
.px-
|
|
1424
|
-
padding-inline: calc(var(--spacing) *
|
|
1422
|
+
.px-6 {
|
|
1423
|
+
padding-inline: calc(var(--spacing) * 6);
|
|
1425
1424
|
}
|
|
1426
1425
|
.py-0 {
|
|
1427
1426
|
padding-block: calc(var(--spacing) * 0);
|
|
@@ -1435,12 +1434,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1435
1434
|
.py-2 {
|
|
1436
1435
|
padding-block: calc(var(--spacing) * 2);
|
|
1437
1436
|
}
|
|
1438
|
-
.py-3 {
|
|
1439
|
-
padding-block: calc(var(--spacing) * 3);
|
|
1440
|
-
}
|
|
1441
1437
|
.py-4 {
|
|
1442
1438
|
padding-block: calc(var(--spacing) * 4);
|
|
1443
1439
|
}
|
|
1440
|
+
.py-12 {
|
|
1441
|
+
padding-block: calc(var(--spacing) * 12);
|
|
1442
|
+
}
|
|
1444
1443
|
.py-\\[max\\(1rem\\,4vh\\)\\] {
|
|
1445
1444
|
padding-block: max(1rem, 4vh);
|
|
1446
1445
|
}
|
|
@@ -1450,6 +1449,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1450
1449
|
.pe-3 {
|
|
1451
1450
|
padding-inline-end: calc(var(--spacing) * 3);
|
|
1452
1451
|
}
|
|
1452
|
+
.pt-2 {
|
|
1453
|
+
padding-top: calc(var(--spacing) * 2);
|
|
1454
|
+
}
|
|
1453
1455
|
.pr-8 {
|
|
1454
1456
|
padding-right: calc(var(--spacing) * 8);
|
|
1455
1457
|
}
|
|
@@ -1481,6 +1483,10 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1481
1483
|
font-size: var(--text-sm);
|
|
1482
1484
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
1483
1485
|
}
|
|
1486
|
+
.text-xl {
|
|
1487
|
+
font-size: var(--text-xl);
|
|
1488
|
+
line-height: var(--tw-leading, var(--text-xl--line-height));
|
|
1489
|
+
}
|
|
1484
1490
|
.text-xs {
|
|
1485
1491
|
font-size: var(--text-xs);
|
|
1486
1492
|
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
@@ -1488,10 +1494,27 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1488
1494
|
.text-\\[0\\.625rem\\] {
|
|
1489
1495
|
font-size: 0.625rem;
|
|
1490
1496
|
}
|
|
1497
|
+
.text-\\[9px\\] {
|
|
1498
|
+
font-size: 9px;
|
|
1499
|
+
}
|
|
1500
|
+
.text-\\[10px\\] {
|
|
1501
|
+
font-size: 10px;
|
|
1502
|
+
}
|
|
1503
|
+
.text-\\[11px\\] {
|
|
1504
|
+
font-size: 11px;
|
|
1505
|
+
}
|
|
1506
|
+
.leading-none {
|
|
1507
|
+
--tw-leading: 1;
|
|
1508
|
+
line-height: 1;
|
|
1509
|
+
}
|
|
1491
1510
|
.leading-relaxed {
|
|
1492
1511
|
--tw-leading: var(--leading-relaxed);
|
|
1493
1512
|
line-height: var(--leading-relaxed);
|
|
1494
1513
|
}
|
|
1514
|
+
.font-bold {
|
|
1515
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
1516
|
+
font-weight: var(--font-weight-bold);
|
|
1517
|
+
}
|
|
1495
1518
|
.font-medium {
|
|
1496
1519
|
--tw-font-weight: var(--font-weight-medium);
|
|
1497
1520
|
font-weight: var(--font-weight-medium);
|
|
@@ -1504,10 +1527,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1504
1527
|
--tw-font-weight: var(--font-weight-semibold);
|
|
1505
1528
|
font-weight: var(--font-weight-semibold);
|
|
1506
1529
|
}
|
|
1530
|
+
.tracking-tight {
|
|
1531
|
+
--tw-tracking: var(--tracking-tight);
|
|
1532
|
+
letter-spacing: var(--tracking-tight);
|
|
1533
|
+
}
|
|
1507
1534
|
.tracking-widest {
|
|
1508
1535
|
--tw-tracking: var(--tracking-widest);
|
|
1509
1536
|
letter-spacing: var(--tracking-widest);
|
|
1510
1537
|
}
|
|
1538
|
+
.text-balance {
|
|
1539
|
+
text-wrap: balance;
|
|
1540
|
+
}
|
|
1511
1541
|
.break-words {
|
|
1512
1542
|
overflow-wrap: break-word;
|
|
1513
1543
|
}
|
|
@@ -1517,15 +1547,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1517
1547
|
.whitespace-nowrap {
|
|
1518
1548
|
white-space: nowrap;
|
|
1519
1549
|
}
|
|
1550
|
+
.text-amber-600 {
|
|
1551
|
+
color: var(--color-amber-600);
|
|
1552
|
+
}
|
|
1520
1553
|
.text-amber-700 {
|
|
1521
1554
|
color: var(--color-amber-700);
|
|
1522
1555
|
}
|
|
1556
|
+
.text-amber-800 {
|
|
1557
|
+
color: var(--color-amber-800);
|
|
1558
|
+
}
|
|
1523
1559
|
.text-blue-700 {
|
|
1524
1560
|
color: var(--color-blue-700);
|
|
1525
1561
|
}
|
|
1526
1562
|
.text-cyan-700 {
|
|
1527
1563
|
color: var(--color-cyan-700);
|
|
1528
1564
|
}
|
|
1565
|
+
.text-destructive {
|
|
1566
|
+
color: var(--destructive);
|
|
1567
|
+
}
|
|
1529
1568
|
.text-destructive-foreground {
|
|
1530
1569
|
color: var(--destructive-foreground);
|
|
1531
1570
|
}
|
|
@@ -1562,8 +1601,8 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1562
1601
|
.text-secondary-foreground {
|
|
1563
1602
|
color: var(--secondary-foreground);
|
|
1564
1603
|
}
|
|
1565
|
-
.text-slate-
|
|
1566
|
-
color: var(--color-slate-
|
|
1604
|
+
.text-slate-600 {
|
|
1605
|
+
color: var(--color-slate-600);
|
|
1567
1606
|
}
|
|
1568
1607
|
.text-success-foreground {
|
|
1569
1608
|
color: var(--success-foreground);
|
|
@@ -1580,6 +1619,14 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1580
1619
|
.lowercase {
|
|
1581
1620
|
text-transform: lowercase;
|
|
1582
1621
|
}
|
|
1622
|
+
.ordinal {
|
|
1623
|
+
--tw-ordinal: ordinal;
|
|
1624
|
+
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
1625
|
+
}
|
|
1626
|
+
.tabular-nums {
|
|
1627
|
+
--tw-numeric-spacing: tabular-nums;
|
|
1628
|
+
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
1629
|
+
}
|
|
1583
1630
|
.line-through {
|
|
1584
1631
|
text-decoration-line: line-through;
|
|
1585
1632
|
}
|
|
@@ -1595,6 +1642,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1595
1642
|
.accent-primary {
|
|
1596
1643
|
accent-color: var(--primary);
|
|
1597
1644
|
}
|
|
1645
|
+
.opacity-50 {
|
|
1646
|
+
opacity: 50%;
|
|
1647
|
+
}
|
|
1598
1648
|
.opacity-80 {
|
|
1599
1649
|
opacity: 80%;
|
|
1600
1650
|
}
|
|
@@ -1603,6 +1653,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1603
1653
|
--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%));
|
|
1604
1654
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1605
1655
|
}
|
|
1656
|
+
.shadow-sm\\/5 {
|
|
1657
|
+
--tw-shadow-alpha: 5%;
|
|
1658
|
+
--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%));
|
|
1659
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1660
|
+
}
|
|
1606
1661
|
.shadow-xs\\/5 {
|
|
1607
1662
|
--tw-shadow-alpha: 5%;
|
|
1608
1663
|
--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.05) l a b / 5%));
|
|
@@ -1628,6 +1683,58 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1628
1683
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
1629
1684
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1630
1685
|
}
|
|
1686
|
+
.inset-ring {
|
|
1687
|
+
--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);
|
|
1688
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1689
|
+
}
|
|
1690
|
+
.inset-ring-amber-600\\/20 {
|
|
1691
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(66.6% 0.179 58.318) 20%, transparent);
|
|
1692
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1693
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-amber-600) 20%, transparent);
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
.inset-ring-blue-700\\/10 {
|
|
1697
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(48.8% 0.243 264.376) 10%, transparent);
|
|
1698
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1699
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-blue-700) 10%, transparent);
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
.inset-ring-cyan-700\\/10 {
|
|
1703
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(52% 0.105 223.128) 10%, transparent);
|
|
1704
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1705
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-cyan-700) 10%, transparent);
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
.inset-ring-emerald-600\\/20 {
|
|
1709
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(59.6% 0.145 163.225) 20%, transparent);
|
|
1710
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1711
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-emerald-600) 20%, transparent);
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
.inset-ring-fuchsia-700\\/10 {
|
|
1715
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(51.8% 0.253 323.949) 10%, transparent);
|
|
1716
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1717
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-fuchsia-700) 10%, transparent);
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
.inset-ring-rose-600\\/10 {
|
|
1721
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(58.6% 0.253 17.585) 10%, transparent);
|
|
1722
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1723
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-rose-600) 10%, transparent);
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
.inset-ring-slate-500\\/10 {
|
|
1727
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(55.4% 0.046 257.417) 10%, transparent);
|
|
1728
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1729
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-slate-500) 10%, transparent);
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
.inset-ring-violet-700\\/10 {
|
|
1733
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(49.1% 0.27 292.581) 10%, transparent);
|
|
1734
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1735
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-violet-700) 10%, transparent);
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1631
1738
|
.outline {
|
|
1632
1739
|
outline-style: var(--tw-outline-style);
|
|
1633
1740
|
outline-width: 1px;
|
|
@@ -1671,76 +1778,61 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1671
1778
|
-webkit-user-select: none;
|
|
1672
1779
|
user-select: none;
|
|
1673
1780
|
}
|
|
1781
|
+
.\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/64\\%\\)\\] {
|
|
1782
|
+
--skeleton-highlight: color-mix(in srgb, #fff 64%, transparent);
|
|
1783
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1784
|
+
--skeleton-highlight: color-mix(in oklab, var(--color-white) 64%, transparent);
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
.\\[background\\:linear-gradient\\(120deg\\,transparent_40\\%\\,var\\(--skeleton-highlight\\)\\,transparent_60\\%\\)_var\\(--color-muted\\)_0_0\\/200\\%_100\\%_fixed\\] {
|
|
1788
|
+
background: linear-gradient(120deg,transparent 40%,var(--skeleton-highlight),transparent 60%) var(--color-muted) 0 0/200% 100% fixed;
|
|
1789
|
+
}
|
|
1674
1790
|
.\\[clip-path\\:inset\\(0_1px\\)\\] {
|
|
1675
1791
|
clip-path: inset(0 1px);
|
|
1676
1792
|
}
|
|
1677
1793
|
.not-dark\\:bg-clip-padding {
|
|
1678
|
-
&:not(*:is(.dark *)) {
|
|
1794
|
+
&:not(*:is(.dark *, :host(.dark) *)) {
|
|
1679
1795
|
background-clip: padding-box;
|
|
1680
1796
|
}
|
|
1681
1797
|
}
|
|
1682
|
-
.group-data-hover\\:bg-amber-
|
|
1798
|
+
.group-data-hover\\:bg-amber-100 {
|
|
1683
1799
|
&:is(:where(.group)[data-hover] *) {
|
|
1684
|
-
background-color: color-
|
|
1685
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1686
|
-
background-color: color-mix(in oklab, var(--color-amber-400) 30%, transparent);
|
|
1687
|
-
}
|
|
1800
|
+
background-color: var(--color-amber-100);
|
|
1688
1801
|
}
|
|
1689
1802
|
}
|
|
1690
|
-
.group-data-hover\\:bg-blue-
|
|
1803
|
+
.group-data-hover\\:bg-blue-100 {
|
|
1691
1804
|
&:is(:where(.group)[data-hover] *) {
|
|
1692
|
-
background-color: color-
|
|
1693
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1694
|
-
background-color: color-mix(in oklab, var(--color-blue-400) 30%, transparent);
|
|
1695
|
-
}
|
|
1805
|
+
background-color: var(--color-blue-100);
|
|
1696
1806
|
}
|
|
1697
1807
|
}
|
|
1698
|
-
.group-data-hover\\:bg-cyan-
|
|
1808
|
+
.group-data-hover\\:bg-cyan-100 {
|
|
1699
1809
|
&:is(:where(.group)[data-hover] *) {
|
|
1700
|
-
background-color: color-
|
|
1701
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1702
|
-
background-color: color-mix(in oklab, var(--color-cyan-400) 30%, transparent);
|
|
1703
|
-
}
|
|
1810
|
+
background-color: var(--color-cyan-100);
|
|
1704
1811
|
}
|
|
1705
1812
|
}
|
|
1706
|
-
.group-data-hover\\:bg-emerald-
|
|
1813
|
+
.group-data-hover\\:bg-emerald-100 {
|
|
1707
1814
|
&:is(:where(.group)[data-hover] *) {
|
|
1708
|
-
background-color: color-
|
|
1709
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1710
|
-
background-color: color-mix(in oklab, var(--color-emerald-400) 30%, transparent);
|
|
1711
|
-
}
|
|
1815
|
+
background-color: var(--color-emerald-100);
|
|
1712
1816
|
}
|
|
1713
1817
|
}
|
|
1714
|
-
.group-data-hover\\:bg-fuchsia-
|
|
1818
|
+
.group-data-hover\\:bg-fuchsia-100 {
|
|
1715
1819
|
&:is(:where(.group)[data-hover] *) {
|
|
1716
|
-
background-color: color-
|
|
1717
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1718
|
-
background-color: color-mix(in oklab, var(--color-fuchsia-400) 30%, transparent);
|
|
1719
|
-
}
|
|
1820
|
+
background-color: var(--color-fuchsia-100);
|
|
1720
1821
|
}
|
|
1721
1822
|
}
|
|
1722
|
-
.group-data-hover\\:bg-rose-
|
|
1823
|
+
.group-data-hover\\:bg-rose-100 {
|
|
1723
1824
|
&:is(:where(.group)[data-hover] *) {
|
|
1724
|
-
background-color: color-
|
|
1725
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1726
|
-
background-color: color-mix(in oklab, var(--color-rose-400) 30%, transparent);
|
|
1727
|
-
}
|
|
1825
|
+
background-color: var(--color-rose-100);
|
|
1728
1826
|
}
|
|
1729
1827
|
}
|
|
1730
|
-
.group-data-hover\\:bg-slate-
|
|
1828
|
+
.group-data-hover\\:bg-slate-100 {
|
|
1731
1829
|
&:is(:where(.group)[data-hover] *) {
|
|
1732
|
-
background-color: color-
|
|
1733
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1734
|
-
background-color: color-mix(in oklab, var(--color-slate-400) 30%, transparent);
|
|
1735
|
-
}
|
|
1830
|
+
background-color: var(--color-slate-100);
|
|
1736
1831
|
}
|
|
1737
1832
|
}
|
|
1738
|
-
.group-data-hover\\:bg-violet-
|
|
1833
|
+
.group-data-hover\\:bg-violet-100 {
|
|
1739
1834
|
&:is(:where(.group)[data-hover] *) {
|
|
1740
|
-
background-color: color-
|
|
1741
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1742
|
-
background-color: color-mix(in oklab, var(--color-violet-400) 30%, transparent);
|
|
1743
|
-
}
|
|
1835
|
+
background-color: var(--color-violet-100);
|
|
1744
1836
|
}
|
|
1745
1837
|
}
|
|
1746
1838
|
.placeholder\\:text-muted-foreground {
|
|
@@ -1772,6 +1864,24 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1772
1864
|
border-radius: calc(var(--radius-2xl) - 1px);
|
|
1773
1865
|
}
|
|
1774
1866
|
}
|
|
1867
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-lg\\)-1px\\)\\] {
|
|
1868
|
+
&::before {
|
|
1869
|
+
content: var(--tw-content);
|
|
1870
|
+
border-radius: calc(var(--radius-lg) - 1px);
|
|
1871
|
+
}
|
|
1872
|
+
}
|
|
1873
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-md\\)-1px\\)\\] {
|
|
1874
|
+
&::before {
|
|
1875
|
+
content: var(--tw-content);
|
|
1876
|
+
border-radius: calc(var(--radius-md) - 1px);
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
.before\\:rounded-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
|
|
1880
|
+
&::before {
|
|
1881
|
+
content: var(--tw-content);
|
|
1882
|
+
border-radius: calc(var(--radius-xl) - 1px);
|
|
1883
|
+
}
|
|
1884
|
+
}
|
|
1775
1885
|
.before\\:rounded-t-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
|
|
1776
1886
|
&::before {
|
|
1777
1887
|
content: var(--tw-content);
|
|
@@ -1803,16 +1913,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1803
1913
|
border-color: var(--ring);
|
|
1804
1914
|
}
|
|
1805
1915
|
}
|
|
1806
|
-
.focus-within\\:bg-accent {
|
|
1807
|
-
&:focus-within {
|
|
1808
|
-
background-color: var(--accent);
|
|
1809
|
-
}
|
|
1810
|
-
}
|
|
1811
|
-
.focus-within\\:text-accent-foreground {
|
|
1812
|
-
&:focus-within {
|
|
1813
|
-
color: var(--accent-foreground);
|
|
1814
|
-
}
|
|
1815
|
-
}
|
|
1816
1916
|
.focus-within\\:ring-\\[3px\\] {
|
|
1817
1917
|
&:focus-within {
|
|
1818
1918
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
@@ -1844,6 +1944,16 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1844
1944
|
}
|
|
1845
1945
|
}
|
|
1846
1946
|
}
|
|
1947
|
+
.hover\\:bg-amber-500\\/20 {
|
|
1948
|
+
&:hover {
|
|
1949
|
+
@media (hover: hover) {
|
|
1950
|
+
background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 20%, transparent);
|
|
1951
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1952
|
+
background-color: color-mix(in oklab, var(--color-amber-500) 20%, transparent);
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1847
1957
|
.hover\\:bg-destructive\\/5 {
|
|
1848
1958
|
&:hover {
|
|
1849
1959
|
@media (hover: hover) {
|
|
@@ -1864,6 +1974,16 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1864
1974
|
}
|
|
1865
1975
|
}
|
|
1866
1976
|
}
|
|
1977
|
+
.hover\\:bg-info\\/20 {
|
|
1978
|
+
&:hover {
|
|
1979
|
+
@media (hover: hover) {
|
|
1980
|
+
background-color: var(--info);
|
|
1981
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
1982
|
+
background-color: color-mix(in oklab, var(--info) 20%, transparent);
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1867
1987
|
.hover\\:bg-primary\\/90 {
|
|
1868
1988
|
&:hover {
|
|
1869
1989
|
@media (hover: hover) {
|
|
@@ -1898,16 +2018,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1898
2018
|
}
|
|
1899
2019
|
}
|
|
1900
2020
|
}
|
|
1901
|
-
.focus\\:bg-accent {
|
|
1902
|
-
&:focus {
|
|
1903
|
-
background-color: var(--accent);
|
|
1904
|
-
}
|
|
1905
|
-
}
|
|
1906
|
-
.focus\\:text-accent-foreground {
|
|
1907
|
-
&:focus {
|
|
1908
|
-
color: var(--accent-foreground);
|
|
1909
|
-
}
|
|
1910
|
-
}
|
|
1911
2021
|
.focus\\:outline-none {
|
|
1912
2022
|
&:focus {
|
|
1913
2023
|
--tw-outline-style: none;
|
|
@@ -1965,6 +2075,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1965
2075
|
cursor: not-allowed;
|
|
1966
2076
|
}
|
|
1967
2077
|
}
|
|
2078
|
+
.disabled\\:opacity-50 {
|
|
2079
|
+
&:disabled {
|
|
2080
|
+
opacity: 50%;
|
|
2081
|
+
}
|
|
2082
|
+
}
|
|
1968
2083
|
.disabled\\:opacity-60 {
|
|
1969
2084
|
&:disabled {
|
|
1970
2085
|
opacity: 60%;
|
|
@@ -1998,11 +2113,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1998
2113
|
pointer-events: none;
|
|
1999
2114
|
}
|
|
2000
2115
|
}
|
|
2001
|
-
.data-\\[disabled\\]\\:opacity-60 {
|
|
2002
|
-
&[data-disabled] {
|
|
2003
|
-
opacity: 60%;
|
|
2004
|
-
}
|
|
2005
|
-
}
|
|
2006
2116
|
.data-\\[disabled\\]\\:opacity-64 {
|
|
2007
2117
|
&[data-disabled] {
|
|
2008
2118
|
opacity: 64%;
|
|
@@ -2041,7 +2151,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2041
2151
|
}
|
|
2042
2152
|
}
|
|
2043
2153
|
.dark\\:bg-amber-400\\/10 {
|
|
2044
|
-
&:is(.dark *) {
|
|
2154
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2045
2155
|
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 10%, transparent);
|
|
2046
2156
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2047
2157
|
background-color: color-mix(in oklab, var(--color-amber-400) 10%, transparent);
|
|
@@ -2049,7 +2159,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2049
2159
|
}
|
|
2050
2160
|
}
|
|
2051
2161
|
.dark\\:bg-blue-400\\/10 {
|
|
2052
|
-
&:is(.dark *) {
|
|
2162
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2053
2163
|
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 10%, transparent);
|
|
2054
2164
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2055
2165
|
background-color: color-mix(in oklab, var(--color-blue-400) 10%, transparent);
|
|
@@ -2057,7 +2167,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2057
2167
|
}
|
|
2058
2168
|
}
|
|
2059
2169
|
.dark\\:bg-cyan-400\\/10 {
|
|
2060
|
-
&:is(.dark *) {
|
|
2170
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2061
2171
|
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 10%, transparent);
|
|
2062
2172
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2063
2173
|
background-color: color-mix(in oklab, var(--color-cyan-400) 10%, transparent);
|
|
@@ -2065,7 +2175,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2065
2175
|
}
|
|
2066
2176
|
}
|
|
2067
2177
|
.dark\\:bg-destructive\\/20 {
|
|
2068
|
-
&:is(.dark *) {
|
|
2178
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2069
2179
|
background-color: var(--destructive);
|
|
2070
2180
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2071
2181
|
background-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
|
@@ -2073,7 +2183,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2073
2183
|
}
|
|
2074
2184
|
}
|
|
2075
2185
|
.dark\\:bg-emerald-400\\/10 {
|
|
2076
|
-
&:is(.dark *) {
|
|
2186
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2077
2187
|
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223) 10%, transparent);
|
|
2078
2188
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2079
2189
|
background-color: color-mix(in oklab, var(--color-emerald-400) 10%, transparent);
|
|
@@ -2081,7 +2191,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2081
2191
|
}
|
|
2082
2192
|
}
|
|
2083
2193
|
.dark\\:bg-fuchsia-400\\/10 {
|
|
2084
|
-
&:is(.dark *) {
|
|
2194
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2085
2195
|
background-color: color-mix(in srgb, oklch(74% 0.238 322.16) 10%, transparent);
|
|
2086
2196
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2087
2197
|
background-color: color-mix(in oklab, var(--color-fuchsia-400) 10%, transparent);
|
|
@@ -2089,7 +2199,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2089
2199
|
}
|
|
2090
2200
|
}
|
|
2091
2201
|
.dark\\:bg-info\\/20 {
|
|
2092
|
-
&:is(.dark *) {
|
|
2202
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2093
2203
|
background-color: var(--info);
|
|
2094
2204
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2095
2205
|
background-color: color-mix(in oklab, var(--info) 20%, transparent);
|
|
@@ -2097,7 +2207,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2097
2207
|
}
|
|
2098
2208
|
}
|
|
2099
2209
|
.dark\\:bg-input\\/30 {
|
|
2100
|
-
&:is(.dark *) {
|
|
2210
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2101
2211
|
background-color: var(--input);
|
|
2102
2212
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2103
2213
|
background-color: color-mix(in oklab, var(--input) 30%, transparent);
|
|
@@ -2105,7 +2215,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2105
2215
|
}
|
|
2106
2216
|
}
|
|
2107
2217
|
.dark\\:bg-rose-400\\/10 {
|
|
2108
|
-
&:is(.dark *) {
|
|
2218
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2109
2219
|
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 10%, transparent);
|
|
2110
2220
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2111
2221
|
background-color: color-mix(in oklab, var(--color-rose-400) 10%, transparent);
|
|
@@ -2113,7 +2223,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2113
2223
|
}
|
|
2114
2224
|
}
|
|
2115
2225
|
.dark\\:bg-slate-400\\/10 {
|
|
2116
|
-
&:is(.dark *) {
|
|
2226
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2117
2227
|
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 10%, transparent);
|
|
2118
2228
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2119
2229
|
background-color: color-mix(in oklab, var(--color-slate-400) 10%, transparent);
|
|
@@ -2121,7 +2231,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2121
2231
|
}
|
|
2122
2232
|
}
|
|
2123
2233
|
.dark\\:bg-success\\/20 {
|
|
2124
|
-
&:is(.dark *) {
|
|
2234
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2125
2235
|
background-color: var(--success);
|
|
2126
2236
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2127
2237
|
background-color: color-mix(in oklab, var(--success) 20%, transparent);
|
|
@@ -2129,7 +2239,7 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2129
2239
|
}
|
|
2130
2240
|
}
|
|
2131
2241
|
.dark\\:bg-violet-400\\/10 {
|
|
2132
|
-
&:is(.dark *) {
|
|
2242
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2133
2243
|
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 10%, transparent);
|
|
2134
2244
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2135
2245
|
background-color: color-mix(in oklab, var(--color-violet-400) 10%, transparent);
|
|
@@ -2137,135 +2247,212 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2137
2247
|
}
|
|
2138
2248
|
}
|
|
2139
2249
|
.dark\\:bg-warning\\/20 {
|
|
2140
|
-
&:is(.dark *) {
|
|
2250
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2141
2251
|
background-color: var(--warning);
|
|
2142
2252
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2143
2253
|
background-color: color-mix(in oklab, var(--warning) 20%, transparent);
|
|
2144
2254
|
}
|
|
2145
2255
|
}
|
|
2146
2256
|
}
|
|
2147
|
-
.dark\\:text-amber-
|
|
2148
|
-
&:is(.dark *) {
|
|
2149
|
-
color: var(--color-amber-
|
|
2257
|
+
.dark\\:text-amber-400 {
|
|
2258
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2259
|
+
color: var(--color-amber-400);
|
|
2150
2260
|
}
|
|
2151
2261
|
}
|
|
2152
|
-
.dark\\:text-
|
|
2153
|
-
&:is(.dark *) {
|
|
2154
|
-
color: var(--color-
|
|
2262
|
+
.dark\\:text-amber-500 {
|
|
2263
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2264
|
+
color: var(--color-amber-500);
|
|
2155
2265
|
}
|
|
2156
2266
|
}
|
|
2157
|
-
.dark\\:text-
|
|
2158
|
-
&:is(.dark *) {
|
|
2159
|
-
color: var(--color-
|
|
2267
|
+
.dark\\:text-blue-400 {
|
|
2268
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2269
|
+
color: var(--color-blue-400);
|
|
2160
2270
|
}
|
|
2161
2271
|
}
|
|
2162
|
-
.dark\\:text-
|
|
2163
|
-
&:is(.dark *) {
|
|
2164
|
-
color: var(--color-
|
|
2272
|
+
.dark\\:text-cyan-400 {
|
|
2273
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2274
|
+
color: var(--color-cyan-400);
|
|
2165
2275
|
}
|
|
2166
2276
|
}
|
|
2167
|
-
.dark\\:text-
|
|
2168
|
-
&:is(.dark *) {
|
|
2169
|
-
color: var(--color-
|
|
2277
|
+
.dark\\:text-emerald-400 {
|
|
2278
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2279
|
+
color: var(--color-emerald-400);
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
.dark\\:text-fuchsia-400 {
|
|
2283
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2284
|
+
color: var(--color-fuchsia-400);
|
|
2285
|
+
}
|
|
2286
|
+
}
|
|
2287
|
+
.dark\\:text-rose-400 {
|
|
2288
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2289
|
+
color: var(--color-rose-400);
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
.dark\\:text-slate-400 {
|
|
2293
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2294
|
+
color: var(--color-slate-400);
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
2297
|
+
.dark\\:text-violet-400 {
|
|
2298
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2299
|
+
color: var(--color-violet-400);
|
|
2300
|
+
}
|
|
2301
|
+
}
|
|
2302
|
+
.dark\\:inset-ring-amber-400\\/20 {
|
|
2303
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2304
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 20%, transparent);
|
|
2305
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2306
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-amber-400) 20%, transparent);
|
|
2307
|
+
}
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
.dark\\:inset-ring-blue-400\\/30 {
|
|
2311
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2312
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 30%, transparent);
|
|
2313
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2314
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-blue-400) 30%, transparent);
|
|
2315
|
+
}
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2318
|
+
.dark\\:inset-ring-cyan-400\\/30 {
|
|
2319
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2320
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 30%, transparent);
|
|
2321
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2322
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-cyan-400) 30%, transparent);
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
}
|
|
2326
|
+
.dark\\:inset-ring-emerald-500\\/20 {
|
|
2327
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2328
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 20%, transparent);
|
|
2329
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2330
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-emerald-500) 20%, transparent);
|
|
2331
|
+
}
|
|
2332
|
+
}
|
|
2333
|
+
}
|
|
2334
|
+
.dark\\:inset-ring-fuchsia-400\\/20 {
|
|
2335
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2336
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(74% 0.238 322.16) 20%, transparent);
|
|
2337
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2338
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-fuchsia-400) 20%, transparent);
|
|
2339
|
+
}
|
|
2340
|
+
}
|
|
2341
|
+
}
|
|
2342
|
+
.dark\\:inset-ring-rose-400\\/20 {
|
|
2343
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2344
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 20%, transparent);
|
|
2345
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2346
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
2347
|
+
}
|
|
2170
2348
|
}
|
|
2171
2349
|
}
|
|
2172
|
-
.dark\\:
|
|
2173
|
-
&:is(.dark *) {
|
|
2174
|
-
color:
|
|
2350
|
+
.dark\\:inset-ring-slate-400\\/20 {
|
|
2351
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2352
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 20%, transparent);
|
|
2353
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2354
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
2355
|
+
}
|
|
2175
2356
|
}
|
|
2176
2357
|
}
|
|
2177
|
-
.dark\\:
|
|
2178
|
-
&:is(.dark *) {
|
|
2179
|
-
color:
|
|
2358
|
+
.dark\\:inset-ring-violet-400\\/30 {
|
|
2359
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2360
|
+
--tw-inset-ring-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 30%, transparent);
|
|
2361
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2362
|
+
--tw-inset-ring-color: color-mix(in oklab, var(--color-violet-400) 30%, transparent);
|
|
2363
|
+
}
|
|
2180
2364
|
}
|
|
2181
2365
|
}
|
|
2182
|
-
.dark
|
|
2183
|
-
&:is(.dark *) {
|
|
2184
|
-
|
|
2366
|
+
.dark\\:\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/4\\%\\)\\] {
|
|
2367
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2368
|
+
--skeleton-highlight: color-mix(in srgb, #fff 4%, transparent);
|
|
2369
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2370
|
+
--skeleton-highlight: color-mix(in oklab, var(--color-white) 4%, transparent);
|
|
2371
|
+
}
|
|
2185
2372
|
}
|
|
2186
2373
|
}
|
|
2187
|
-
.dark\\:group-data-hover\\:bg-amber-400\\/
|
|
2188
|
-
&:is(.dark *) {
|
|
2374
|
+
.dark\\:group-data-hover\\:bg-amber-400\\/20 {
|
|
2375
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2189
2376
|
&:is(:where(.group)[data-hover] *) {
|
|
2190
|
-
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429)
|
|
2377
|
+
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 20%, transparent);
|
|
2191
2378
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2192
|
-
background-color: color-mix(in oklab, var(--color-amber-400)
|
|
2379
|
+
background-color: color-mix(in oklab, var(--color-amber-400) 20%, transparent);
|
|
2193
2380
|
}
|
|
2194
2381
|
}
|
|
2195
2382
|
}
|
|
2196
2383
|
}
|
|
2197
|
-
.dark\\:group-data-hover\\:bg-blue-400\\/
|
|
2198
|
-
&:is(.dark *) {
|
|
2384
|
+
.dark\\:group-data-hover\\:bg-blue-400\\/20 {
|
|
2385
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2199
2386
|
&:is(:where(.group)[data-hover] *) {
|
|
2200
|
-
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624)
|
|
2387
|
+
background-color: color-mix(in srgb, oklch(70.7% 0.165 254.624) 20%, transparent);
|
|
2201
2388
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2202
|
-
background-color: color-mix(in oklab, var(--color-blue-400)
|
|
2389
|
+
background-color: color-mix(in oklab, var(--color-blue-400) 20%, transparent);
|
|
2203
2390
|
}
|
|
2204
2391
|
}
|
|
2205
2392
|
}
|
|
2206
2393
|
}
|
|
2207
|
-
.dark\\:group-data-hover\\:bg-cyan-400\\/
|
|
2208
|
-
&:is(.dark *) {
|
|
2394
|
+
.dark\\:group-data-hover\\:bg-cyan-400\\/20 {
|
|
2395
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2209
2396
|
&:is(:where(.group)[data-hover] *) {
|
|
2210
|
-
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53)
|
|
2397
|
+
background-color: color-mix(in srgb, oklch(78.9% 0.154 211.53) 20%, transparent);
|
|
2211
2398
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2212
|
-
background-color: color-mix(in oklab, var(--color-cyan-400)
|
|
2399
|
+
background-color: color-mix(in oklab, var(--color-cyan-400) 20%, transparent);
|
|
2213
2400
|
}
|
|
2214
2401
|
}
|
|
2215
2402
|
}
|
|
2216
2403
|
}
|
|
2217
|
-
.dark\\:group-data-hover\\:bg-emerald-400\\/
|
|
2218
|
-
&:is(.dark *) {
|
|
2404
|
+
.dark\\:group-data-hover\\:bg-emerald-400\\/20 {
|
|
2405
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2219
2406
|
&:is(:where(.group)[data-hover] *) {
|
|
2220
|
-
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223)
|
|
2407
|
+
background-color: color-mix(in srgb, oklch(76.5% 0.177 163.223) 20%, transparent);
|
|
2221
2408
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2222
|
-
background-color: color-mix(in oklab, var(--color-emerald-400)
|
|
2409
|
+
background-color: color-mix(in oklab, var(--color-emerald-400) 20%, transparent);
|
|
2223
2410
|
}
|
|
2224
2411
|
}
|
|
2225
2412
|
}
|
|
2226
2413
|
}
|
|
2227
|
-
.dark\\:group-data-hover\\:bg-fuchsia-400\\/
|
|
2228
|
-
&:is(.dark *) {
|
|
2414
|
+
.dark\\:group-data-hover\\:bg-fuchsia-400\\/20 {
|
|
2415
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2229
2416
|
&:is(:where(.group)[data-hover] *) {
|
|
2230
|
-
background-color: color-mix(in srgb, oklch(74% 0.238 322.16)
|
|
2417
|
+
background-color: color-mix(in srgb, oklch(74% 0.238 322.16) 20%, transparent);
|
|
2231
2418
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2232
|
-
background-color: color-mix(in oklab, var(--color-fuchsia-400)
|
|
2419
|
+
background-color: color-mix(in oklab, var(--color-fuchsia-400) 20%, transparent);
|
|
2233
2420
|
}
|
|
2234
2421
|
}
|
|
2235
2422
|
}
|
|
2236
2423
|
}
|
|
2237
|
-
.dark\\:group-data-hover\\:bg-rose-400\\/
|
|
2238
|
-
&:is(.dark *) {
|
|
2424
|
+
.dark\\:group-data-hover\\:bg-rose-400\\/20 {
|
|
2425
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2239
2426
|
&:is(:where(.group)[data-hover] *) {
|
|
2240
|
-
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428)
|
|
2427
|
+
background-color: color-mix(in srgb, oklch(71.2% 0.194 13.428) 20%, transparent);
|
|
2241
2428
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2242
|
-
background-color: color-mix(in oklab, var(--color-rose-400)
|
|
2429
|
+
background-color: color-mix(in oklab, var(--color-rose-400) 20%, transparent);
|
|
2243
2430
|
}
|
|
2244
2431
|
}
|
|
2245
2432
|
}
|
|
2246
2433
|
}
|
|
2247
|
-
.dark\\:group-data-hover\\:bg-slate-400\\/
|
|
2248
|
-
&:is(.dark *) {
|
|
2434
|
+
.dark\\:group-data-hover\\:bg-slate-400\\/20 {
|
|
2435
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2249
2436
|
&:is(:where(.group)[data-hover] *) {
|
|
2250
|
-
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788)
|
|
2437
|
+
background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 20%, transparent);
|
|
2251
2438
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2252
|
-
background-color: color-mix(in oklab, var(--color-slate-400)
|
|
2439
|
+
background-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
|
|
2253
2440
|
}
|
|
2254
2441
|
}
|
|
2255
2442
|
}
|
|
2256
2443
|
}
|
|
2257
|
-
.dark\\:group-data-hover\\:bg-violet-400\\/
|
|
2258
|
-
&:is(.dark *) {
|
|
2444
|
+
.dark\\:group-data-hover\\:bg-violet-400\\/20 {
|
|
2445
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2259
2446
|
&:is(:where(.group)[data-hover] *) {
|
|
2260
|
-
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541)
|
|
2447
|
+
background-color: color-mix(in srgb, oklch(70.2% 0.183 293.541) 20%, transparent);
|
|
2261
2448
|
@supports (color: color-mix(in lab, red, red)) {
|
|
2262
|
-
background-color: color-mix(in oklab, var(--color-violet-400)
|
|
2449
|
+
background-color: color-mix(in oklab, var(--color-violet-400) 20%, transparent);
|
|
2263
2450
|
}
|
|
2264
2451
|
}
|
|
2265
2452
|
}
|
|
2266
2453
|
}
|
|
2267
2454
|
.dark\\:before\\:shadow-\\[0_-1px_--theme\\(--color-white\\/6\\%\\)\\] {
|
|
2268
|
-
&:is(.dark *) {
|
|
2455
|
+
&:is(.dark *, :host(.dark) *) {
|
|
2269
2456
|
&::before {
|
|
2270
2457
|
content: var(--tw-content);
|
|
2271
2458
|
--tw-shadow: 0 -1px var(--tw-shadow-color, color-mix(in srgb, #fff 6%, transparent));
|
|
@@ -2303,6 +2490,66 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2303
2490
|
height: calc(var(--spacing) * 4);
|
|
2304
2491
|
}
|
|
2305
2492
|
}
|
|
2493
|
+
.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4\\.5 {
|
|
2494
|
+
& svg:not([class*='size-']) {
|
|
2495
|
+
width: calc(var(--spacing) * 4.5);
|
|
2496
|
+
height: calc(var(--spacing) * 4.5);
|
|
2497
|
+
}
|
|
2498
|
+
}
|
|
2499
|
+
.\\[\\&\\>svg\\]\\:pointer-events-none {
|
|
2500
|
+
&>svg {
|
|
2501
|
+
pointer-events: none;
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2504
|
+
.\\[\\&\\>svg\\]\\:-mx-0\\.5 {
|
|
2505
|
+
&>svg {
|
|
2506
|
+
margin-inline: calc(var(--spacing) * -0.5);
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
.\\[\\&\\>svg\\]\\:shrink-0 {
|
|
2510
|
+
&>svg {
|
|
2511
|
+
flex-shrink: 0;
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'opacity-\\'\\]\\)\\]\\:opacity-80 {
|
|
2515
|
+
&>svg:not([class*='opacity-']) {
|
|
2516
|
+
opacity: 80%;
|
|
2517
|
+
}
|
|
2518
|
+
}
|
|
2519
|
+
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {
|
|
2520
|
+
&>svg:not([class*='size-']) {
|
|
2521
|
+
width: calc(var(--spacing) * 4);
|
|
2522
|
+
height: calc(var(--spacing) * 4);
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:bg-accent {
|
|
2526
|
+
[data-kbd-nav] & {
|
|
2527
|
+
&:focus-within {
|
|
2528
|
+
background-color: var(--accent);
|
|
2529
|
+
}
|
|
2530
|
+
}
|
|
2531
|
+
}
|
|
2532
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:text-accent-foreground {
|
|
2533
|
+
[data-kbd-nav] & {
|
|
2534
|
+
&:focus-within {
|
|
2535
|
+
color: var(--accent-foreground);
|
|
2536
|
+
}
|
|
2537
|
+
}
|
|
2538
|
+
}
|
|
2539
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus\\:bg-accent {
|
|
2540
|
+
[data-kbd-nav] & {
|
|
2541
|
+
&:focus {
|
|
2542
|
+
background-color: var(--accent);
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2546
|
+
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus\\:text-accent-foreground {
|
|
2547
|
+
[data-kbd-nav] & {
|
|
2548
|
+
&:focus {
|
|
2549
|
+
color: var(--accent-foreground);
|
|
2550
|
+
}
|
|
2551
|
+
}
|
|
2552
|
+
}
|
|
2306
2553
|
}
|
|
2307
2554
|
@layer base {
|
|
2308
2555
|
*, ::after, ::before {
|
|
@@ -2310,6 +2557,30 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2310
2557
|
}
|
|
2311
2558
|
}
|
|
2312
2559
|
@layer components {
|
|
2560
|
+
[data-highlighted] {
|
|
2561
|
+
background-color: var(--accent);
|
|
2562
|
+
color: var(--accent-foreground);
|
|
2563
|
+
transition: background-color 150ms ease-out;
|
|
2564
|
+
}
|
|
2565
|
+
[data-kbd-nav] [data-highlighted]:not([data-kbd-highlighted]) {
|
|
2566
|
+
background-color: transparent;
|
|
2567
|
+
color: inherit;
|
|
2568
|
+
}
|
|
2569
|
+
[data-kbd-highlighted] {
|
|
2570
|
+
background-color: var(--accent);
|
|
2571
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2572
|
+
background-color: color-mix(in srgb, var(--accent) 200%, transparent);
|
|
2573
|
+
}
|
|
2574
|
+
color: var(--accent-foreground);
|
|
2575
|
+
}
|
|
2576
|
+
.uidex-item-interactive:hover {
|
|
2577
|
+
background-color: var(--accent);
|
|
2578
|
+
color: var(--accent-foreground);
|
|
2579
|
+
}
|
|
2580
|
+
[data-kbd-nav] .uidex-item-interactive:hover:not(:focus):not(:focus-within) {
|
|
2581
|
+
background-color: transparent;
|
|
2582
|
+
color: inherit;
|
|
2583
|
+
}
|
|
2313
2584
|
.uidex-scrollbar {
|
|
2314
2585
|
scrollbar-width: thin;
|
|
2315
2586
|
scrollbar-color: var(--muted-foreground) transparent;
|
|
@@ -2343,6 +2614,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2343
2614
|
background: transparent;
|
|
2344
2615
|
}
|
|
2345
2616
|
}
|
|
2617
|
+
@keyframes skeleton {
|
|
2618
|
+
to {
|
|
2619
|
+
background-position: -200% 0;
|
|
2620
|
+
}
|
|
2621
|
+
}
|
|
2346
2622
|
:where(:host, :root) {
|
|
2347
2623
|
--background: color-mix(
|
|
2348
2624
|
in srgb,
|
|
@@ -2478,6 +2754,36 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2478
2754
|
--warning: var(--color-amber-500);
|
|
2479
2755
|
--warning-foreground: var(--color-amber-700);
|
|
2480
2756
|
}
|
|
2757
|
+
@property --tw-translate-x {
|
|
2758
|
+
syntax: "*";
|
|
2759
|
+
inherits: false;
|
|
2760
|
+
initial-value: 0;
|
|
2761
|
+
}
|
|
2762
|
+
@property --tw-translate-y {
|
|
2763
|
+
syntax: "*";
|
|
2764
|
+
inherits: false;
|
|
2765
|
+
initial-value: 0;
|
|
2766
|
+
}
|
|
2767
|
+
@property --tw-translate-z {
|
|
2768
|
+
syntax: "*";
|
|
2769
|
+
inherits: false;
|
|
2770
|
+
initial-value: 0;
|
|
2771
|
+
}
|
|
2772
|
+
@property --tw-scale-x {
|
|
2773
|
+
syntax: "*";
|
|
2774
|
+
inherits: false;
|
|
2775
|
+
initial-value: 1;
|
|
2776
|
+
}
|
|
2777
|
+
@property --tw-scale-y {
|
|
2778
|
+
syntax: "*";
|
|
2779
|
+
inherits: false;
|
|
2780
|
+
initial-value: 1;
|
|
2781
|
+
}
|
|
2782
|
+
@property --tw-scale-z {
|
|
2783
|
+
syntax: "*";
|
|
2784
|
+
inherits: false;
|
|
2785
|
+
initial-value: 1;
|
|
2786
|
+
}
|
|
2481
2787
|
@property --tw-rotate-x {
|
|
2482
2788
|
syntax: "*";
|
|
2483
2789
|
inherits: false;
|
|
@@ -2515,6 +2821,26 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2515
2821
|
syntax: "*";
|
|
2516
2822
|
inherits: false;
|
|
2517
2823
|
}
|
|
2824
|
+
@property --tw-ordinal {
|
|
2825
|
+
syntax: "*";
|
|
2826
|
+
inherits: false;
|
|
2827
|
+
}
|
|
2828
|
+
@property --tw-slashed-zero {
|
|
2829
|
+
syntax: "*";
|
|
2830
|
+
inherits: false;
|
|
2831
|
+
}
|
|
2832
|
+
@property --tw-numeric-figure {
|
|
2833
|
+
syntax: "*";
|
|
2834
|
+
inherits: false;
|
|
2835
|
+
}
|
|
2836
|
+
@property --tw-numeric-spacing {
|
|
2837
|
+
syntax: "*";
|
|
2838
|
+
inherits: false;
|
|
2839
|
+
}
|
|
2840
|
+
@property --tw-numeric-fraction {
|
|
2841
|
+
syntax: "*";
|
|
2842
|
+
inherits: false;
|
|
2843
|
+
}
|
|
2518
2844
|
@property --tw-shadow {
|
|
2519
2845
|
syntax: "*";
|
|
2520
2846
|
inherits: false;
|
|
@@ -2683,9 +3009,20 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2683
3009
|
initial-value: "";
|
|
2684
3010
|
inherits: false;
|
|
2685
3011
|
}
|
|
3012
|
+
@keyframes spin {
|
|
3013
|
+
to {
|
|
3014
|
+
transform: rotate(360deg);
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
2686
3017
|
@layer properties {
|
|
2687
3018
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
2688
3019
|
*, ::before, ::after, ::backdrop {
|
|
3020
|
+
--tw-translate-x: 0;
|
|
3021
|
+
--tw-translate-y: 0;
|
|
3022
|
+
--tw-translate-z: 0;
|
|
3023
|
+
--tw-scale-x: 1;
|
|
3024
|
+
--tw-scale-y: 1;
|
|
3025
|
+
--tw-scale-z: 1;
|
|
2689
3026
|
--tw-rotate-x: initial;
|
|
2690
3027
|
--tw-rotate-y: initial;
|
|
2691
3028
|
--tw-rotate-z: initial;
|
|
@@ -2695,6 +3032,11 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2695
3032
|
--tw-leading: initial;
|
|
2696
3033
|
--tw-font-weight: initial;
|
|
2697
3034
|
--tw-tracking: initial;
|
|
3035
|
+
--tw-ordinal: initial;
|
|
3036
|
+
--tw-slashed-zero: initial;
|
|
3037
|
+
--tw-numeric-figure: initial;
|
|
3038
|
+
--tw-numeric-spacing: initial;
|
|
3039
|
+
--tw-numeric-fraction: initial;
|
|
2698
3040
|
--tw-shadow: 0 0 #0000;
|
|
2699
3041
|
--tw-shadow-color: initial;
|
|
2700
3042
|
--tw-shadow-alpha: 100%;
|
|
@@ -2739,12 +3081,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2739
3081
|
}
|
|
2740
3082
|
`;
|
|
2741
3083
|
|
|
2742
|
-
// src/surface/constants.ts
|
|
3084
|
+
// src/browser/surface/constants.ts
|
|
2743
3085
|
var SURFACE_HOST_CLASS = "uidex-surface-host";
|
|
2744
3086
|
var SURFACE_CONTAINER_CLASS = "uidex-container";
|
|
2745
|
-
var Z_BASE =
|
|
2746
|
-
var Z_OVERLAY =
|
|
2747
|
-
var Z_CHROME =
|
|
3087
|
+
var Z_BASE = 2147483630;
|
|
3088
|
+
var Z_OVERLAY = 2147483635;
|
|
3089
|
+
var Z_CHROME = 2147483645;
|
|
2748
3090
|
var SURFACE_IGNORE_SELECTOR = `.${SURFACE_HOST_CLASS},.${SURFACE_CONTAINER_CLASS}`;
|
|
2749
3091
|
var UIDEX_ATTR_TO_KIND = [
|
|
2750
3092
|
["data-uidex", "element"],
|
|
@@ -2753,7 +3095,7 @@ var UIDEX_ATTR_TO_KIND = [
|
|
|
2753
3095
|
["data-uidex-primitive", "primitive"]
|
|
2754
3096
|
];
|
|
2755
3097
|
|
|
2756
|
-
// src/surface/host.ts
|
|
3098
|
+
// src/browser/surface/host.ts
|
|
2757
3099
|
function createSurfaceHost(options) {
|
|
2758
3100
|
const { mount, stylesheets = [], initialTheme = "light" } = options;
|
|
2759
3101
|
const hostEl = document.createElement("div");
|
|
@@ -2767,6 +3109,8 @@ function createSurfaceHost(options) {
|
|
|
2767
3109
|
applyStylesheets(shadow, [tailwind_built_default, ...stylesheets]);
|
|
2768
3110
|
const chromeEl = document.createElement("div");
|
|
2769
3111
|
chromeEl.classList.add("uidex-chrome");
|
|
3112
|
+
chromeEl.style.position = "relative";
|
|
3113
|
+
chromeEl.style.zIndex = String(Z_CHROME);
|
|
2770
3114
|
chromeEl.style.pointerEvents = "auto";
|
|
2771
3115
|
shadow.appendChild(chromeEl);
|
|
2772
3116
|
mount.appendChild(hostEl);
|
|
@@ -2814,29 +3158,29 @@ function supportsConstructableStylesheets(shadow) {
|
|
|
2814
3158
|
}
|
|
2815
3159
|
}
|
|
2816
3160
|
|
|
2817
|
-
// src/surface/cursor-tooltip.ts
|
|
3161
|
+
// src/browser/surface/cursor-tooltip.ts
|
|
2818
3162
|
import { createElement as createLucideElement } from "lucide";
|
|
2819
3163
|
var DEFAULT_TOOLTIP_COLOR = "#34d399";
|
|
2820
3164
|
var TOOLTIP_OFFSET = 16;
|
|
2821
3165
|
var ARROW_SIZE = 5;
|
|
2822
3166
|
function createCursorTooltip(deps) {
|
|
2823
3167
|
const { container } = deps;
|
|
2824
|
-
const
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
3168
|
+
const el2 = document.createElement("div");
|
|
3169
|
+
el2.setAttribute("data-uidex-cursor-tooltip", "");
|
|
3170
|
+
el2.style.position = "fixed";
|
|
3171
|
+
el2.style.pointerEvents = "none";
|
|
3172
|
+
el2.style.zIndex = String(Z_CHROME);
|
|
3173
|
+
el2.style.padding = "4px 8px";
|
|
3174
|
+
el2.style.fontSize = "12px";
|
|
3175
|
+
el2.style.fontFamily = "ui-sans-serif, system-ui, sans-serif";
|
|
3176
|
+
el2.style.borderRadius = "6px";
|
|
3177
|
+
el2.style.background = DEFAULT_TOOLTIP_COLOR;
|
|
3178
|
+
el2.style.color = "#0a0a0a";
|
|
3179
|
+
el2.style.display = "none";
|
|
3180
|
+
el2.style.whiteSpace = "nowrap";
|
|
3181
|
+
el2.style.transform = "translate(-50%, 0)";
|
|
3182
|
+
el2.style.alignItems = "center";
|
|
3183
|
+
el2.style.gap = "6px";
|
|
2840
3184
|
const arrow = document.createElement("div");
|
|
2841
3185
|
arrow.setAttribute("data-uidex-cursor-tooltip-arrow", "");
|
|
2842
3186
|
arrow.style.position = "absolute";
|
|
@@ -2848,18 +3192,18 @@ function createCursorTooltip(deps) {
|
|
|
2848
3192
|
arrow.style.borderLeft = `${ARROW_SIZE}px solid transparent`;
|
|
2849
3193
|
arrow.style.borderRight = `${ARROW_SIZE}px solid transparent`;
|
|
2850
3194
|
arrow.style.borderBottom = `${ARROW_SIZE}px solid ${DEFAULT_TOOLTIP_COLOR}`;
|
|
2851
|
-
|
|
3195
|
+
el2.appendChild(arrow);
|
|
2852
3196
|
const body = document.createElement("span");
|
|
2853
3197
|
body.setAttribute("data-uidex-cursor-tooltip-body", "");
|
|
2854
3198
|
body.style.display = "inline-flex";
|
|
2855
3199
|
body.style.alignItems = "center";
|
|
2856
3200
|
body.style.gap = "6px";
|
|
2857
|
-
|
|
2858
|
-
container.appendChild(
|
|
3201
|
+
el2.appendChild(body);
|
|
3202
|
+
container.appendChild(el2);
|
|
2859
3203
|
let currentContent = null;
|
|
2860
3204
|
let currentCursor = null;
|
|
2861
3205
|
const applyColor = (color) => {
|
|
2862
|
-
|
|
3206
|
+
el2.style.background = color;
|
|
2863
3207
|
arrow.style.borderBottom = `${ARROW_SIZE}px solid ${color}`;
|
|
2864
3208
|
};
|
|
2865
3209
|
const renderBody = () => {
|
|
@@ -2872,7 +3216,9 @@ function createCursorTooltip(deps) {
|
|
|
2872
3216
|
if (!currentContent) return;
|
|
2873
3217
|
const { entity, node } = currentContent;
|
|
2874
3218
|
const style = KIND_STYLE[entity.kind];
|
|
3219
|
+
const demoted = entity.kind === "primitive";
|
|
2875
3220
|
applyColor(style?.color ?? DEFAULT_TOOLTIP_COLOR);
|
|
3221
|
+
el2.style.opacity = demoted ? "0.55" : "1";
|
|
2876
3222
|
if (style) {
|
|
2877
3223
|
const svg = createLucideElement(style.icon);
|
|
2878
3224
|
svg.setAttribute("aria-hidden", "true");
|
|
@@ -2883,26 +3229,28 @@ function createCursorTooltip(deps) {
|
|
|
2883
3229
|
}
|
|
2884
3230
|
const label = displayName(entity, node);
|
|
2885
3231
|
body.append(document.createTextNode(label));
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
3232
|
+
if (currentContent.layer) {
|
|
3233
|
+
const counter = document.createElement("span");
|
|
3234
|
+
counter.setAttribute("data-uidex-cursor-tooltip-layer", "");
|
|
3235
|
+
counter.style.fontFamily = "ui-monospace, SFMono-Regular, Menlo, monospace";
|
|
3236
|
+
counter.style.fontSize = "10px";
|
|
3237
|
+
counter.style.lineHeight = "1";
|
|
3238
|
+
counter.style.padding = "2px 5px";
|
|
3239
|
+
counter.style.borderRadius = "4px";
|
|
3240
|
+
counter.style.background = "rgba(0,0,0,0.18)";
|
|
3241
|
+
counter.textContent = `${currentContent.layer.index + 1}/${currentContent.layer.total}`;
|
|
3242
|
+
body.append(counter);
|
|
2895
3243
|
}
|
|
2896
3244
|
};
|
|
2897
3245
|
const render = () => {
|
|
2898
3246
|
if (!currentContent || !currentCursor) {
|
|
2899
|
-
|
|
3247
|
+
el2.style.display = "none";
|
|
2900
3248
|
return;
|
|
2901
3249
|
}
|
|
2902
3250
|
renderBody();
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
3251
|
+
el2.style.display = "inline-flex";
|
|
3252
|
+
el2.style.left = `${currentCursor.x}px`;
|
|
3253
|
+
el2.style.top = `${currentCursor.y + TOOLTIP_OFFSET}px`;
|
|
2906
3254
|
};
|
|
2907
3255
|
return {
|
|
2908
3256
|
update(content, cursor) {
|
|
@@ -2911,14 +3259,14 @@ function createCursorTooltip(deps) {
|
|
|
2911
3259
|
render();
|
|
2912
3260
|
},
|
|
2913
3261
|
destroy() {
|
|
2914
|
-
|
|
3262
|
+
el2.remove();
|
|
2915
3263
|
currentContent = null;
|
|
2916
3264
|
currentCursor = null;
|
|
2917
3265
|
}
|
|
2918
3266
|
};
|
|
2919
3267
|
}
|
|
2920
3268
|
|
|
2921
|
-
// src/surface/inspector.ts
|
|
3269
|
+
// src/browser/surface/inspector.ts
|
|
2922
3270
|
function entityForRef(ref, registry) {
|
|
2923
3271
|
if (registry) {
|
|
2924
3272
|
const found = registry.get(ref.kind, ref.id);
|
|
@@ -2926,70 +3274,108 @@ function entityForRef(ref, registry) {
|
|
|
2926
3274
|
}
|
|
2927
3275
|
if (ref.kind === "route") return { kind: "route", path: ref.id, page: ref.id };
|
|
2928
3276
|
if (ref.kind === "flow") {
|
|
2929
|
-
return {
|
|
3277
|
+
return {
|
|
3278
|
+
kind: "flow",
|
|
3279
|
+
id: ref.id,
|
|
3280
|
+
loc: { file: "" },
|
|
3281
|
+
touches: [],
|
|
3282
|
+
steps: []
|
|
3283
|
+
};
|
|
2930
3284
|
}
|
|
2931
3285
|
return { kind: ref.kind, id: ref.id };
|
|
2932
3286
|
}
|
|
2933
|
-
function
|
|
2934
|
-
if (target.closest(SURFACE_IGNORE_SELECTOR)) return
|
|
3287
|
+
function defaultResolveAllMatches(target, registry) {
|
|
3288
|
+
if (target.closest(SURFACE_IGNORE_SELECTOR)) return [];
|
|
3289
|
+
const semantic = [];
|
|
3290
|
+
const primitives = [];
|
|
3291
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2935
3292
|
let node = target;
|
|
2936
3293
|
while (node) {
|
|
2937
3294
|
if (node instanceof HTMLElement) {
|
|
2938
3295
|
for (const [attr, kind] of UIDEX_ATTR_TO_KIND) {
|
|
2939
3296
|
const id = node.getAttribute(attr);
|
|
2940
3297
|
if (id) {
|
|
2941
|
-
const
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
ref,
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
3298
|
+
const key = `${kind}:${id}`;
|
|
3299
|
+
if (!seen.has(key)) {
|
|
3300
|
+
seen.add(key);
|
|
3301
|
+
const ref = { kind, id };
|
|
3302
|
+
const entity = entityForRef(ref, registry);
|
|
3303
|
+
const match = {
|
|
3304
|
+
element: node,
|
|
3305
|
+
ref,
|
|
3306
|
+
entity,
|
|
3307
|
+
label: displayName(entity, node)
|
|
3308
|
+
};
|
|
3309
|
+
if (kind === "primitive") {
|
|
3310
|
+
primitives.push(match);
|
|
3311
|
+
} else {
|
|
3312
|
+
semantic.push(match);
|
|
3313
|
+
}
|
|
3314
|
+
}
|
|
2949
3315
|
}
|
|
2950
3316
|
}
|
|
2951
3317
|
}
|
|
2952
3318
|
node = node.parentElement;
|
|
2953
3319
|
}
|
|
2954
|
-
return
|
|
3320
|
+
return semantic.concat(primitives);
|
|
2955
3321
|
}
|
|
2956
3322
|
function createInspector(options) {
|
|
2957
3323
|
const {
|
|
2958
3324
|
session,
|
|
2959
3325
|
registry,
|
|
2960
|
-
|
|
3326
|
+
resolveAll = (target) => defaultResolveAllMatches(target, registry),
|
|
2961
3327
|
onHover,
|
|
2962
|
-
onSelect
|
|
3328
|
+
onSelect,
|
|
3329
|
+
onCycle
|
|
2963
3330
|
} = options;
|
|
2964
3331
|
let mounted = false;
|
|
2965
3332
|
let currentEl = null;
|
|
2966
3333
|
let cursorStyleEl = null;
|
|
3334
|
+
let stack = [];
|
|
3335
|
+
let layerIndex = 0;
|
|
3336
|
+
let lastCursor = { x: 0, y: 0 };
|
|
3337
|
+
const makeStack = () => stack.length > 0 ? { matches: stack, index: layerIndex, current: stack[layerIndex] } : null;
|
|
2967
3338
|
const onMouseMove = (e) => {
|
|
2968
3339
|
if (!(e.target instanceof Element)) return;
|
|
2969
|
-
const
|
|
3340
|
+
const matches = resolveAll(e.target);
|
|
2970
3341
|
const cursor = { x: e.clientX, y: e.clientY };
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
3342
|
+
lastCursor = cursor;
|
|
3343
|
+
const topEl = matches.length > 0 ? matches[0].element : null;
|
|
3344
|
+
if (topEl) {
|
|
3345
|
+
if (topEl !== currentEl) {
|
|
3346
|
+
currentEl = topEl;
|
|
3347
|
+
stack = matches;
|
|
3348
|
+
layerIndex = 0;
|
|
3349
|
+
session.highlight.hover(stack[0].ref);
|
|
2975
3350
|
}
|
|
2976
|
-
onHover?.(
|
|
3351
|
+
onHover?.(makeStack(), cursor);
|
|
2977
3352
|
} else if (currentEl) {
|
|
2978
3353
|
currentEl = null;
|
|
2979
|
-
|
|
3354
|
+
stack = [];
|
|
3355
|
+
layerIndex = 0;
|
|
3356
|
+
session.highlight.unhover();
|
|
2980
3357
|
onHover?.(null, cursor);
|
|
2981
3358
|
}
|
|
2982
3359
|
};
|
|
2983
3360
|
const onClick = (e) => {
|
|
2984
3361
|
if (!(e.target instanceof Element)) return;
|
|
2985
3362
|
if (e.target.closest(SURFACE_IGNORE_SELECTOR)) return;
|
|
2986
|
-
|
|
2987
|
-
if (!match) return;
|
|
3363
|
+
if (stack.length === 0) return;
|
|
2988
3364
|
e.preventDefault();
|
|
2989
3365
|
e.stopPropagation();
|
|
2990
|
-
|
|
3366
|
+
const match = stack[layerIndex];
|
|
3367
|
+
session.select(match.ref);
|
|
2991
3368
|
onSelect?.(match, { x: e.clientX, y: e.clientY });
|
|
2992
3369
|
};
|
|
3370
|
+
const onContextMenu = (e) => {
|
|
3371
|
+
if (stack.length <= 1) return;
|
|
3372
|
+
e.preventDefault();
|
|
3373
|
+
e.stopPropagation();
|
|
3374
|
+
layerIndex = (layerIndex + 1) % stack.length;
|
|
3375
|
+
const match = stack[layerIndex];
|
|
3376
|
+
session.highlight.hover(match.ref);
|
|
3377
|
+
onCycle?.(makeStack(), lastCursor);
|
|
3378
|
+
};
|
|
2993
3379
|
return {
|
|
2994
3380
|
mount() {
|
|
2995
3381
|
if (mounted) return;
|
|
@@ -3002,124 +3388,363 @@ function createInspector(options) {
|
|
|
3002
3388
|
}
|
|
3003
3389
|
document.addEventListener("mousemove", onMouseMove);
|
|
3004
3390
|
document.addEventListener("click", onClick, true);
|
|
3391
|
+
document.addEventListener("contextmenu", onContextMenu, true);
|
|
3005
3392
|
},
|
|
3006
3393
|
destroy() {
|
|
3007
3394
|
if (!mounted) return;
|
|
3008
3395
|
mounted = false;
|
|
3009
3396
|
currentEl = null;
|
|
3397
|
+
stack = [];
|
|
3398
|
+
layerIndex = 0;
|
|
3010
3399
|
if (cursorStyleEl) {
|
|
3011
3400
|
cursorStyleEl.remove();
|
|
3012
3401
|
cursorStyleEl = null;
|
|
3013
3402
|
}
|
|
3014
3403
|
document.removeEventListener("mousemove", onMouseMove);
|
|
3015
3404
|
document.removeEventListener("click", onClick, true);
|
|
3016
|
-
|
|
3405
|
+
document.removeEventListener("contextmenu", onContextMenu, true);
|
|
3406
|
+
session.highlight.unhover();
|
|
3017
3407
|
onHover?.(null, null);
|
|
3018
3408
|
}
|
|
3019
3409
|
};
|
|
3020
3410
|
}
|
|
3021
3411
|
|
|
3022
|
-
// src/surface/menu-bar.ts
|
|
3412
|
+
// src/browser/surface/menu-bar.ts
|
|
3413
|
+
import {
|
|
3414
|
+
ChevronLeft,
|
|
3415
|
+
ChevronRight,
|
|
3416
|
+
Command,
|
|
3417
|
+
Highlighter,
|
|
3418
|
+
MapPin,
|
|
3419
|
+
MousePointerClick as MousePointerClick2,
|
|
3420
|
+
Users,
|
|
3421
|
+
createElement as createLucideElement2
|
|
3422
|
+
} from "lucide";
|
|
3423
|
+
|
|
3424
|
+
// src/browser/internal/cn.ts
|
|
3425
|
+
import { clsx } from "clsx";
|
|
3426
|
+
import { twMerge } from "tailwind-merge";
|
|
3427
|
+
function cn(...inputs) {
|
|
3428
|
+
return twMerge(clsx(inputs));
|
|
3429
|
+
}
|
|
3430
|
+
|
|
3431
|
+
// src/browser/internal/el.ts
|
|
3432
|
+
function el(tag, options = {}, children = []) {
|
|
3433
|
+
const node = document.createElement(tag);
|
|
3434
|
+
if (options.class) node.className = cn(options.class);
|
|
3435
|
+
if (options.attrs) {
|
|
3436
|
+
for (const [key, value] of Object.entries(options.attrs)) {
|
|
3437
|
+
if (value === void 0 || value === null || value === false) continue;
|
|
3438
|
+
if (value === true) {
|
|
3439
|
+
node.setAttribute(key, "");
|
|
3440
|
+
} else {
|
|
3441
|
+
node.setAttribute(key, String(value));
|
|
3442
|
+
}
|
|
3443
|
+
}
|
|
3444
|
+
}
|
|
3445
|
+
if (options.dataset) {
|
|
3446
|
+
for (const [key, value] of Object.entries(options.dataset)) {
|
|
3447
|
+
node.dataset[key] = value;
|
|
3448
|
+
}
|
|
3449
|
+
}
|
|
3450
|
+
if (options.style) {
|
|
3451
|
+
Object.assign(node.style, options.style);
|
|
3452
|
+
}
|
|
3453
|
+
if (options.text !== void 0) {
|
|
3454
|
+
node.textContent = options.text;
|
|
3455
|
+
}
|
|
3456
|
+
const list = Array.isArray(children) ? children : [children];
|
|
3457
|
+
for (const child of list) {
|
|
3458
|
+
if (child === null || child === void 0 || child === false) continue;
|
|
3459
|
+
node.append(
|
|
3460
|
+
typeof child === "string" ? document.createTextNode(child) : child
|
|
3461
|
+
);
|
|
3462
|
+
}
|
|
3463
|
+
return node;
|
|
3464
|
+
}
|
|
3465
|
+
|
|
3466
|
+
// src/browser/surface/keys.ts
|
|
3467
|
+
var INSPECT_SHORTCUT = { key: "i" };
|
|
3468
|
+
function formatShortcutLabel(shortcut) {
|
|
3469
|
+
const parts = [];
|
|
3470
|
+
if (shortcut.mod !== false) parts.push("\u2318");
|
|
3471
|
+
if (shortcut.shift) parts.push("\u21E7");
|
|
3472
|
+
parts.push(shortcut.key.toUpperCase());
|
|
3473
|
+
return parts.join("");
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3476
|
+
// src/browser/surface/menu-bar.ts
|
|
3477
|
+
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%)]";
|
|
3478
|
+
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";
|
|
3479
|
+
var BUTTON_ACTIVE_CLASS = "border-info/40 bg-info/15 text-info-foreground hover:bg-info/20";
|
|
3480
|
+
var TITLE_CLASS = "relative z-1 whitespace-nowrap px-1.5 text-xs font-semibold tracking-tight text-foreground";
|
|
3481
|
+
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";
|
|
3023
3482
|
function createMenuBar(options) {
|
|
3024
3483
|
const {
|
|
3025
3484
|
container,
|
|
3026
3485
|
session,
|
|
3027
3486
|
initialCorner = "bottom-right",
|
|
3028
|
-
appTitle
|
|
3487
|
+
appTitle,
|
|
3488
|
+
channel = null,
|
|
3489
|
+
pinLayer: initialPinLayer = null
|
|
3029
3490
|
} = options;
|
|
3030
|
-
|
|
3031
|
-
root
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
color: "#f5f5f5",
|
|
3044
|
-
fontFamily: "ui-sans-serif, system-ui, sans-serif",
|
|
3045
|
-
fontSize: "12px",
|
|
3046
|
-
userSelect: "none",
|
|
3047
|
-
cursor: "grab"
|
|
3491
|
+
let activePinLayer = initialPinLayer;
|
|
3492
|
+
const root = el("div", {
|
|
3493
|
+
class: ROOT_CLASS,
|
|
3494
|
+
attrs: {
|
|
3495
|
+
"data-uidex-menubar": "",
|
|
3496
|
+
role: "toolbar"
|
|
3497
|
+
},
|
|
3498
|
+
style: {
|
|
3499
|
+
position: "fixed",
|
|
3500
|
+
zIndex: String(Z_CHROME),
|
|
3501
|
+
pointerEvents: "auto",
|
|
3502
|
+
cursor: "grab"
|
|
3503
|
+
}
|
|
3048
3504
|
});
|
|
3049
|
-
|
|
3050
|
-
background: "rgba(255,255,255,0.08)",
|
|
3051
|
-
color: "inherit",
|
|
3052
|
-
border: "1px solid rgba(255,255,255,0.12)",
|
|
3053
|
-
borderRadius: "6px",
|
|
3054
|
-
padding: "4px 8px",
|
|
3055
|
-
font: "inherit",
|
|
3056
|
-
cursor: "pointer"
|
|
3057
|
-
};
|
|
3058
|
-
const buttonActiveStyle = {
|
|
3059
|
-
background: "rgba(120, 180, 255, 0.28)",
|
|
3060
|
-
borderColor: "rgba(120, 180, 255, 0.55)"
|
|
3061
|
-
};
|
|
3505
|
+
let titleEl = null;
|
|
3062
3506
|
if (appTitle) {
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
padding: "0 6px 0 4px",
|
|
3068
|
-
fontWeight: "600",
|
|
3069
|
-
letterSpacing: "0.01em",
|
|
3070
|
-
whiteSpace: "nowrap"
|
|
3507
|
+
titleEl = el("span", {
|
|
3508
|
+
class: TITLE_CLASS,
|
|
3509
|
+
attrs: { "data-uidex-menubar-title": "" },
|
|
3510
|
+
text: appTitle
|
|
3071
3511
|
});
|
|
3072
3512
|
root.appendChild(titleEl);
|
|
3073
3513
|
}
|
|
3074
|
-
const
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3514
|
+
const highlightIcon = createLucideElement2(Highlighter);
|
|
3515
|
+
highlightIcon.setAttribute("class", "size-3.5");
|
|
3516
|
+
highlightIcon.setAttribute("aria-hidden", "true");
|
|
3517
|
+
const highlightBtn = el(
|
|
3518
|
+
"button",
|
|
3519
|
+
{
|
|
3520
|
+
class: BUTTON_CLASS,
|
|
3521
|
+
attrs: {
|
|
3522
|
+
type: "button",
|
|
3523
|
+
"data-uidex-menubar-highlight": "",
|
|
3524
|
+
"aria-label": "Dismiss highlight"
|
|
3525
|
+
}
|
|
3526
|
+
},
|
|
3527
|
+
highlightIcon
|
|
3528
|
+
);
|
|
3529
|
+
highlightBtn.hidden = true;
|
|
3530
|
+
highlightBtn.addEventListener("click", (e) => {
|
|
3531
|
+
e.stopPropagation();
|
|
3532
|
+
session.highlight.unpin();
|
|
3087
3533
|
});
|
|
3088
|
-
root.appendChild(
|
|
3089
|
-
const
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
inspectBtn
|
|
3093
|
-
|
|
3534
|
+
root.appendChild(highlightBtn);
|
|
3535
|
+
const inspectIcon = createLucideElement2(MousePointerClick2);
|
|
3536
|
+
inspectIcon.setAttribute("class", "size-3.5");
|
|
3537
|
+
inspectIcon.setAttribute("aria-hidden", "true");
|
|
3538
|
+
const inspectBtn = el(
|
|
3539
|
+
"button",
|
|
3540
|
+
{
|
|
3541
|
+
class: BUTTON_CLASS,
|
|
3542
|
+
attrs: {
|
|
3543
|
+
type: "button",
|
|
3544
|
+
"data-uidex-menubar-inspect": "",
|
|
3545
|
+
"aria-label": `Inspect (${formatShortcutLabel(INSPECT_SHORTCUT)})`
|
|
3546
|
+
}
|
|
3547
|
+
},
|
|
3548
|
+
inspectIcon
|
|
3549
|
+
);
|
|
3094
3550
|
inspectBtn.addEventListener("click", (e) => {
|
|
3095
3551
|
e.stopPropagation();
|
|
3096
|
-
session.
|
|
3552
|
+
session.mode.transition.toggleInspector();
|
|
3553
|
+
inspectBtn.blur();
|
|
3097
3554
|
});
|
|
3098
3555
|
root.appendChild(inspectBtn);
|
|
3099
|
-
const
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3556
|
+
const pinIcon = createLucideElement2(MapPin);
|
|
3557
|
+
pinIcon.setAttribute("class", "size-3.5");
|
|
3558
|
+
pinIcon.setAttribute("aria-hidden", "true");
|
|
3559
|
+
const pinBtn = el(
|
|
3560
|
+
"button",
|
|
3561
|
+
{
|
|
3562
|
+
class: BUTTON_CLASS,
|
|
3563
|
+
attrs: {
|
|
3564
|
+
type: "button",
|
|
3565
|
+
"data-uidex-menubar-pins": "",
|
|
3566
|
+
"aria-label": "Report pins"
|
|
3567
|
+
}
|
|
3568
|
+
},
|
|
3569
|
+
pinIcon
|
|
3570
|
+
);
|
|
3571
|
+
const commitCycler = el("div", {
|
|
3572
|
+
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3573
|
+
attrs: { "data-uidex-menubar-commit-cycler": "" }
|
|
3574
|
+
});
|
|
3575
|
+
commitCycler.hidden = true;
|
|
3576
|
+
const prevIcon = createLucideElement2(ChevronLeft);
|
|
3577
|
+
prevIcon.setAttribute("class", "size-3");
|
|
3578
|
+
prevIcon.setAttribute("aria-hidden", "true");
|
|
3579
|
+
const prevBtn = el(
|
|
3580
|
+
"button",
|
|
3581
|
+
{
|
|
3582
|
+
class: BUTTON_CLASS,
|
|
3583
|
+
attrs: { type: "button", "aria-label": "Previous commit" },
|
|
3584
|
+
style: { width: "18px", height: "18px" }
|
|
3585
|
+
},
|
|
3586
|
+
prevIcon
|
|
3587
|
+
);
|
|
3588
|
+
const commitLabel = el("span", {
|
|
3589
|
+
class: "relative z-1 whitespace-nowrap px-1 text-[10px] font-mono text-muted-foreground",
|
|
3590
|
+
attrs: { "data-uidex-menubar-commit-label": "" }
|
|
3591
|
+
});
|
|
3592
|
+
const nextIcon = createLucideElement2(ChevronRight);
|
|
3593
|
+
nextIcon.setAttribute("class", "size-3");
|
|
3594
|
+
nextIcon.setAttribute("aria-hidden", "true");
|
|
3595
|
+
const nextBtn = el(
|
|
3596
|
+
"button",
|
|
3597
|
+
{
|
|
3598
|
+
class: BUTTON_CLASS,
|
|
3599
|
+
attrs: { type: "button", "aria-label": "Next commit" },
|
|
3600
|
+
style: { width: "18px", height: "18px" }
|
|
3601
|
+
},
|
|
3602
|
+
nextIcon
|
|
3603
|
+
);
|
|
3604
|
+
commitCycler.appendChild(prevBtn);
|
|
3605
|
+
commitCycler.appendChild(commitLabel);
|
|
3606
|
+
commitCycler.appendChild(nextBtn);
|
|
3607
|
+
const pinWrapper = el("div", {
|
|
3608
|
+
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3609
|
+
attrs: { "data-uidex-menubar-pin-wrapper": "" }
|
|
3610
|
+
});
|
|
3611
|
+
pinWrapper.hidden = true;
|
|
3612
|
+
pinWrapper.appendChild(pinBtn);
|
|
3613
|
+
pinWrapper.appendChild(commitCycler);
|
|
3614
|
+
root.appendChild(pinWrapper);
|
|
3615
|
+
const updatePinUI = () => {
|
|
3616
|
+
if (!activePinLayer) {
|
|
3617
|
+
pinWrapper.hidden = true;
|
|
3618
|
+
return;
|
|
3619
|
+
}
|
|
3620
|
+
const pinsVisible = activePinLayer.visible;
|
|
3621
|
+
const state = activePinLayer.filterState;
|
|
3622
|
+
const hasCommits = state.commits.length > 0;
|
|
3623
|
+
pinWrapper.hidden = false;
|
|
3624
|
+
commitCycler.hidden = !pinsVisible || !hasCommits;
|
|
3625
|
+
if (state.commitIndex === -1 || !state.commits[state.commitIndex]) {
|
|
3626
|
+
commitLabel.textContent = `all (${state.commits.length})`;
|
|
3627
|
+
} else {
|
|
3628
|
+
const sha = state.commits[state.commitIndex] ?? "";
|
|
3629
|
+
commitLabel.textContent = sha.slice(0, 7);
|
|
3630
|
+
}
|
|
3631
|
+
pinBtn.className = cn(BUTTON_CLASS, pinsVisible && BUTTON_ACTIVE_CLASS);
|
|
3632
|
+
};
|
|
3633
|
+
pinBtn.addEventListener("click", (e) => {
|
|
3634
|
+
e.stopPropagation();
|
|
3635
|
+
if (activePinLayer) {
|
|
3636
|
+
activePinLayer.setVisible(!activePinLayer.visible);
|
|
3637
|
+
}
|
|
3638
|
+
});
|
|
3639
|
+
prevBtn.addEventListener("click", (e) => {
|
|
3640
|
+
e.stopPropagation();
|
|
3641
|
+
activePinLayer?.prevCommit();
|
|
3642
|
+
});
|
|
3643
|
+
nextBtn.addEventListener("click", (e) => {
|
|
3644
|
+
e.stopPropagation();
|
|
3645
|
+
activePinLayer?.nextCommit();
|
|
3646
|
+
});
|
|
3647
|
+
let unsubscribePinFilter = activePinLayer?.onFilterChange(() => updatePinUI());
|
|
3648
|
+
const presenceIcon = createLucideElement2(Users);
|
|
3649
|
+
presenceIcon.setAttribute("class", "size-3.5");
|
|
3650
|
+
presenceIcon.setAttribute("aria-hidden", "true");
|
|
3651
|
+
const presenceBtn = el(
|
|
3652
|
+
"button",
|
|
3653
|
+
{
|
|
3654
|
+
class: BUTTON_CLASS,
|
|
3655
|
+
attrs: {
|
|
3656
|
+
type: "button",
|
|
3657
|
+
"data-uidex-menubar-presence": "",
|
|
3658
|
+
"aria-label": "Online users"
|
|
3659
|
+
}
|
|
3660
|
+
},
|
|
3661
|
+
presenceIcon
|
|
3662
|
+
);
|
|
3663
|
+
presenceBtn.hidden = true;
|
|
3664
|
+
const presenceBadge = el("span", {
|
|
3665
|
+
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"
|
|
3666
|
+
});
|
|
3667
|
+
presenceBtn.appendChild(presenceBadge);
|
|
3668
|
+
const presencePopover = el("div", {
|
|
3669
|
+
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"
|
|
3670
|
+
});
|
|
3671
|
+
presencePopover.hidden = true;
|
|
3672
|
+
let presencePopoverVisible = false;
|
|
3673
|
+
presenceBtn.addEventListener("click", (e) => {
|
|
3674
|
+
e.stopPropagation();
|
|
3675
|
+
presencePopoverVisible = !presencePopoverVisible;
|
|
3676
|
+
presencePopover.hidden = !presencePopoverVisible;
|
|
3677
|
+
});
|
|
3678
|
+
const presenceWrapper = el("div", { class: "relative z-1 inline-flex" }, [
|
|
3679
|
+
presenceBtn,
|
|
3680
|
+
presencePopover
|
|
3681
|
+
]);
|
|
3682
|
+
presenceWrapper.hidden = true;
|
|
3683
|
+
root.appendChild(presenceWrapper);
|
|
3684
|
+
let presenceUsers = [];
|
|
3685
|
+
const updatePresenceUI = () => {
|
|
3686
|
+
const localUserId = session.getState().user?.id ?? null;
|
|
3687
|
+
const peers = localUserId ? presenceUsers.filter((u) => u.userId !== localUserId) : presenceUsers;
|
|
3688
|
+
const count = peers.length;
|
|
3689
|
+
presenceWrapper.hidden = count === 0;
|
|
3690
|
+
presenceBadge.textContent = String(count);
|
|
3691
|
+
presenceBtn.setAttribute(
|
|
3692
|
+
"aria-label",
|
|
3693
|
+
count === 1 ? "1 other user online" : `${count} other users online`
|
|
3694
|
+
);
|
|
3695
|
+
presencePopover.innerHTML = "";
|
|
3696
|
+
for (const user of peers) {
|
|
3697
|
+
const row = el("div", {
|
|
3698
|
+
class: "flex items-center gap-2 rounded px-1.5 py-1"
|
|
3699
|
+
});
|
|
3700
|
+
const dot = el("span", {
|
|
3701
|
+
class: "inline-block size-2 shrink-0 rounded-full bg-emerald-500"
|
|
3702
|
+
});
|
|
3703
|
+
const name = el("span", {
|
|
3704
|
+
class: "truncate",
|
|
3705
|
+
text: user.name || "Anonymous"
|
|
3706
|
+
});
|
|
3707
|
+
row.appendChild(dot);
|
|
3708
|
+
row.appendChild(name);
|
|
3709
|
+
presencePopover.appendChild(row);
|
|
3710
|
+
}
|
|
3711
|
+
};
|
|
3712
|
+
const paletteIcon = createLucideElement2(Command);
|
|
3713
|
+
paletteIcon.setAttribute("class", "size-3.5");
|
|
3714
|
+
paletteIcon.setAttribute("aria-hidden", "true");
|
|
3715
|
+
const paletteBtn = el(
|
|
3716
|
+
"button",
|
|
3717
|
+
{
|
|
3718
|
+
class: BUTTON_CLASS,
|
|
3719
|
+
attrs: {
|
|
3720
|
+
type: "button",
|
|
3721
|
+
"data-uidex-menubar-palette": "",
|
|
3722
|
+
"aria-label": "Command palette"
|
|
3723
|
+
}
|
|
3724
|
+
},
|
|
3725
|
+
paletteIcon
|
|
3726
|
+
);
|
|
3104
3727
|
paletteBtn.addEventListener("click", (e) => {
|
|
3105
3728
|
e.stopPropagation();
|
|
3106
3729
|
if (session.getState().stack.length > 0) {
|
|
3107
|
-
session.
|
|
3730
|
+
session.mode.transition.dismiss();
|
|
3108
3731
|
} else {
|
|
3109
|
-
session.
|
|
3732
|
+
session.mode.transition.openPalette();
|
|
3110
3733
|
}
|
|
3734
|
+
paletteBtn.blur();
|
|
3111
3735
|
});
|
|
3112
3736
|
root.appendChild(paletteBtn);
|
|
3113
3737
|
container.appendChild(root);
|
|
3114
3738
|
const syncButtonStates = () => {
|
|
3115
3739
|
const state = session.getState();
|
|
3740
|
+
const inspectActive = state.inspectorActive;
|
|
3116
3741
|
inspectBtn.setAttribute(
|
|
3117
3742
|
"data-uidex-menubar-inspect-active",
|
|
3118
|
-
|
|
3743
|
+
inspectActive ? "true" : "false"
|
|
3119
3744
|
);
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3745
|
+
inspectBtn.className = cn(
|
|
3746
|
+
BUTTON_CLASS,
|
|
3747
|
+
inspectActive && BUTTON_ACTIVE_CLASS
|
|
3123
3748
|
);
|
|
3124
3749
|
const top = state.stack[state.stack.length - 1] ?? null;
|
|
3125
3750
|
const paletteOpen = top?.id === "command-palette";
|
|
@@ -3127,16 +3752,17 @@ function createMenuBar(options) {
|
|
|
3127
3752
|
"data-uidex-menubar-palette-active",
|
|
3128
3753
|
paletteOpen ? "true" : "false"
|
|
3129
3754
|
);
|
|
3130
|
-
|
|
3131
|
-
paletteBtn.style,
|
|
3132
|
-
paletteOpen ? buttonActiveStyle : buttonStyle
|
|
3133
|
-
);
|
|
3755
|
+
paletteBtn.className = cn(BUTTON_CLASS, paletteOpen && BUTTON_ACTIVE_CLASS);
|
|
3134
3756
|
const highlightActive = state.pinnedHighlight !== null;
|
|
3135
|
-
|
|
3757
|
+
highlightBtn.setAttribute(
|
|
3136
3758
|
"data-uidex-menubar-highlight-active",
|
|
3137
3759
|
highlightActive ? "true" : "false"
|
|
3138
3760
|
);
|
|
3139
|
-
|
|
3761
|
+
highlightBtn.className = cn(
|
|
3762
|
+
BUTTON_CLASS,
|
|
3763
|
+
highlightActive && BUTTON_HIGHLIGHT_ACTIVE_CLASS
|
|
3764
|
+
);
|
|
3765
|
+
highlightBtn.hidden = !highlightActive;
|
|
3140
3766
|
};
|
|
3141
3767
|
syncButtonStates();
|
|
3142
3768
|
const unsubscribeSession = session.subscribe(syncButtonStates);
|
|
@@ -3197,14 +3823,28 @@ function createMenuBar(options) {
|
|
|
3197
3823
|
const vertical = y / (window.innerHeight || 1) < 0.5 ? "top" : "bottom";
|
|
3198
3824
|
snapTo(`${vertical}-${horizontal}`);
|
|
3199
3825
|
}
|
|
3826
|
+
const unsubscribePresence = channel?.onPresence(
|
|
3827
|
+
(users) => {
|
|
3828
|
+
presenceUsers = users;
|
|
3829
|
+
updatePresenceUI();
|
|
3830
|
+
}
|
|
3831
|
+
);
|
|
3200
3832
|
return {
|
|
3201
3833
|
destroy() {
|
|
3834
|
+
unsubscribePinFilter?.();
|
|
3835
|
+
unsubscribePresence?.();
|
|
3202
3836
|
unsubscribeSession();
|
|
3203
3837
|
root.removeEventListener("mousedown", onMouseDown);
|
|
3204
3838
|
document.removeEventListener("mousemove", onMouseMove);
|
|
3205
3839
|
document.removeEventListener("mouseup", onMouseUp);
|
|
3206
3840
|
root.remove();
|
|
3207
3841
|
},
|
|
3842
|
+
setPinLayer(layer) {
|
|
3843
|
+
unsubscribePinFilter?.();
|
|
3844
|
+
activePinLayer = layer;
|
|
3845
|
+
unsubscribePinFilter = layer.onFilterChange(() => updatePinUI());
|
|
3846
|
+
updatePinUI();
|
|
3847
|
+
},
|
|
3208
3848
|
snapTo,
|
|
3209
3849
|
snapToNearest,
|
|
3210
3850
|
get corner() {
|
|
@@ -3216,19 +3856,38 @@ function createMenuBar(options) {
|
|
|
3216
3856
|
};
|
|
3217
3857
|
}
|
|
3218
3858
|
|
|
3219
|
-
// src/surface/overlay.ts
|
|
3859
|
+
// src/browser/surface/overlay.ts
|
|
3220
3860
|
var DEFAULT_COLOR = "#34d399";
|
|
3221
3861
|
var DEFAULT_BORDER_WIDTH = 2;
|
|
3222
3862
|
var DEFAULT_FILL_OPACITY = 0.08;
|
|
3863
|
+
var BACKDROP_OPACITY = 0.45;
|
|
3223
3864
|
function createOverlay(deps) {
|
|
3224
3865
|
const { container } = deps;
|
|
3866
|
+
const backdrop = document.createElement("div");
|
|
3867
|
+
backdrop.setAttribute("data-uidex-overlay-backdrop", "");
|
|
3868
|
+
backdrop.style.position = "fixed";
|
|
3869
|
+
backdrop.style.inset = "0";
|
|
3870
|
+
backdrop.style.zIndex = String(Z_OVERLAY);
|
|
3871
|
+
backdrop.style.backgroundColor = `rgba(0, 0, 0, ${BACKDROP_OPACITY})`;
|
|
3872
|
+
backdrop.style.opacity = "0";
|
|
3873
|
+
backdrop.style.visibility = "hidden";
|
|
3874
|
+
backdrop.style.transition = "opacity 150ms ease-out";
|
|
3875
|
+
backdrop.style.pointerEvents = "auto";
|
|
3876
|
+
backdrop.style.cursor = "default";
|
|
3877
|
+
backdrop.addEventListener("click", (e) => {
|
|
3878
|
+
e.stopPropagation();
|
|
3879
|
+
overlay.onDismiss?.();
|
|
3880
|
+
});
|
|
3881
|
+
container.appendChild(backdrop);
|
|
3225
3882
|
const box = document.createElement("div");
|
|
3226
3883
|
box.setAttribute("data-uidex-overlay", "");
|
|
3227
3884
|
box.style.position = "fixed";
|
|
3228
3885
|
box.style.pointerEvents = "none";
|
|
3229
|
-
box.style.zIndex = String(Z_OVERLAY);
|
|
3886
|
+
box.style.zIndex = String(Z_OVERLAY + 1);
|
|
3230
3887
|
box.style.boxSizing = "border-box";
|
|
3231
|
-
box.style.
|
|
3888
|
+
box.style.opacity = "0";
|
|
3889
|
+
box.style.transition = "opacity 150ms ease-out";
|
|
3890
|
+
box.style.visibility = "hidden";
|
|
3232
3891
|
const label = document.createElement("div");
|
|
3233
3892
|
label.setAttribute("data-uidex-overlay-label", "");
|
|
3234
3893
|
label.style.position = "absolute";
|
|
@@ -3241,6 +3900,17 @@ function createOverlay(deps) {
|
|
|
3241
3900
|
label.style.whiteSpace = "nowrap";
|
|
3242
3901
|
label.style.color = "#0a0a0a";
|
|
3243
3902
|
label.style.display = "none";
|
|
3903
|
+
box.addEventListener("transitionend", () => {
|
|
3904
|
+
if (box.style.opacity === "0") {
|
|
3905
|
+
box.style.visibility = "hidden";
|
|
3906
|
+
}
|
|
3907
|
+
});
|
|
3908
|
+
backdrop.addEventListener("transitionend", () => {
|
|
3909
|
+
if (backdrop.style.opacity === "0") {
|
|
3910
|
+
backdrop.style.visibility = "hidden";
|
|
3911
|
+
backdrop.style.clipPath = "";
|
|
3912
|
+
}
|
|
3913
|
+
});
|
|
3244
3914
|
box.appendChild(label);
|
|
3245
3915
|
container.appendChild(box);
|
|
3246
3916
|
let target = null;
|
|
@@ -3250,7 +3920,8 @@ function createOverlay(deps) {
|
|
|
3250
3920
|
padding: 0,
|
|
3251
3921
|
borderStyle: "solid",
|
|
3252
3922
|
borderWidth: DEFAULT_BORDER_WIDTH,
|
|
3253
|
-
fillOpacity: DEFAULT_FILL_OPACITY
|
|
3923
|
+
fillOpacity: DEFAULT_FILL_OPACITY,
|
|
3924
|
+
backdrop: false
|
|
3254
3925
|
};
|
|
3255
3926
|
let rafId = null;
|
|
3256
3927
|
let attached = false;
|
|
@@ -3294,16 +3965,26 @@ function createOverlay(deps) {
|
|
|
3294
3965
|
if (!target) return;
|
|
3295
3966
|
const rect = target.getBoundingClientRect();
|
|
3296
3967
|
const pad = opts.padding;
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3968
|
+
const top = rect.top - pad;
|
|
3969
|
+
const left = rect.left - pad;
|
|
3970
|
+
const w = rect.width + pad * 2;
|
|
3971
|
+
const h = rect.height + pad * 2;
|
|
3972
|
+
box.style.top = `${top}px`;
|
|
3973
|
+
box.style.left = `${left}px`;
|
|
3974
|
+
box.style.width = `${w}px`;
|
|
3975
|
+
box.style.height = `${h}px`;
|
|
3976
|
+
if (opts.backdrop) {
|
|
3977
|
+
const vw = window.innerWidth;
|
|
3978
|
+
const vh = window.innerHeight;
|
|
3979
|
+
backdrop.style.clipPath = cutoutPath(vw, vh, left, top, w, h);
|
|
3980
|
+
}
|
|
3301
3981
|
}
|
|
3302
3982
|
function applyStyles() {
|
|
3303
3983
|
box.style.borderColor = opts.color;
|
|
3304
3984
|
box.style.borderStyle = opts.borderStyle;
|
|
3305
3985
|
box.style.borderWidth = `${opts.borderWidth}px`;
|
|
3306
3986
|
box.style.backgroundColor = rgbaFromColor(opts.color, opts.fillOpacity);
|
|
3987
|
+
box.style.borderRadius = "6px";
|
|
3307
3988
|
if (opts.label) {
|
|
3308
3989
|
label.textContent = opts.label;
|
|
3309
3990
|
label.style.backgroundColor = opts.color;
|
|
@@ -3312,9 +3993,19 @@ function createOverlay(deps) {
|
|
|
3312
3993
|
label.textContent = "";
|
|
3313
3994
|
label.style.display = "none";
|
|
3314
3995
|
}
|
|
3996
|
+
if (opts.backdrop) {
|
|
3997
|
+
backdrop.style.visibility = "visible";
|
|
3998
|
+
backdrop.style.opacity = "1";
|
|
3999
|
+
} else {
|
|
4000
|
+
backdrop.style.opacity = "0";
|
|
4001
|
+
backdrop.style.visibility = "hidden";
|
|
4002
|
+
backdrop.style.clipPath = "";
|
|
4003
|
+
}
|
|
3315
4004
|
}
|
|
3316
|
-
|
|
4005
|
+
const overlay = {
|
|
4006
|
+
onDismiss: null,
|
|
3317
4007
|
show(nextTarget, showOpts) {
|
|
4008
|
+
const wasVisible = target !== null;
|
|
3318
4009
|
target = nextTarget;
|
|
3319
4010
|
opts = {
|
|
3320
4011
|
label: showOpts?.label ?? "",
|
|
@@ -3322,27 +4013,41 @@ function createOverlay(deps) {
|
|
|
3322
4013
|
padding: showOpts?.padding ?? 0,
|
|
3323
4014
|
borderStyle: showOpts?.borderStyle ?? "solid",
|
|
3324
4015
|
borderWidth: showOpts?.borderWidth ?? DEFAULT_BORDER_WIDTH,
|
|
3325
|
-
fillOpacity: showOpts?.fillOpacity ?? DEFAULT_FILL_OPACITY
|
|
4016
|
+
fillOpacity: showOpts?.fillOpacity ?? DEFAULT_FILL_OPACITY,
|
|
4017
|
+
backdrop: showOpts?.backdrop ?? false
|
|
3326
4018
|
};
|
|
3327
4019
|
applyStyles();
|
|
3328
4020
|
updatePosition();
|
|
3329
|
-
|
|
4021
|
+
if (!wasVisible) {
|
|
4022
|
+
box.style.opacity = "0";
|
|
4023
|
+
box.style.visibility = "visible";
|
|
4024
|
+
box.offsetHeight;
|
|
4025
|
+
}
|
|
4026
|
+
box.style.opacity = "1";
|
|
3330
4027
|
attach();
|
|
3331
4028
|
},
|
|
3332
4029
|
hide() {
|
|
3333
4030
|
target = null;
|
|
3334
|
-
box.style.
|
|
4031
|
+
box.style.opacity = "0";
|
|
4032
|
+
backdrop.style.opacity = "0";
|
|
3335
4033
|
detach();
|
|
3336
4034
|
},
|
|
3337
4035
|
destroy() {
|
|
3338
4036
|
detach();
|
|
3339
4037
|
box.remove();
|
|
4038
|
+
backdrop.remove();
|
|
3340
4039
|
target = null;
|
|
3341
4040
|
},
|
|
3342
4041
|
get isVisible() {
|
|
3343
4042
|
return target !== null;
|
|
3344
4043
|
}
|
|
3345
4044
|
};
|
|
4045
|
+
return overlay;
|
|
4046
|
+
}
|
|
4047
|
+
function cutoutPath(vw, vh, x, y, w, h) {
|
|
4048
|
+
const outer = `M0 0H${vw}V${vh}H0Z`;
|
|
4049
|
+
const inner = `M${x} ${y}V${y + h}H${x + w}V${y}Z`;
|
|
4050
|
+
return `path(evenodd,"${outer}${inner}")`;
|
|
3346
4051
|
}
|
|
3347
4052
|
function rgbaFromColor(color, alpha) {
|
|
3348
4053
|
if (color.startsWith("#")) {
|
|
@@ -3359,7 +4064,7 @@ function rgbaFromColor(color, alpha) {
|
|
|
3359
4064
|
return color;
|
|
3360
4065
|
}
|
|
3361
4066
|
|
|
3362
|
-
// src/surface/theme.ts
|
|
4067
|
+
// src/browser/surface/theme.ts
|
|
3363
4068
|
function createThemeDetector(deps) {
|
|
3364
4069
|
const { session, onResolve } = deps;
|
|
3365
4070
|
let resolved = session.getState().resolvedTheme;
|
|
@@ -3377,7 +4082,7 @@ function createThemeDetector(deps) {
|
|
|
3377
4082
|
const next = detect(preference);
|
|
3378
4083
|
if (next === resolved) return;
|
|
3379
4084
|
resolved = next;
|
|
3380
|
-
session.
|
|
4085
|
+
session.setTheme(preference, next);
|
|
3381
4086
|
onResolve?.(next);
|
|
3382
4087
|
};
|
|
3383
4088
|
push();
|
|
@@ -3428,7 +4133,7 @@ function readHtmlClassToken() {
|
|
|
3428
4133
|
return null;
|
|
3429
4134
|
}
|
|
3430
4135
|
|
|
3431
|
-
// src/surface/shell.ts
|
|
4136
|
+
// src/browser/surface/shell.ts
|
|
3432
4137
|
function createSurfaceShell(options) {
|
|
3433
4138
|
const cleanup = createCleanupStack();
|
|
3434
4139
|
const host = createSurfaceHost({
|
|
@@ -3442,7 +4147,7 @@ function createSurfaceShell(options) {
|
|
|
3442
4147
|
onResolve: (theme) => host.applyTheme(theme)
|
|
3443
4148
|
});
|
|
3444
4149
|
cleanup.add(themeDetector);
|
|
3445
|
-
const overlay = createOverlay({ container: host.
|
|
4150
|
+
const overlay = createOverlay({ container: host.shadowRoot });
|
|
3446
4151
|
cleanup.add(overlay);
|
|
3447
4152
|
const tooltip = createCursorTooltip({
|
|
3448
4153
|
container: host.chromeEl,
|
|
@@ -3450,21 +4155,37 @@ function createSurfaceShell(options) {
|
|
|
3450
4155
|
});
|
|
3451
4156
|
cleanup.add(tooltip);
|
|
3452
4157
|
const afterHover = options.inspector?.onAfterHover;
|
|
4158
|
+
const showStack = (stack, cursor) => {
|
|
4159
|
+
if (!stack) {
|
|
4160
|
+
overlay.hide();
|
|
4161
|
+
tooltip.update(null, cursor);
|
|
4162
|
+
return;
|
|
4163
|
+
}
|
|
4164
|
+
const { current } = stack;
|
|
4165
|
+
const demoted = current.ref.kind === "primitive";
|
|
4166
|
+
overlay.show(current.element, {
|
|
4167
|
+
color: KIND_STYLE[current.ref.kind].color,
|
|
4168
|
+
...demoted && { borderStyle: "dashed", fillOpacity: 0.04 }
|
|
4169
|
+
});
|
|
4170
|
+
tooltip.update(
|
|
4171
|
+
{
|
|
4172
|
+
entity: current.entity,
|
|
4173
|
+
node: current.element,
|
|
4174
|
+
layer: stack.matches.length > 1 ? { index: stack.index, total: stack.matches.length } : void 0
|
|
4175
|
+
},
|
|
4176
|
+
cursor
|
|
4177
|
+
);
|
|
4178
|
+
};
|
|
3453
4179
|
const inspector = createInspector({
|
|
3454
4180
|
session: options.session,
|
|
3455
4181
|
registry: options.registry,
|
|
3456
4182
|
onSelect: options.inspector?.onSelect,
|
|
3457
|
-
onHover: (
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
color: KIND_STYLE[match.ref.kind].color
|
|
3464
|
-
});
|
|
3465
|
-
tooltip.update({ entity: match.entity, node: match.element }, cursor);
|
|
3466
|
-
}
|
|
3467
|
-
afterHover?.(match, cursor);
|
|
4183
|
+
onHover: (stack, cursor) => {
|
|
4184
|
+
showStack(stack, cursor);
|
|
4185
|
+
afterHover?.(stack?.current ?? null, cursor);
|
|
4186
|
+
},
|
|
4187
|
+
onCycle: (stack, cursor) => {
|
|
4188
|
+
showStack(stack, cursor);
|
|
3468
4189
|
}
|
|
3469
4190
|
});
|
|
3470
4191
|
cleanup.add(inspector);
|
|
@@ -3472,7 +4193,9 @@ function createSurfaceShell(options) {
|
|
|
3472
4193
|
container: host.chromeEl,
|
|
3473
4194
|
session: options.session,
|
|
3474
4195
|
initialCorner: options.initialCorner,
|
|
3475
|
-
appTitle: options.appTitle
|
|
4196
|
+
appTitle: options.appTitle,
|
|
4197
|
+
channel: options.channel ?? null,
|
|
4198
|
+
pinLayer: options.pinLayer ?? null
|
|
3476
4199
|
});
|
|
3477
4200
|
cleanup.add(menuBar);
|
|
3478
4201
|
return {
|