uidex 0.6.0 → 0.8.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/README.md +3 -3
- package/dist/cli/cli.cjs +2502 -2253
- package/dist/cli/cli.cjs.map +1 -1
- package/dist/headless/index.cjs +86 -703
- package/dist/headless/index.cjs.map +1 -1
- package/dist/headless/index.d.cts +46 -22
- package/dist/headless/index.d.ts +46 -22
- package/dist/headless/index.js +86 -707
- package/dist/headless/index.js.map +1 -1
- package/dist/index.cjs +712 -4149
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +82 -366
- package/dist/index.d.ts +82 -366
- package/dist/index.js +708 -4156
- package/dist/index.js.map +1 -1
- package/dist/playwright/index.cjs +175 -0
- package/dist/playwright/index.cjs.map +1 -1
- package/dist/playwright/index.d.cts +2 -0
- package/dist/playwright/index.d.ts +2 -0
- package/dist/playwright/index.js +167 -0
- package/dist/playwright/index.js.map +1 -1
- package/dist/playwright/states-reporter.cjs +123 -0
- package/dist/playwright/states-reporter.cjs.map +1 -0
- package/dist/playwright/states-reporter.d.cts +46 -0
- package/dist/playwright/states-reporter.d.ts +46 -0
- package/dist/playwright/states-reporter.js +88 -0
- package/dist/playwright/states-reporter.js.map +1 -0
- package/dist/playwright/states.cjs +118 -0
- package/dist/playwright/states.cjs.map +1 -0
- package/dist/playwright/states.d.cts +120 -0
- package/dist/playwright/states.d.ts +120 -0
- package/dist/playwright/states.js +88 -0
- package/dist/playwright/states.js.map +1 -0
- package/dist/react/index.cjs +750 -4113
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +78 -278
- package/dist/react/index.d.ts +78 -278
- package/dist/react/index.js +748 -4135
- package/dist/react/index.js.map +1 -1
- package/dist/scan/index.cjs +2694 -1541
- package/dist/scan/index.cjs.map +1 -1
- package/dist/scan/index.d.cts +482 -19
- package/dist/scan/index.d.ts +482 -19
- package/dist/scan/index.js +2682 -1540
- package/dist/scan/index.js.map +1 -1
- package/package.json +14 -17
- package/templates/claude/SKILL.md +71 -0
- package/templates/claude/references/audit.md +43 -0
- package/templates/claude/{rules.md → references/conventions.md} +25 -28
- package/dist/cloud/index.cjs +0 -472
- package/dist/cloud/index.cjs.map +0 -1
- package/dist/cloud/index.d.cts +0 -82
- package/dist/cloud/index.d.ts +0 -82
- package/dist/cloud/index.js +0 -445
- package/dist/cloud/index.js.map +0 -1
- package/templates/claude/audit.md +0 -43
- /package/templates/claude/{api.md → references/api.md} +0 -0
package/dist/headless/index.js
CHANGED
|
@@ -18,11 +18,6 @@ function isMetaEntity(entity) {
|
|
|
18
18
|
function entityKey(entity) {
|
|
19
19
|
return entity.kind === "route" ? entity.path : entity.id;
|
|
20
20
|
}
|
|
21
|
-
function sameRef(a, b) {
|
|
22
|
-
if (a === b) return true;
|
|
23
|
-
if (a === null || b === null) return false;
|
|
24
|
-
return a.kind === b.kind && a.id === b.id;
|
|
25
|
-
}
|
|
26
21
|
var UnknownEntityKindError = class extends Error {
|
|
27
22
|
kind;
|
|
28
23
|
constructor(kind) {
|
|
@@ -87,13 +82,14 @@ function createRegistry() {
|
|
|
87
82
|
};
|
|
88
83
|
const getPatternsForKind = (kind) => {
|
|
89
84
|
const cached = patternCache.get(kind);
|
|
90
|
-
if (cached !== void 0)
|
|
91
|
-
return cached;
|
|
85
|
+
if (cached !== void 0) return cached;
|
|
92
86
|
const patterns = [];
|
|
93
87
|
for (const [key, entity] of store[kind]) {
|
|
94
|
-
if (key.
|
|
88
|
+
if (key.includes("*")) {
|
|
89
|
+
const segments = key.split("*");
|
|
95
90
|
patterns.push({
|
|
96
|
-
|
|
91
|
+
segments,
|
|
92
|
+
staticLength: segments.reduce((n, s) => n + s.length, 0),
|
|
97
93
|
entity
|
|
98
94
|
});
|
|
99
95
|
}
|
|
@@ -104,13 +100,25 @@ function createRegistry() {
|
|
|
104
100
|
);
|
|
105
101
|
return patterns;
|
|
106
102
|
};
|
|
103
|
+
const matchesSegments = (segments, id) => {
|
|
104
|
+
const first = segments[0];
|
|
105
|
+
const last = segments[segments.length - 1];
|
|
106
|
+
if (!id.startsWith(first)) return false;
|
|
107
|
+
let pos = first.length;
|
|
108
|
+
for (let i = 1; i < segments.length - 1; i++) {
|
|
109
|
+
const idx = id.indexOf(segments[i], pos);
|
|
110
|
+
if (idx === -1) return false;
|
|
111
|
+
pos = idx + segments[i].length;
|
|
112
|
+
}
|
|
113
|
+
return id.endsWith(last) && id.length - last.length >= pos;
|
|
114
|
+
};
|
|
107
115
|
const matchPattern = (kind, id) => {
|
|
108
116
|
assertEntityKind(kind);
|
|
109
117
|
const patterns = getPatternsForKind(kind);
|
|
110
118
|
if (patterns.length === 0) return void 0;
|
|
111
119
|
let best;
|
|
112
120
|
for (const entry of patterns) {
|
|
113
|
-
if (
|
|
121
|
+
if (matchesSegments(entry.segments, id) && (best === void 0 || entry.staticLength > best.staticLength)) {
|
|
114
122
|
best = entry;
|
|
115
123
|
}
|
|
116
124
|
}
|
|
@@ -301,8 +309,7 @@ var COMMAND_PALETTE_ENTRY = {
|
|
|
301
309
|
function createModeStore(options) {
|
|
302
310
|
const { nav, bindings } = options;
|
|
303
311
|
const store = createStore(() => ({
|
|
304
|
-
mode: "idle"
|
|
305
|
-
inspectorActive: false
|
|
312
|
+
mode: "idle"
|
|
306
313
|
}));
|
|
307
314
|
const transition = {
|
|
308
315
|
openPalette() {
|
|
@@ -311,17 +318,17 @@ function createModeStore(options) {
|
|
|
311
318
|
bindings?.destroyInspector?.();
|
|
312
319
|
}
|
|
313
320
|
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
314
|
-
store.setState({ mode: "palette"
|
|
321
|
+
store.setState({ mode: "palette" });
|
|
315
322
|
},
|
|
316
323
|
openInspector() {
|
|
317
324
|
bindings?.mountInspector?.();
|
|
318
325
|
nav.nav.clear();
|
|
319
|
-
store.setState({ mode: "inspecting"
|
|
326
|
+
store.setState({ mode: "inspecting" });
|
|
320
327
|
},
|
|
321
328
|
closeInspector() {
|
|
322
329
|
bindings?.destroyInspector?.();
|
|
323
330
|
nav.nav.clear();
|
|
324
|
-
store.setState({ mode: "idle"
|
|
331
|
+
store.setState({ mode: "idle" });
|
|
325
332
|
},
|
|
326
333
|
toggleInspector() {
|
|
327
334
|
if (store.getState().mode === "inspecting") {
|
|
@@ -336,7 +343,7 @@ function createModeStore(options) {
|
|
|
336
343
|
bindings?.destroyInspector?.();
|
|
337
344
|
}
|
|
338
345
|
nav.nav.reset(initialStack);
|
|
339
|
-
store.setState({ mode: "viewing"
|
|
346
|
+
store.setState({ mode: "viewing" });
|
|
340
347
|
},
|
|
341
348
|
dismiss() {
|
|
342
349
|
const prev = store.getState();
|
|
@@ -344,7 +351,7 @@ function createModeStore(options) {
|
|
|
344
351
|
bindings?.destroyInspector?.();
|
|
345
352
|
}
|
|
346
353
|
nav.nav.clear();
|
|
347
|
-
store.setState({ mode: "idle"
|
|
354
|
+
store.setState({ mode: "idle" });
|
|
348
355
|
},
|
|
349
356
|
popOrTransition() {
|
|
350
357
|
const { stack } = nav.getState();
|
|
@@ -352,12 +359,12 @@ function createModeStore(options) {
|
|
|
352
359
|
nav.nav.pop();
|
|
353
360
|
} else if (stack.length === 2 && stack[0]?.id === "command-palette") {
|
|
354
361
|
nav.nav.reset([COMMAND_PALETTE_ENTRY]);
|
|
355
|
-
store.setState({ mode: "palette"
|
|
362
|
+
store.setState({ mode: "palette" });
|
|
356
363
|
} else if (stack.length === 2) {
|
|
357
364
|
nav.nav.pop();
|
|
358
365
|
} else {
|
|
359
366
|
nav.nav.clear();
|
|
360
|
-
store.setState({ mode: "idle"
|
|
367
|
+
store.setState({ mode: "idle" });
|
|
361
368
|
}
|
|
362
369
|
},
|
|
363
370
|
pushView(entry) {
|
|
@@ -374,7 +381,7 @@ function createModeStore(options) {
|
|
|
374
381
|
case "inspecting":
|
|
375
382
|
bindings?.destroyInspector?.();
|
|
376
383
|
nav.nav.reset([entry]);
|
|
377
|
-
store.setState({ mode: "viewing"
|
|
384
|
+
store.setState({ mode: "viewing" });
|
|
378
385
|
break;
|
|
379
386
|
case "palette":
|
|
380
387
|
case "viewing":
|
|
@@ -409,14 +416,6 @@ function createNavigationStore() {
|
|
|
409
416
|
store.setState({ stack: s.slice(0, -1) });
|
|
410
417
|
}
|
|
411
418
|
},
|
|
412
|
-
replace(entry) {
|
|
413
|
-
const s = store.getState().stack;
|
|
414
|
-
if (s.length === 0) {
|
|
415
|
-
store.setState({ stack: [entry] });
|
|
416
|
-
} else {
|
|
417
|
-
store.setState({ stack: [...s.slice(0, -1), entry] });
|
|
418
|
-
}
|
|
419
|
-
},
|
|
420
419
|
clear() {
|
|
421
420
|
store.setState({ stack: [] });
|
|
422
421
|
},
|
|
@@ -431,15 +430,11 @@ function createNavigationStore() {
|
|
|
431
430
|
|
|
432
431
|
// src/browser/session/store.ts
|
|
433
432
|
var defaultSnapshot = {
|
|
434
|
-
hover: null,
|
|
435
|
-
selection: null,
|
|
436
433
|
stack: [],
|
|
437
434
|
pinnedHighlight: null,
|
|
438
|
-
|
|
435
|
+
mode: "idle",
|
|
439
436
|
theme: "auto",
|
|
440
|
-
resolvedTheme: "light"
|
|
441
|
-
ingestActive: false,
|
|
442
|
-
user: null
|
|
437
|
+
resolvedTheme: "light"
|
|
443
438
|
};
|
|
444
439
|
function resolveTheme(preference, detect) {
|
|
445
440
|
if (preference !== "auto") return preference;
|
|
@@ -489,7 +484,6 @@ function createSession(options = {}) {
|
|
|
489
484
|
} else if (highlightMode === "transient") {
|
|
490
485
|
onUpdateOverlay?.(hlCtx);
|
|
491
486
|
}
|
|
492
|
-
store.setState({ hover: ref });
|
|
493
487
|
},
|
|
494
488
|
unhover() {
|
|
495
489
|
if (highlightMode === "transient") {
|
|
@@ -499,7 +493,6 @@ function createSession(options = {}) {
|
|
|
499
493
|
hlCtx.color = null;
|
|
500
494
|
onHideOverlay?.();
|
|
501
495
|
}
|
|
502
|
-
store.setState({ hover: null });
|
|
503
496
|
},
|
|
504
497
|
pin(ref) {
|
|
505
498
|
const pinRef = ref ?? hlCtx.ref;
|
|
@@ -527,15 +520,11 @@ function createSession(options = {}) {
|
|
|
527
520
|
};
|
|
528
521
|
const store = createStore3(() => ({
|
|
529
522
|
...defaultSnapshot,
|
|
530
|
-
hover: overrides.hover ?? null,
|
|
531
|
-
selection: overrides.selection ?? null,
|
|
532
523
|
stack: [],
|
|
533
524
|
pinnedHighlight: null,
|
|
534
|
-
|
|
525
|
+
mode: "idle",
|
|
535
526
|
theme: initialPref,
|
|
536
|
-
resolvedTheme: initialResolved
|
|
537
|
-
ingestActive: overrides.ingestActive ?? false,
|
|
538
|
-
user: overrides.user ?? null
|
|
527
|
+
resolvedTheme: initialResolved
|
|
539
528
|
}));
|
|
540
529
|
nav.subscribe(() => {
|
|
541
530
|
const { stack } = nav.getState();
|
|
@@ -544,29 +533,21 @@ function createSession(options = {}) {
|
|
|
544
533
|
}
|
|
545
534
|
});
|
|
546
535
|
modeStore.subscribe(() => {
|
|
547
|
-
const {
|
|
548
|
-
if (store.getState().
|
|
549
|
-
store.setState({
|
|
536
|
+
const { mode } = modeStore.getState();
|
|
537
|
+
if (store.getState().mode !== mode) {
|
|
538
|
+
store.setState({ mode });
|
|
550
539
|
}
|
|
551
540
|
});
|
|
552
541
|
const session = store;
|
|
553
542
|
session.nav = nav;
|
|
554
543
|
session.mode = modeStore;
|
|
555
544
|
session.highlight = highlightActions;
|
|
556
|
-
session.select = (ref) => {
|
|
557
|
-
if (sameRef(store.getState().selection, ref)) return;
|
|
558
|
-
store.setState({ selection: ref });
|
|
559
|
-
};
|
|
560
545
|
session.setTheme = (theme, resolved) => {
|
|
561
546
|
const state = store.getState();
|
|
562
547
|
const nextResolved = resolved ?? resolveTheme(theme, detectTheme);
|
|
563
548
|
if (state.theme === theme && state.resolvedTheme === nextResolved) return;
|
|
564
549
|
store.setState({ theme, resolvedTheme: nextResolved });
|
|
565
550
|
};
|
|
566
|
-
session.setIngest = (active) => {
|
|
567
|
-
if (store.getState().ingestActive === active) return;
|
|
568
|
-
store.setState({ ingestActive: active });
|
|
569
|
-
};
|
|
570
551
|
if (initialStack.length > 0) {
|
|
571
552
|
modeStore.transition.openPalette();
|
|
572
553
|
for (let i = 1; i < initialStack.length; i++) {
|
|
@@ -587,8 +568,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
587
568
|
@layer theme, base, components, utilities;
|
|
588
569
|
@layer theme {
|
|
589
570
|
:root, :host {
|
|
590
|
-
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
591
|
-
Roboto, sans-serif;
|
|
592
571
|
--color-red-400: oklch(70.4% 0.191 22.216);
|
|
593
572
|
--color-red-500: oklch(63.7% 0.237 25.331);
|
|
594
573
|
--color-red-700: oklch(50.5% 0.213 27.518);
|
|
@@ -641,7 +620,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
641
620
|
--color-black: #000;
|
|
642
621
|
--color-white: #fff;
|
|
643
622
|
--spacing: 0.25rem;
|
|
644
|
-
--container-sm: 24rem;
|
|
645
623
|
--container-xl: 36rem;
|
|
646
624
|
--text-xs: 0.75rem;
|
|
647
625
|
--text-xs--line-height: calc(1 / 0.75);
|
|
@@ -649,28 +627,22 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
649
627
|
--text-sm--line-height: calc(1.25 / 0.875);
|
|
650
628
|
--text-base: 1rem;
|
|
651
629
|
--text-base--line-height: calc(1.5 / 1);
|
|
652
|
-
--text-xl: 1.25rem;
|
|
653
|
-
--text-xl--line-height: calc(1.75 / 1.25);
|
|
654
630
|
--font-weight-normal: 400;
|
|
655
631
|
--font-weight-medium: 500;
|
|
656
632
|
--font-weight-semibold: 600;
|
|
657
|
-
--font-weight-bold: 700;
|
|
658
633
|
--tracking-tight: -0.025em;
|
|
659
634
|
--tracking-widest: 0.1em;
|
|
660
635
|
--leading-relaxed: 1.625;
|
|
661
|
-
--radius-md: calc(var(--radius) * 0.8);
|
|
662
636
|
--radius-lg: var(--radius);
|
|
663
637
|
--radius-xl: calc(var(--radius) * 1.4);
|
|
664
638
|
--radius-2xl: calc(var(--radius) * 1.8);
|
|
665
639
|
--ease-out: cubic-bezier(0, 0, 0.2, 1);
|
|
666
|
-
--animate-spin: spin 1s linear infinite;
|
|
667
640
|
--blur-sm: 8px;
|
|
668
641
|
--default-transition-duration: 150ms;
|
|
669
642
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
670
643
|
--default-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
671
644
|
Roboto, sans-serif;
|
|
672
645
|
--default-mono-font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
673
|
-
--color-muted: var(--muted);
|
|
674
646
|
--color-border: var(--border);
|
|
675
647
|
}
|
|
676
648
|
}
|
|
@@ -838,17 +810,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
838
810
|
.visible {
|
|
839
811
|
visibility: visible;
|
|
840
812
|
}
|
|
841
|
-
.sr-only {
|
|
842
|
-
position: absolute;
|
|
843
|
-
width: 1px;
|
|
844
|
-
height: 1px;
|
|
845
|
-
padding: 0;
|
|
846
|
-
margin: -1px;
|
|
847
|
-
overflow: hidden;
|
|
848
|
-
clip-path: inset(50%);
|
|
849
|
-
white-space: nowrap;
|
|
850
|
-
border-width: 0;
|
|
851
|
-
}
|
|
852
813
|
.absolute {
|
|
853
814
|
position: absolute;
|
|
854
815
|
}
|
|
@@ -870,33 +831,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
870
831
|
.end {
|
|
871
832
|
inset-inline-end: var(--spacing);
|
|
872
833
|
}
|
|
873
|
-
.-top-1 {
|
|
874
|
-
top: calc(var(--spacing) * -1);
|
|
875
|
-
}
|
|
876
|
-
.-right-1 {
|
|
877
|
-
right: calc(var(--spacing) * -1);
|
|
878
|
-
}
|
|
879
|
-
.right-0 {
|
|
880
|
-
right: calc(var(--spacing) * 0);
|
|
881
|
-
}
|
|
882
|
-
.right-2 {
|
|
883
|
-
right: calc(var(--spacing) * 2);
|
|
884
|
-
}
|
|
885
|
-
.bottom-full {
|
|
886
|
-
bottom: 100%;
|
|
887
|
-
}
|
|
888
|
-
.bottom-px {
|
|
889
|
-
bottom: 1px;
|
|
890
|
-
}
|
|
891
834
|
.z-1 {
|
|
892
835
|
z-index: 1;
|
|
893
836
|
}
|
|
894
837
|
.z-10 {
|
|
895
838
|
z-index: 10;
|
|
896
839
|
}
|
|
897
|
-
.z-\\[2147483647\\] {
|
|
898
|
-
z-index: 2147483647;
|
|
899
|
-
}
|
|
900
840
|
.container {
|
|
901
841
|
width: 100%;
|
|
902
842
|
@media (width >= 40rem) {
|
|
@@ -924,21 +864,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
924
864
|
.mx-2 {
|
|
925
865
|
margin-inline: calc(var(--spacing) * 2);
|
|
926
866
|
}
|
|
927
|
-
.my-1 {
|
|
928
|
-
margin-block: calc(var(--spacing) * 1);
|
|
929
|
-
}
|
|
930
867
|
.ms-auto {
|
|
931
868
|
margin-inline-start: auto;
|
|
932
869
|
}
|
|
933
870
|
.mt-1 {
|
|
934
871
|
margin-top: calc(var(--spacing) * 1);
|
|
935
872
|
}
|
|
936
|
-
.mb-2 {
|
|
937
|
-
margin-bottom: calc(var(--spacing) * 2);
|
|
938
|
-
}
|
|
939
|
-
.mb-6 {
|
|
940
|
-
margin-bottom: calc(var(--spacing) * 6);
|
|
941
|
-
}
|
|
942
873
|
.ml-auto {
|
|
943
874
|
margin-left: auto;
|
|
944
875
|
}
|
|
@@ -957,26 +888,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
957
888
|
.inline {
|
|
958
889
|
display: inline;
|
|
959
890
|
}
|
|
960
|
-
.inline-block {
|
|
961
|
-
display: inline-block;
|
|
962
|
-
}
|
|
963
891
|
.inline-flex {
|
|
964
892
|
display: inline-flex;
|
|
965
893
|
}
|
|
966
|
-
.list-item {
|
|
967
|
-
display: list-item;
|
|
968
|
-
}
|
|
969
894
|
.table {
|
|
970
895
|
display: table;
|
|
971
896
|
}
|
|
972
|
-
.size-2 {
|
|
973
|
-
width: calc(var(--spacing) * 2);
|
|
974
|
-
height: calc(var(--spacing) * 2);
|
|
975
|
-
}
|
|
976
|
-
.size-3 {
|
|
977
|
-
width: calc(var(--spacing) * 3);
|
|
978
|
-
height: calc(var(--spacing) * 3);
|
|
979
|
-
}
|
|
980
897
|
.size-3\\.5 {
|
|
981
898
|
width: calc(var(--spacing) * 3.5);
|
|
982
899
|
height: calc(var(--spacing) * 3.5);
|
|
@@ -1034,33 +951,15 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1034
951
|
.h-\\[26rem\\] {
|
|
1035
952
|
height: 26rem;
|
|
1036
953
|
}
|
|
1037
|
-
.h-auto {
|
|
1038
|
-
height: auto;
|
|
1039
|
-
}
|
|
1040
954
|
.h-full {
|
|
1041
955
|
height: 100%;
|
|
1042
956
|
}
|
|
1043
|
-
.h-px {
|
|
1044
|
-
height: 1px;
|
|
1045
|
-
}
|
|
1046
|
-
.max-h-32 {
|
|
1047
|
-
max-height: calc(var(--spacing) * 32);
|
|
1048
|
-
}
|
|
1049
|
-
.max-h-full {
|
|
1050
|
-
max-height: 100%;
|
|
1051
|
-
}
|
|
1052
957
|
.min-h-0 {
|
|
1053
958
|
min-height: calc(var(--spacing) * 0);
|
|
1054
959
|
}
|
|
1055
|
-
.min-h-7 {
|
|
1056
|
-
min-height: calc(var(--spacing) * 7);
|
|
1057
|
-
}
|
|
1058
960
|
.min-h-8 {
|
|
1059
961
|
min-height: calc(var(--spacing) * 8);
|
|
1060
962
|
}
|
|
1061
|
-
.min-h-20 {
|
|
1062
|
-
min-height: calc(var(--spacing) * 20);
|
|
1063
|
-
}
|
|
1064
963
|
.w-3\\.5 {
|
|
1065
964
|
width: calc(var(--spacing) * 3.5);
|
|
1066
965
|
}
|
|
@@ -1070,30 +969,15 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1070
969
|
.w-12 {
|
|
1071
970
|
width: calc(var(--spacing) * 12);
|
|
1072
971
|
}
|
|
1073
|
-
.w-20 {
|
|
1074
|
-
width: calc(var(--spacing) * 20);
|
|
1075
|
-
}
|
|
1076
|
-
.w-36 {
|
|
1077
|
-
width: calc(var(--spacing) * 36);
|
|
1078
|
-
}
|
|
1079
972
|
.w-56 {
|
|
1080
973
|
width: calc(var(--spacing) * 56);
|
|
1081
974
|
}
|
|
1082
|
-
.w-auto {
|
|
1083
|
-
width: auto;
|
|
1084
|
-
}
|
|
1085
975
|
.w-full {
|
|
1086
976
|
width: 100%;
|
|
1087
977
|
}
|
|
1088
978
|
.w-px {
|
|
1089
979
|
width: 1px;
|
|
1090
980
|
}
|
|
1091
|
-
.max-w-full {
|
|
1092
|
-
max-width: 100%;
|
|
1093
|
-
}
|
|
1094
|
-
.max-w-sm {
|
|
1095
|
-
max-width: var(--container-sm);
|
|
1096
|
-
}
|
|
1097
981
|
.max-w-xl {
|
|
1098
982
|
max-width: var(--container-xl);
|
|
1099
983
|
}
|
|
@@ -1121,44 +1005,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1121
1005
|
.shrink-0 {
|
|
1122
1006
|
flex-shrink: 0;
|
|
1123
1007
|
}
|
|
1124
|
-
.origin-bottom-left {
|
|
1125
|
-
transform-origin: 0 100%;
|
|
1126
|
-
}
|
|
1127
|
-
.origin-bottom-right {
|
|
1128
|
-
transform-origin: 100% 100%;
|
|
1129
|
-
}
|
|
1130
|
-
.-translate-x-0\\.5 {
|
|
1131
|
-
--tw-translate-x: calc(var(--spacing) * -0.5);
|
|
1132
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1133
|
-
}
|
|
1134
|
-
.translate-x-0\\.5 {
|
|
1135
|
-
--tw-translate-x: calc(var(--spacing) * 0.5);
|
|
1136
|
-
translate: var(--tw-translate-x) var(--tw-translate-y);
|
|
1137
|
-
}
|
|
1138
|
-
.scale-84 {
|
|
1139
|
-
--tw-scale-x: 84%;
|
|
1140
|
-
--tw-scale-y: 84%;
|
|
1141
|
-
--tw-scale-z: 84%;
|
|
1142
|
-
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
1143
|
-
}
|
|
1144
|
-
.-rotate-10 {
|
|
1145
|
-
rotate: calc(10deg * -1);
|
|
1146
|
-
}
|
|
1147
|
-
.rotate-10 {
|
|
1148
|
-
rotate: 10deg;
|
|
1149
|
-
}
|
|
1150
1008
|
.transform {
|
|
1151
1009
|
transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
|
|
1152
1010
|
}
|
|
1153
|
-
.animate-skeleton {
|
|
1154
|
-
animation: skeleton 2s -1s infinite linear;
|
|
1155
|
-
}
|
|
1156
|
-
.animate-spin {
|
|
1157
|
-
animation: var(--animate-spin);
|
|
1158
|
-
}
|
|
1159
|
-
.cursor-default {
|
|
1160
|
-
cursor: default;
|
|
1161
|
-
}
|
|
1162
1011
|
.cursor-pointer {
|
|
1163
1012
|
cursor: pointer;
|
|
1164
1013
|
}
|
|
@@ -1168,18 +1017,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1168
1017
|
.scroll-py-2 {
|
|
1169
1018
|
scroll-padding-block: calc(var(--spacing) * 2);
|
|
1170
1019
|
}
|
|
1171
|
-
.list-none {
|
|
1172
|
-
list-style-type: none;
|
|
1173
|
-
}
|
|
1174
|
-
.appearance-none {
|
|
1175
|
-
appearance: none;
|
|
1176
|
-
}
|
|
1177
1020
|
.flex-col {
|
|
1178
1021
|
flex-direction: column;
|
|
1179
1022
|
}
|
|
1180
|
-
.flex-row {
|
|
1181
|
-
flex-direction: row;
|
|
1182
|
-
}
|
|
1183
1023
|
.items-center {
|
|
1184
1024
|
align-items: center;
|
|
1185
1025
|
}
|
|
@@ -1192,15 +1032,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1192
1032
|
.justify-center {
|
|
1193
1033
|
justify-content: center;
|
|
1194
1034
|
}
|
|
1195
|
-
.justify-start {
|
|
1196
|
-
justify-content: flex-start;
|
|
1197
|
-
}
|
|
1198
1035
|
.gap-0 {
|
|
1199
1036
|
gap: calc(var(--spacing) * 0);
|
|
1200
1037
|
}
|
|
1201
|
-
.gap-0\\.5 {
|
|
1202
|
-
gap: calc(var(--spacing) * 0.5);
|
|
1203
|
-
}
|
|
1204
1038
|
.gap-1 {
|
|
1205
1039
|
gap: calc(var(--spacing) * 1);
|
|
1206
1040
|
}
|
|
@@ -1213,15 +1047,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1213
1047
|
.gap-3 {
|
|
1214
1048
|
gap: calc(var(--spacing) * 3);
|
|
1215
1049
|
}
|
|
1216
|
-
.gap-4 {
|
|
1217
|
-
gap: calc(var(--spacing) * 4);
|
|
1218
|
-
}
|
|
1219
|
-
.gap-6 {
|
|
1220
|
-
gap: calc(var(--spacing) * 6);
|
|
1221
|
-
}
|
|
1222
|
-
.self-start {
|
|
1223
|
-
align-self: flex-start;
|
|
1224
|
-
}
|
|
1225
1050
|
.truncate {
|
|
1226
1051
|
overflow: hidden;
|
|
1227
1052
|
text-overflow: ellipsis;
|
|
@@ -1319,21 +1144,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1319
1144
|
background-color: color-mix(in oklab, var(--color-black) 32%, transparent);
|
|
1320
1145
|
}
|
|
1321
1146
|
}
|
|
1322
|
-
.bg-black\\/80 {
|
|
1323
|
-
background-color: color-mix(in srgb, #000 80%, transparent);
|
|
1324
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1325
|
-
background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
|
|
1326
|
-
}
|
|
1327
|
-
}
|
|
1328
1147
|
.bg-blue-50 {
|
|
1329
1148
|
background-color: var(--color-blue-50);
|
|
1330
1149
|
}
|
|
1331
1150
|
.bg-border {
|
|
1332
1151
|
background-color: var(--border);
|
|
1333
1152
|
}
|
|
1334
|
-
.bg-card {
|
|
1335
|
-
background-color: var(--card);
|
|
1336
|
-
}
|
|
1337
1153
|
.bg-cyan-50 {
|
|
1338
1154
|
background-color: var(--color-cyan-50);
|
|
1339
1155
|
}
|
|
@@ -1349,15 +1165,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1349
1165
|
.bg-emerald-50 {
|
|
1350
1166
|
background-color: var(--color-emerald-50);
|
|
1351
1167
|
}
|
|
1352
|
-
.bg-emerald-500 {
|
|
1353
|
-
background-color: var(--color-emerald-500);
|
|
1354
|
-
}
|
|
1355
1168
|
.bg-fuchsia-50 {
|
|
1356
1169
|
background-color: var(--color-fuchsia-50);
|
|
1357
1170
|
}
|
|
1358
|
-
.bg-info {
|
|
1359
|
-
background-color: var(--info);
|
|
1360
|
-
}
|
|
1361
1171
|
.bg-info\\/10 {
|
|
1362
1172
|
background-color: var(--info);
|
|
1363
1173
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -1409,18 +1219,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1409
1219
|
.bg-clip-padding {
|
|
1410
1220
|
background-clip: padding-box;
|
|
1411
1221
|
}
|
|
1412
|
-
.bg-\\[right_0\\.5rem_center\\] {
|
|
1413
|
-
background-position: right 0.5rem center;
|
|
1414
|
-
}
|
|
1415
|
-
.bg-no-repeat {
|
|
1416
|
-
background-repeat: no-repeat;
|
|
1417
|
-
}
|
|
1418
|
-
.object-cover {
|
|
1419
|
-
object-fit: cover;
|
|
1420
|
-
}
|
|
1421
|
-
.object-top {
|
|
1422
|
-
object-position: top;
|
|
1423
|
-
}
|
|
1424
1222
|
.p-1 {
|
|
1425
1223
|
padding: calc(var(--spacing) * 1);
|
|
1426
1224
|
}
|
|
@@ -1433,12 +1231,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1433
1231
|
.p-4 {
|
|
1434
1232
|
padding: calc(var(--spacing) * 4);
|
|
1435
1233
|
}
|
|
1436
|
-
.p-6 {
|
|
1437
|
-
padding: calc(var(--spacing) * 6);
|
|
1438
|
-
}
|
|
1439
|
-
.px-0 {
|
|
1440
|
-
padding-inline: calc(var(--spacing) * 0);
|
|
1441
|
-
}
|
|
1442
1234
|
.px-1 {
|
|
1443
1235
|
padding-inline: calc(var(--spacing) * 1);
|
|
1444
1236
|
}
|
|
@@ -1460,27 +1252,15 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1460
1252
|
.px-4 {
|
|
1461
1253
|
padding-inline: calc(var(--spacing) * 4);
|
|
1462
1254
|
}
|
|
1463
|
-
.px-6 {
|
|
1464
|
-
padding-inline: calc(var(--spacing) * 6);
|
|
1465
|
-
}
|
|
1466
|
-
.py-0 {
|
|
1467
|
-
padding-block: calc(var(--spacing) * 0);
|
|
1468
|
-
}
|
|
1469
1255
|
.py-1 {
|
|
1470
1256
|
padding-block: calc(var(--spacing) * 1);
|
|
1471
1257
|
}
|
|
1472
1258
|
.py-1\\.5 {
|
|
1473
1259
|
padding-block: calc(var(--spacing) * 1.5);
|
|
1474
1260
|
}
|
|
1475
|
-
.py-2 {
|
|
1476
|
-
padding-block: calc(var(--spacing) * 2);
|
|
1477
|
-
}
|
|
1478
1261
|
.py-4 {
|
|
1479
1262
|
padding-block: calc(var(--spacing) * 4);
|
|
1480
1263
|
}
|
|
1481
|
-
.py-12 {
|
|
1482
|
-
padding-block: calc(var(--spacing) * 12);
|
|
1483
|
-
}
|
|
1484
1264
|
.py-\\[max\\(1rem\\,4vh\\)\\] {
|
|
1485
1265
|
padding-block: max(1rem, 4vh);
|
|
1486
1266
|
}
|
|
@@ -1493,12 +1273,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1493
1273
|
.pt-2 {
|
|
1494
1274
|
padding-top: calc(var(--spacing) * 2);
|
|
1495
1275
|
}
|
|
1496
|
-
.pr-8 {
|
|
1497
|
-
padding-right: calc(var(--spacing) * 8);
|
|
1498
|
-
}
|
|
1499
|
-
.pl-3 {
|
|
1500
|
-
padding-left: calc(var(--spacing) * 3);
|
|
1501
|
-
}
|
|
1502
1276
|
.text-center {
|
|
1503
1277
|
text-align: center;
|
|
1504
1278
|
}
|
|
@@ -1516,18 +1290,10 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1516
1290
|
font-size: var(--text-base);
|
|
1517
1291
|
line-height: var(--tw-leading, var(--text-base--line-height));
|
|
1518
1292
|
}
|
|
1519
|
-
.text-base\\/4\\.5 {
|
|
1520
|
-
font-size: var(--text-base);
|
|
1521
|
-
line-height: calc(var(--spacing) * 4.5);
|
|
1522
|
-
}
|
|
1523
1293
|
.text-sm {
|
|
1524
1294
|
font-size: var(--text-sm);
|
|
1525
1295
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
1526
1296
|
}
|
|
1527
|
-
.text-xl {
|
|
1528
|
-
font-size: var(--text-xl);
|
|
1529
|
-
line-height: var(--tw-leading, var(--text-xl--line-height));
|
|
1530
|
-
}
|
|
1531
1297
|
.text-xs {
|
|
1532
1298
|
font-size: var(--text-xs);
|
|
1533
1299
|
line-height: var(--tw-leading, var(--text-xs--line-height));
|
|
@@ -1535,27 +1301,13 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1535
1301
|
.text-\\[0\\.625rem\\] {
|
|
1536
1302
|
font-size: 0.625rem;
|
|
1537
1303
|
}
|
|
1538
|
-
.text-\\[9px\\] {
|
|
1539
|
-
font-size: 9px;
|
|
1540
|
-
}
|
|
1541
|
-
.text-\\[10px\\] {
|
|
1542
|
-
font-size: 10px;
|
|
1543
|
-
}
|
|
1544
1304
|
.text-\\[11px\\] {
|
|
1545
1305
|
font-size: 11px;
|
|
1546
1306
|
}
|
|
1547
|
-
.leading-none {
|
|
1548
|
-
--tw-leading: 1;
|
|
1549
|
-
line-height: 1;
|
|
1550
|
-
}
|
|
1551
1307
|
.leading-relaxed {
|
|
1552
1308
|
--tw-leading: var(--leading-relaxed);
|
|
1553
1309
|
line-height: var(--leading-relaxed);
|
|
1554
1310
|
}
|
|
1555
|
-
.font-bold {
|
|
1556
|
-
--tw-font-weight: var(--font-weight-bold);
|
|
1557
|
-
font-weight: var(--font-weight-bold);
|
|
1558
|
-
}
|
|
1559
1311
|
.font-medium {
|
|
1560
1312
|
--tw-font-weight: var(--font-weight-medium);
|
|
1561
1313
|
font-weight: var(--font-weight-medium);
|
|
@@ -1576,9 +1328,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1576
1328
|
--tw-tracking: var(--tracking-widest);
|
|
1577
1329
|
letter-spacing: var(--tracking-widest);
|
|
1578
1330
|
}
|
|
1579
|
-
.text-balance {
|
|
1580
|
-
text-wrap: balance;
|
|
1581
|
-
}
|
|
1582
1331
|
.break-words {
|
|
1583
1332
|
overflow-wrap: break-word;
|
|
1584
1333
|
}
|
|
@@ -1603,9 +1352,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1603
1352
|
.text-cyan-700 {
|
|
1604
1353
|
color: var(--color-cyan-700);
|
|
1605
1354
|
}
|
|
1606
|
-
.text-destructive {
|
|
1607
|
-
color: var(--destructive);
|
|
1608
|
-
}
|
|
1609
1355
|
.text-destructive-foreground {
|
|
1610
1356
|
color: var(--destructive-foreground);
|
|
1611
1357
|
}
|
|
@@ -1671,18 +1417,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1671
1417
|
.line-through {
|
|
1672
1418
|
text-decoration-line: line-through;
|
|
1673
1419
|
}
|
|
1674
|
-
.underline {
|
|
1675
|
-
text-decoration-line: underline;
|
|
1676
|
-
}
|
|
1677
1420
|
.underline-offset-4 {
|
|
1678
1421
|
text-underline-offset: 4px;
|
|
1679
1422
|
}
|
|
1680
1423
|
.accent-accent {
|
|
1681
1424
|
accent-color: var(--accent);
|
|
1682
1425
|
}
|
|
1683
|
-
.accent-primary {
|
|
1684
|
-
accent-color: var(--primary);
|
|
1685
|
-
}
|
|
1686
1426
|
.opacity-50 {
|
|
1687
1427
|
opacity: 50%;
|
|
1688
1428
|
}
|
|
@@ -1694,11 +1434,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1694
1434
|
--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%));
|
|
1695
1435
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1696
1436
|
}
|
|
1697
|
-
.shadow-sm\\/5 {
|
|
1698
|
-
--tw-shadow-alpha: 5%;
|
|
1699
|
-
--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%));
|
|
1700
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1701
|
-
}
|
|
1702
1437
|
.shadow-xs\\/5 {
|
|
1703
1438
|
--tw-shadow-alpha: 5%;
|
|
1704
1439
|
--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.05) l a b / 5%));
|
|
@@ -1708,14 +1443,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1708
1443
|
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
1709
1444
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1710
1445
|
}
|
|
1711
|
-
.shadow-lg {
|
|
1712
|
-
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
|
|
1713
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1714
|
-
}
|
|
1715
|
-
.shadow-none {
|
|
1716
|
-
--tw-shadow: 0 0 #0000;
|
|
1717
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1718
|
-
}
|
|
1719
1446
|
.shadow-xs {
|
|
1720
1447
|
--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
|
|
1721
1448
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
@@ -1780,10 +1507,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1780
1507
|
outline-style: var(--tw-outline-style);
|
|
1781
1508
|
outline-width: 1px;
|
|
1782
1509
|
}
|
|
1783
|
-
.blur {
|
|
1784
|
-
--tw-blur: blur(8px);
|
|
1785
|
-
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
1786
|
-
}
|
|
1787
1510
|
.filter {
|
|
1788
1511
|
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
|
|
1789
1512
|
}
|
|
@@ -1819,15 +1542,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1819
1542
|
-webkit-user-select: none;
|
|
1820
1543
|
user-select: none;
|
|
1821
1544
|
}
|
|
1822
|
-
.\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/64\\%\\)\\] {
|
|
1823
|
-
--skeleton-highlight: color-mix(in srgb, #fff 64%, transparent);
|
|
1824
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1825
|
-
--skeleton-highlight: color-mix(in oklab, var(--color-white) 64%, transparent);
|
|
1826
|
-
}
|
|
1827
|
-
}
|
|
1828
|
-
.\\[background\\:linear-gradient\\(120deg\\,transparent_40\\%\\,var\\(--skeleton-highlight\\)\\,transparent_60\\%\\)_var\\(--color-muted\\)_0_0\\/200\\%_100\\%_fixed\\] {
|
|
1829
|
-
background: linear-gradient(120deg,transparent 40%,var(--skeleton-highlight),transparent 60%) var(--color-muted) 0 0/200% 100% fixed;
|
|
1830
|
-
}
|
|
1831
1545
|
.\\[clip-path\\:inset\\(0_1px\\)\\] {
|
|
1832
1546
|
clip-path: inset(0 1px);
|
|
1833
1547
|
}
|
|
@@ -1911,12 +1625,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1911
1625
|
border-radius: calc(var(--radius-lg) - 1px);
|
|
1912
1626
|
}
|
|
1913
1627
|
}
|
|
1914
|
-
.before\\:rounded-\\[calc\\(var\\(--radius-md\\)-1px\\)\\] {
|
|
1915
|
-
&::before {
|
|
1916
|
-
content: var(--tw-content);
|
|
1917
|
-
border-radius: calc(var(--radius-md) - 1px);
|
|
1918
|
-
}
|
|
1919
|
-
}
|
|
1920
1628
|
.before\\:rounded-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
|
|
1921
1629
|
&::before {
|
|
1922
1630
|
content: var(--tw-content);
|
|
@@ -1949,25 +1657,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
1949
1657
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1950
1658
|
}
|
|
1951
1659
|
}
|
|
1952
|
-
.focus-within\\:border-ring {
|
|
1953
|
-
&:focus-within {
|
|
1954
|
-
border-color: var(--ring);
|
|
1955
|
-
}
|
|
1956
|
-
}
|
|
1957
|
-
.focus-within\\:ring-\\[3px\\] {
|
|
1958
|
-
&:focus-within {
|
|
1959
|
-
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
1960
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
1961
|
-
}
|
|
1962
|
-
}
|
|
1963
|
-
.focus-within\\:ring-ring\\/30 {
|
|
1964
|
-
&:focus-within {
|
|
1965
|
-
--tw-ring-color: var(--ring);
|
|
1966
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1967
|
-
--tw-ring-color: color-mix(in oklab, var(--ring) 30%, transparent);
|
|
1968
|
-
}
|
|
1969
|
-
}
|
|
1970
|
-
}
|
|
1971
1660
|
.hover\\:border-destructive\\/30 {
|
|
1972
1661
|
&:hover {
|
|
1973
1662
|
@media (hover: hover) {
|
|
@@ -2065,36 +1754,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2065
1754
|
outline-style: none;
|
|
2066
1755
|
}
|
|
2067
1756
|
}
|
|
2068
|
-
.focus-visible\\:border-ring {
|
|
2069
|
-
&:focus-visible {
|
|
2070
|
-
border-color: var(--ring);
|
|
2071
|
-
}
|
|
2072
|
-
}
|
|
2073
1757
|
.focus-visible\\:ring-2 {
|
|
2074
1758
|
&:focus-visible {
|
|
2075
1759
|
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
2076
1760
|
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2077
1761
|
}
|
|
2078
1762
|
}
|
|
2079
|
-
.focus-visible\\:ring-\\[3px\\] {
|
|
2080
|
-
&:focus-visible {
|
|
2081
|
-
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
|
|
2082
|
-
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
2083
|
-
}
|
|
2084
|
-
}
|
|
2085
1763
|
.focus-visible\\:ring-ring {
|
|
2086
1764
|
&:focus-visible {
|
|
2087
1765
|
--tw-ring-color: var(--ring);
|
|
2088
1766
|
}
|
|
2089
1767
|
}
|
|
2090
|
-
.focus-visible\\:ring-ring\\/30 {
|
|
2091
|
-
&:focus-visible {
|
|
2092
|
-
--tw-ring-color: var(--ring);
|
|
2093
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2094
|
-
--tw-ring-color: color-mix(in oklab, var(--ring) 30%, transparent);
|
|
2095
|
-
}
|
|
2096
|
-
}
|
|
2097
|
-
}
|
|
2098
1768
|
.focus-visible\\:ring-offset-1 {
|
|
2099
1769
|
&:focus-visible {
|
|
2100
1770
|
--tw-ring-offset-width: 1px;
|
|
@@ -2111,11 +1781,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2111
1781
|
pointer-events: none;
|
|
2112
1782
|
}
|
|
2113
1783
|
}
|
|
2114
|
-
.disabled\\:cursor-not-allowed {
|
|
2115
|
-
&:disabled {
|
|
2116
|
-
cursor: not-allowed;
|
|
2117
|
-
}
|
|
2118
|
-
}
|
|
2119
1784
|
.disabled\\:opacity-50 {
|
|
2120
1785
|
&:disabled {
|
|
2121
1786
|
opacity: 50%;
|
|
@@ -2126,29 +1791,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2126
1791
|
opacity: 60%;
|
|
2127
1792
|
}
|
|
2128
1793
|
}
|
|
2129
|
-
.has-disabled\\:opacity-60 {
|
|
2130
|
-
&:has(*:disabled) {
|
|
2131
|
-
opacity: 60%;
|
|
2132
|
-
}
|
|
2133
|
-
}
|
|
2134
|
-
.aria-invalid\\:border-destructive\\/40 {
|
|
2135
|
-
&[aria-invalid="true"] {
|
|
2136
|
-
border-color: var(--destructive);
|
|
2137
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2138
|
-
border-color: color-mix(in oklab, var(--destructive) 40%, transparent);
|
|
2139
|
-
}
|
|
2140
|
-
}
|
|
2141
|
-
}
|
|
2142
|
-
.aria-invalid\\:focus-visible\\:ring-destructive\\/20 {
|
|
2143
|
-
&[aria-invalid="true"] {
|
|
2144
|
-
&:focus-visible {
|
|
2145
|
-
--tw-ring-color: var(--destructive);
|
|
2146
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2147
|
-
--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);
|
|
2148
|
-
}
|
|
2149
|
-
}
|
|
2150
|
-
}
|
|
2151
|
-
}
|
|
2152
1794
|
.data-\\[disabled\\]\\:pointer-events-none {
|
|
2153
1795
|
&[data-disabled] {
|
|
2154
1796
|
pointer-events: none;
|
|
@@ -2185,12 +1827,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2185
1827
|
line-height: var(--tw-leading, var(--text-sm--line-height));
|
|
2186
1828
|
}
|
|
2187
1829
|
}
|
|
2188
|
-
.sm\\:text-sm\\/4 {
|
|
2189
|
-
@media (width >= 40rem) {
|
|
2190
|
-
font-size: var(--text-sm);
|
|
2191
|
-
line-height: calc(var(--spacing) * 4);
|
|
2192
|
-
}
|
|
2193
|
-
}
|
|
2194
1830
|
.dark\\:bg-amber-400\\/10 {
|
|
2195
1831
|
&:is(.dark *, :host(.dark) *) {
|
|
2196
1832
|
background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 10%, transparent);
|
|
@@ -2404,14 +2040,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2404
2040
|
}
|
|
2405
2041
|
}
|
|
2406
2042
|
}
|
|
2407
|
-
.dark\\:\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/4\\%\\)\\] {
|
|
2408
|
-
&:is(.dark *, :host(.dark) *) {
|
|
2409
|
-
--skeleton-highlight: color-mix(in srgb, #fff 4%, transparent);
|
|
2410
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2411
|
-
--skeleton-highlight: color-mix(in oklab, var(--color-white) 4%, transparent);
|
|
2412
|
-
}
|
|
2413
|
-
}
|
|
2414
|
-
}
|
|
2415
2043
|
.dark\\:group-data-hover\\:bg-amber-400\\/20 {
|
|
2416
2044
|
&:is(.dark *, :host(.dark) *) {
|
|
2417
2045
|
&:is(:where(.group)[data-hover] *) {
|
|
@@ -2531,38 +2159,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2531
2159
|
height: calc(var(--spacing) * 4);
|
|
2532
2160
|
}
|
|
2533
2161
|
}
|
|
2534
|
-
.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4\\.5 {
|
|
2535
|
-
& svg:not([class*='size-']) {
|
|
2536
|
-
width: calc(var(--spacing) * 4.5);
|
|
2537
|
-
height: calc(var(--spacing) * 4.5);
|
|
2538
|
-
}
|
|
2539
|
-
}
|
|
2540
|
-
.\\[\\&\\>svg\\]\\:pointer-events-none {
|
|
2541
|
-
&>svg {
|
|
2542
|
-
pointer-events: none;
|
|
2543
|
-
}
|
|
2544
|
-
}
|
|
2545
|
-
.\\[\\&\\>svg\\]\\:-mx-0\\.5 {
|
|
2546
|
-
&>svg {
|
|
2547
|
-
margin-inline: calc(var(--spacing) * -0.5);
|
|
2548
|
-
}
|
|
2549
|
-
}
|
|
2550
|
-
.\\[\\&\\>svg\\]\\:shrink-0 {
|
|
2551
|
-
&>svg {
|
|
2552
|
-
flex-shrink: 0;
|
|
2553
|
-
}
|
|
2554
|
-
}
|
|
2555
|
-
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'opacity-\\'\\]\\)\\]\\:opacity-80 {
|
|
2556
|
-
&>svg:not([class*='opacity-']) {
|
|
2557
|
-
opacity: 80%;
|
|
2558
|
-
}
|
|
2559
|
-
}
|
|
2560
|
-
.\\[\\&\\>svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 {
|
|
2561
|
-
&>svg:not([class*='size-']) {
|
|
2562
|
-
width: calc(var(--spacing) * 4);
|
|
2563
|
-
height: calc(var(--spacing) * 4);
|
|
2564
|
-
}
|
|
2565
|
-
}
|
|
2566
2162
|
.\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:bg-accent {
|
|
2567
2163
|
[data-kbd-nav] & {
|
|
2568
2164
|
&:focus-within {
|
|
@@ -2795,36 +2391,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
2795
2391
|
--warning: var(--color-amber-500);
|
|
2796
2392
|
--warning-foreground: var(--color-amber-700);
|
|
2797
2393
|
}
|
|
2798
|
-
@property --tw-translate-x {
|
|
2799
|
-
syntax: "*";
|
|
2800
|
-
inherits: false;
|
|
2801
|
-
initial-value: 0;
|
|
2802
|
-
}
|
|
2803
|
-
@property --tw-translate-y {
|
|
2804
|
-
syntax: "*";
|
|
2805
|
-
inherits: false;
|
|
2806
|
-
initial-value: 0;
|
|
2807
|
-
}
|
|
2808
|
-
@property --tw-translate-z {
|
|
2809
|
-
syntax: "*";
|
|
2810
|
-
inherits: false;
|
|
2811
|
-
initial-value: 0;
|
|
2812
|
-
}
|
|
2813
|
-
@property --tw-scale-x {
|
|
2814
|
-
syntax: "*";
|
|
2815
|
-
inherits: false;
|
|
2816
|
-
initial-value: 1;
|
|
2817
|
-
}
|
|
2818
|
-
@property --tw-scale-y {
|
|
2819
|
-
syntax: "*";
|
|
2820
|
-
inherits: false;
|
|
2821
|
-
initial-value: 1;
|
|
2822
|
-
}
|
|
2823
|
-
@property --tw-scale-z {
|
|
2824
|
-
syntax: "*";
|
|
2825
|
-
inherits: false;
|
|
2826
|
-
initial-value: 1;
|
|
2827
|
-
}
|
|
2828
2394
|
@property --tw-rotate-x {
|
|
2829
2395
|
syntax: "*";
|
|
2830
2396
|
inherits: false;
|
|
@@ -3050,20 +2616,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
3050
2616
|
initial-value: "";
|
|
3051
2617
|
inherits: false;
|
|
3052
2618
|
}
|
|
3053
|
-
@keyframes spin {
|
|
3054
|
-
to {
|
|
3055
|
-
transform: rotate(360deg);
|
|
3056
|
-
}
|
|
3057
|
-
}
|
|
3058
2619
|
@layer properties {
|
|
3059
2620
|
@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
|
|
3060
2621
|
*, ::before, ::after, ::backdrop {
|
|
3061
|
-
--tw-translate-x: 0;
|
|
3062
|
-
--tw-translate-y: 0;
|
|
3063
|
-
--tw-translate-z: 0;
|
|
3064
|
-
--tw-scale-x: 1;
|
|
3065
|
-
--tw-scale-y: 1;
|
|
3066
|
-
--tw-scale-z: 1;
|
|
3067
2622
|
--tw-rotate-x: initial;
|
|
3068
2623
|
--tw-rotate-y: initial;
|
|
3069
2624
|
--tw-rotate-z: initial;
|
|
@@ -3124,11 +2679,10 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
|
|
|
3124
2679
|
|
|
3125
2680
|
// src/browser/surface/constants.ts
|
|
3126
2681
|
var SURFACE_HOST_CLASS = "uidex-surface-host";
|
|
3127
|
-
var SURFACE_CONTAINER_CLASS = "uidex-container";
|
|
3128
2682
|
var Z_BASE = 2147483630;
|
|
3129
2683
|
var Z_OVERLAY = 2147483635;
|
|
3130
2684
|
var Z_CHROME = 2147483645;
|
|
3131
|
-
var SURFACE_IGNORE_SELECTOR = `.${SURFACE_HOST_CLASS}
|
|
2685
|
+
var SURFACE_IGNORE_SELECTOR = `.${SURFACE_HOST_CLASS}`;
|
|
3132
2686
|
var UIDEX_ATTR_TO_KIND = [
|
|
3133
2687
|
["data-uidex", "element"],
|
|
3134
2688
|
["data-uidex-region", "region"],
|
|
@@ -3415,7 +2969,6 @@ function createInspector(options) {
|
|
|
3415
2969
|
e.preventDefault();
|
|
3416
2970
|
e.stopPropagation();
|
|
3417
2971
|
const match = stack[layerIndex];
|
|
3418
|
-
session.select(match.ref);
|
|
3419
2972
|
onSelect?.(match, { x: e.clientX, y: e.clientY });
|
|
3420
2973
|
};
|
|
3421
2974
|
const onContextMenu = (e) => {
|
|
@@ -3464,13 +3017,9 @@ function createInspector(options) {
|
|
|
3464
3017
|
|
|
3465
3018
|
// src/browser/surface/menu-bar.ts
|
|
3466
3019
|
import {
|
|
3467
|
-
ChevronLeft,
|
|
3468
|
-
ChevronRight,
|
|
3469
3020
|
Command,
|
|
3470
3021
|
Highlighter,
|
|
3471
|
-
MapPin,
|
|
3472
3022
|
MousePointerClick as MousePointerClick2,
|
|
3473
|
-
Users,
|
|
3474
3023
|
createElement as createLucideElement2
|
|
3475
3024
|
} from "lucide";
|
|
3476
3025
|
|
|
@@ -3537,11 +3086,8 @@ function createMenuBar(options) {
|
|
|
3537
3086
|
container,
|
|
3538
3087
|
session,
|
|
3539
3088
|
initialCorner = "bottom-right",
|
|
3540
|
-
appTitle
|
|
3541
|
-
channel = null,
|
|
3542
|
-
pinLayer: initialPinLayer = null
|
|
3089
|
+
appTitle
|
|
3543
3090
|
} = options;
|
|
3544
|
-
let activePinLayer = initialPinLayer;
|
|
3545
3091
|
const root = el("div", {
|
|
3546
3092
|
class: ROOT_CLASS,
|
|
3547
3093
|
attrs: {
|
|
@@ -3606,162 +3152,6 @@ function createMenuBar(options) {
|
|
|
3606
3152
|
inspectBtn.blur();
|
|
3607
3153
|
});
|
|
3608
3154
|
root.appendChild(inspectBtn);
|
|
3609
|
-
const pinIcon = createLucideElement2(MapPin);
|
|
3610
|
-
pinIcon.setAttribute("class", "size-3.5");
|
|
3611
|
-
pinIcon.setAttribute("aria-hidden", "true");
|
|
3612
|
-
const pinBtn = el(
|
|
3613
|
-
"button",
|
|
3614
|
-
{
|
|
3615
|
-
class: BUTTON_CLASS,
|
|
3616
|
-
attrs: {
|
|
3617
|
-
type: "button",
|
|
3618
|
-
"data-uidex-menubar-pins": "",
|
|
3619
|
-
"aria-label": "Report pins"
|
|
3620
|
-
}
|
|
3621
|
-
},
|
|
3622
|
-
pinIcon
|
|
3623
|
-
);
|
|
3624
|
-
const commitCycler = el("div", {
|
|
3625
|
-
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3626
|
-
attrs: { "data-uidex-menubar-commit-cycler": "" }
|
|
3627
|
-
});
|
|
3628
|
-
commitCycler.hidden = true;
|
|
3629
|
-
const prevIcon = createLucideElement2(ChevronLeft);
|
|
3630
|
-
prevIcon.setAttribute("class", "size-3");
|
|
3631
|
-
prevIcon.setAttribute("aria-hidden", "true");
|
|
3632
|
-
const prevBtn = el(
|
|
3633
|
-
"button",
|
|
3634
|
-
{
|
|
3635
|
-
class: BUTTON_CLASS,
|
|
3636
|
-
attrs: { type: "button", "aria-label": "Previous commit" },
|
|
3637
|
-
style: { width: "18px", height: "18px" }
|
|
3638
|
-
},
|
|
3639
|
-
prevIcon
|
|
3640
|
-
);
|
|
3641
|
-
const commitLabel = el("span", {
|
|
3642
|
-
class: "relative z-1 whitespace-nowrap px-1 text-[10px] font-mono text-muted-foreground",
|
|
3643
|
-
attrs: { "data-uidex-menubar-commit-label": "" }
|
|
3644
|
-
});
|
|
3645
|
-
const nextIcon = createLucideElement2(ChevronRight);
|
|
3646
|
-
nextIcon.setAttribute("class", "size-3");
|
|
3647
|
-
nextIcon.setAttribute("aria-hidden", "true");
|
|
3648
|
-
const nextBtn = el(
|
|
3649
|
-
"button",
|
|
3650
|
-
{
|
|
3651
|
-
class: BUTTON_CLASS,
|
|
3652
|
-
attrs: { type: "button", "aria-label": "Next commit" },
|
|
3653
|
-
style: { width: "18px", height: "18px" }
|
|
3654
|
-
},
|
|
3655
|
-
nextIcon
|
|
3656
|
-
);
|
|
3657
|
-
commitCycler.appendChild(prevBtn);
|
|
3658
|
-
commitCycler.appendChild(commitLabel);
|
|
3659
|
-
commitCycler.appendChild(nextBtn);
|
|
3660
|
-
const pinWrapper = el("div", {
|
|
3661
|
-
class: "relative z-1 inline-flex items-center gap-0.5",
|
|
3662
|
-
attrs: { "data-uidex-menubar-pin-wrapper": "" }
|
|
3663
|
-
});
|
|
3664
|
-
pinWrapper.hidden = true;
|
|
3665
|
-
pinWrapper.appendChild(pinBtn);
|
|
3666
|
-
pinWrapper.appendChild(commitCycler);
|
|
3667
|
-
root.appendChild(pinWrapper);
|
|
3668
|
-
const updatePinUI = () => {
|
|
3669
|
-
if (!activePinLayer) {
|
|
3670
|
-
pinWrapper.hidden = true;
|
|
3671
|
-
return;
|
|
3672
|
-
}
|
|
3673
|
-
const pinsVisible = activePinLayer.visible;
|
|
3674
|
-
const state = activePinLayer.filterState;
|
|
3675
|
-
const hasCommits = state.commits.length > 0;
|
|
3676
|
-
pinWrapper.hidden = false;
|
|
3677
|
-
commitCycler.hidden = !pinsVisible || !hasCommits;
|
|
3678
|
-
if (state.commitIndex === -1 || !state.commits[state.commitIndex]) {
|
|
3679
|
-
commitLabel.textContent = `all (${state.commits.length})`;
|
|
3680
|
-
} else {
|
|
3681
|
-
const sha = state.commits[state.commitIndex] ?? "";
|
|
3682
|
-
commitLabel.textContent = sha.slice(0, 7);
|
|
3683
|
-
}
|
|
3684
|
-
pinBtn.className = cn(BUTTON_CLASS, pinsVisible && BUTTON_ACTIVE_CLASS);
|
|
3685
|
-
};
|
|
3686
|
-
pinBtn.addEventListener("click", (e) => {
|
|
3687
|
-
e.stopPropagation();
|
|
3688
|
-
if (activePinLayer) {
|
|
3689
|
-
activePinLayer.setVisible(!activePinLayer.visible);
|
|
3690
|
-
}
|
|
3691
|
-
});
|
|
3692
|
-
prevBtn.addEventListener("click", (e) => {
|
|
3693
|
-
e.stopPropagation();
|
|
3694
|
-
activePinLayer?.prevCommit();
|
|
3695
|
-
});
|
|
3696
|
-
nextBtn.addEventListener("click", (e) => {
|
|
3697
|
-
e.stopPropagation();
|
|
3698
|
-
activePinLayer?.nextCommit();
|
|
3699
|
-
});
|
|
3700
|
-
let unsubscribePinFilter = activePinLayer?.onFilterChange(() => updatePinUI());
|
|
3701
|
-
const presenceIcon = createLucideElement2(Users);
|
|
3702
|
-
presenceIcon.setAttribute("class", "size-3.5");
|
|
3703
|
-
presenceIcon.setAttribute("aria-hidden", "true");
|
|
3704
|
-
const presenceBtn = el(
|
|
3705
|
-
"button",
|
|
3706
|
-
{
|
|
3707
|
-
class: BUTTON_CLASS,
|
|
3708
|
-
attrs: {
|
|
3709
|
-
type: "button",
|
|
3710
|
-
"data-uidex-menubar-presence": "",
|
|
3711
|
-
"aria-label": "Online users"
|
|
3712
|
-
}
|
|
3713
|
-
},
|
|
3714
|
-
presenceIcon
|
|
3715
|
-
);
|
|
3716
|
-
presenceBtn.hidden = true;
|
|
3717
|
-
const presenceBadge = el("span", {
|
|
3718
|
-
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"
|
|
3719
|
-
});
|
|
3720
|
-
presenceBtn.appendChild(presenceBadge);
|
|
3721
|
-
const presencePopover = el("div", {
|
|
3722
|
-
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"
|
|
3723
|
-
});
|
|
3724
|
-
presencePopover.hidden = true;
|
|
3725
|
-
let presencePopoverVisible = false;
|
|
3726
|
-
presenceBtn.addEventListener("click", (e) => {
|
|
3727
|
-
e.stopPropagation();
|
|
3728
|
-
presencePopoverVisible = !presencePopoverVisible;
|
|
3729
|
-
presencePopover.hidden = !presencePopoverVisible;
|
|
3730
|
-
});
|
|
3731
|
-
const presenceWrapper = el("div", { class: "relative z-1 inline-flex" }, [
|
|
3732
|
-
presenceBtn,
|
|
3733
|
-
presencePopover
|
|
3734
|
-
]);
|
|
3735
|
-
presenceWrapper.hidden = true;
|
|
3736
|
-
root.appendChild(presenceWrapper);
|
|
3737
|
-
let presenceUsers = [];
|
|
3738
|
-
const updatePresenceUI = () => {
|
|
3739
|
-
const localUserId = session.getState().user?.id ?? null;
|
|
3740
|
-
const peers = localUserId ? presenceUsers.filter((u) => u.userId !== localUserId) : presenceUsers;
|
|
3741
|
-
const count = peers.length;
|
|
3742
|
-
presenceWrapper.hidden = count === 0;
|
|
3743
|
-
presenceBadge.textContent = String(count);
|
|
3744
|
-
presenceBtn.setAttribute(
|
|
3745
|
-
"aria-label",
|
|
3746
|
-
count === 1 ? "1 other user online" : `${count} other users online`
|
|
3747
|
-
);
|
|
3748
|
-
presencePopover.innerHTML = "";
|
|
3749
|
-
for (const user of peers) {
|
|
3750
|
-
const row = el("div", {
|
|
3751
|
-
class: "flex items-center gap-2 rounded px-1.5 py-1"
|
|
3752
|
-
});
|
|
3753
|
-
const dot = el("span", {
|
|
3754
|
-
class: "inline-block size-2 shrink-0 rounded-full bg-emerald-500"
|
|
3755
|
-
});
|
|
3756
|
-
const name = el("span", {
|
|
3757
|
-
class: "truncate",
|
|
3758
|
-
text: user.name || "Anonymous"
|
|
3759
|
-
});
|
|
3760
|
-
row.appendChild(dot);
|
|
3761
|
-
row.appendChild(name);
|
|
3762
|
-
presencePopover.appendChild(row);
|
|
3763
|
-
}
|
|
3764
|
-
};
|
|
3765
3155
|
const paletteIcon = createLucideElement2(Command);
|
|
3766
3156
|
paletteIcon.setAttribute("class", "size-3.5");
|
|
3767
3157
|
paletteIcon.setAttribute("aria-hidden", "true");
|
|
@@ -3790,7 +3180,7 @@ function createMenuBar(options) {
|
|
|
3790
3180
|
container.appendChild(root);
|
|
3791
3181
|
const syncButtonStates = () => {
|
|
3792
3182
|
const state = session.getState();
|
|
3793
|
-
const inspectActive = state.
|
|
3183
|
+
const inspectActive = state.mode === "inspecting";
|
|
3794
3184
|
inspectBtn.setAttribute(
|
|
3795
3185
|
"data-uidex-menubar-inspect-active",
|
|
3796
3186
|
inspectActive ? "true" : "false"
|
|
@@ -3876,28 +3266,14 @@ function createMenuBar(options) {
|
|
|
3876
3266
|
const vertical = y / (window.innerHeight || 1) < 0.5 ? "top" : "bottom";
|
|
3877
3267
|
snapTo(`${vertical}-${horizontal}`);
|
|
3878
3268
|
}
|
|
3879
|
-
const unsubscribePresence = channel?.onPresence(
|
|
3880
|
-
(users) => {
|
|
3881
|
-
presenceUsers = users;
|
|
3882
|
-
updatePresenceUI();
|
|
3883
|
-
}
|
|
3884
|
-
);
|
|
3885
3269
|
return {
|
|
3886
3270
|
destroy() {
|
|
3887
|
-
unsubscribePinFilter?.();
|
|
3888
|
-
unsubscribePresence?.();
|
|
3889
3271
|
unsubscribeSession();
|
|
3890
3272
|
root.removeEventListener("mousedown", onMouseDown);
|
|
3891
3273
|
document.removeEventListener("mousemove", onMouseMove);
|
|
3892
3274
|
document.removeEventListener("mouseup", onMouseUp);
|
|
3893
3275
|
root.remove();
|
|
3894
3276
|
},
|
|
3895
|
-
setPinLayer(layer) {
|
|
3896
|
-
unsubscribePinFilter?.();
|
|
3897
|
-
activePinLayer = layer;
|
|
3898
|
-
unsubscribePinFilter = layer.onFilterChange(() => updatePinUI());
|
|
3899
|
-
updatePinUI();
|
|
3900
|
-
},
|
|
3901
3277
|
snapTo,
|
|
3902
3278
|
snapToNearest,
|
|
3903
3279
|
get corner() {
|
|
@@ -3909,6 +3285,49 @@ function createMenuBar(options) {
|
|
|
3909
3285
|
};
|
|
3910
3286
|
}
|
|
3911
3287
|
|
|
3288
|
+
// src/browser/internal/repositioner.ts
|
|
3289
|
+
function createRepositioner(onReflow) {
|
|
3290
|
+
let rafId = null;
|
|
3291
|
+
let attached = false;
|
|
3292
|
+
const schedule = () => {
|
|
3293
|
+
if (rafId !== null) return;
|
|
3294
|
+
rafId = typeof requestAnimationFrame === "function" ? requestAnimationFrame(() => {
|
|
3295
|
+
rafId = null;
|
|
3296
|
+
onReflow();
|
|
3297
|
+
}) : setTimeout(() => {
|
|
3298
|
+
rafId = null;
|
|
3299
|
+
onReflow();
|
|
3300
|
+
}, 0);
|
|
3301
|
+
};
|
|
3302
|
+
const cancel = () => {
|
|
3303
|
+
if (rafId === null) return;
|
|
3304
|
+
if (typeof cancelAnimationFrame === "function") cancelAnimationFrame(rafId);
|
|
3305
|
+
else clearTimeout(rafId);
|
|
3306
|
+
rafId = null;
|
|
3307
|
+
};
|
|
3308
|
+
const onScroll = () => schedule();
|
|
3309
|
+
const onResize = () => schedule();
|
|
3310
|
+
const attach = () => {
|
|
3311
|
+
if (attached) return;
|
|
3312
|
+
attached = true;
|
|
3313
|
+
window.addEventListener("resize", onResize);
|
|
3314
|
+
window.addEventListener("scroll", onScroll, {
|
|
3315
|
+
capture: true,
|
|
3316
|
+
passive: true
|
|
3317
|
+
});
|
|
3318
|
+
};
|
|
3319
|
+
const detach = () => {
|
|
3320
|
+
if (!attached) return;
|
|
3321
|
+
attached = false;
|
|
3322
|
+
window.removeEventListener("resize", onResize);
|
|
3323
|
+
window.removeEventListener("scroll", onScroll, {
|
|
3324
|
+
capture: true
|
|
3325
|
+
});
|
|
3326
|
+
cancel();
|
|
3327
|
+
};
|
|
3328
|
+
return { schedule, cancel, attach, detach };
|
|
3329
|
+
}
|
|
3330
|
+
|
|
3912
3331
|
// src/browser/surface/overlay.ts
|
|
3913
3332
|
var DEFAULT_COLOR = "#34d399";
|
|
3914
3333
|
var DEFAULT_BORDER_WIDTH = 2;
|
|
@@ -3976,44 +3395,7 @@ function createOverlay(deps) {
|
|
|
3976
3395
|
fillOpacity: DEFAULT_FILL_OPACITY,
|
|
3977
3396
|
backdrop: false
|
|
3978
3397
|
};
|
|
3979
|
-
|
|
3980
|
-
let attached = false;
|
|
3981
|
-
const schedule = () => {
|
|
3982
|
-
if (rafId !== null) return;
|
|
3983
|
-
rafId = typeof requestAnimationFrame === "function" ? requestAnimationFrame(() => {
|
|
3984
|
-
rafId = null;
|
|
3985
|
-
updatePosition();
|
|
3986
|
-
}) : setTimeout(() => {
|
|
3987
|
-
rafId = null;
|
|
3988
|
-
updatePosition();
|
|
3989
|
-
}, 0);
|
|
3990
|
-
};
|
|
3991
|
-
const cancelSchedule = () => {
|
|
3992
|
-
if (rafId === null) return;
|
|
3993
|
-
if (typeof cancelAnimationFrame === "function") cancelAnimationFrame(rafId);
|
|
3994
|
-
else clearTimeout(rafId);
|
|
3995
|
-
rafId = null;
|
|
3996
|
-
};
|
|
3997
|
-
const onScroll = () => schedule();
|
|
3998
|
-
const onResize = () => schedule();
|
|
3999
|
-
const attach = () => {
|
|
4000
|
-
if (attached) return;
|
|
4001
|
-
attached = true;
|
|
4002
|
-
window.addEventListener("resize", onResize);
|
|
4003
|
-
window.addEventListener("scroll", onScroll, {
|
|
4004
|
-
capture: true,
|
|
4005
|
-
passive: true
|
|
4006
|
-
});
|
|
4007
|
-
};
|
|
4008
|
-
const detach = () => {
|
|
4009
|
-
if (!attached) return;
|
|
4010
|
-
attached = false;
|
|
4011
|
-
window.removeEventListener("resize", onResize);
|
|
4012
|
-
window.removeEventListener("scroll", onScroll, {
|
|
4013
|
-
capture: true
|
|
4014
|
-
});
|
|
4015
|
-
cancelSchedule();
|
|
4016
|
-
};
|
|
3398
|
+
const repositioner = createRepositioner(() => updatePosition());
|
|
4017
3399
|
function updatePosition() {
|
|
4018
3400
|
if (!target) return;
|
|
4019
3401
|
const rect = target.getBoundingClientRect();
|
|
@@ -4077,16 +3459,16 @@ function createOverlay(deps) {
|
|
|
4077
3459
|
box.offsetHeight;
|
|
4078
3460
|
}
|
|
4079
3461
|
box.style.opacity = "1";
|
|
4080
|
-
attach();
|
|
3462
|
+
repositioner.attach();
|
|
4081
3463
|
},
|
|
4082
3464
|
hide() {
|
|
4083
3465
|
target = null;
|
|
4084
3466
|
box.style.opacity = "0";
|
|
4085
3467
|
backdrop.style.opacity = "0";
|
|
4086
|
-
detach();
|
|
3468
|
+
repositioner.detach();
|
|
4087
3469
|
},
|
|
4088
3470
|
destroy() {
|
|
4089
|
-
detach();
|
|
3471
|
+
repositioner.detach();
|
|
4090
3472
|
box.remove();
|
|
4091
3473
|
backdrop.remove();
|
|
4092
3474
|
target = null;
|
|
@@ -4203,8 +3585,7 @@ function createSurfaceShell(options) {
|
|
|
4203
3585
|
const overlay = createOverlay({ container: host.shadowRoot });
|
|
4204
3586
|
cleanup.add(overlay);
|
|
4205
3587
|
const tooltip = createCursorTooltip({
|
|
4206
|
-
container: host.chromeEl
|
|
4207
|
-
session: options.session
|
|
3588
|
+
container: host.chromeEl
|
|
4208
3589
|
});
|
|
4209
3590
|
cleanup.add(tooltip);
|
|
4210
3591
|
const afterHover = options.inspector?.onAfterHover;
|
|
@@ -4250,9 +3631,7 @@ function createSurfaceShell(options) {
|
|
|
4250
3631
|
container: host.chromeEl,
|
|
4251
3632
|
session: options.session,
|
|
4252
3633
|
initialCorner: options.initialCorner,
|
|
4253
|
-
appTitle: options.appTitle
|
|
4254
|
-
channel: options.channel ?? null,
|
|
4255
|
-
pinLayer: options.pinLayer ?? null
|
|
3634
|
+
appTitle: options.appTitle
|
|
4256
3635
|
});
|
|
4257
3636
|
cleanup.add(menuBar);
|
|
4258
3637
|
return {
|