uidex 0.7.0 → 0.9.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.
Files changed (51) hide show
  1. package/dist/cli/cli.cjs +1112 -1054
  2. package/dist/cli/cli.cjs.map +1 -1
  3. package/dist/headless/index.cjs +4 -448
  4. package/dist/headless/index.cjs.map +1 -1
  5. package/dist/headless/index.d.cts +41 -11
  6. package/dist/headless/index.d.ts +41 -11
  7. package/dist/headless/index.js +4 -450
  8. package/dist/headless/index.js.map +1 -1
  9. package/dist/index.cjs +147 -3252
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +43 -316
  12. package/dist/index.d.ts +43 -316
  13. package/dist/index.js +133 -3254
  14. package/dist/index.js.map +1 -1
  15. package/dist/playwright/index.cjs +175 -0
  16. package/dist/playwright/index.cjs.map +1 -1
  17. package/dist/playwright/index.d.cts +2 -0
  18. package/dist/playwright/index.d.ts +2 -0
  19. package/dist/playwright/index.js +167 -0
  20. package/dist/playwright/index.js.map +1 -1
  21. package/dist/playwright/states-reporter.cjs +123 -0
  22. package/dist/playwright/states-reporter.cjs.map +1 -0
  23. package/dist/playwright/states-reporter.d.cts +46 -0
  24. package/dist/playwright/states-reporter.d.ts +46 -0
  25. package/dist/playwright/states-reporter.js +88 -0
  26. package/dist/playwright/states-reporter.js.map +1 -0
  27. package/dist/playwright/states.cjs +118 -0
  28. package/dist/playwright/states.cjs.map +1 -0
  29. package/dist/playwright/states.d.cts +120 -0
  30. package/dist/playwright/states.d.ts +120 -0
  31. package/dist/playwright/states.js +88 -0
  32. package/dist/playwright/states.js.map +1 -0
  33. package/dist/react/index.cjs +163 -3255
  34. package/dist/react/index.cjs.map +1 -1
  35. package/dist/react/index.d.cts +62 -275
  36. package/dist/react/index.d.ts +62 -275
  37. package/dist/react/index.js +151 -3268
  38. package/dist/react/index.js.map +1 -1
  39. package/dist/scan/index.cjs +1292 -345
  40. package/dist/scan/index.cjs.map +1 -1
  41. package/dist/scan/index.d.cts +305 -12
  42. package/dist/scan/index.d.ts +305 -12
  43. package/dist/scan/index.js +1283 -345
  44. package/dist/scan/index.js.map +1 -1
  45. package/package.json +12 -16
  46. package/dist/cloud/index.cjs +0 -682
  47. package/dist/cloud/index.cjs.map +0 -1
  48. package/dist/cloud/index.d.cts +0 -270
  49. package/dist/cloud/index.d.ts +0 -270
  50. package/dist/cloud/index.js +0 -645
  51. package/dist/cloud/index.js.map +0 -1
@@ -451,8 +451,7 @@ var defaultSnapshot = {
451
451
  pinnedHighlight: null,
452
452
  mode: "idle",
453
453
  theme: "auto",
454
- resolvedTheme: "light",
455
- user: null
454
+ resolvedTheme: "light"
456
455
  };
457
456
  function resolveTheme(preference, detect) {
458
457
  if (preference !== "auto") return preference;
@@ -542,8 +541,7 @@ function createSession(options = {}) {
542
541
  pinnedHighlight: null,
543
542
  mode: "idle",
544
543
  theme: initialPref,
545
- resolvedTheme: initialResolved,
546
- user: overrides.user ?? null
544
+ resolvedTheme: initialResolved
547
545
  }));
