@natoe/colab 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1196,6 +1196,102 @@ function BackIcon({ size = 22, color = "currentColor" }) {
1196
1196
  }
1197
1197
  );
1198
1198
  }
1199
+
1200
+ // src/core/theme.ts
1201
+ var FONT_SIZE = {
1202
+ xs: "12px",
1203
+ sm: "13px",
1204
+ md: "15px",
1205
+ lg: "17px",
1206
+ xxl: "28px"
1207
+ };
1208
+ var FONT_WEIGHT = {
1209
+ regular: 400,
1210
+ medium: 500,
1211
+ semibold: 600,
1212
+ bold: 700
1213
+ };
1214
+ var LINE_HEIGHT = {
1215
+ tight: 1.3,
1216
+ normal: 1.45};
1217
+ var SPACE = {
1218
+ S1: "4px",
1219
+ S2: "8px",
1220
+ S3: "12px",
1221
+ S4: "16px",
1222
+ S5: "20px",
1223
+ S6: "24px",
1224
+ S12: "48px"
1225
+ };
1226
+ var RADIUS = {
1227
+ sm: "4px",
1228
+ md: "8px",
1229
+ lg: "12px",
1230
+ pill: "9999px",
1231
+ full: "50%"
1232
+ };
1233
+ var COLOR = {
1234
+ // Brand
1235
+ primary: "#2563eb",
1236
+ /** Tinted surface for chips/cards on brand-coloured states. */
1237
+ primaryBg: "#dbeafe",
1238
+ primaryFg: "#1d4ed8",
1239
+ // Neutral grayscale — taken from Tailwind's zinc-leaning slate, the
1240
+ // existing dominant family in the package.
1241
+ white: "#ffffff",
1242
+ neutral50: "#f9fafb",
1243
+ neutral100: "#f3f4f6",
1244
+ neutral200: "#e5e7eb",
1245
+ neutral300: "#d1d5db",
1246
+ neutral400: "#9ca3af",
1247
+ neutral500: "#6b7280",
1248
+ neutral600: "#4b5563",
1249
+ neutral700: "#374151",
1250
+ neutral800: "#1f2937",
1251
+ neutral900: "#111827",
1252
+ // Slate (used by day dividers + dialog title bar)
1253
+ slate200: "#e2e8f0",
1254
+ slate700: "#334155",
1255
+ slate800: "#1e293b",
1256
+ // Semantic
1257
+ success: "#059669",
1258
+ warning: "#d97706",
1259
+ danger: "#dc2626",
1260
+ dangerBg: "#fef2f2",
1261
+ dangerBorder: "#fecaca",
1262
+ dangerFg: "#b91c1c"
1263
+ };
1264
+ var SIZE = {
1265
+ /** Default interactive height (text buttons, list rows). */
1266
+ control: "40px",
1267
+ /** Square icon-only buttons inside chrome (popup title, menu trigger). */
1268
+ controlIcon: "36px",
1269
+ /** Primary input controls (textarea send/attach). 44px = WCAG min. */
1270
+ controlPrimary: "44px",
1271
+ /** Avatar in the inbox row. */
1272
+ avatar: "40px",
1273
+ /** Unread dot. */
1274
+ dot: "10px"
1275
+ };
1276
+ var SHADOW = {
1277
+ /** Cards / floating popovers (message-actions menu). */
1278
+ popover: "0 6px 18px rgba(0, 0, 0, 0.12)",
1279
+ /** Dialog (CollabPopup). */
1280
+ dialog: "0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
1281
+ /** Subtle separator shadow (sticky day divider, toast). */
1282
+ subtle: "0 1px 2px rgba(0, 0, 0, 0.04)",
1283
+ toast: "0 4px 12px rgba(0, 0, 0, 0.18)"
1284
+ };
1285
+ var Z_INDEX = {
1286
+ /** Sticky day divider — above bubbles, below interactive popovers. */
1287
+ sticky: 1,
1288
+ /** Toasts inside a panel. */
1289
+ toast: 20,
1290
+ /** Floating CollabPopup dialog. */
1291
+ dialog: 9999,
1292
+ /** Portaled message-actions menu — must sit above the dialog. */
1293
+ menu: 1e4
1294
+ };
1199
1295
  function PatientHeader({
1200
1296
  patientData,
1201
1297
  onOpenDicom,
@@ -1224,7 +1320,7 @@ function PatientHeader({
1224
1320
  style: styles.backButton,
1225
1321
  "aria-label": "Back to conversations",
1226
1322
  title: "Back to conversations",
1227
- children: /* @__PURE__ */ jsx(BackIcon, { size: 22, color: "#1f2937" })
1323
+ children: /* @__PURE__ */ jsx(BackIcon, { size: 22, color: COLOR.neutral800 })
1228
1324
  }
1229
1325
  ),
1230
1326
  /* @__PURE__ */ jsx("span", { style: styles.nameText, children: buildChannelName(patientData) })
@@ -1246,7 +1342,7 @@ function PatientHeader({
1246
1342
  type: "button",
1247
1343
  "aria-label": "View DICOM study",
1248
1344
  children: [
1249
- /* @__PURE__ */ jsx(DicomIcon, { size: 18, color: "#ffffff" }),
1345
+ /* @__PURE__ */ jsx(DicomIcon, { size: 18, color: COLOR.white }),
1250
1346
  /* @__PURE__ */ jsx("span", { children: "View DICOM" })
1251
1347
  ]
1252
1348
  }
@@ -1259,7 +1355,7 @@ function PatientHeader({
1259
1355
  type: "button",
1260
1356
  "aria-label": "Open channel settings",
1261
1357
  children: [
1262
- /* @__PURE__ */ jsx(SettingsIcon, { size: 18, color: "#374151" }),
1358
+ /* @__PURE__ */ jsx(SettingsIcon, { size: 18, color: COLOR.neutral700 }),
1263
1359
  /* @__PURE__ */ jsx("span", { children: "Settings" })
1264
1360
  ]
1265
1361
  }
@@ -1269,33 +1365,33 @@ function PatientHeader({
1269
1365
  }
1270
1366
  var styles = {
1271
1367
  container: {
1272
- padding: "14px 16px",
1273
- borderBottom: "1px solid #e5e7eb",
1274
- backgroundColor: "#f9fafb"
1368
+ padding: `${SPACE.S3} ${SPACE.S4}`,
1369
+ borderBottom: `1px solid ${COLOR.neutral200}`,
1370
+ backgroundColor: COLOR.neutral50
1275
1371
  },
1276
1372
  nameRow: {
1277
1373
  display: "flex",
1278
1374
  alignItems: "center",
1279
- gap: "6px"
1375
+ gap: SPACE.S2
1280
1376
  },
1281
1377
  backButton: {
1282
- width: "36px",
1283
- height: "36px",
1378
+ width: SIZE.controlIcon,
1379
+ height: SIZE.controlIcon,
1284
1380
  display: "flex",
1285
1381
  alignItems: "center",
1286
1382
  justifyContent: "center",
1287
- marginLeft: "-8px",
1383
+ marginLeft: `-${SPACE.S2}`,
1288
1384
  backgroundColor: "transparent",
1289
1385
  border: "none",
1290
- borderRadius: "50%",
1386
+ borderRadius: RADIUS.full,
1291
1387
  cursor: "pointer",
1292
1388
  flexShrink: 0
1293
1389
  },
1294
1390
  nameText: {
1295
- fontSize: "18px",
1296
- fontWeight: 600,
1297
- color: "#111827",
1298
- lineHeight: 1.3,
1391
+ fontSize: FONT_SIZE.lg,
1392
+ fontWeight: FONT_WEIGHT.semibold,
1393
+ color: COLOR.neutral900,
1394
+ lineHeight: LINE_HEIGHT.tight,
1299
1395
  minWidth: 0,
1300
1396
  overflow: "hidden",
1301
1397
  textOverflow: "ellipsis",
@@ -1304,53 +1400,53 @@ var styles = {
1304
1400
  metaRow: {
1305
1401
  display: "flex",
1306
1402
  flexWrap: "wrap",
1307
- columnGap: "14px",
1308
- rowGap: "4px",
1309
- marginTop: "6px"
1403
+ columnGap: SPACE.S3,
1404
+ rowGap: SPACE.S1,
1405
+ marginTop: SPACE.S1
1310
1406
  },
1311
1407
  metaItem: {
1312
- fontSize: "13px",
1313
- color: "#374151",
1408
+ fontSize: FONT_SIZE.sm,
1409
+ color: COLOR.neutral700,
1314
1410
  whiteSpace: "nowrap"
1315
1411
  },
1316
1412
  metaLabel: {
1317
- color: "#6b7280",
1318
- fontWeight: 500
1413
+ color: COLOR.neutral500,
1414
+ fontWeight: FONT_WEIGHT.medium
1319
1415
  },
1320
1416
  metaValue: {
1321
- color: "#111827"
1417
+ color: COLOR.neutral900
1322
1418
  },
1323
1419
  actions: {
1324
1420
  display: "flex",
1325
- gap: "8px",
1326
- marginTop: "10px"
1421
+ gap: SPACE.S2,
1422
+ marginTop: SPACE.S3
1327
1423
  },
1328
1424
  dicomButton: {
1329
1425
  display: "inline-flex",
1330
1426
  alignItems: "center",
1331
- gap: "8px",
1332
- minHeight: "40px",
1333
- padding: "8px 16px",
1334
- fontSize: "14px",
1335
- fontWeight: 500,
1336
- color: "#ffffff",
1337
- backgroundColor: "#2563eb",
1427
+ gap: SPACE.S2,
1428
+ minHeight: SIZE.control,
1429
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1430
+ fontSize: FONT_SIZE.sm,
1431
+ fontWeight: FONT_WEIGHT.medium,
1432
+ color: COLOR.white,
1433
+ backgroundColor: COLOR.primary,
1338
1434
  border: "none",
1339
- borderRadius: "6px",
1435
+ borderRadius: RADIUS.md,
1340
1436
  cursor: "pointer"
1341
1437
  },
1342
1438
  settingsButton: {
1343
1439
  display: "inline-flex",
1344
1440
  alignItems: "center",
1345
- gap: "8px",
1346
- minHeight: "40px",
1347
- padding: "8px 16px",
1348
- fontSize: "14px",
1349
- fontWeight: 500,
1350
- color: "#374151",
1351
- backgroundColor: "#ffffff",
1352
- border: "1px solid #d1d5db",
1353
- borderRadius: "6px",
1441
+ gap: SPACE.S2,
1442
+ minHeight: SIZE.control,
1443
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1444
+ fontSize: FONT_SIZE.sm,
1445
+ fontWeight: FONT_WEIGHT.medium,
1446
+ color: COLOR.neutral700,
1447
+ backgroundColor: COLOR.white,
1448
+ border: `1px solid ${COLOR.neutral300}`,
1449
+ borderRadius: RADIUS.md,
1354
1450
  cursor: "pointer"
1355
1451
  }
1356
1452
  };
@@ -1360,10 +1456,10 @@ function ReplyQuoteBlock({
1360
1456
  onClick,
1361
1457
  className
1362
1458
  }) {
1363
- const baseBg = inOwnBubble ? "rgba(255,255,255,0.18)" : "#f3f4f6";
1364
- const barColor = inOwnBubble ? "#ffffff" : "#2563eb";
1365
- const nameColor = inOwnBubble ? "#ffffff" : "#2563eb";
1366
- const bodyColor = inOwnBubble ? "rgba(255,255,255,0.85)" : "#4b5563";
1459
+ const baseBg = inOwnBubble ? "rgba(255,255,255,0.18)" : COLOR.neutral100;
1460
+ const barColor = inOwnBubble ? COLOR.white : COLOR.primary;
1461
+ const nameColor = inOwnBubble ? COLOR.white : COLOR.primary;
1462
+ const bodyColor = inOwnBubble ? "rgba(255,255,255,0.85)" : COLOR.neutral600;
1367
1463
  const preview = renderSnapshotPreview(snapshot);
1368
1464
  return /* @__PURE__ */ jsxs(
1369
1465
  "div",
@@ -1402,10 +1498,10 @@ function renderSnapshotPreview(snapshot) {
1402
1498
  var styles2 = {
1403
1499
  container: {
1404
1500
  display: "flex",
1405
- gap: "6px",
1406
- padding: "4px 8px",
1407
- marginBottom: "4px",
1408
- borderRadius: "6px",
1501
+ gap: SPACE.S2,
1502
+ padding: `${SPACE.S1} ${SPACE.S2}`,
1503
+ marginBottom: SPACE.S1,
1504
+ borderRadius: RADIUS.sm,
1409
1505
  cursor: "pointer",
1410
1506
  maxWidth: "100%"
1411
1507
  },
@@ -1422,13 +1518,13 @@ var styles2 = {
1422
1518
  overflow: "hidden"
1423
1519
  },
1424
1520
  senderName: {
1425
- fontSize: "11px",
1426
- fontWeight: 600,
1427
- lineHeight: "1.2"
1521
+ fontSize: FONT_SIZE.xs,
1522
+ fontWeight: FONT_WEIGHT.semibold,
1523
+ lineHeight: LINE_HEIGHT.tight
1428
1524
  },
1429
1525
  body: {
1430
- fontSize: "11px",
1431
- lineHeight: "1.3",
1526
+ fontSize: FONT_SIZE.xs,
1527
+ lineHeight: LINE_HEIGHT.tight,
1432
1528
  overflow: "hidden",
1433
1529
  textOverflow: "ellipsis",
1434
1530
  whiteSpace: "nowrap"
@@ -1475,22 +1571,22 @@ var styles3 = {
1475
1571
  container: {
1476
1572
  display: "flex",
1477
1573
  alignItems: "center",
1478
- gap: "4px",
1574
+ gap: SPACE.S1,
1479
1575
  marginTop: "2px",
1480
- fontSize: "10px",
1481
- opacity: 0.75
1576
+ fontSize: FONT_SIZE.xs,
1577
+ opacity: 0.85
1482
1578
  },
1483
1579
  checkmark: {
1484
- fontSize: "10px",
1485
- color: "#60a5fa"
1580
+ fontSize: FONT_SIZE.xs,
1581
+ color: COLOR.primary
1486
1582
  },
1487
1583
  label: {
1488
- fontSize: "10px",
1584
+ fontSize: FONT_SIZE.xs,
1489
1585
  color: "inherit"
1490
1586
  },
1491
1587
  moreButton: {
1492
- fontSize: "10px",
1493
- fontWeight: 600,
1588
+ fontSize: FONT_SIZE.xs,
1589
+ fontWeight: FONT_WEIGHT.semibold,
1494
1590
  color: "inherit",
1495
1591
  backgroundColor: "transparent",
1496
1592
  border: "none",
@@ -1658,7 +1754,7 @@ function MessageActionsMenu({
1658
1754
  onClick: () => run(() => onReply(message)),
1659
1755
  style: styles4.item,
1660
1756
  children: [
1661
- /* @__PURE__ */ jsx(ReplyIcon, { size: 18, color: "#374151" }),
1757
+ /* @__PURE__ */ jsx(ReplyIcon, { size: 18, color: COLOR.neutral700 }),
1662
1758
  /* @__PURE__ */ jsx("span", { children: "Reply" })
1663
1759
  ]
1664
1760
  }
@@ -1671,7 +1767,7 @@ function MessageActionsMenu({
1671
1767
  onClick: () => run(() => onUnpin(message.id)),
1672
1768
  style: styles4.item,
1673
1769
  children: [
1674
- /* @__PURE__ */ jsx(PinIcon, { size: 16, color: "#374151" }),
1770
+ /* @__PURE__ */ jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1675
1771
  /* @__PURE__ */ jsx("span", { children: "Unpin" })
1676
1772
  ]
1677
1773
  }
@@ -1688,7 +1784,7 @@ function MessageActionsMenu({
1688
1784
  },
1689
1785
  title: pinDisabled ? "Pin limit reached (max 3)" : void 0,
1690
1786
  children: [
1691
- /* @__PURE__ */ jsx(PinIcon, { size: 16, color: "#374151" }),
1787
+ /* @__PURE__ */ jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1692
1788
  /* @__PURE__ */ jsx("span", { children: pinDisabled ? "Pin (limit reached)" : "Pin" })
1693
1789
  ]
1694
1790
  }
@@ -1701,7 +1797,7 @@ function MessageActionsMenu({
1701
1797
  onClick: () => run(() => onCopy(message.body)),
1702
1798
  style: styles4.item,
1703
1799
  children: [
1704
- /* @__PURE__ */ jsx(CopyIcon, { size: 16, color: "#374151" }),
1800
+ /* @__PURE__ */ jsx(CopyIcon, { size: 16, color: COLOR.neutral700 }),
1705
1801
  /* @__PURE__ */ jsx("span", { children: "Copy text" })
1706
1802
  ]
1707
1803
  }
@@ -1724,7 +1820,7 @@ function MessageActionsMenu({
1724
1820
  "aria-expanded": isOpen ? "true" : "false",
1725
1821
  title: "Message actions",
1726
1822
  style: styles4.trigger,
1727
- children: /* @__PURE__ */ jsx(MoreIcon, { size: 18, color: "#4b5563" })
1823
+ children: /* @__PURE__ */ jsx(MoreIcon, { size: 18, color: COLOR.neutral600 })
1728
1824
  }
1729
1825
  ),
1730
1826
  menu && typeof document !== "undefined" ? createPortal(menu, document.body) : null
@@ -1736,45 +1832,45 @@ var styles4 = {
1736
1832
  display: "inline-block"
1737
1833
  },
1738
1834
  trigger: {
1739
- width: "36px",
1740
- height: "36px",
1835
+ width: SIZE.controlIcon,
1836
+ height: SIZE.controlIcon,
1741
1837
  display: "flex",
1742
1838
  alignItems: "center",
1743
1839
  justifyContent: "center",
1744
1840
  backgroundColor: "transparent",
1745
1841
  border: "none",
1746
- borderRadius: "50%",
1842
+ borderRadius: RADIUS.full,
1747
1843
  cursor: "pointer",
1748
- color: "#4b5563"
1844
+ color: COLOR.neutral600
1749
1845
  },
1750
1846
  menu: {
1751
1847
  position: "fixed",
1752
1848
  minWidth: "160px",
1753
- backgroundColor: "#ffffff",
1754
- border: "1px solid #e5e7eb",
1755
- borderRadius: "10px",
1756
- boxShadow: "0 6px 18px rgba(0, 0, 0, 0.12)",
1757
- padding: "4px",
1758
- // Above the floating popup (z-index 9999) but below any future modal.
1759
- zIndex: 1e4
1849
+ backgroundColor: COLOR.white,
1850
+ border: `1px solid ${COLOR.neutral200}`,
1851
+ borderRadius: RADIUS.md,
1852
+ boxShadow: SHADOW.popover,
1853
+ padding: SPACE.S1,
1854
+ // Above the floating popup (z-index dialog) but below any future modal.
1855
+ zIndex: Z_INDEX.menu
1760
1856
  },
1761
1857
  item: {
1762
1858
  display: "flex",
1763
1859
  alignItems: "center",
1764
- gap: "10px",
1860
+ gap: SPACE.S3,
1765
1861
  width: "100%",
1766
- minHeight: "40px",
1767
- padding: "8px 12px",
1768
- fontSize: "14px",
1769
- color: "#111827",
1862
+ minHeight: SIZE.control,
1863
+ padding: `${SPACE.S2} ${SPACE.S3}`,
1864
+ fontSize: FONT_SIZE.sm,
1865
+ color: COLOR.neutral900,
1770
1866
  backgroundColor: "transparent",
1771
1867
  border: "none",
1772
- borderRadius: "6px",
1868
+ borderRadius: RADIUS.sm,
1773
1869
  cursor: "pointer",
1774
1870
  textAlign: "left"
1775
1871
  },
1776
1872
  itemDisabled: {
1777
- color: "#9ca3af",
1873
+ color: COLOR.neutral400,
1778
1874
  cursor: "not-allowed"
1779
1875
  }
1780
1876
  };
@@ -1806,7 +1902,7 @@ function AlertIcon({ size = 14, color = "currentColor" }) {
1806
1902
  }
1807
1903
  );
1808
1904
  }
1809
- function Spinner({ size = 16, color = "#6b7280", thickness = 2 }) {
1905
+ function Spinner({ size = 16, color = COLOR.neutral500, thickness = 2 }) {
1810
1906
  return /* @__PURE__ */ jsx(
1811
1907
  "span",
1812
1908
  {
@@ -2044,10 +2140,10 @@ var styles5 = {
2044
2140
  wrapper: {
2045
2141
  display: "flex",
2046
2142
  alignItems: "flex-end",
2047
- gap: "4px",
2048
- marginBottom: "8px",
2049
- paddingLeft: "16px",
2050
- paddingRight: "16px"
2143
+ gap: SPACE.S1,
2144
+ marginBottom: SPACE.S2,
2145
+ paddingLeft: SPACE.S4,
2146
+ paddingRight: SPACE.S4
2051
2147
  },
2052
2148
  bubbleWrapper: {
2053
2149
  position: "relative",
@@ -2058,64 +2154,64 @@ var styles5 = {
2058
2154
  alignSelf: "flex-end"
2059
2155
  },
2060
2156
  bubble: {
2061
- padding: "10px 14px",
2062
- borderRadius: "12px",
2157
+ padding: `${SPACE.S3} ${SPACE.S4}`,
2158
+ borderRadius: RADIUS.lg,
2063
2159
  wordBreak: "break-word"
2064
2160
  },
2065
2161
  ownBubble: {
2066
- backgroundColor: "#2563eb",
2067
- color: "#ffffff",
2068
- borderBottomRightRadius: "4px"
2162
+ backgroundColor: COLOR.primary,
2163
+ color: COLOR.white,
2164
+ borderBottomRightRadius: RADIUS.sm
2069
2165
  },
2070
2166
  otherBubble: {
2071
- backgroundColor: "#f3f4f6",
2072
- color: "#111827",
2073
- borderBottomLeftRadius: "4px"
2167
+ backgroundColor: COLOR.neutral100,
2168
+ color: COLOR.neutral900,
2169
+ borderBottomLeftRadius: RADIUS.sm
2074
2170
  },
2075
2171
  pinnedBadge: {
2076
2172
  display: "inline-flex",
2077
2173
  alignItems: "center",
2078
- gap: "4px",
2079
- fontSize: "12px",
2080
- fontWeight: 600,
2081
- marginBottom: "4px",
2082
- color: "#6b7280"
2174
+ gap: SPACE.S1,
2175
+ fontSize: FONT_SIZE.xs,
2176
+ fontWeight: FONT_WEIGHT.semibold,
2177
+ marginBottom: SPACE.S1,
2178
+ color: COLOR.neutral500
2083
2179
  },
2084
2180
  senderRow: {
2085
2181
  display: "flex",
2086
2182
  alignItems: "center",
2087
- gap: "6px",
2088
- marginBottom: "4px"
2183
+ gap: SPACE.S2,
2184
+ marginBottom: SPACE.S1
2089
2185
  },
2090
2186
  senderName: {
2091
- fontSize: "13px",
2092
- fontWeight: 600,
2093
- color: "#374151"
2187
+ fontSize: FONT_SIZE.sm,
2188
+ fontWeight: FONT_WEIGHT.semibold,
2189
+ color: COLOR.neutral700
2094
2190
  },
2095
2191
  roleBadge: {
2096
- fontSize: "11px",
2097
- fontWeight: 600,
2098
- padding: "2px 8px",
2099
- borderRadius: "4px"
2192
+ fontSize: FONT_SIZE.xs,
2193
+ fontWeight: FONT_WEIGHT.semibold,
2194
+ padding: `2px ${SPACE.S2}`,
2195
+ borderRadius: RADIUS.sm
2100
2196
  },
2101
2197
  textBody: {
2102
2198
  margin: 0,
2103
- fontSize: "15px",
2104
- lineHeight: "1.45"
2199
+ fontSize: FONT_SIZE.md,
2200
+ lineHeight: LINE_HEIGHT.normal
2105
2201
  },
2106
2202
  timestamp: {
2107
- fontSize: "12px",
2203
+ fontSize: FONT_SIZE.xs,
2108
2204
  color: "inherit",
2109
2205
  opacity: 0.8,
2110
- marginTop: "4px",
2206
+ marginTop: SPACE.S1,
2111
2207
  textAlign: "right"
2112
2208
  },
2113
2209
  statusRow: {
2114
2210
  display: "flex",
2115
2211
  alignItems: "center",
2116
- gap: "6px",
2117
- marginTop: "4px",
2118
- fontSize: "12px",
2212
+ gap: SPACE.S2,
2213
+ marginTop: SPACE.S1,
2214
+ fontSize: FONT_SIZE.xs,
2119
2215
  justifyContent: "flex-end",
2120
2216
  color: "rgba(255, 255, 255, 0.9)"
2121
2217
  },
@@ -2125,48 +2221,48 @@ var styles5 = {
2125
2221
  retryButton: {
2126
2222
  background: "transparent",
2127
2223
  border: "none",
2128
- color: "#ffffff",
2129
- fontWeight: 600,
2130
- fontSize: "12px",
2224
+ color: COLOR.white,
2225
+ fontWeight: FONT_WEIGHT.semibold,
2226
+ fontSize: FONT_SIZE.xs,
2131
2227
  textDecoration: "underline",
2132
2228
  cursor: "pointer",
2133
- padding: "0 2px"
2229
+ padding: `0 ${SPACE.S1}`
2134
2230
  },
2135
2231
  audioContainer: {
2136
2232
  display: "flex",
2137
2233
  alignItems: "center",
2138
- gap: "8px"
2234
+ gap: SPACE.S2
2139
2235
  },
2140
2236
  audioPlayer: {
2141
2237
  height: "32px",
2142
2238
  maxWidth: "220px"
2143
2239
  },
2144
2240
  audioDuration: {
2145
- fontSize: "12px",
2241
+ fontSize: FONT_SIZE.xs,
2146
2242
  opacity: 0.7,
2147
2243
  whiteSpace: "nowrap"
2148
2244
  },
2149
2245
  imagePreview: {
2150
2246
  maxWidth: "240px",
2151
2247
  maxHeight: "180px",
2152
- borderRadius: "8px",
2248
+ borderRadius: RADIUS.md,
2153
2249
  objectFit: "cover",
2154
2250
  cursor: "pointer"
2155
2251
  },
2156
2252
  fileLink: {
2157
2253
  display: "flex",
2158
2254
  alignItems: "center",
2159
- gap: "6px",
2255
+ gap: SPACE.S2,
2160
2256
  textDecoration: "none",
2161
2257
  color: "inherit",
2162
- padding: "6px 0"
2258
+ padding: `${SPACE.S1} 0`
2163
2259
  },
2164
2260
  fileName: {
2165
- fontSize: "13px",
2261
+ fontSize: FONT_SIZE.sm,
2166
2262
  textDecoration: "underline"
2167
2263
  },
2168
2264
  deepLink: {
2169
- color: "#3b82f6",
2265
+ color: COLOR.primary,
2170
2266
  textDecoration: "underline",
2171
2267
  cursor: "pointer"
2172
2268
  },
@@ -2174,34 +2270,34 @@ var styles5 = {
2174
2270
  display: "flex",
2175
2271
  flexDirection: "column",
2176
2272
  gap: "2px",
2177
- padding: "8px",
2178
- backgroundColor: "#eff6ff",
2179
- borderRadius: "8px",
2180
- border: "1px solid #bfdbfe",
2273
+ padding: SPACE.S2,
2274
+ backgroundColor: COLOR.primaryBg,
2275
+ borderRadius: RADIUS.md,
2276
+ border: `1px solid ${COLOR.primaryBg}`,
2181
2277
  cursor: "pointer"
2182
2278
  },
2183
2279
  deepLinkLabel: {
2184
- fontSize: "13px",
2185
- fontWeight: 500,
2186
- color: "#1d4ed8"
2280
+ fontSize: FONT_SIZE.sm,
2281
+ fontWeight: FONT_WEIGHT.medium,
2282
+ color: COLOR.primaryFg
2187
2283
  },
2188
2284
  deepLinkPath: {
2189
- fontSize: "11px",
2190
- color: "#6b7280",
2285
+ fontSize: FONT_SIZE.xs,
2286
+ color: COLOR.neutral500,
2191
2287
  fontFamily: "monospace"
2192
2288
  },
2193
2289
  systemMessage: {
2194
2290
  display: "flex",
2195
2291
  justifyContent: "center",
2196
2292
  alignItems: "center",
2197
- gap: "8px",
2198
- padding: "6px 16px",
2199
- fontSize: "13px",
2200
- color: "#6b7280"
2293
+ gap: SPACE.S2,
2294
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2295
+ fontSize: FONT_SIZE.sm,
2296
+ color: COLOR.neutral500
2201
2297
  },
2202
2298
  systemTime: {
2203
- fontSize: "12px",
2204
- color: "#9ca3af"
2299
+ fontSize: FONT_SIZE.xs,
2300
+ color: COLOR.neutral400
2205
2301
  }
2206
2302
  };
2207
2303
  function ChatIllustration({ size = 96 }) {
@@ -2456,34 +2552,34 @@ var styles6 = {
2456
2552
  container: {
2457
2553
  flex: 1,
2458
2554
  overflowY: "auto",
2459
- paddingTop: "12px",
2460
- paddingBottom: "8px"
2555
+ paddingTop: SPACE.S3,
2556
+ paddingBottom: SPACE.S2
2461
2557
  },
2462
2558
  loadingMore: {
2463
2559
  display: "flex",
2464
2560
  alignItems: "center",
2465
2561
  justifyContent: "center",
2466
- gap: "8px",
2467
- padding: "12px",
2468
- fontSize: "14px",
2469
- color: "#6b7280"
2562
+ gap: SPACE.S2,
2563
+ padding: SPACE.S3,
2564
+ fontSize: FONT_SIZE.sm,
2565
+ color: COLOR.neutral500
2470
2566
  },
2471
2567
  firstLoad: {
2472
2568
  display: "flex",
2473
2569
  alignItems: "center",
2474
2570
  justifyContent: "center",
2475
- padding: "48px 16px"
2571
+ padding: `${SPACE.S12} ${SPACE.S4}`
2476
2572
  },
2477
2573
  loadMoreButton: {
2478
2574
  display: "block",
2479
- margin: "0 auto 12px",
2575
+ margin: `0 auto ${SPACE.S3}`,
2480
2576
  minHeight: "36px",
2481
- padding: "8px 18px",
2482
- fontSize: "13px",
2483
- color: "#374151",
2577
+ padding: `${SPACE.S2} ${SPACE.S5}`,
2578
+ fontSize: FONT_SIZE.sm,
2579
+ color: COLOR.neutral700,
2484
2580
  backgroundColor: "transparent",
2485
- border: "1px solid #d1d5db",
2486
- borderRadius: "18px",
2581
+ border: `1px solid ${COLOR.neutral300}`,
2582
+ borderRadius: RADIUS.pill,
2487
2583
  cursor: "pointer"
2488
2584
  },
2489
2585
  empty: {
@@ -2491,47 +2587,47 @@ var styles6 = {
2491
2587
  flexDirection: "column",
2492
2588
  alignItems: "center",
2493
2589
  justifyContent: "center",
2494
- padding: "48px 16px",
2495
- color: "#6b7280"
2590
+ padding: `${SPACE.S12} ${SPACE.S4}`,
2591
+ color: COLOR.neutral500
2496
2592
  },
2497
2593
  emptyTitle: {
2498
- fontSize: "16px",
2499
- fontWeight: 600,
2500
- color: "#374151",
2501
- margin: "14px 0 4px"
2594
+ fontSize: FONT_SIZE.lg,
2595
+ fontWeight: FONT_WEIGHT.semibold,
2596
+ color: COLOR.neutral700,
2597
+ margin: `${SPACE.S3} 0 ${SPACE.S1}`
2502
2598
  },
2503
2599
  emptySubtitle: {
2504
- fontSize: "14px",
2600
+ fontSize: FONT_SIZE.sm,
2505
2601
  margin: 0,
2506
2602
  maxWidth: "280px",
2507
- lineHeight: 1.45,
2603
+ lineHeight: LINE_HEIGHT.normal,
2508
2604
  textAlign: "center"
2509
2605
  },
2510
2606
  typingIndicator: {
2511
- padding: "4px 16px 8px",
2512
- fontSize: "13px",
2513
- color: "#6b7280",
2607
+ padding: `${SPACE.S1} ${SPACE.S4} ${SPACE.S2}`,
2608
+ fontSize: FONT_SIZE.sm,
2609
+ color: COLOR.neutral500,
2514
2610
  fontStyle: "italic"
2515
2611
  },
2516
2612
  dayDivider: {
2517
2613
  display: "flex",
2518
2614
  justifyContent: "center",
2519
- margin: "12px 0 8px",
2615
+ margin: `${SPACE.S3} 0 ${SPACE.S2}`,
2520
2616
  position: "sticky",
2521
- top: "4px",
2522
- zIndex: 1,
2617
+ top: SPACE.S1,
2618
+ zIndex: Z_INDEX.sticky,
2523
2619
  pointerEvents: "none"
2524
2620
  },
2525
2621
  dayDividerPill: {
2526
2622
  display: "inline-block",
2527
- padding: "5px 14px",
2528
- fontSize: "13px",
2529
- fontWeight: 500,
2530
- color: "#334155",
2531
- backgroundColor: "#e2e8f0",
2532
- borderRadius: "12px",
2623
+ padding: `${SPACE.S1} ${SPACE.S3}`,
2624
+ fontSize: FONT_SIZE.sm,
2625
+ fontWeight: FONT_WEIGHT.medium,
2626
+ color: COLOR.slate700,
2627
+ backgroundColor: COLOR.slate200,
2628
+ borderRadius: RADIUS.lg,
2533
2629
  letterSpacing: "0.2px",
2534
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.04)"
2630
+ boxShadow: SHADOW.subtle
2535
2631
  },
2536
2632
  bubbleSlot: {
2537
2633
  animation: "natoe-colab-message-in 180ms ease-out"
@@ -2574,14 +2670,14 @@ var styles7 = {
2574
2670
  container: {
2575
2671
  display: "flex",
2576
2672
  alignItems: "stretch",
2577
- gap: "8px",
2578
- padding: "8px 12px",
2579
- backgroundColor: "#f9fafb",
2580
- borderTop: "1px solid #e5e7eb"
2673
+ gap: SPACE.S2,
2674
+ padding: `${SPACE.S2} ${SPACE.S3}`,
2675
+ backgroundColor: COLOR.neutral50,
2676
+ borderTop: `1px solid ${COLOR.neutral200}`
2581
2677
  },
2582
2678
  bar: {
2583
2679
  width: "3px",
2584
- backgroundColor: "#2563eb",
2680
+ backgroundColor: COLOR.primary,
2585
2681
  borderRadius: "2px",
2586
2682
  flexShrink: 0
2587
2683
  },
@@ -2595,20 +2691,20 @@ var styles7 = {
2595
2691
  senderLine: {
2596
2692
  display: "flex",
2597
2693
  alignItems: "center",
2598
- gap: "4px"
2694
+ gap: SPACE.S1
2599
2695
  },
2600
2696
  senderIcon: {
2601
- fontSize: "11px",
2602
- color: "#2563eb"
2697
+ fontSize: FONT_SIZE.xs,
2698
+ color: COLOR.primary
2603
2699
  },
2604
2700
  senderName: {
2605
- fontSize: "12px",
2606
- fontWeight: 600,
2607
- color: "#2563eb"
2701
+ fontSize: FONT_SIZE.xs,
2702
+ fontWeight: FONT_WEIGHT.semibold,
2703
+ color: COLOR.primary
2608
2704
  },
2609
2705
  preview: {
2610
- fontSize: "12px",
2611
- color: "#6b7280",
2706
+ fontSize: FONT_SIZE.xs,
2707
+ color: COLOR.neutral500,
2612
2708
  overflow: "hidden",
2613
2709
  textOverflow: "ellipsis",
2614
2710
  whiteSpace: "nowrap"
@@ -2620,12 +2716,12 @@ var styles7 = {
2620
2716
  display: "flex",
2621
2717
  alignItems: "center",
2622
2718
  justifyContent: "center",
2623
- color: "#6b7280",
2719
+ color: COLOR.neutral500,
2624
2720
  backgroundColor: "transparent",
2625
2721
  border: "none",
2626
- borderRadius: "4px",
2722
+ borderRadius: RADIUS.sm,
2627
2723
  cursor: "pointer",
2628
- fontSize: "12px",
2724
+ fontSize: FONT_SIZE.xs,
2629
2725
  flexShrink: 0
2630
2726
  }
2631
2727
  };
@@ -2685,6 +2781,7 @@ function MessageInput({
2685
2781
  }) {
2686
2782
  const [text, setText] = useState("");
2687
2783
  const [isSending, setIsSending] = useState(false);
2784
+ const [isUploading, setIsUploading] = useState(false);
2688
2785
  const [fileError, setFileError] = useState(null);
2689
2786
  const fileInputRef = useRef(null);
2690
2787
  const typingTimeoutRef = useRef(null);
@@ -2748,10 +2845,12 @@ function MessageInput({
2748
2845
  return;
2749
2846
  }
2750
2847
  setIsSending(true);
2848
+ setIsUploading(true);
2751
2849
  try {
2752
2850
  await onSendFile(file);
2753
2851
  } finally {
2754
2852
  setIsSending(false);
2853
+ setIsUploading(false);
2755
2854
  if (fileInputRef.current) fileInputRef.current.value = "";
2756
2855
  }
2757
2856
  },
@@ -2759,6 +2858,10 @@ function MessageInput({
2759
2858
  );
2760
2859
  return /* @__PURE__ */ jsxs("div", { className, style: styles8.container, children: [
2761
2860
  replyTo && onCancelReply && /* @__PURE__ */ jsx(ReplyPreview, { message: replyTo, onCancel: onCancelReply }),
2861
+ isUploading && /* @__PURE__ */ jsxs("div", { style: styles8.uploadBanner, children: [
2862
+ /* @__PURE__ */ jsx("span", { style: styles8.uploadSpinner }),
2863
+ "Uploading file\u2026"
2864
+ ] }),
2762
2865
  fileError && /* @__PURE__ */ jsxs("div", { style: styles8.error, role: "alert", children: [
2763
2866
  /* @__PURE__ */ jsx("span", { style: styles8.errorText, children: fileError }),
2764
2867
  /* @__PURE__ */ jsx(
@@ -2833,7 +2936,7 @@ function MessageInput({
2833
2936
  opacity: text.trim() ? 1 : 0.4
2834
2937
  },
2835
2938
  type: "button",
2836
- children: /* @__PURE__ */ jsx(SendIcon, { size: 20, color: "#ffffff" })
2939
+ children: /* @__PURE__ */ jsx(SendIcon, { size: 20, color: COLOR.white })
2837
2940
  }
2838
2941
  )
2839
2942
  ] })
@@ -2841,19 +2944,39 @@ function MessageInput({
2841
2944
  }
2842
2945
  var styles8 = {
2843
2946
  container: {
2844
- borderTop: "1px solid #e5e7eb",
2845
- backgroundColor: "#ffffff"
2947
+ borderTop: `1px solid ${COLOR.neutral200}`,
2948
+ backgroundColor: COLOR.white
2949
+ },
2950
+ uploadBanner: {
2951
+ display: "flex",
2952
+ alignItems: "center",
2953
+ gap: SPACE.S2,
2954
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2955
+ fontSize: FONT_SIZE.xs,
2956
+ color: COLOR.neutral500,
2957
+ backgroundColor: COLOR.neutral50,
2958
+ borderBottom: `1px solid ${COLOR.neutral200}`
2959
+ },
2960
+ uploadSpinner: {
2961
+ display: "inline-block",
2962
+ width: "12px",
2963
+ height: "12px",
2964
+ border: `2px solid ${COLOR.neutral300}`,
2965
+ borderTopColor: COLOR.primary,
2966
+ borderRadius: RADIUS.full,
2967
+ animation: "natoe-colab-spin 0.7s linear infinite",
2968
+ flexShrink: 0
2846
2969
  },
2847
2970
  error: {
2848
2971
  display: "flex",
2849
2972
  alignItems: "center",
2850
2973
  justifyContent: "space-between",
2851
- gap: "8px",
2852
- padding: "8px 12px 8px 16px",
2853
- fontSize: "13px",
2854
- color: "#b91c1c",
2855
- backgroundColor: "#fef2f2",
2856
- borderTop: "1px solid #fecaca"
2974
+ gap: SPACE.S2,
2975
+ padding: `${SPACE.S2} ${SPACE.S3} ${SPACE.S2} ${SPACE.S4}`,
2976
+ fontSize: FONT_SIZE.sm,
2977
+ color: COLOR.dangerFg,
2978
+ backgroundColor: COLOR.dangerBg,
2979
+ borderTop: `1px solid ${COLOR.dangerBorder}`
2857
2980
  },
2858
2981
  errorText: {
2859
2982
  flex: 1,
@@ -2867,52 +2990,52 @@ var styles8 = {
2867
2990
  justifyContent: "center",
2868
2991
  backgroundColor: "transparent",
2869
2992
  border: "none",
2870
- color: "#b91c1c",
2871
- borderRadius: "4px",
2993
+ color: COLOR.dangerFg,
2994
+ borderRadius: RADIUS.sm,
2872
2995
  cursor: "pointer",
2873
2996
  flexShrink: 0
2874
2997
  },
2875
2998
  inputBar: {
2876
2999
  display: "flex",
2877
3000
  alignItems: "flex-end",
2878
- gap: "6px",
2879
- padding: "10px 12px"
3001
+ gap: SPACE.S2,
3002
+ padding: `${SPACE.S3} ${SPACE.S3}`
2880
3003
  },
2881
3004
  iconButton: {
2882
- width: "44px",
2883
- height: "44px",
3005
+ width: SIZE.controlPrimary,
3006
+ height: SIZE.controlPrimary,
2884
3007
  display: "flex",
2885
3008
  alignItems: "center",
2886
3009
  justifyContent: "center",
2887
3010
  backgroundColor: "transparent",
2888
3011
  border: "none",
2889
- borderRadius: "50%",
3012
+ borderRadius: RADIUS.full,
2890
3013
  cursor: "pointer",
2891
3014
  flexShrink: 0
2892
3015
  },
2893
3016
  textarea: {
2894
3017
  flex: 1,
2895
- padding: "10px 14px",
2896
- fontSize: "15px",
2897
- lineHeight: "1.45",
2898
- border: "1px solid #d1d5db",
2899
- borderRadius: "22px",
3018
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3019
+ fontSize: FONT_SIZE.md,
3020
+ lineHeight: LINE_HEIGHT.normal,
3021
+ border: `1px solid ${COLOR.neutral300}`,
3022
+ borderRadius: RADIUS.pill,
2900
3023
  resize: "none",
2901
3024
  outline: "none",
2902
3025
  fontFamily: "inherit",
2903
3026
  maxHeight: "120px",
2904
- minHeight: "44px"
3027
+ minHeight: SIZE.controlPrimary
2905
3028
  },
2906
3029
  sendButton: {
2907
- width: "44px",
2908
- height: "44px",
3030
+ width: SIZE.controlPrimary,
3031
+ height: SIZE.controlPrimary,
2909
3032
  display: "flex",
2910
3033
  alignItems: "center",
2911
3034
  justifyContent: "center",
2912
- backgroundColor: "#2563eb",
2913
- color: "#ffffff",
3035
+ backgroundColor: COLOR.primary,
3036
+ color: COLOR.white,
2914
3037
  border: "none",
2915
- borderRadius: "50%",
3038
+ borderRadius: RADIUS.full,
2916
3039
  cursor: "pointer",
2917
3040
  flexShrink: 0
2918
3041
  }};
@@ -2931,7 +3054,7 @@ function ParticipantsList({
2931
3054
  {
2932
3055
  style: {
2933
3056
  ...styles9.statusDot,
2934
- backgroundColor: participant.isOnline ? "#22c55e" : "#d1d5db"
3057
+ backgroundColor: participant.isOnline ? COLOR.success : COLOR.neutral300
2935
3058
  }
2936
3059
  }
2937
3060
  )
@@ -2987,9 +3110,9 @@ var styles9 = {
2987
3110
  item: {
2988
3111
  display: "flex",
2989
3112
  alignItems: "center",
2990
- gap: "10px",
2991
- padding: "8px 0",
2992
- borderBottom: "1px solid #f9fafb"
3113
+ gap: SPACE.S3,
3114
+ padding: `${SPACE.S2} 0`,
3115
+ borderBottom: `1px solid ${COLOR.neutral50}`
2993
3116
  },
2994
3117
  avatar: {
2995
3118
  position: "relative",
@@ -3000,55 +3123,55 @@ var styles9 = {
3000
3123
  avatarImg: {
3001
3124
  width: "32px",
3002
3125
  height: "32px",
3003
- borderRadius: "50%",
3126
+ borderRadius: RADIUS.full,
3004
3127
  objectFit: "cover"
3005
3128
  },
3006
3129
  avatarFallback: {
3007
3130
  width: "32px",
3008
3131
  height: "32px",
3009
- borderRadius: "50%",
3010
- backgroundColor: "#e5e7eb",
3132
+ borderRadius: RADIUS.full,
3133
+ backgroundColor: COLOR.neutral200,
3011
3134
  display: "flex",
3012
3135
  alignItems: "center",
3013
3136
  justifyContent: "center",
3014
- fontSize: "13px",
3015
- fontWeight: 600,
3016
- color: "#6b7280"
3137
+ fontSize: FONT_SIZE.sm,
3138
+ fontWeight: FONT_WEIGHT.semibold,
3139
+ color: COLOR.neutral500
3017
3140
  },
3018
3141
  statusDot: {
3019
3142
  position: "absolute",
3020
3143
  bottom: "0",
3021
3144
  right: "0",
3022
- width: "8px",
3023
- height: "8px",
3024
- borderRadius: "50%",
3025
- border: "2px solid #ffffff"
3145
+ width: SPACE.S2,
3146
+ height: SPACE.S2,
3147
+ borderRadius: RADIUS.full,
3148
+ border: `2px solid ${COLOR.white}`
3026
3149
  },
3027
3150
  info: {
3028
3151
  display: "flex",
3029
3152
  alignItems: "center",
3030
- gap: "6px",
3153
+ gap: SPACE.S2,
3031
3154
  flex: 1,
3032
3155
  minWidth: 0
3033
3156
  },
3034
3157
  name: {
3035
- fontSize: "13px",
3036
- fontWeight: 500,
3037
- color: "#111827",
3158
+ fontSize: FONT_SIZE.sm,
3159
+ fontWeight: FONT_WEIGHT.medium,
3160
+ color: COLOR.neutral900,
3038
3161
  overflow: "hidden",
3039
3162
  textOverflow: "ellipsis",
3040
3163
  whiteSpace: "nowrap"
3041
3164
  },
3042
3165
  youBadge: {
3043
- fontSize: "11px",
3044
- fontWeight: 400,
3045
- color: "#9ca3af"
3166
+ fontSize: FONT_SIZE.xs,
3167
+ fontWeight: FONT_WEIGHT.regular,
3168
+ color: COLOR.neutral400
3046
3169
  },
3047
3170
  roleBadge: {
3048
- fontSize: "10px",
3049
- fontWeight: 500,
3050
- padding: "1px 6px",
3051
- borderRadius: "4px",
3171
+ fontSize: FONT_SIZE.xs,
3172
+ fontWeight: FONT_WEIGHT.medium,
3173
+ padding: `2px ${SPACE.S2}`,
3174
+ borderRadius: RADIUS.sm,
3052
3175
  whiteSpace: "nowrap"
3053
3176
  },
3054
3177
  removeButton: {
@@ -3059,10 +3182,10 @@ var styles9 = {
3059
3182
  justifyContent: "center",
3060
3183
  backgroundColor: "transparent",
3061
3184
  border: "none",
3062
- borderRadius: "4px",
3185
+ borderRadius: RADIUS.sm,
3063
3186
  cursor: "pointer",
3064
- fontSize: "11px",
3065
- color: "#9ca3af",
3187
+ fontSize: FONT_SIZE.xs,
3188
+ color: COLOR.neutral400,
3066
3189
  flexShrink: 0
3067
3190
  }
3068
3191
  };
@@ -3214,19 +3337,19 @@ var styles10 = {
3214
3337
  display: "flex",
3215
3338
  flexDirection: "column",
3216
3339
  height: "100%",
3217
- backgroundColor: "#ffffff"
3340
+ backgroundColor: COLOR.white
3218
3341
  },
3219
3342
  header: {
3220
3343
  display: "flex",
3221
3344
  justifyContent: "space-between",
3222
3345
  alignItems: "center",
3223
- padding: "12px 16px",
3224
- borderBottom: "1px solid #e5e7eb"
3346
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3347
+ borderBottom: `1px solid ${COLOR.neutral200}`
3225
3348
  },
3226
3349
  title: {
3227
3350
  margin: 0,
3228
- fontSize: "16px",
3229
- fontWeight: 600
3351
+ fontSize: FONT_SIZE.lg,
3352
+ fontWeight: FONT_WEIGHT.semibold
3230
3353
  },
3231
3354
  closeButton: {
3232
3355
  width: "28px",
@@ -3236,139 +3359,139 @@ var styles10 = {
3236
3359
  justifyContent: "center",
3237
3360
  backgroundColor: "transparent",
3238
3361
  border: "none",
3239
- borderRadius: "4px",
3362
+ borderRadius: RADIUS.sm,
3240
3363
  cursor: "pointer",
3241
- fontSize: "14px",
3242
- color: "#6b7280"
3364
+ fontSize: FONT_SIZE.sm,
3365
+ color: COLOR.neutral500
3243
3366
  },
3244
3367
  error: {
3245
- padding: "8px 16px",
3246
- fontSize: "13px",
3247
- color: "#dc2626",
3248
- backgroundColor: "#fef2f2"
3368
+ padding: `${SPACE.S2} ${SPACE.S4}`,
3369
+ fontSize: FONT_SIZE.sm,
3370
+ color: COLOR.danger,
3371
+ backgroundColor: COLOR.dangerBg
3249
3372
  },
3250
3373
  section: {
3251
- padding: "16px",
3252
- borderBottom: "1px solid #f3f4f6"
3374
+ padding: SPACE.S4,
3375
+ borderBottom: `1px solid ${COLOR.neutral100}`
3253
3376
  },
3254
3377
  sectionHeader: {
3255
3378
  display: "flex",
3256
3379
  justifyContent: "space-between",
3257
3380
  alignItems: "center",
3258
- marginBottom: "8px"
3381
+ marginBottom: SPACE.S2
3259
3382
  },
3260
3383
  label: {
3261
- fontSize: "12px",
3262
- fontWeight: 600,
3263
- color: "#6b7280",
3384
+ fontSize: FONT_SIZE.xs,
3385
+ fontWeight: FONT_WEIGHT.semibold,
3386
+ color: COLOR.neutral500,
3264
3387
  textTransform: "uppercase",
3265
3388
  letterSpacing: "0.05em"
3266
3389
  },
3267
3390
  channelName: {
3268
- fontSize: "14px",
3269
- color: "#111827"
3391
+ fontSize: FONT_SIZE.sm,
3392
+ color: COLOR.neutral900
3270
3393
  },
3271
3394
  editRow: {
3272
3395
  display: "flex",
3273
3396
  alignItems: "center",
3274
- gap: "8px",
3275
- marginTop: "6px"
3397
+ gap: SPACE.S2,
3398
+ marginTop: SPACE.S2
3276
3399
  },
3277
3400
  input: {
3278
- padding: "6px 10px",
3279
- fontSize: "13px",
3280
- border: "1px solid #d1d5db",
3281
- borderRadius: "6px",
3401
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3402
+ fontSize: FONT_SIZE.sm,
3403
+ border: `1px solid ${COLOR.neutral300}`,
3404
+ borderRadius: RADIUS.md,
3282
3405
  outline: "none",
3283
3406
  width: "100%"
3284
3407
  },
3285
3408
  editButton: {
3286
- padding: "4px 10px",
3287
- fontSize: "12px",
3288
- color: "#2563eb",
3409
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3410
+ fontSize: FONT_SIZE.xs,
3411
+ color: COLOR.primary,
3289
3412
  backgroundColor: "transparent",
3290
3413
  border: "none",
3291
3414
  cursor: "pointer"
3292
3415
  },
3293
3416
  saveButton: {
3294
- padding: "6px 12px",
3295
- fontSize: "12px",
3296
- fontWeight: 500,
3297
- color: "#ffffff",
3298
- backgroundColor: "#2563eb",
3417
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3418
+ fontSize: FONT_SIZE.xs,
3419
+ fontWeight: FONT_WEIGHT.medium,
3420
+ color: COLOR.white,
3421
+ backgroundColor: COLOR.primary,
3299
3422
  border: "none",
3300
- borderRadius: "6px",
3423
+ borderRadius: RADIUS.md,
3301
3424
  cursor: "pointer",
3302
3425
  whiteSpace: "nowrap"
3303
3426
  },
3304
3427
  cancelButton: {
3305
- padding: "6px 12px",
3306
- fontSize: "12px",
3307
- color: "#6b7280",
3428
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3429
+ fontSize: FONT_SIZE.xs,
3430
+ color: COLOR.neutral500,
3308
3431
  backgroundColor: "transparent",
3309
- border: "1px solid #d1d5db",
3310
- borderRadius: "6px",
3432
+ border: `1px solid ${COLOR.neutral300}`,
3433
+ borderRadius: RADIUS.md,
3311
3434
  cursor: "pointer",
3312
3435
  whiteSpace: "nowrap"
3313
3436
  },
3314
3437
  addButton: {
3315
- padding: "4px 10px",
3316
- fontSize: "12px",
3317
- fontWeight: 500,
3318
- color: "#2563eb",
3319
- backgroundColor: "#eff6ff",
3438
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3439
+ fontSize: FONT_SIZE.xs,
3440
+ fontWeight: FONT_WEIGHT.medium,
3441
+ color: COLOR.primary,
3442
+ backgroundColor: COLOR.primaryBg,
3320
3443
  border: "none",
3321
- borderRadius: "4px",
3444
+ borderRadius: RADIUS.sm,
3322
3445
  cursor: "pointer"
3323
3446
  },
3324
3447
  inviteForm: {
3325
3448
  display: "flex",
3326
3449
  flexDirection: "column",
3327
- gap: "8px",
3328
- padding: "12px",
3329
- marginBottom: "12px",
3330
- backgroundColor: "#f9fafb",
3331
- borderRadius: "8px"
3450
+ gap: SPACE.S2,
3451
+ padding: SPACE.S3,
3452
+ marginBottom: SPACE.S3,
3453
+ backgroundColor: COLOR.neutral50,
3454
+ borderRadius: RADIUS.md
3332
3455
  },
3333
3456
  inviteActions: {
3334
3457
  display: "flex",
3335
- gap: "8px"
3458
+ gap: SPACE.S2
3336
3459
  },
3337
3460
  dangerZone: {
3338
- padding: "16px",
3461
+ padding: SPACE.S4,
3339
3462
  marginTop: "auto",
3340
3463
  display: "flex",
3341
3464
  flexDirection: "column",
3342
- gap: "8px"
3465
+ gap: SPACE.S2
3343
3466
  },
3344
3467
  leaveButton: {
3345
- padding: "8px",
3346
- fontSize: "13px",
3347
- fontWeight: 500,
3348
- color: "#b45309",
3468
+ padding: SPACE.S2,
3469
+ fontSize: FONT_SIZE.sm,
3470
+ fontWeight: FONT_WEIGHT.medium,
3471
+ color: COLOR.warning,
3349
3472
  backgroundColor: "#fffbeb",
3350
3473
  border: "1px solid #fde68a",
3351
- borderRadius: "6px",
3474
+ borderRadius: RADIUS.md,
3352
3475
  cursor: "pointer"
3353
3476
  },
3354
3477
  deleteButton: {
3355
- padding: "8px",
3356
- fontSize: "13px",
3357
- fontWeight: 500,
3358
- color: "#dc2626",
3359
- backgroundColor: "#fef2f2",
3360
- border: "1px solid #fecaca",
3361
- borderRadius: "6px",
3478
+ padding: SPACE.S2,
3479
+ fontSize: FONT_SIZE.sm,
3480
+ fontWeight: FONT_WEIGHT.medium,
3481
+ color: COLOR.danger,
3482
+ backgroundColor: COLOR.dangerBg,
3483
+ border: `1px solid ${COLOR.dangerBorder}`,
3484
+ borderRadius: RADIUS.md,
3362
3485
  cursor: "pointer"
3363
3486
  },
3364
3487
  confirmDeleteButton: {
3365
- padding: "8px",
3366
- fontSize: "13px",
3367
- fontWeight: 600,
3368
- color: "#ffffff",
3369
- backgroundColor: "#dc2626",
3488
+ padding: SPACE.S2,
3489
+ fontSize: FONT_SIZE.sm,
3490
+ fontWeight: FONT_WEIGHT.semibold,
3491
+ color: COLOR.white,
3492
+ backgroundColor: COLOR.danger,
3370
3493
  border: "none",
3371
- borderRadius: "6px",
3494
+ borderRadius: RADIUS.md,
3372
3495
  cursor: "pointer"
3373
3496
  }
3374
3497
  };
@@ -3391,13 +3514,13 @@ function PinnedMessagesBar({
3391
3514
  };
3392
3515
  return /* @__PURE__ */ jsxs("div", { className, style: styles11.container, children: [
3393
3516
  /* @__PURE__ */ jsxs("div", { style: styles11.indicator, children: [
3394
- /* @__PURE__ */ jsx("span", { style: styles11.pinIcon, children: "\u{1F4CC}" }),
3517
+ /* @__PURE__ */ jsx(PinIcon, { size: 14, color: COLOR.primary }),
3395
3518
  pinnedMessages.length > 1 && /* @__PURE__ */ jsx("div", { style: styles11.segments, children: pinnedMessages.map((_, i) => /* @__PURE__ */ jsx(
3396
3519
  "span",
3397
3520
  {
3398
3521
  style: {
3399
3522
  ...styles11.segment,
3400
- backgroundColor: i === safeIndex ? "#2563eb" : "#d1d5db"
3523
+ backgroundColor: i === safeIndex ? COLOR.primary : COLOR.neutral300
3401
3524
  }
3402
3525
  },
3403
3526
  i
@@ -3461,20 +3584,17 @@ var styles11 = {
3461
3584
  container: {
3462
3585
  display: "flex",
3463
3586
  alignItems: "center",
3464
- gap: "8px",
3465
- padding: "6px 12px",
3466
- backgroundColor: "#eff6ff",
3467
- borderBottom: "1px solid #dbeafe"
3587
+ gap: SPACE.S2,
3588
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3589
+ backgroundColor: COLOR.primaryBg,
3590
+ borderBottom: `1px solid ${COLOR.primaryBg}`
3468
3591
  },
3469
3592
  indicator: {
3470
3593
  display: "flex",
3471
3594
  alignItems: "center",
3472
- gap: "4px",
3595
+ gap: SPACE.S1,
3473
3596
  flexShrink: 0
3474
3597
  },
3475
- pinIcon: {
3476
- fontSize: "13px"
3477
- },
3478
3598
  segments: {
3479
3599
  display: "flex",
3480
3600
  flexDirection: "column",
@@ -3499,19 +3619,19 @@ var styles11 = {
3499
3619
  overflow: "hidden"
3500
3620
  },
3501
3621
  label: {
3502
- fontSize: "11px",
3503
- fontWeight: 600,
3504
- color: "#2563eb"
3622
+ fontSize: FONT_SIZE.xs,
3623
+ fontWeight: FONT_WEIGHT.semibold,
3624
+ color: COLOR.primary
3505
3625
  },
3506
3626
  preview: {
3507
- fontSize: "12px",
3508
- color: "#374151",
3627
+ fontSize: FONT_SIZE.xs,
3628
+ color: COLOR.neutral700,
3509
3629
  overflow: "hidden",
3510
3630
  textOverflow: "ellipsis",
3511
3631
  whiteSpace: "nowrap"
3512
3632
  },
3513
3633
  sender: {
3514
- fontWeight: 600
3634
+ fontWeight: FONT_WEIGHT.semibold
3515
3635
  },
3516
3636
  unpinButton: {
3517
3637
  width: "24px",
@@ -3519,12 +3639,12 @@ var styles11 = {
3519
3639
  display: "flex",
3520
3640
  alignItems: "center",
3521
3641
  justifyContent: "center",
3522
- color: "#6b7280",
3642
+ color: COLOR.neutral500,
3523
3643
  backgroundColor: "transparent",
3524
3644
  border: "none",
3525
- borderRadius: "4px",
3645
+ borderRadius: RADIUS.sm,
3526
3646
  cursor: "pointer",
3527
- fontSize: "11px",
3647
+ fontSize: FONT_SIZE.xs,
3528
3648
  flexShrink: 0
3529
3649
  }
3530
3650
  };
@@ -3559,15 +3679,15 @@ var styles12 = {
3559
3679
  transform: "translateX(-50%)",
3560
3680
  display: "flex",
3561
3681
  alignItems: "center",
3562
- gap: "12px",
3563
- padding: "10px 14px",
3564
- backgroundColor: "#1e293b",
3565
- color: "#ffffff",
3566
- borderRadius: "8px",
3567
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.18)",
3568
- fontSize: "14px",
3682
+ gap: SPACE.S3,
3683
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3684
+ backgroundColor: COLOR.slate800,
3685
+ color: COLOR.white,
3686
+ borderRadius: RADIUS.md,
3687
+ boxShadow: SHADOW.toast,
3688
+ fontSize: FONT_SIZE.sm,
3569
3689
  maxWidth: "90%",
3570
- zIndex: 20
3690
+ zIndex: Z_INDEX.toast
3571
3691
  },
3572
3692
  message: {
3573
3693
  whiteSpace: "nowrap",
@@ -3577,11 +3697,11 @@ var styles12 = {
3577
3697
  action: {
3578
3698
  background: "transparent",
3579
3699
  border: "none",
3580
- color: "#93c5fd",
3581
- fontWeight: 600,
3582
- fontSize: "14px",
3700
+ color: COLOR.primaryBg,
3701
+ fontWeight: FONT_WEIGHT.semibold,
3702
+ fontSize: FONT_SIZE.sm,
3583
3703
  cursor: "pointer",
3584
- padding: "4px 6px",
3704
+ padding: `${SPACE.S1} ${SPACE.S2}`,
3585
3705
  textTransform: "uppercase",
3586
3706
  letterSpacing: "0.4px"
3587
3707
  }
@@ -3794,10 +3914,10 @@ var panelStyles = {
3794
3914
  display: "flex",
3795
3915
  flexDirection: "column",
3796
3916
  height: "100%",
3797
- backgroundColor: "#ffffff",
3798
- borderRadius: "8px",
3917
+ backgroundColor: COLOR.white,
3918
+ borderRadius: RADIUS.md,
3799
3919
  overflow: "hidden",
3800
- border: "1px solid #e5e7eb",
3920
+ border: `1px solid ${COLOR.neutral200}`,
3801
3921
  fontFamily: FONT_STACK
3802
3922
  },
3803
3923
  loadingState: {
@@ -3805,8 +3925,8 @@ var panelStyles = {
3805
3925
  alignItems: "center",
3806
3926
  justifyContent: "center",
3807
3927
  height: "100%",
3808
- fontSize: "14px",
3809
- color: "#9ca3af"
3928
+ fontSize: FONT_SIZE.sm,
3929
+ color: COLOR.neutral500
3810
3930
  },
3811
3931
  errorState: {
3812
3932
  display: "flex",
@@ -3814,18 +3934,18 @@ var panelStyles = {
3814
3934
  alignItems: "center",
3815
3935
  justifyContent: "center",
3816
3936
  height: "100%",
3817
- padding: "24px",
3937
+ padding: SPACE.S6,
3818
3938
  textAlign: "center"
3819
3939
  },
3820
3940
  errorTitle: {
3821
- fontSize: "15px",
3822
- fontWeight: 500,
3823
- color: "#dc2626",
3824
- margin: "0 0 4px"
3941
+ fontSize: FONT_SIZE.md,
3942
+ fontWeight: FONT_WEIGHT.medium,
3943
+ color: COLOR.danger,
3944
+ margin: `0 0 ${SPACE.S1}`
3825
3945
  },
3826
3946
  errorMessage: {
3827
- fontSize: "13px",
3828
- color: "#6b7280",
3947
+ fontSize: FONT_SIZE.sm,
3948
+ color: COLOR.neutral500,
3829
3949
  margin: 0
3830
3950
  }
3831
3951
  };
@@ -3996,7 +4116,7 @@ function CollabPopup({
3996
4116
  "aria-label": isMinimized ? "Expand chat" : "Minimize chat",
3997
4117
  title: isMinimized ? "Expand" : "Minimize",
3998
4118
  type: "button",
3999
- children: isMinimized ? /* @__PURE__ */ jsx(ExpandIcon, { size: 16, color: "#cbd5e1" }) : /* @__PURE__ */ jsx(MinimizeIcon, { size: 16, color: "#cbd5e1" })
4119
+ children: isMinimized ? /* @__PURE__ */ jsx(ExpandIcon, { size: 16, color: COLOR.slate200 }) : /* @__PURE__ */ jsx(MinimizeIcon, { size: 16, color: COLOR.slate200 })
4000
4120
  }
4001
4121
  ),
4002
4122
  /* @__PURE__ */ jsx(
@@ -4007,7 +4127,7 @@ function CollabPopup({
4007
4127
  "aria-label": "Close chat",
4008
4128
  title: "Close",
4009
4129
  type: "button",
4010
- children: /* @__PURE__ */ jsx(CloseIcon, { size: 16, color: "#cbd5e1" })
4130
+ children: /* @__PURE__ */ jsx(CloseIcon, { size: 16, color: COLOR.slate200 })
4011
4131
  }
4012
4132
  )
4013
4133
  ] })
@@ -4020,14 +4140,14 @@ function CollabPopup({
4020
4140
  var styles13 = {
4021
4141
  container: {
4022
4142
  position: "fixed",
4023
- zIndex: 9999,
4024
- borderRadius: "12px",
4025
- boxShadow: "0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
4143
+ zIndex: Z_INDEX.dialog,
4144
+ borderRadius: RADIUS.lg,
4145
+ boxShadow: SHADOW.dialog,
4026
4146
  overflow: "hidden",
4027
4147
  display: "flex",
4028
4148
  flexDirection: "column",
4029
- backgroundColor: "#ffffff",
4030
- border: "1px solid #e5e7eb",
4149
+ backgroundColor: COLOR.white,
4150
+ border: `1px solid ${COLOR.neutral200}`,
4031
4151
  transition: "height 0.2s ease",
4032
4152
  fontFamily: FONT_STACK
4033
4153
  },
@@ -4035,37 +4155,37 @@ var styles13 = {
4035
4155
  display: "flex",
4036
4156
  justifyContent: "space-between",
4037
4157
  alignItems: "center",
4038
- padding: "0 8px 0 14px",
4158
+ padding: `0 ${SPACE.S2} 0 ${SPACE.S4}`,
4039
4159
  height: "52px",
4040
- backgroundColor: "#1e293b",
4160
+ backgroundColor: COLOR.slate800,
4041
4161
  cursor: "grab",
4042
4162
  userSelect: "none",
4043
4163
  flexShrink: 0
4044
4164
  },
4045
4165
  titleText: {
4046
- fontSize: "15px",
4047
- fontWeight: 500,
4048
- color: "#ffffff",
4166
+ fontSize: FONT_SIZE.md,
4167
+ fontWeight: FONT_WEIGHT.medium,
4168
+ color: COLOR.white,
4049
4169
  overflow: "hidden",
4050
4170
  textOverflow: "ellipsis",
4051
4171
  whiteSpace: "nowrap"
4052
4172
  },
4053
4173
  titleActions: {
4054
4174
  display: "flex",
4055
- gap: "4px",
4175
+ gap: SPACE.S1,
4056
4176
  flexShrink: 0
4057
4177
  },
4058
4178
  titleButton: {
4059
- width: "40px",
4060
- height: "40px",
4179
+ width: SIZE.control,
4180
+ height: SIZE.control,
4061
4181
  display: "flex",
4062
4182
  alignItems: "center",
4063
4183
  justifyContent: "center",
4064
4184
  backgroundColor: "transparent",
4065
4185
  border: "none",
4066
- borderRadius: "6px",
4186
+ borderRadius: RADIUS.md,
4067
4187
  cursor: "pointer",
4068
- color: "#cbd5e1"
4188
+ color: COLOR.slate200
4069
4189
  },
4070
4190
  panelWrapper: {
4071
4191
  flex: 1,
@@ -4538,55 +4658,55 @@ var styles14 = {
4538
4658
  display: "flex",
4539
4659
  flexDirection: "column",
4540
4660
  width: "100%",
4541
- padding: "6px 8px",
4542
- backgroundColor: "#ffffff",
4543
- border: "1px solid #e5e7eb",
4544
- borderRadius: "8px",
4661
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4662
+ backgroundColor: COLOR.white,
4663
+ border: `1px solid ${COLOR.neutral200}`,
4664
+ borderRadius: RADIUS.md,
4545
4665
  fontFamily: FONT_STACK
4546
4666
  },
4547
4667
  loadingState: {
4548
- padding: "8px",
4549
- fontSize: "12px",
4550
- color: "#9ca3af",
4668
+ padding: SPACE.S2,
4669
+ fontSize: FONT_SIZE.xs,
4670
+ color: COLOR.neutral500,
4551
4671
  textAlign: "center"
4552
4672
  },
4553
4673
  error: {
4554
- padding: "4px 8px",
4555
- marginBottom: "4px",
4556
- fontSize: "11px",
4557
- color: "#dc2626",
4558
- backgroundColor: "#fef2f2",
4559
- borderRadius: "4px"
4674
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4675
+ marginBottom: SPACE.S1,
4676
+ fontSize: FONT_SIZE.xs,
4677
+ color: COLOR.danger,
4678
+ backgroundColor: COLOR.dangerBg,
4679
+ borderRadius: RADIUS.sm
4560
4680
  },
4561
4681
  preview: {
4562
4682
  display: "flex",
4563
4683
  flexDirection: "column",
4564
4684
  gap: "2px",
4565
- marginBottom: "6px",
4566
- paddingBottom: "6px",
4567
- borderBottom: "1px solid #f3f4f6"
4685
+ marginBottom: SPACE.S1,
4686
+ paddingBottom: SPACE.S1,
4687
+ borderBottom: `1px solid ${COLOR.neutral100}`
4568
4688
  },
4569
4689
  messageRow: {
4570
4690
  display: "flex",
4571
4691
  alignItems: "center",
4572
- gap: "6px",
4573
- fontSize: "12px",
4574
- lineHeight: "1.4",
4692
+ gap: SPACE.S2,
4693
+ fontSize: FONT_SIZE.xs,
4694
+ lineHeight: LINE_HEIGHT.normal,
4575
4695
  overflow: "hidden"
4576
4696
  },
4577
4697
  roleDot: {
4578
4698
  flexShrink: 0,
4579
4699
  width: "6px",
4580
4700
  height: "6px",
4581
- borderRadius: "50%"
4701
+ borderRadius: RADIUS.full
4582
4702
  },
4583
4703
  senderName: {
4584
4704
  flexShrink: 0,
4585
- fontWeight: 600,
4586
- color: "#374151"
4705
+ fontWeight: FONT_WEIGHT.semibold,
4706
+ color: COLOR.neutral700
4587
4707
  },
4588
4708
  messageText: {
4589
- color: "#4b5563",
4709
+ color: COLOR.neutral600,
4590
4710
  overflow: "hidden",
4591
4711
  textOverflow: "ellipsis",
4592
4712
  whiteSpace: "nowrap",
@@ -4594,8 +4714,8 @@ var styles14 = {
4594
4714
  flex: 1
4595
4715
  },
4596
4716
  systemRow: {
4597
- fontSize: "11px",
4598
- color: "#9ca3af",
4717
+ fontSize: FONT_SIZE.xs,
4718
+ color: COLOR.neutral400,
4599
4719
  fontStyle: "italic",
4600
4720
  textAlign: "center",
4601
4721
  padding: "2px 0"
@@ -4607,11 +4727,11 @@ var styles14 = {
4607
4727
  audioPlayer: {
4608
4728
  display: "inline-flex",
4609
4729
  alignItems: "center",
4610
- gap: "6px",
4611
- padding: "2px 8px",
4612
- borderRadius: "12px",
4613
- backgroundColor: "#eff6ff",
4614
- border: "1px solid #dbeafe",
4730
+ gap: SPACE.S2,
4731
+ padding: `2px ${SPACE.S2}`,
4732
+ borderRadius: RADIUS.lg,
4733
+ backgroundColor: COLOR.primaryBg,
4734
+ border: `1px solid ${COLOR.primaryBg}`,
4615
4735
  flex: 1,
4616
4736
  minWidth: 0
4617
4737
  },
@@ -4621,11 +4741,11 @@ var styles14 = {
4621
4741
  display: "flex",
4622
4742
  alignItems: "center",
4623
4743
  justifyContent: "center",
4624
- fontSize: "10px",
4625
- color: "#ffffff",
4626
- backgroundColor: "#2563eb",
4744
+ fontSize: FONT_SIZE.xs,
4745
+ color: COLOR.white,
4746
+ backgroundColor: COLOR.primary,
4627
4747
  border: "none",
4628
- borderRadius: "50%",
4748
+ borderRadius: RADIUS.full,
4629
4749
  cursor: "pointer",
4630
4750
  flexShrink: 0
4631
4751
  },
@@ -4633,7 +4753,7 @@ var styles14 = {
4633
4753
  display: "inline-flex",
4634
4754
  alignItems: "center",
4635
4755
  gap: "2px",
4636
- height: "16px",
4756
+ height: SPACE.S4,
4637
4757
  flex: 1,
4638
4758
  minWidth: 0
4639
4759
  },
@@ -4641,27 +4761,27 @@ var styles14 = {
4641
4761
  display: "inline-block",
4642
4762
  width: "2px",
4643
4763
  borderRadius: "1px",
4644
- backgroundColor: "#60a5fa"
4764
+ backgroundColor: COLOR.primary
4645
4765
  },
4646
4766
  audioDuration: {
4647
- fontSize: "11px",
4648
- color: "#2563eb",
4767
+ fontSize: FONT_SIZE.xs,
4768
+ color: COLOR.primary,
4649
4769
  fontVariantNumeric: "tabular-nums",
4650
- fontWeight: 500,
4770
+ fontWeight: FONT_WEIGHT.medium,
4651
4771
  flexShrink: 0
4652
4772
  },
4653
4773
  // ── Input bar ──
4654
4774
  inputBar: {
4655
4775
  display: "flex",
4656
4776
  alignItems: "center",
4657
- gap: "6px"
4777
+ gap: SPACE.S2
4658
4778
  },
4659
4779
  input: {
4660
4780
  flex: 1,
4661
- padding: "6px 10px",
4662
- fontSize: "13px",
4663
- border: "1px solid #e5e7eb",
4664
- borderRadius: "16px",
4781
+ padding: `${SPACE.S2} ${SPACE.S3}`,
4782
+ fontSize: FONT_SIZE.sm,
4783
+ border: `1px solid ${COLOR.neutral200}`,
4784
+ borderRadius: RADIUS.pill,
4665
4785
  outline: "none",
4666
4786
  fontFamily: "inherit",
4667
4787
  minWidth: 0
@@ -4670,12 +4790,12 @@ var styles14 = {
4670
4790
  flexShrink: 0,
4671
4791
  minWidth: "18px",
4672
4792
  height: "18px",
4673
- padding: "0 5px",
4674
- fontSize: "10px",
4675
- fontWeight: 600,
4676
- color: "#ffffff",
4677
- backgroundColor: "#dc2626",
4678
- borderRadius: "10px",
4793
+ padding: `0 ${SPACE.S1}`,
4794
+ fontSize: FONT_SIZE.xs,
4795
+ fontWeight: FONT_WEIGHT.semibold,
4796
+ color: COLOR.white,
4797
+ backgroundColor: COLOR.danger,
4798
+ borderRadius: RADIUS.pill,
4679
4799
  display: "flex",
4680
4800
  alignItems: "center",
4681
4801
  justifyContent: "center"
@@ -4684,8 +4804,8 @@ var styles14 = {
4684
4804
  flexShrink: 0,
4685
4805
  width: "6px",
4686
4806
  height: "6px",
4687
- borderRadius: "50%",
4688
- backgroundColor: "#22c55e"
4807
+ borderRadius: RADIUS.full,
4808
+ backgroundColor: COLOR.success
4689
4809
  },
4690
4810
  sendButton: {
4691
4811
  flexShrink: 0,
@@ -4694,11 +4814,11 @@ var styles14 = {
4694
4814
  display: "flex",
4695
4815
  alignItems: "center",
4696
4816
  justifyContent: "center",
4697
- fontSize: "13px",
4698
- color: "#ffffff",
4699
- backgroundColor: "#2563eb",
4817
+ fontSize: FONT_SIZE.sm,
4818
+ color: COLOR.white,
4819
+ backgroundColor: COLOR.primary,
4700
4820
  border: "none",
4701
- borderRadius: "50%",
4821
+ borderRadius: RADIUS.full,
4702
4822
  cursor: "pointer"
4703
4823
  },
4704
4824
  expandButton: {
@@ -4708,11 +4828,11 @@ var styles14 = {
4708
4828
  display: "flex",
4709
4829
  alignItems: "center",
4710
4830
  justifyContent: "center",
4711
- fontSize: "12px",
4712
- color: "#6b7280",
4831
+ fontSize: FONT_SIZE.xs,
4832
+ color: COLOR.neutral500,
4713
4833
  backgroundColor: "transparent",
4714
- border: "1px solid #e5e7eb",
4715
- borderRadius: "50%",
4834
+ border: `1px solid ${COLOR.neutral200}`,
4835
+ borderRadius: RADIUS.full,
4716
4836
  cursor: "pointer"
4717
4837
  }};
4718
4838
  function useConversationList(options) {
@@ -4876,52 +4996,52 @@ var styles15 = {
4876
4996
  container: {
4877
4997
  display: "flex",
4878
4998
  alignItems: "center",
4879
- gap: "12px",
4880
- padding: "10px 12px",
4999
+ gap: SPACE.S3,
5000
+ padding: `${SPACE.S3} ${SPACE.S3}`,
4881
5001
  width: "100%",
4882
5002
  backgroundColor: "transparent",
4883
5003
  border: "none",
4884
- borderBottom: "1px solid #f3f4f6",
5004
+ borderBottom: `1px solid ${COLOR.neutral100}`,
4885
5005
  cursor: "pointer",
4886
5006
  textAlign: "left"
4887
5007
  },
4888
5008
  selected: {
4889
- backgroundColor: "#eff6ff"
5009
+ backgroundColor: COLOR.primaryBg
4890
5010
  },
4891
5011
  unread: {},
4892
5012
  avatarWrapper: {
4893
5013
  position: "relative",
4894
- width: "40px",
4895
- height: "40px",
5014
+ width: SIZE.avatar,
5015
+ height: SIZE.avatar,
4896
5016
  flexShrink: 0
4897
5017
  },
4898
5018
  avatar: {
4899
- width: "40px",
4900
- height: "40px",
4901
- borderRadius: "50%",
5019
+ width: SIZE.avatar,
5020
+ height: SIZE.avatar,
5021
+ borderRadius: RADIUS.full,
4902
5022
  objectFit: "cover"
4903
5023
  },
4904
5024
  avatarFallback: {
4905
- width: "40px",
4906
- height: "40px",
4907
- borderRadius: "50%",
4908
- backgroundColor: "#e5e7eb",
5025
+ width: SIZE.avatar,
5026
+ height: SIZE.avatar,
5027
+ borderRadius: RADIUS.full,
5028
+ backgroundColor: COLOR.neutral200,
4909
5029
  display: "flex",
4910
5030
  alignItems: "center",
4911
5031
  justifyContent: "center",
4912
- fontSize: "15px",
4913
- fontWeight: 600,
4914
- color: "#6b7280"
5032
+ fontSize: FONT_SIZE.md,
5033
+ fontWeight: FONT_WEIGHT.semibold,
5034
+ color: COLOR.neutral500
4915
5035
  },
4916
5036
  unreadDot: {
4917
5037
  position: "absolute",
4918
5038
  top: "0",
4919
5039
  left: "0",
4920
- width: "10px",
4921
- height: "10px",
4922
- borderRadius: "50%",
4923
- backgroundColor: "#2563eb",
4924
- border: "2px solid #ffffff"
5040
+ width: SIZE.dot,
5041
+ height: SIZE.dot,
5042
+ borderRadius: RADIUS.full,
5043
+ backgroundColor: COLOR.primary,
5044
+ border: `2px solid ${COLOR.white}`
4925
5045
  },
4926
5046
  content: {
4927
5047
  flex: 1,
@@ -4934,12 +5054,12 @@ var styles15 = {
4934
5054
  display: "flex",
4935
5055
  justifyContent: "space-between",
4936
5056
  alignItems: "baseline",
4937
- gap: "8px"
5057
+ gap: SPACE.S2
4938
5058
  },
4939
5059
  name: {
4940
- fontSize: "15px",
4941
- fontWeight: 500,
4942
- color: "#111827",
5060
+ fontSize: FONT_SIZE.md,
5061
+ fontWeight: FONT_WEIGHT.medium,
5062
+ color: COLOR.neutral900,
4943
5063
  overflow: "hidden",
4944
5064
  textOverflow: "ellipsis",
4945
5065
  whiteSpace: "nowrap",
@@ -4947,26 +5067,26 @@ var styles15 = {
4947
5067
  minWidth: 0
4948
5068
  },
4949
5069
  nameUnread: {
4950
- fontWeight: 700
5070
+ fontWeight: FONT_WEIGHT.bold
4951
5071
  },
4952
5072
  time: {
4953
- fontSize: "12px",
4954
- color: "#6b7280",
5073
+ fontSize: FONT_SIZE.xs,
5074
+ color: COLOR.neutral500,
4955
5075
  flexShrink: 0
4956
5076
  },
4957
5077
  timeUnread: {
4958
- color: "#2563eb",
4959
- fontWeight: 600
5078
+ color: COLOR.primary,
5079
+ fontWeight: FONT_WEIGHT.semibold
4960
5080
  },
4961
5081
  bottomRow: {
4962
5082
  display: "flex",
4963
5083
  justifyContent: "space-between",
4964
5084
  alignItems: "center",
4965
- gap: "8px"
5085
+ gap: SPACE.S2
4966
5086
  },
4967
5087
  preview: {
4968
- fontSize: "14px",
4969
- color: "#4b5563",
5088
+ fontSize: FONT_SIZE.sm,
5089
+ color: COLOR.neutral600,
4970
5090
  overflow: "hidden",
4971
5091
  textOverflow: "ellipsis",
4972
5092
  whiteSpace: "nowrap",
@@ -4974,18 +5094,18 @@ var styles15 = {
4974
5094
  minWidth: 0
4975
5095
  },
4976
5096
  previewUnread: {
4977
- color: "#111827",
4978
- fontWeight: 500
5097
+ color: COLOR.neutral900,
5098
+ fontWeight: FONT_WEIGHT.medium
4979
5099
  },
4980
5100
  badge: {
4981
5101
  minWidth: "20px",
4982
5102
  height: "20px",
4983
- padding: "0 6px",
4984
- fontSize: "11px",
4985
- fontWeight: 600,
4986
- color: "#ffffff",
4987
- backgroundColor: "#2563eb",
4988
- borderRadius: "10px",
5103
+ padding: `0 ${SPACE.S2}`,
5104
+ fontSize: FONT_SIZE.xs,
5105
+ fontWeight: FONT_WEIGHT.semibold,
5106
+ color: COLOR.white,
5107
+ backgroundColor: COLOR.primary,
5108
+ borderRadius: RADIUS.pill,
4989
5109
  display: "flex",
4990
5110
  alignItems: "center",
4991
5111
  justifyContent: "center",
@@ -5086,89 +5206,89 @@ var styles16 = {
5086
5206
  display: "flex",
5087
5207
  flexDirection: "column",
5088
5208
  height: "100%",
5089
- backgroundColor: "#ffffff",
5090
- borderRight: "1px solid #e5e7eb"
5209
+ backgroundColor: COLOR.white,
5210
+ borderRight: `1px solid ${COLOR.neutral200}`
5091
5211
  },
5092
5212
  header: {
5093
- padding: "12px",
5094
- borderBottom: "1px solid #e5e7eb",
5095
- backgroundColor: "#f9fafb",
5213
+ padding: SPACE.S3,
5214
+ borderBottom: `1px solid ${COLOR.neutral200}`,
5215
+ backgroundColor: COLOR.neutral50,
5096
5216
  flexShrink: 0
5097
5217
  },
5098
5218
  titleRow: {
5099
5219
  display: "flex",
5100
5220
  alignItems: "center",
5101
- gap: "8px",
5102
- marginBottom: "8px"
5221
+ gap: SPACE.S2,
5222
+ marginBottom: SPACE.S2
5103
5223
  },
5104
5224
  title: {
5105
5225
  margin: 0,
5106
- fontSize: "15px",
5107
- fontWeight: 600,
5108
- color: "#111827"
5226
+ fontSize: FONT_SIZE.md,
5227
+ fontWeight: FONT_WEIGHT.semibold,
5228
+ color: COLOR.neutral900
5109
5229
  },
5110
5230
  totalBadge: {
5111
5231
  minWidth: "20px",
5112
5232
  height: "20px",
5113
- padding: "0 6px",
5114
- fontSize: "11px",
5115
- fontWeight: 600,
5116
- color: "#ffffff",
5117
- backgroundColor: "#2563eb",
5118
- borderRadius: "10px",
5233
+ padding: `0 ${SPACE.S2}`,
5234
+ fontSize: FONT_SIZE.xs,
5235
+ fontWeight: FONT_WEIGHT.semibold,
5236
+ color: COLOR.white,
5237
+ backgroundColor: COLOR.primary,
5238
+ borderRadius: RADIUS.pill,
5119
5239
  display: "flex",
5120
5240
  alignItems: "center",
5121
5241
  justifyContent: "center"
5122
5242
  },
5123
5243
  searchRow: {
5124
- marginBottom: "8px"
5244
+ marginBottom: SPACE.S2
5125
5245
  },
5126
5246
  searchInput: {
5127
5247
  width: "100%",
5128
- padding: "6px 10px",
5129
- fontSize: "13px",
5130
- border: "1px solid #e5e7eb",
5131
- borderRadius: "6px",
5248
+ padding: `${SPACE.S2} ${SPACE.S3}`,
5249
+ fontSize: FONT_SIZE.sm,
5250
+ border: `1px solid ${COLOR.neutral200}`,
5251
+ borderRadius: RADIUS.md,
5132
5252
  outline: "none",
5133
5253
  fontFamily: "inherit"
5134
5254
  },
5135
5255
  filterRow: {
5136
5256
  display: "flex",
5137
- gap: "4px"
5257
+ gap: SPACE.S1
5138
5258
  },
5139
5259
  filterButton: {
5140
5260
  flex: 1,
5141
- padding: "5px 8px",
5142
- fontSize: "12px",
5143
- color: "#6b7280",
5144
- backgroundColor: "#ffffff",
5145
- border: "1px solid #e5e7eb",
5146
- borderRadius: "6px",
5261
+ padding: `${SPACE.S1} ${SPACE.S2}`,
5262
+ fontSize: FONT_SIZE.xs,
5263
+ color: COLOR.neutral500,
5264
+ backgroundColor: COLOR.white,
5265
+ border: `1px solid ${COLOR.neutral200}`,
5266
+ borderRadius: RADIUS.md,
5147
5267
  cursor: "pointer"
5148
5268
  },
5149
5269
  filterButtonActive: {
5150
- color: "#ffffff",
5151
- backgroundColor: "#2563eb",
5152
- borderColor: "#2563eb",
5153
- fontWeight: 500
5270
+ color: COLOR.white,
5271
+ backgroundColor: COLOR.primary,
5272
+ borderColor: COLOR.primary,
5273
+ fontWeight: FONT_WEIGHT.medium
5154
5274
  },
5155
5275
  list: {
5156
5276
  flex: 1,
5157
5277
  overflowY: "auto"
5158
5278
  },
5159
5279
  state: {
5160
- padding: "24px 16px",
5161
- fontSize: "13px",
5162
- color: "#9ca3af",
5280
+ padding: `${SPACE.S6} ${SPACE.S4}`,
5281
+ fontSize: FONT_SIZE.sm,
5282
+ color: COLOR.neutral500,
5163
5283
  textAlign: "center"
5164
5284
  },
5165
5285
  errorState: {
5166
- padding: "16px",
5167
- fontSize: "13px",
5168
- color: "#dc2626",
5169
- backgroundColor: "#fef2f2",
5170
- margin: "12px",
5171
- borderRadius: "6px",
5286
+ padding: SPACE.S4,
5287
+ fontSize: FONT_SIZE.sm,
5288
+ color: COLOR.danger,
5289
+ backgroundColor: COLOR.dangerBg,
5290
+ margin: SPACE.S3,
5291
+ borderRadius: RADIUS.md,
5172
5292
  textAlign: "center"
5173
5293
  }
5174
5294
  };
@@ -5235,6 +5355,18 @@ function CollabInbox({
5235
5355
  }
5236
5356
  function buildPatientData(item) {
5237
5357
  if (item.patientSnapshot) return item.patientSnapshot;
5358
+ const parts = item.name.split(" - ");
5359
+ if (parts.length >= 3) {
5360
+ const last4 = parts[parts.length - 1];
5361
+ const labName = parts[parts.length - 2];
5362
+ const patientName = parts.slice(0, parts.length - 2).join(" - ");
5363
+ return {
5364
+ patientName,
5365
+ labName: labName || void 0,
5366
+ orderId: item.orderId,
5367
+ displayOrderId: last4
5368
+ };
5369
+ }
5238
5370
  return {
5239
5371
  patientName: item.name,
5240
5372
  orderId: item.orderId
@@ -5252,7 +5384,7 @@ var styles17 = {
5252
5384
  display: "flex",
5253
5385
  height: "100%",
5254
5386
  width: "100%",
5255
- backgroundColor: "#ffffff",
5387
+ backgroundColor: COLOR.white,
5256
5388
  fontFamily: FONT_STACK
5257
5389
  },
5258
5390
  sidebar: {
@@ -5273,15 +5405,15 @@ var styles17 = {
5273
5405
  display: "flex",
5274
5406
  flexDirection: "column",
5275
5407
  minWidth: 0,
5276
- padding: "12px",
5277
- backgroundColor: "#f3f4f6"
5408
+ padding: SPACE.S3,
5409
+ backgroundColor: COLOR.neutral100
5278
5410
  },
5279
5411
  mainCompact: {
5280
5412
  flex: 1,
5281
5413
  display: "flex",
5282
5414
  flexDirection: "column",
5283
5415
  minWidth: 0,
5284
- backgroundColor: "#f3f4f6"
5416
+ backgroundColor: COLOR.neutral100
5285
5417
  },
5286
5418
  panel: {
5287
5419
  height: "100%",
@@ -5293,23 +5425,23 @@ var styles17 = {
5293
5425
  flexDirection: "column",
5294
5426
  alignItems: "center",
5295
5427
  justifyContent: "center",
5296
- padding: "48px 24px",
5428
+ padding: `${SPACE.S12} ${SPACE.S6}`,
5297
5429
  textAlign: "center"
5298
5430
  },
5299
5431
  emptyIcon: {
5300
- fontSize: "48px",
5301
- marginBottom: "12px"
5432
+ fontSize: FONT_SIZE.xxl,
5433
+ marginBottom: SPACE.S3
5302
5434
  },
5303
5435
  emptyTitle: {
5304
- margin: "0 0 6px",
5305
- fontSize: "16px",
5306
- fontWeight: 600,
5307
- color: "#374151"
5436
+ margin: `0 0 ${SPACE.S2}`,
5437
+ fontSize: FONT_SIZE.lg,
5438
+ fontWeight: FONT_WEIGHT.semibold,
5439
+ color: COLOR.neutral700
5308
5440
  },
5309
5441
  emptySubtitle: {
5310
5442
  margin: 0,
5311
- fontSize: "13px",
5312
- color: "#6b7280",
5443
+ fontSize: FONT_SIZE.sm,
5444
+ color: COLOR.neutral500,
5313
5445
  maxWidth: "320px"
5314
5446
  }
5315
5447
  };