548
546
  nav.subscribe(() => {
549
547
  const { stack } = nav.getState();
@@ -587,8 +585,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
587
585
  @layer theme, base, components, utilities;
588
586
  @layer theme {
589
587
  :root, :host {
590
- --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
591
- Roboto, sans-serif;
592
588
  --color-red-400: oklch(70.4% 0.191 22.216);
593
589
  --color-red-500: oklch(63.7% 0.237 25.331);
594
590
  --color-red-700: oklch(50.5% 0.213 27.518);
@@ -641,7 +637,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
641
637
  --color-black: #000;
642
638
  --color-white: #fff;
643
639
  --spacing: 0.25rem;
644
- --container-sm: 24rem;
645
640
  --container-xl: 36rem;
646
641
  --text-xs: 0.75rem;
647
642
  --text-xs--line-height: calc(1 / 0.75);
@@ -649,28 +644,22 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
649
644
  --text-sm--line-height: calc(1.25 / 0.875);
650
645
  --text-base: 1rem;
651
646
  --text-base--line-height: calc(1.5 / 1);
652
- --text-xl: 1.25rem;
653
- --text-xl--line-height: calc(1.75 / 1.25);
654
647
  --font-weight-normal: 400;
655
648
  --font-weight-medium: 500;
656
649
  --font-weight-semibold: 600;
657
- --font-weight-bold: 700;
658
650
  --tracking-tight: -0.025em;
659
651
  --tracking-widest: 0.1em;
660
652
  --leading-relaxed: 1.625;
661
- --radius-md: calc(var(--radius) * 0.8);
662
653
  --radius-lg: var(--radius);
663
654
  --radius-xl: calc(var(--radius) * 1.4);
664
655
  --radius-2xl: calc(var(--radius) * 1.8);
665
656
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
666
- --animate-spin: spin 1s linear infinite;
667
657
  --blur-sm: 8px;
668
658
  --default-transition-duration: 150ms;
669
659
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
670
660
  --default-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
671
661
  Roboto, sans-serif;
672
662
  --default-mono-font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
673
- --color-muted: var(--muted);
674
663
  --color-border: var(--border);
675
664
  }
676
665
  }
@@ -838,17 +827,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
838
827
  .visible {
839
828
  visibility: visible;
840
829
  }
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
830
  .absolute {
853
831
  position: absolute;
854
832
  }
@@ -870,30 +848,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
870
848
  .end {
871
849
  inset-inline-end: var(--spacing);
872
850
  }
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
- .bottom-full {
883
- bottom: 100%;
884
- }
885
- .bottom-px {
886
- bottom: 1px;
887
- }
888
851
  .z-1 {
889
852
  z-index: 1;
890
853
  }
891
854
  .z-10 {
892
855
  z-index: 10;
893
856
  }
894
- .z-\\[2147483647\\] {
895
- z-index: 2147483647;
896
- }
897
857
  .container {
898
858
  width: 100%;
899
859
  @media (width >= 40rem) {
@@ -927,12 +887,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
927
887
  .mt-1 {
928
888
  margin-top: calc(var(--spacing) * 1);
929
889
  }
930
- .mb-2 {
931
- margin-bottom: calc(var(--spacing) * 2);
932
- }
933
- .mb-6 {
934
- margin-bottom: calc(var(--spacing) * 6);
935
- }
936
890
  .ml-auto {
937
891
  margin-left: auto;
938
892
  }
@@ -951,19 +905,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
951
905
  .inline {
952
906
  display: inline;
953
907
  }
954
- .inline-block {
955
- display: inline-block;
956
- }
957
908
  .inline-flex {
958
909
  display: inline-flex;
959
910
  }
960
911
  .table {
961
912
  display: table;
962
913
  }
963
- .size-2 {
964
- width: calc(var(--spacing) * 2);
965
- height: calc(var(--spacing) * 2);
966
- }
967
914
  .size-3\\.5 {
968
915
  width: calc(var(--spacing) * 3.5);
969
916
  height: calc(var(--spacing) * 3.5);
@@ -1024,21 +971,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1024
971
  .h-full {
1025
972
  height: 100%;
1026
973
  }
1027
- .max-h-32 {
1028
- max-height: calc(var(--spacing) * 32);
1029
- }
1030
- .max-h-full {
1031
- max-height: 100%;
1032
- }
1033
974
  .min-h-0 {
1034
975
  min-height: calc(var(--spacing) * 0);
1035
976
  }
1036
977
  .min-h-8 {
1037
978
  min-height: calc(var(--spacing) * 8);
1038
979
  }
1039
- .min-h-20 {
1040
- min-height: calc(var(--spacing) * 20);
1041
- }
1042
980
  .w-3\\.5 {
1043
981
  width: calc(var(--spacing) * 3.5);
1044
982
  }
@@ -1048,12 +986,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1048
986
  .w-12 {
1049
987
  width: calc(var(--spacing) * 12);
1050
988
  }
1051
- .w-20 {
1052
- width: calc(var(--spacing) * 20);
1053
- }
1054
- .w-36 {
1055
- width: calc(var(--spacing) * 36);
1056
- }
1057
989
  .w-56 {
1058
990
  width: calc(var(--spacing) * 56);
1059
991
  }
@@ -1063,12 +995,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1063
995
  .w-px {
1064
996
  width: 1px;
1065
997
  }
1066
- .max-w-full {
1067
- max-width: 100%;
1068
- }
1069
- .max-w-sm {
1070
- max-width: var(--container-sm);
1071
- }
1072
998
  .max-w-xl {
1073
999
  max-width: var(--container-xl);
1074
1000
  }
@@ -1096,41 +1022,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1096
1022
  .shrink-0 {
1097
1023
  flex-shrink: 0;
1098
1024
  }
1099
- .origin-bottom-left {
1100
- transform-origin: 0 100%;
1101
- }
1102
- .origin-bottom-right {
1103
- transform-origin: 100% 100%;
1104
- }
1105
- .-translate-x-0\\.5 {
1106
- --tw-translate-x: calc(var(--spacing) * -0.5);
1107
- translate: var(--tw-translate-x) var(--tw-translate-y);
1108
- }
1109
- .translate-x-0\\.5 {
1110
- --tw-translate-x: calc(var(--spacing) * 0.5);
1111
- translate: var(--tw-translate-x) var(--tw-translate-y);
1112
- }
1113
- .scale-84 {
1114
- --tw-scale-x: 84%;
1115
- --tw-scale-y: 84%;
1116
- --tw-scale-z: 84%;
1117
- scale: var(--tw-scale-x) var(--tw-scale-y);
1118
- }
1119
- .-rotate-10 {
1120
- rotate: calc(10deg * -1);
1121
- }
1122
- .rotate-10 {
1123
- rotate: 10deg;
1124
- }
1125
1025
  .transform {
1126
1026
  transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
1127
1027
  }
1128
- .animate-skeleton {
1129
- animation: skeleton 2s -1s infinite linear;
1130
- }
1131
- .animate-spin {
1132
- animation: var(--animate-spin);
1133
- }
1134
1028
  .cursor-pointer {
1135
1029
  cursor: pointer;
1136
1030
  }
@@ -1140,15 +1034,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1140
1034
  .scroll-py-2 {
1141
1035
  scroll-padding-block: calc(var(--spacing) * 2);
1142
1036
  }
1143
- .appearance-none {
1144
- appearance: none;
1145
- }
1146
1037
  .flex-col {
1147
1038
  flex-direction: column;
1148
1039
  }
1149
- .flex-row {
1150
- flex-direction: row;
1151
- }
1152
1040
  .items-center {
1153
1041
  align-items: center;
1154
1042
  }
@@ -1164,9 +1052,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1164
1052
  .gap-0 {
1165
1053
  gap: calc(var(--spacing) * 0);
1166
1054
  }
1167
- .gap-0\\.5 {
1168
- gap: calc(var(--spacing) * 0.5);
1169
- }
1170
1055
  .gap-1 {
1171
1056
  gap: calc(var(--spacing) * 1);
1172
1057
  }
@@ -1179,12 +1064,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1179
1064
  .gap-3 {
1180
1065
  gap: calc(var(--spacing) * 3);
1181
1066
  }
1182
- .gap-4 {
1183
- gap: calc(var(--spacing) * 4);
1184
- }
1185
- .gap-6 {
1186
- gap: calc(var(--spacing) * 6);
1187
- }
1188
1067
  .truncate {
1189
1068
  overflow: hidden;
1190
1069
  text-overflow: ellipsis;
@@ -1282,21 +1161,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1282
1161
  background-color: color-mix(in oklab, var(--color-black) 32%, transparent);
1283
1162
  }
1284
1163
  }
1285
- .bg-black\\/80 {
1286
- background-color: color-mix(in srgb, #000 80%, transparent);
1287
- @supports (color: color-mix(in lab, red, red)) {
1288
- background-color: color-mix(in oklab, var(--color-black) 80%, transparent);
1289
- }
1290
- }
1291
1164
  .bg-blue-50 {
1292
1165
  background-color: var(--color-blue-50);
1293
1166
  }
1294
1167
  .bg-border {
1295
1168
  background-color: var(--border);
1296
1169
  }
1297
- .bg-card {
1298
- background-color: var(--card);
1299
- }
1300
1170
  .bg-cyan-50 {
1301
1171
  background-color: var(--color-cyan-50);
1302
1172
  }
@@ -1312,15 +1182,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1312
1182
  .bg-emerald-50 {
1313
1183
  background-color: var(--color-emerald-50);
1314
1184
  }
1315
- .bg-emerald-500 {
1316
- background-color: var(--color-emerald-500);
1317
- }
1318
1185
  .bg-fuchsia-50 {
1319
1186
  background-color: var(--color-fuchsia-50);
1320
1187
  }
1321
- .bg-info {
1322
- background-color: var(--info);
1323
- }
1324
1188
  .bg-info\\/10 {
1325
1189
  background-color: var(--info);
1326
1190
  @supports (color: color-mix(in lab, red, red)) {
@@ -1372,18 +1236,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1372
1236
  .bg-clip-padding {
1373
1237
  background-clip: padding-box;
1374
1238
  }
1375
- .bg-\\[right_0\\.5rem_center\\] {
1376
- background-position: right 0.5rem center;
1377
- }
1378
- .bg-no-repeat {
1379
- background-repeat: no-repeat;
1380
- }
1381
- .object-cover {
1382
- object-fit: cover;
1383
- }
1384
- .object-top {
1385
- object-position: top;
1386
- }
1387
1239
  .p-1 {
1388
1240
  padding: calc(var(--spacing) * 1);
1389
1241
  }
@@ -1396,9 +1248,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1396
1248
  .p-4 {
1397
1249
  padding: calc(var(--spacing) * 4);
1398
1250
  }
1399
- .p-6 {
1400
- padding: calc(var(--spacing) * 6);
1401
- }
1402
1251
  .px-1 {
1403
1252
  padding-inline: calc(var(--spacing) * 1);
1404
1253
  }
@@ -1420,24 +1269,15 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1420
1269
  .px-4 {
1421
1270
  padding-inline: calc(var(--spacing) * 4);
1422
1271
  }
1423
- .px-6 {
1424
- padding-inline: calc(var(--spacing) * 6);
1425
- }
1426
1272
  .py-1 {
1427
1273
  padding-block: calc(var(--spacing) * 1);
1428
1274
  }
1429
1275
  .py-1\\.5 {
1430
1276
  padding-block: calc(var(--spacing) * 1.5);
1431
1277
  }
1432
- .py-2 {
1433
- padding-block: calc(var(--spacing) * 2);
1434
- }
1435
1278
  .py-4 {
1436
1279
  padding-block: calc(var(--spacing) * 4);
1437
1280
  }
1438
- .py-12 {
1439
- padding-block: calc(var(--spacing) * 12);
1440
- }
1441
1281
  .py-\\[max\\(1rem\\,4vh\\)\\] {
1442
1282
  padding-block: max(1rem, 4vh);
1443
1283
  }
@@ -1450,12 +1290,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1450
1290
  .pt-2 {
1451
1291
  padding-top: calc(var(--spacing) * 2);
1452
1292
  }
1453
- .pr-8 {
1454
- padding-right: calc(var(--spacing) * 8);
1455
- }
1456
- .pl-3 {
1457
- padding-left: calc(var(--spacing) * 3);
1458
- }
1459
1293
  .text-center {
1460
1294
  text-align: center;
1461
1295
  }
@@ -1473,18 +1307,10 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1473
1307
  font-size: var(--text-base);
1474
1308
  line-height: var(--tw-leading, var(--text-base--line-height));
1475
1309
  }
1476
- .text-base\\/4\\.5 {
1477
- font-size: var(--text-base);
1478
- line-height: calc(var(--spacing) * 4.5);
1479
- }
1480
1310
  .text-sm {
1481
1311
  font-size: var(--text-sm);
1482
1312
  line-height: var(--tw-leading, var(--text-sm--line-height));
1483
1313
  }
1484
- .text-xl {
1485
- font-size: var(--text-xl);
1486
- line-height: var(--tw-leading, var(--text-xl--line-height));
1487
- }
1488
1314
  .text-xs {
1489
1315
  font-size: var(--text-xs);
1490
1316
  line-height: var(--tw-leading, var(--text-xs--line-height));
@@ -1492,24 +1318,13 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1492
1318
  .text-\\[0\\.625rem\\] {
1493
1319
  font-size: 0.625rem;
1494
1320
  }
1495
- .text-\\[9px\\] {
1496
- font-size: 9px;
1497
- }
1498
1321
  .text-\\[11px\\] {
1499
1322
  font-size: 11px;
1500
1323
  }
1501
- .leading-none {
1502
- --tw-leading: 1;
1503
- line-height: 1;
1504
- }
1505
1324
  .leading-relaxed {
1506
1325
  --tw-leading: var(--leading-relaxed);
1507
1326
  line-height: var(--leading-relaxed);
1508
1327
  }
1509
- .font-bold {
1510
- --tw-font-weight: var(--font-weight-bold);
1511
- font-weight: var(--font-weight-bold);
1512
- }
1513
1328
  .font-medium {
1514
1329
  --tw-font-weight: var(--font-weight-medium);
1515
1330
  font-weight: var(--font-weight-medium);
@@ -1530,9 +1345,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1530
1345
  --tw-tracking: var(--tracking-widest);
1531
1346
  letter-spacing: var(--tracking-widest);
1532
1347
  }
1533
- .text-balance {
1534
- text-wrap: balance;
1535
- }
1536
1348
  .break-words {
1537
1349
  overflow-wrap: break-word;
1538
1350
  }
@@ -1557,9 +1369,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1557
1369
  .text-cyan-700 {
1558
1370
  color: var(--color-cyan-700);
1559
1371
  }
1560
- .text-destructive {
1561
- color: var(--destructive);
1562
- }
1563
1372
  .text-destructive-foreground {
1564
1373
  color: var(--destructive-foreground);
1565
1374
  }
@@ -1625,18 +1434,12 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1625
1434
  .line-through {
1626
1435
  text-decoration-line: line-through;
1627
1436
  }
1628
- .underline {
1629
- text-decoration-line: underline;
1630
- }
1631
1437
  .underline-offset-4 {
1632
1438
  text-underline-offset: 4px;
1633
1439
  }
1634
1440
  .accent-accent {
1635
1441
  accent-color: var(--accent);
1636
1442
  }
1637
- .accent-primary {
1638
- accent-color: var(--primary);
1639
- }
1640
1443
  .opacity-50 {
1641
1444
  opacity: 50%;
1642
1445
  }
@@ -1648,11 +1451,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1648
1451
  --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%));
1649
1452
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1650
1453
  }
1651
- .shadow-sm\\/5 {
1652
- --tw-shadow-alpha: 5%;
1653
- --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%));
1654
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1655
- }
1656
1454
  .shadow-xs\\/5 {
1657
1455
  --tw-shadow-alpha: 5%;
1658
1456
  --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.05) l a b / 5%));
@@ -1662,14 +1460,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1662
1460
  --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));
1663
1461
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1664
1462
  }
1665
- .shadow-lg {
1666
- --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));
1667
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1668
- }
1669
- .shadow-none {
1670
- --tw-shadow: 0 0 #0000;
1671
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1672
- }
1673
1463
  .shadow-xs {
1674
1464
  --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
1675
1465
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -1769,15 +1559,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1769
1559
  -webkit-user-select: none;
1770
1560
  user-select: none;
1771
1561
  }
1772
- .\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/64\\%\\)\\] {
1773
- --skeleton-highlight: color-mix(in srgb, #fff 64%, transparent);
1774
- @supports (color: color-mix(in lab, red, red)) {
1775
- --skeleton-highlight: color-mix(in oklab, var(--color-white) 64%, transparent);
1776
- }
1777
- }
1778
- .\\[background\\:linear-gradient\\(120deg\\,transparent_40\\%\\,var\\(--skeleton-highlight\\)\\,transparent_60\\%\\)_var\\(--color-muted\\)_0_0\\/200\\%_100\\%_fixed\\] {
1779
- background: linear-gradient(120deg,transparent 40%,var(--skeleton-highlight),transparent 60%) var(--color-muted) 0 0/200% 100% fixed;
1780
- }
1781
1562
  .\\[clip-path\\:inset\\(0_1px\\)\\] {
1782
1563
  clip-path: inset(0 1px);
1783
1564
  }
@@ -1861,12 +1642,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1861
1642
  border-radius: calc(var(--radius-lg) - 1px);
1862
1643
  }
1863
1644
  }
1864
- .before\\:rounded-\\[calc\\(var\\(--radius-md\\)-1px\\)\\] {
1865
- &::before {
1866
- content: var(--tw-content);
1867
- border-radius: calc(var(--radius-md) - 1px);
1868
- }
1869
- }
1870
1645
  .before\\:rounded-\\[calc\\(var\\(--radius-xl\\)-1px\\)\\] {
1871
1646
  &::before {
1872
1647
  content: var(--tw-content);
@@ -1996,36 +1771,17 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
1996
1771
  outline-style: none;
1997
1772
  }
1998
1773
  }
1999
- .focus-visible\\:border-ring {
2000
- &:focus-visible {
2001
- border-color: var(--ring);
2002
- }
2003
- }
2004
1774
  .focus-visible\\:ring-2 {
2005
1775
  &:focus-visible {
2006
1776
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2007
1777
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2008
1778
  }
2009
1779
  }
2010
- .focus-visible\\:ring-\\[3px\\] {
2011
- &:focus-visible {
2012
- --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2013
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2014
- }
2015
- }
2016
1780
  .focus-visible\\:ring-ring {
2017
1781
  &:focus-visible {
2018
1782
  --tw-ring-color: var(--ring);
2019
1783
  }
2020
1784
  }
2021
- .focus-visible\\:ring-ring\\/30 {
2022
- &:focus-visible {
2023
- --tw-ring-color: var(--ring);
2024
- @supports (color: color-mix(in lab, red, red)) {
2025
- --tw-ring-color: color-mix(in oklab, var(--ring) 30%, transparent);
2026
- }
2027
- }
2028
- }
2029
1785
  .focus-visible\\:ring-offset-1 {
2030
1786
  &:focus-visible {
2031
1787
  --tw-ring-offset-width: 1px;
@@ -2052,24 +1808,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2052
1808
  opacity: 60%;
2053
1809
  }
2054
1810
  }
2055
- .aria-invalid\\:border-destructive\\/40 {
2056
- &[aria-invalid="true"] {
2057
- border-color: var(--destructive);
2058
- @supports (color: color-mix(in lab, red, red)) {
2059
- border-color: color-mix(in oklab, var(--destructive) 40%, transparent);
2060
- }
2061
- }
2062
- }
2063
- .aria-invalid\\:focus-visible\\:ring-destructive\\/20 {
2064
- &[aria-invalid="true"] {
2065
- &:focus-visible {
2066
- --tw-ring-color: var(--destructive);
2067
- @supports (color: color-mix(in lab, red, red)) {
2068
- --tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent);
2069
- }
2070
- }
2071
- }
2072
- }
2073
1811
  .data-\\[disabled\\]\\:pointer-events-none {
2074
1812
  &[data-disabled] {
2075
1813
  pointer-events: none;
@@ -2106,12 +1844,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2106
1844
  line-height: var(--tw-leading, var(--text-sm--line-height));
2107
1845
  }
2108
1846
  }
2109
- .sm\\:text-sm\\/4 {
2110
- @media (width >= 40rem) {
2111
- font-size: var(--text-sm);
2112
- line-height: calc(var(--spacing) * 4);
2113
- }
2114
- }
2115
1847
  .dark\\:bg-amber-400\\/10 {
2116
1848
  &:is(.dark *, :host(.dark) *) {
2117
1849
  background-color: color-mix(in srgb, oklch(82.8% 0.189 84.429) 10%, transparent);
@@ -2325,14 +2057,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2325
2057
  }
2326
2058
  }
2327
2059
  }
2328
- .dark\\:\\[--skeleton-highlight\\:--alpha\\(var\\(--color-white\\)\\/4\\%\\)\\] {
2329
- &:is(.dark *, :host(.dark) *) {
2330
- --skeleton-highlight: color-mix(in srgb, #fff 4%, transparent);
2331
- @supports (color: color-mix(in lab, red, red)) {
2332
- --skeleton-highlight: color-mix(in oklab, var(--color-white) 4%, transparent);
2333
- }
2334
- }
2335
- }
2336
2060
  .dark\\:group-data-hover\\:bg-amber-400\\/20 {
2337
2061
  &:is(.dark *, :host(.dark) *) {
2338
2062
  &:is(:where(.group)[data-hover] *) {
@@ -2452,12 +2176,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2452
2176
  height: calc(var(--spacing) * 4);
2453
2177
  }
2454
2178
  }
2455
- .\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4\\.5 {
2456
- & svg:not([class*='size-']) {
2457
- width: calc(var(--spacing) * 4.5);
2458
- height: calc(var(--spacing) * 4.5);
2459
- }
2460
- }
2461
2179
  .\\[\\[data-kbd-nav\\]_\\&\\]\\:focus-within\\:bg-accent {
2462
2180
  [data-kbd-nav] & {
2463
2181
  &:focus-within {
@@ -2690,36 +2408,6 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2690
2408
  --warning: var(--color-amber-500);
2691
2409
  --warning-foreground: var(--color-amber-700);
2692
2410
  }
2693
- @property --tw-translate-x {
2694
- syntax: "*";
2695
- inherits: false;
2696
- initial-value: 0;
2697
- }
2698
- @property --tw-translate-y {
2699
- syntax: "*";
2700
- inherits: false;
2701
- initial-value: 0;
2702
- }
2703
- @property --tw-translate-z {
2704
- syntax: "*";
2705
- inherits: false;
2706
- initial-value: 0;
2707
- }
2708
- @property --tw-scale-x {
2709
- syntax: "*";
2710
- inherits: false;
2711
- initial-value: 1;
2712
- }
2713
- @property --tw-scale-y {
2714
- syntax: "*";
2715
- inherits: false;
2716
- initial-value: 1;
2717
- }
2718
- @property --tw-scale-z {
2719
- syntax: "*";
2720
- inherits: false;
2721
- initial-value: 1;
2722
- }
2723
2411
  @property --tw-rotate-x {
2724
2412
  syntax: "*";
2725
2413
  inherits: false;
@@ -2945,20 +2633,9 @@ var tailwind_built_default = `/*! tailwindcss v4.2.2 | MIT License | https://tai
2945
2633
  initial-value: "";
2946
2634
  inherits: false;
2947
2635
  }
2948
- @keyframes spin {
2949
- to {
2950
- transform: rotate(360deg);
2951
- }
2952
- }
2953
2636
  @layer properties {
2954
2637
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
2955
2638
  *, ::before, ::after, ::backdrop {
2956
- --tw-translate-x: 0;
2957
- --tw-translate-y: 0;
2958
- --tw-translate-z: 0;
2959
- --tw-scale-x: 1;
2960
- --tw-scale-y: 1;
2961
- --tw-scale-z: 1;
2962
2639
  --tw-rotate-x: initial;
2963
2640
  --tw-rotate-y: initial;
2964
2641
  --tw-rotate-z: initial;
@@ -3421,11 +3098,8 @@ function createMenuBar(options) {
3421
3098
  container,
3422
3099
  session,
3423
3100
  initialCorner = "bottom-right",
3424
- appTitle,
3425
- channel = null,
3426
- pinLayer: initialPinLayer = null
3101
+ appTitle
3427
3102
  } = options;
3428
- let activePinLayer = initialPinLayer;
3429
3103
  const root = el("div", {
3430
3104
  class: ROOT_CLASS,
3431
3105
  attrs: {
@@ -3490,108 +3164,6 @@ function createMenuBar(options) {
3490
3164
  inspectBtn.blur();
3491
3165
  });
3492
3166
  root.appendChild(inspectBtn);
3493
- const pinIcon = (0, import_lucide3.createElement)(import_lucide3.MapPin);
3494
- pinIcon.setAttribute("class", "size-3.5");
3495
- pinIcon.setAttribute("aria-hidden", "true");
3496
- const pinBtn = el(
3497
- "button",
3498
- {
3499
- class: BUTTON_CLASS,
3500
- attrs: {
3501
- type: "button",
3502
- "data-uidex-menubar-pins": "",
3503
- "aria-label": "Report pins"
3504
- }
3505
- },
3506
- pinIcon
3507
- );
3508
- const pinWrapper = el("div", {
3509
- class: "relative z-1 inline-flex items-center gap-0.5",
3510
- attrs: { "data-uidex-menubar-pin-wrapper": "" }
3511
- });
3512
- pinWrapper.hidden = true;
3513
- pinWrapper.appendChild(pinBtn);
3514
- root.appendChild(pinWrapper);
3515
- const updatePinUI = () => {
3516
- if (!activePinLayer) {
3517
- pinWrapper.hidden = true;
3518
- return;
3519
- }
3520
- const pinsVisible = activePinLayer.visible;
3521
- pinWrapper.hidden = false;
3522
- pinBtn.className = cn(BUTTON_CLASS, pinsVisible && BUTTON_ACTIVE_CLASS);
3523
- };
3524
- pinBtn.addEventListener("click", (e) => {
3525
- e.stopPropagation();
3526
- if (activePinLayer) {
3527
- activePinLayer.setVisible(!activePinLayer.visible);
3528
- }
3529
- });
3530
- let unsubscribePinFilter = activePinLayer?.onFilterChange(() => updatePinUI());
3531
- const presenceIcon = (0, import_lucide3.createElement)(import_lucide3.Users);
3532
- presenceIcon.setAttribute("class", "size-3.5");
3533
- presenceIcon.setAttribute("aria-hidden", "true");
3534
- const presenceBtn = el(
3535
- "button",
3536
- {
3537
- class: BUTTON_CLASS,
3538
- attrs: {
3539
- type: "button",
3540
- "data-uidex-menubar-presence": "",
3541
- "aria-label": "Online users"
3542
- }
3543
- },
3544
- presenceIcon
3545
- );
3546
- presenceBtn.hidden = true;
3547
- const presenceBadge = el("span", {
3548
- 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"
3549
- });
3550
- presenceBtn.appendChild(presenceBadge);
3551
- const presencePopover = el("div", {
3552
- 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"
3553
- });
3554
- presencePopover.hidden = true;
3555
- let presencePopoverVisible = false;
3556
- presenceBtn.addEventListener("click", (e) => {
3557
- e.stopPropagation();
3558
- presencePopoverVisible = !presencePopoverVisible;
3559
- presencePopover.hidden = !presencePopoverVisible;
3560
- });
3561
- const presenceWrapper = el("div", { class: "relative z-1 inline-flex" }, [
3562
- presenceBtn,
3563
- presencePopover
3564
- ]);
3565
- presenceWrapper.hidden = true;
3566
- root.appendChild(presenceWrapper);
3567
- let presenceUsers = [];
3568
- const updatePresenceUI = () => {
3569
- const localUserId = session.getState().user?.id ?? null;
3570
- const peers = localUserId ? presenceUsers.filter((u) => u.userId !== localUserId) : presenceUsers;
3571
- const count = peers.length;
3572
- presenceWrapper.hidden = count === 0;
3573
- presenceBadge.textContent = String(count);
3574
- presenceBtn.setAttribute(
3575
- "aria-label",
3576
- count === 1 ? "1 other user online" : `${count} other users online`
3577
- );
3578
- presencePopover.innerHTML = "";
3579
- for (const user of peers) {
3580
- const row = el("div", {
3581
- class: "flex items-center gap-2 rounded px-1.5 py-1"
3582
- });
3583
- const dot = el("span", {
3584
- class: "inline-block size-2 shrink-0 rounded-full bg-emerald-500"
3585
- });
3586
- const name = el("span", {
3587
- class: "truncate",
3588
- text: user.name || "Anonymous"
3589
- });
3590
- row.appendChild(dot);
3591
- row.appendChild(name);
3592
- presencePopover.appendChild(row);
3593
- }
3594
- };
3595
3167
  const paletteIcon = (0, import_lucide3.createElement)(import_lucide3.Command);
3596
3168
  paletteIcon.setAttribute("class", "size-3.5");
3597
3169
  paletteIcon.setAttribute("aria-hidden", "true");
@@ -3706,28 +3278,14 @@ function createMenuBar(options) {
3706
3278
  const vertical = y / (window.innerHeight || 1) < 0.5 ? "top" : "bottom";
3707
3279
  snapTo(`${vertical}-${horizontal}`);
3708
3280
  }
3709
- const unsubscribePresence = channel?.onPresence(
3710
- (users) => {
3711
- presenceUsers = users;
3712
- updatePresenceUI();
3713
- }
3714
- );
3715
3281
  return {
3716
3282
  destroy() {
3717
- unsubscribePinFilter?.();
3718
- unsubscribePresence?.();
3719
3283
  unsubscribeSession();
3720
3284
  root.removeEventListener("mousedown", onMouseDown);
3721
3285
  document.removeEventListener("mousemove", onMouseMove);
3722
3286
  document.removeEventListener("mouseup", onMouseUp);
3723
3287
  root.remove();
3724
3288
  },
3725
- setPinLayer(layer) {
3726
- unsubscribePinFilter?.();
3727
- activePinLayer = layer;
3728
- unsubscribePinFilter = layer.onFilterChange(() => updatePinUI());
3729
- updatePinUI();
3730
- },
3731
3289
  snapTo,
3732
3290
  snapToNearest,
3733
3291
  get corner() {
@@ -4085,9 +3643,7 @@ function createSurfaceShell(options) {
4085
3643
  container: host.chromeEl,
4086
3644
  session: options.session,
4087
3645
  initialCorner: options.initialCorner,
4088
- appTitle: options.appTitle,
4089
- channel: options.channel ?? null,
4090
- pinLayer: options.pinLayer ?? null
3646
+ appTitle: options.appTitle
4091
3647
  });
4092
3648
  cleanup.add(menuBar);
4093
3649
  return {