@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.js CHANGED
@@ -1202,6 +1202,102 @@ function BackIcon({ size = 22, color = "currentColor" }) {
1202
1202
  }
1203
1203
  );
1204
1204
  }
1205
+
1206
+ // src/core/theme.ts
1207
+ var FONT_SIZE = {
1208
+ xs: "12px",
1209
+ sm: "13px",
1210
+ md: "15px",
1211
+ lg: "17px",
1212
+ xxl: "28px"
1213
+ };
1214
+ var FONT_WEIGHT = {
1215
+ regular: 400,
1216
+ medium: 500,
1217
+ semibold: 600,
1218
+ bold: 700
1219
+ };
1220
+ var LINE_HEIGHT = {
1221
+ tight: 1.3,
1222
+ normal: 1.45};
1223
+ var SPACE = {
1224
+ S1: "4px",
1225
+ S2: "8px",
1226
+ S3: "12px",
1227
+ S4: "16px",
1228
+ S5: "20px",
1229
+ S6: "24px",
1230
+ S12: "48px"
1231
+ };
1232
+ var RADIUS = {
1233
+ sm: "4px",
1234
+ md: "8px",
1235
+ lg: "12px",
1236
+ pill: "9999px",
1237
+ full: "50%"
1238
+ };
1239
+ var COLOR = {
1240
+ // Brand
1241
+ primary: "#2563eb",
1242
+ /** Tinted surface for chips/cards on brand-coloured states. */
1243
+ primaryBg: "#dbeafe",
1244
+ primaryFg: "#1d4ed8",
1245
+ // Neutral grayscale — taken from Tailwind's zinc-leaning slate, the
1246
+ // existing dominant family in the package.
1247
+ white: "#ffffff",
1248
+ neutral50: "#f9fafb",
1249
+ neutral100: "#f3f4f6",
1250
+ neutral200: "#e5e7eb",
1251
+ neutral300: "#d1d5db",
1252
+ neutral400: "#9ca3af",
1253
+ neutral500: "#6b7280",
1254
+ neutral600: "#4b5563",
1255
+ neutral700: "#374151",
1256
+ neutral800: "#1f2937",
1257
+ neutral900: "#111827",
1258
+ // Slate (used by day dividers + dialog title bar)
1259
+ slate200: "#e2e8f0",
1260
+ slate700: "#334155",
1261
+ slate800: "#1e293b",
1262
+ // Semantic
1263
+ success: "#059669",
1264
+ warning: "#d97706",
1265
+ danger: "#dc2626",
1266
+ dangerBg: "#fef2f2",
1267
+ dangerBorder: "#fecaca",
1268
+ dangerFg: "#b91c1c"
1269
+ };
1270
+ var SIZE = {
1271
+ /** Default interactive height (text buttons, list rows). */
1272
+ control: "40px",
1273
+ /** Square icon-only buttons inside chrome (popup title, menu trigger). */
1274
+ controlIcon: "36px",
1275
+ /** Primary input controls (textarea send/attach). 44px = WCAG min. */
1276
+ controlPrimary: "44px",
1277
+ /** Avatar in the inbox row. */
1278
+ avatar: "40px",
1279
+ /** Unread dot. */
1280
+ dot: "10px"
1281
+ };
1282
+ var SHADOW = {
1283
+ /** Cards / floating popovers (message-actions menu). */
1284
+ popover: "0 6px 18px rgba(0, 0, 0, 0.12)",
1285
+ /** Dialog (CollabPopup). */
1286
+ dialog: "0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
1287
+ /** Subtle separator shadow (sticky day divider, toast). */
1288
+ subtle: "0 1px 2px rgba(0, 0, 0, 0.04)",
1289
+ toast: "0 4px 12px rgba(0, 0, 0, 0.18)"
1290
+ };
1291
+ var Z_INDEX = {
1292
+ /** Sticky day divider — above bubbles, below interactive popovers. */
1293
+ sticky: 1,
1294
+ /** Toasts inside a panel. */
1295
+ toast: 20,
1296
+ /** Floating CollabPopup dialog. */
1297
+ dialog: 9999,
1298
+ /** Portaled message-actions menu — must sit above the dialog. */
1299
+ menu: 1e4
1300
+ };
1205
1301
  function PatientHeader({
1206
1302
  patientData,
1207
1303
  onOpenDicom,
@@ -1230,7 +1326,7 @@ function PatientHeader({
1230
1326
  style: styles.backButton,
1231
1327
  "aria-label": "Back to conversations",
1232
1328
  title: "Back to conversations",
1233
- children: /* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 22, color: "#1f2937" })
1329
+ children: /* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 22, color: COLOR.neutral800 })
1234
1330
  }
1235
1331
  ),
1236
1332
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles.nameText, children: buildChannelName(patientData) })
@@ -1252,7 +1348,7 @@ function PatientHeader({
1252
1348
  type: "button",
1253
1349
  "aria-label": "View DICOM study",
1254
1350
  children: [
1255
- /* @__PURE__ */ jsxRuntime.jsx(DicomIcon, { size: 18, color: "#ffffff" }),
1351
+ /* @__PURE__ */ jsxRuntime.jsx(DicomIcon, { size: 18, color: COLOR.white }),
1256
1352
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "View DICOM" })
1257
1353
  ]
1258
1354
  }
@@ -1265,7 +1361,7 @@ function PatientHeader({
1265
1361
  type: "button",
1266
1362
  "aria-label": "Open channel settings",
1267
1363
  children: [
1268
- /* @__PURE__ */ jsxRuntime.jsx(SettingsIcon, { size: 18, color: "#374151" }),
1364
+ /* @__PURE__ */ jsxRuntime.jsx(SettingsIcon, { size: 18, color: COLOR.neutral700 }),
1269
1365
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Settings" })
1270
1366
  ]
1271
1367
  }
@@ -1275,33 +1371,33 @@ function PatientHeader({
1275
1371
  }
1276
1372
  var styles = {
1277
1373
  container: {
1278
- padding: "14px 16px",
1279
- borderBottom: "1px solid #e5e7eb",
1280
- backgroundColor: "#f9fafb"
1374
+ padding: `${SPACE.S3} ${SPACE.S4}`,
1375
+ borderBottom: `1px solid ${COLOR.neutral200}`,
1376
+ backgroundColor: COLOR.neutral50
1281
1377
  },
1282
1378
  nameRow: {
1283
1379
  display: "flex",
1284
1380
  alignItems: "center",
1285
- gap: "6px"
1381
+ gap: SPACE.S2
1286
1382
  },
1287
1383
  backButton: {
1288
- width: "36px",
1289
- height: "36px",
1384
+ width: SIZE.controlIcon,
1385
+ height: SIZE.controlIcon,
1290
1386
  display: "flex",
1291
1387
  alignItems: "center",
1292
1388
  justifyContent: "center",
1293
- marginLeft: "-8px",
1389
+ marginLeft: `-${SPACE.S2}`,
1294
1390
  backgroundColor: "transparent",
1295
1391
  border: "none",
1296
- borderRadius: "50%",
1392
+ borderRadius: RADIUS.full,
1297
1393
  cursor: "pointer",
1298
1394
  flexShrink: 0
1299
1395
  },
1300
1396
  nameText: {
1301
- fontSize: "18px",
1302
- fontWeight: 600,
1303
- color: "#111827",
1304
- lineHeight: 1.3,
1397
+ fontSize: FONT_SIZE.lg,
1398
+ fontWeight: FONT_WEIGHT.semibold,
1399
+ color: COLOR.neutral900,
1400
+ lineHeight: LINE_HEIGHT.tight,
1305
1401
  minWidth: 0,
1306
1402
  overflow: "hidden",
1307
1403
  textOverflow: "ellipsis",
@@ -1310,53 +1406,53 @@ var styles = {
1310
1406
  metaRow: {
1311
1407
  display: "flex",
1312
1408
  flexWrap: "wrap",
1313
- columnGap: "14px",
1314
- rowGap: "4px",
1315
- marginTop: "6px"
1409
+ columnGap: SPACE.S3,
1410
+ rowGap: SPACE.S1,
1411
+ marginTop: SPACE.S1
1316
1412
  },
1317
1413
  metaItem: {
1318
- fontSize: "13px",
1319
- color: "#374151",
1414
+ fontSize: FONT_SIZE.sm,
1415
+ color: COLOR.neutral700,
1320
1416
  whiteSpace: "nowrap"
1321
1417
  },
1322
1418
  metaLabel: {
1323
- color: "#6b7280",
1324
- fontWeight: 500
1419
+ color: COLOR.neutral500,
1420
+ fontWeight: FONT_WEIGHT.medium
1325
1421
  },
1326
1422
  metaValue: {
1327
- color: "#111827"
1423
+ color: COLOR.neutral900
1328
1424
  },
1329
1425
  actions: {
1330
1426
  display: "flex",
1331
- gap: "8px",
1332
- marginTop: "10px"
1427
+ gap: SPACE.S2,
1428
+ marginTop: SPACE.S3
1333
1429
  },
1334
1430
  dicomButton: {
1335
1431
  display: "inline-flex",
1336
1432
  alignItems: "center",
1337
- gap: "8px",
1338
- minHeight: "40px",
1339
- padding: "8px 16px",
1340
- fontSize: "14px",
1341
- fontWeight: 500,
1342
- color: "#ffffff",
1343
- backgroundColor: "#2563eb",
1433
+ gap: SPACE.S2,
1434
+ minHeight: SIZE.control,
1435
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1436
+ fontSize: FONT_SIZE.sm,
1437
+ fontWeight: FONT_WEIGHT.medium,
1438
+ color: COLOR.white,
1439
+ backgroundColor: COLOR.primary,
1344
1440
  border: "none",
1345
- borderRadius: "6px",
1441
+ borderRadius: RADIUS.md,
1346
1442
  cursor: "pointer"
1347
1443
  },
1348
1444
  settingsButton: {
1349
1445
  display: "inline-flex",
1350
1446
  alignItems: "center",
1351
- gap: "8px",
1352
- minHeight: "40px",
1353
- padding: "8px 16px",
1354
- fontSize: "14px",
1355
- fontWeight: 500,
1356
- color: "#374151",
1357
- backgroundColor: "#ffffff",
1358
- border: "1px solid #d1d5db",
1359
- borderRadius: "6px",
1447
+ gap: SPACE.S2,
1448
+ minHeight: SIZE.control,
1449
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1450
+ fontSize: FONT_SIZE.sm,
1451
+ fontWeight: FONT_WEIGHT.medium,
1452
+ color: COLOR.neutral700,
1453
+ backgroundColor: COLOR.white,
1454
+ border: `1px solid ${COLOR.neutral300}`,
1455
+ borderRadius: RADIUS.md,
1360
1456
  cursor: "pointer"
1361
1457
  }
1362
1458
  };
@@ -1366,10 +1462,10 @@ function ReplyQuoteBlock({
1366
1462
  onClick,
1367
1463
  className
1368
1464
  }) {
1369
- const baseBg = inOwnBubble ? "rgba(255,255,255,0.18)" : "#f3f4f6";
1370
- const barColor = inOwnBubble ? "#ffffff" : "#2563eb";
1371
- const nameColor = inOwnBubble ? "#ffffff" : "#2563eb";
1372
- const bodyColor = inOwnBubble ? "rgba(255,255,255,0.85)" : "#4b5563";
1465
+ const baseBg = inOwnBubble ? "rgba(255,255,255,0.18)" : COLOR.neutral100;
1466
+ const barColor = inOwnBubble ? COLOR.white : COLOR.primary;
1467
+ const nameColor = inOwnBubble ? COLOR.white : COLOR.primary;
1468
+ const bodyColor = inOwnBubble ? "rgba(255,255,255,0.85)" : COLOR.neutral600;
1373
1469
  const preview = renderSnapshotPreview(snapshot);
1374
1470
  return /* @__PURE__ */ jsxRuntime.jsxs(
1375
1471
  "div",
@@ -1408,10 +1504,10 @@ function renderSnapshotPreview(snapshot) {
1408
1504
  var styles2 = {
1409
1505
  container: {
1410
1506
  display: "flex",
1411
- gap: "6px",
1412
- padding: "4px 8px",
1413
- marginBottom: "4px",
1414
- borderRadius: "6px",
1507
+ gap: SPACE.S2,
1508
+ padding: `${SPACE.S1} ${SPACE.S2}`,
1509
+ marginBottom: SPACE.S1,
1510
+ borderRadius: RADIUS.sm,
1415
1511
  cursor: "pointer",
1416
1512
  maxWidth: "100%"
1417
1513
  },
@@ -1428,13 +1524,13 @@ var styles2 = {
1428
1524
  overflow: "hidden"
1429
1525
  },
1430
1526
  senderName: {
1431
- fontSize: "11px",
1432
- fontWeight: 600,
1433
- lineHeight: "1.2"
1527
+ fontSize: FONT_SIZE.xs,
1528
+ fontWeight: FONT_WEIGHT.semibold,
1529
+ lineHeight: LINE_HEIGHT.tight
1434
1530
  },
1435
1531
  body: {
1436
- fontSize: "11px",
1437
- lineHeight: "1.3",
1532
+ fontSize: FONT_SIZE.xs,
1533
+ lineHeight: LINE_HEIGHT.tight,
1438
1534
  overflow: "hidden",
1439
1535
  textOverflow: "ellipsis",
1440
1536
  whiteSpace: "nowrap"
@@ -1481,22 +1577,22 @@ var styles3 = {
1481
1577
  container: {
1482
1578
  display: "flex",
1483
1579
  alignItems: "center",
1484
- gap: "4px",
1580
+ gap: SPACE.S1,
1485
1581
  marginTop: "2px",
1486
- fontSize: "10px",
1487
- opacity: 0.75
1582
+ fontSize: FONT_SIZE.xs,
1583
+ opacity: 0.85
1488
1584
  },
1489
1585
  checkmark: {
1490
- fontSize: "10px",
1491
- color: "#60a5fa"
1586
+ fontSize: FONT_SIZE.xs,
1587
+ color: COLOR.primary
1492
1588
  },
1493
1589
  label: {
1494
- fontSize: "10px",
1590
+ fontSize: FONT_SIZE.xs,
1495
1591
  color: "inherit"
1496
1592
  },
1497
1593
  moreButton: {
1498
- fontSize: "10px",
1499
- fontWeight: 600,
1594
+ fontSize: FONT_SIZE.xs,
1595
+ fontWeight: FONT_WEIGHT.semibold,
1500
1596
  color: "inherit",
1501
1597
  backgroundColor: "transparent",
1502
1598
  border: "none",
@@ -1664,7 +1760,7 @@ function MessageActionsMenu({
1664
1760
  onClick: () => run(() => onReply(message)),
1665
1761
  style: styles4.item,
1666
1762
  children: [
1667
- /* @__PURE__ */ jsxRuntime.jsx(ReplyIcon, { size: 18, color: "#374151" }),
1763
+ /* @__PURE__ */ jsxRuntime.jsx(ReplyIcon, { size: 18, color: COLOR.neutral700 }),
1668
1764
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Reply" })
1669
1765
  ]
1670
1766
  }
@@ -1677,7 +1773,7 @@ function MessageActionsMenu({
1677
1773
  onClick: () => run(() => onUnpin(message.id)),
1678
1774
  style: styles4.item,
1679
1775
  children: [
1680
- /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: "#374151" }),
1776
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1681
1777
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Unpin" })
1682
1778
  ]
1683
1779
  }
@@ -1694,7 +1790,7 @@ function MessageActionsMenu({
1694
1790
  },
1695
1791
  title: pinDisabled ? "Pin limit reached (max 3)" : void 0,
1696
1792
  children: [
1697
- /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: "#374151" }),
1793
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1698
1794
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: pinDisabled ? "Pin (limit reached)" : "Pin" })
1699
1795
  ]
1700
1796
  }
@@ -1707,7 +1803,7 @@ function MessageActionsMenu({
1707
1803
  onClick: () => run(() => onCopy(message.body)),
1708
1804
  style: styles4.item,
1709
1805
  children: [
1710
- /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, { size: 16, color: "#374151" }),
1806
+ /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, { size: 16, color: COLOR.neutral700 }),
1711
1807
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Copy text" })
1712
1808
  ]
1713
1809
  }
@@ -1730,7 +1826,7 @@ function MessageActionsMenu({
1730
1826
  "aria-expanded": isOpen ? "true" : "false",
1731
1827
  title: "Message actions",
1732
1828
  style: styles4.trigger,
1733
- children: /* @__PURE__ */ jsxRuntime.jsx(MoreIcon, { size: 18, color: "#4b5563" })
1829
+ children: /* @__PURE__ */ jsxRuntime.jsx(MoreIcon, { size: 18, color: COLOR.neutral600 })
1734
1830
  }
1735
1831
  ),
1736
1832
  menu && typeof document !== "undefined" ? reactDom.createPortal(menu, document.body) : null
@@ -1742,45 +1838,45 @@ var styles4 = {
1742
1838
  display: "inline-block"
1743
1839
  },
1744
1840
  trigger: {
1745
- width: "36px",
1746
- height: "36px",
1841
+ width: SIZE.controlIcon,
1842
+ height: SIZE.controlIcon,
1747
1843
  display: "flex",
1748
1844
  alignItems: "center",
1749
1845
  justifyContent: "center",
1750
1846
  backgroundColor: "transparent",
1751
1847
  border: "none",
1752
- borderRadius: "50%",
1848
+ borderRadius: RADIUS.full,
1753
1849
  cursor: "pointer",
1754
- color: "#4b5563"
1850
+ color: COLOR.neutral600
1755
1851
  },
1756
1852
  menu: {
1757
1853
  position: "fixed",
1758
1854
  minWidth: "160px",
1759
- backgroundColor: "#ffffff",
1760
- border: "1px solid #e5e7eb",
1761
- borderRadius: "10px",
1762
- boxShadow: "0 6px 18px rgba(0, 0, 0, 0.12)",
1763
- padding: "4px",
1764
- // Above the floating popup (z-index 9999) but below any future modal.
1765
- zIndex: 1e4
1855
+ backgroundColor: COLOR.white,
1856
+ border: `1px solid ${COLOR.neutral200}`,
1857
+ borderRadius: RADIUS.md,
1858
+ boxShadow: SHADOW.popover,
1859
+ padding: SPACE.S1,
1860
+ // Above the floating popup (z-index dialog) but below any future modal.
1861
+ zIndex: Z_INDEX.menu
1766
1862
  },
1767
1863
  item: {
1768
1864
  display: "flex",
1769
1865
  alignItems: "center",
1770
- gap: "10px",
1866
+ gap: SPACE.S3,
1771
1867
  width: "100%",
1772
- minHeight: "40px",
1773
- padding: "8px 12px",
1774
- fontSize: "14px",
1775
- color: "#111827",
1868
+ minHeight: SIZE.control,
1869
+ padding: `${SPACE.S2} ${SPACE.S3}`,
1870
+ fontSize: FONT_SIZE.sm,
1871
+ color: COLOR.neutral900,
1776
1872
  backgroundColor: "transparent",
1777
1873
  border: "none",
1778
- borderRadius: "6px",
1874
+ borderRadius: RADIUS.sm,
1779
1875
  cursor: "pointer",
1780
1876
  textAlign: "left"
1781
1877
  },
1782
1878
  itemDisabled: {
1783
- color: "#9ca3af",
1879
+ color: COLOR.neutral400,
1784
1880
  cursor: "not-allowed"
1785
1881
  }
1786
1882
  };
@@ -1812,7 +1908,7 @@ function AlertIcon({ size = 14, color = "currentColor" }) {
1812
1908
  }
1813
1909
  );
1814
1910
  }
1815
- function Spinner({ size = 16, color = "#6b7280", thickness = 2 }) {
1911
+ function Spinner({ size = 16, color = COLOR.neutral500, thickness = 2 }) {
1816
1912
  return /* @__PURE__ */ jsxRuntime.jsx(
1817
1913
  "span",
1818
1914
  {
@@ -2050,10 +2146,10 @@ var styles5 = {
2050
2146
  wrapper: {
2051
2147
  display: "flex",
2052
2148
  alignItems: "flex-end",
2053
- gap: "4px",
2054
- marginBottom: "8px",
2055
- paddingLeft: "16px",
2056
- paddingRight: "16px"
2149
+ gap: SPACE.S1,
2150
+ marginBottom: SPACE.S2,
2151
+ paddingLeft: SPACE.S4,
2152
+ paddingRight: SPACE.S4
2057
2153
  },
2058
2154
  bubbleWrapper: {
2059
2155
  position: "relative",
@@ -2064,64 +2160,64 @@ var styles5 = {
2064
2160
  alignSelf: "flex-end"
2065
2161
  },
2066
2162
  bubble: {
2067
- padding: "10px 14px",
2068
- borderRadius: "12px",
2163
+ padding: `${SPACE.S3} ${SPACE.S4}`,
2164
+ borderRadius: RADIUS.lg,
2069
2165
  wordBreak: "break-word"
2070
2166
  },
2071
2167
  ownBubble: {
2072
- backgroundColor: "#2563eb",
2073
- color: "#ffffff",
2074
- borderBottomRightRadius: "4px"
2168
+ backgroundColor: COLOR.primary,
2169
+ color: COLOR.white,
2170
+ borderBottomRightRadius: RADIUS.sm
2075
2171
  },
2076
2172
  otherBubble: {
2077
- backgroundColor: "#f3f4f6",
2078
- color: "#111827",
2079
- borderBottomLeftRadius: "4px"
2173
+ backgroundColor: COLOR.neutral100,
2174
+ color: COLOR.neutral900,
2175
+ borderBottomLeftRadius: RADIUS.sm
2080
2176
  },
2081
2177
  pinnedBadge: {
2082
2178
  display: "inline-flex",
2083
2179
  alignItems: "center",
2084
- gap: "4px",
2085
- fontSize: "12px",
2086
- fontWeight: 600,
2087
- marginBottom: "4px",
2088
- color: "#6b7280"
2180
+ gap: SPACE.S1,
2181
+ fontSize: FONT_SIZE.xs,
2182
+ fontWeight: FONT_WEIGHT.semibold,
2183
+ marginBottom: SPACE.S1,
2184
+ color: COLOR.neutral500
2089
2185
  },
2090
2186
  senderRow: {
2091
2187
  display: "flex",
2092
2188
  alignItems: "center",
2093
- gap: "6px",
2094
- marginBottom: "4px"
2189
+ gap: SPACE.S2,
2190
+ marginBottom: SPACE.S1
2095
2191
  },
2096
2192
  senderName: {
2097
- fontSize: "13px",
2098
- fontWeight: 600,
2099
- color: "#374151"
2193
+ fontSize: FONT_SIZE.sm,
2194
+ fontWeight: FONT_WEIGHT.semibold,
2195
+ color: COLOR.neutral700
2100
2196
  },
2101
2197
  roleBadge: {
2102
- fontSize: "11px",
2103
- fontWeight: 600,
2104
- padding: "2px 8px",
2105
- borderRadius: "4px"
2198
+ fontSize: FONT_SIZE.xs,
2199
+ fontWeight: FONT_WEIGHT.semibold,
2200
+ padding: `2px ${SPACE.S2}`,
2201
+ borderRadius: RADIUS.sm
2106
2202
  },
2107
2203
  textBody: {
2108
2204
  margin: 0,
2109
- fontSize: "15px",
2110
- lineHeight: "1.45"
2205
+ fontSize: FONT_SIZE.md,
2206
+ lineHeight: LINE_HEIGHT.normal
2111
2207
  },
2112
2208
  timestamp: {
2113
- fontSize: "12px",
2209
+ fontSize: FONT_SIZE.xs,
2114
2210
  color: "inherit",
2115
2211
  opacity: 0.8,
2116
- marginTop: "4px",
2212
+ marginTop: SPACE.S1,
2117
2213
  textAlign: "right"
2118
2214
  },
2119
2215
  statusRow: {
2120
2216
  display: "flex",
2121
2217
  alignItems: "center",
2122
- gap: "6px",
2123
- marginTop: "4px",
2124
- fontSize: "12px",
2218
+ gap: SPACE.S2,
2219
+ marginTop: SPACE.S1,
2220
+ fontSize: FONT_SIZE.xs,
2125
2221
  justifyContent: "flex-end",
2126
2222
  color: "rgba(255, 255, 255, 0.9)"
2127
2223
  },
@@ -2131,48 +2227,48 @@ var styles5 = {
2131
2227
  retryButton: {
2132
2228
  background: "transparent",
2133
2229
  border: "none",
2134
- color: "#ffffff",
2135
- fontWeight: 600,
2136
- fontSize: "12px",
2230
+ color: COLOR.white,
2231
+ fontWeight: FONT_WEIGHT.semibold,
2232
+ fontSize: FONT_SIZE.xs,
2137
2233
  textDecoration: "underline",
2138
2234
  cursor: "pointer",
2139
- padding: "0 2px"
2235
+ padding: `0 ${SPACE.S1}`
2140
2236
  },
2141
2237
  audioContainer: {
2142
2238
  display: "flex",
2143
2239
  alignItems: "center",
2144
- gap: "8px"
2240
+ gap: SPACE.S2
2145
2241
  },
2146
2242
  audioPlayer: {
2147
2243
  height: "32px",
2148
2244
  maxWidth: "220px"
2149
2245
  },
2150
2246
  audioDuration: {
2151
- fontSize: "12px",
2247
+ fontSize: FONT_SIZE.xs,
2152
2248
  opacity: 0.7,
2153
2249
  whiteSpace: "nowrap"
2154
2250
  },
2155
2251
  imagePreview: {
2156
2252
  maxWidth: "240px",
2157
2253
  maxHeight: "180px",
2158
- borderRadius: "8px",
2254
+ borderRadius: RADIUS.md,
2159
2255
  objectFit: "cover",
2160
2256
  cursor: "pointer"
2161
2257
  },
2162
2258
  fileLink: {
2163
2259
  display: "flex",
2164
2260
  alignItems: "center",
2165
- gap: "6px",
2261
+ gap: SPACE.S2,
2166
2262
  textDecoration: "none",
2167
2263
  color: "inherit",
2168
- padding: "6px 0"
2264
+ padding: `${SPACE.S1} 0`
2169
2265
  },
2170
2266
  fileName: {
2171
- fontSize: "13px",
2267
+ fontSize: FONT_SIZE.sm,
2172
2268
  textDecoration: "underline"
2173
2269
  },
2174
2270
  deepLink: {
2175
- color: "#3b82f6",
2271
+ color: COLOR.primary,
2176
2272
  textDecoration: "underline",
2177
2273
  cursor: "pointer"
2178
2274
  },
@@ -2180,34 +2276,34 @@ var styles5 = {
2180
2276
  display: "flex",
2181
2277
  flexDirection: "column",
2182
2278
  gap: "2px",
2183
- padding: "8px",
2184
- backgroundColor: "#eff6ff",
2185
- borderRadius: "8px",
2186
- border: "1px solid #bfdbfe",
2279
+ padding: SPACE.S2,
2280
+ backgroundColor: COLOR.primaryBg,
2281
+ borderRadius: RADIUS.md,
2282
+ border: `1px solid ${COLOR.primaryBg}`,
2187
2283
  cursor: "pointer"
2188
2284
  },
2189
2285
  deepLinkLabel: {
2190
- fontSize: "13px",
2191
- fontWeight: 500,
2192
- color: "#1d4ed8"
2286
+ fontSize: FONT_SIZE.sm,
2287
+ fontWeight: FONT_WEIGHT.medium,
2288
+ color: COLOR.primaryFg
2193
2289
  },
2194
2290
  deepLinkPath: {
2195
- fontSize: "11px",
2196
- color: "#6b7280",
2291
+ fontSize: FONT_SIZE.xs,
2292
+ color: COLOR.neutral500,
2197
2293
  fontFamily: "monospace"
2198
2294
  },
2199
2295
  systemMessage: {
2200
2296
  display: "flex",
2201
2297
  justifyContent: "center",
2202
2298
  alignItems: "center",
2203
- gap: "8px",
2204
- padding: "6px 16px",
2205
- fontSize: "13px",
2206
- color: "#6b7280"
2299
+ gap: SPACE.S2,
2300
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2301
+ fontSize: FONT_SIZE.sm,
2302
+ color: COLOR.neutral500
2207
2303
  },
2208
2304
  systemTime: {
2209
- fontSize: "12px",
2210
- color: "#9ca3af"
2305
+ fontSize: FONT_SIZE.xs,
2306
+ color: COLOR.neutral400
2211
2307
  }
2212
2308
  };
2213
2309
  function ChatIllustration({ size = 96 }) {
@@ -2462,34 +2558,34 @@ var styles6 = {
2462
2558
  container: {
2463
2559
  flex: 1,
2464
2560
  overflowY: "auto",
2465
- paddingTop: "12px",
2466
- paddingBottom: "8px"
2561
+ paddingTop: SPACE.S3,
2562
+ paddingBottom: SPACE.S2
2467
2563
  },
2468
2564
  loadingMore: {
2469
2565
  display: "flex",
2470
2566
  alignItems: "center",
2471
2567
  justifyContent: "center",
2472
- gap: "8px",
2473
- padding: "12px",
2474
- fontSize: "14px",
2475
- color: "#6b7280"
2568
+ gap: SPACE.S2,
2569
+ padding: SPACE.S3,
2570
+ fontSize: FONT_SIZE.sm,
2571
+ color: COLOR.neutral500
2476
2572
  },
2477
2573
  firstLoad: {
2478
2574
  display: "flex",
2479
2575
  alignItems: "center",
2480
2576
  justifyContent: "center",
2481
- padding: "48px 16px"
2577
+ padding: `${SPACE.S12} ${SPACE.S4}`
2482
2578
  },
2483
2579
  loadMoreButton: {
2484
2580
  display: "block",
2485
- margin: "0 auto 12px",
2581
+ margin: `0 auto ${SPACE.S3}`,
2486
2582
  minHeight: "36px",
2487
- padding: "8px 18px",
2488
- fontSize: "13px",
2489
- color: "#374151",
2583
+ padding: `${SPACE.S2} ${SPACE.S5}`,
2584
+ fontSize: FONT_SIZE.sm,
2585
+ color: COLOR.neutral700,
2490
2586
  backgroundColor: "transparent",
2491
- border: "1px solid #d1d5db",
2492
- borderRadius: "18px",
2587
+ border: `1px solid ${COLOR.neutral300}`,
2588
+ borderRadius: RADIUS.pill,
2493
2589
  cursor: "pointer"
2494
2590
  },
2495
2591
  empty: {
@@ -2497,47 +2593,47 @@ var styles6 = {
2497
2593
  flexDirection: "column",
2498
2594
  alignItems: "center",
2499
2595
  justifyContent: "center",
2500
- padding: "48px 16px",
2501
- color: "#6b7280"
2596
+ padding: `${SPACE.S12} ${SPACE.S4}`,
2597
+ color: COLOR.neutral500
2502
2598
  },
2503
2599
  emptyTitle: {
2504
- fontSize: "16px",
2505
- fontWeight: 600,
2506
- color: "#374151",
2507
- margin: "14px 0 4px"
2600
+ fontSize: FONT_SIZE.lg,
2601
+ fontWeight: FONT_WEIGHT.semibold,
2602
+ color: COLOR.neutral700,
2603
+ margin: `${SPACE.S3} 0 ${SPACE.S1}`
2508
2604
  },
2509
2605
  emptySubtitle: {
2510
- fontSize: "14px",
2606
+ fontSize: FONT_SIZE.sm,
2511
2607
  margin: 0,
2512
2608
  maxWidth: "280px",
2513
- lineHeight: 1.45,
2609
+ lineHeight: LINE_HEIGHT.normal,
2514
2610
  textAlign: "center"
2515
2611
  },
2516
2612
  typingIndicator: {
2517
- padding: "4px 16px 8px",
2518
- fontSize: "13px",
2519
- color: "#6b7280",
2613
+ padding: `${SPACE.S1} ${SPACE.S4} ${SPACE.S2}`,
2614
+ fontSize: FONT_SIZE.sm,
2615
+ color: COLOR.neutral500,
2520
2616
  fontStyle: "italic"
2521
2617
  },
2522
2618
  dayDivider: {
2523
2619
  display: "flex",
2524
2620
  justifyContent: "center",
2525
- margin: "12px 0 8px",
2621
+ margin: `${SPACE.S3} 0 ${SPACE.S2}`,
2526
2622
  position: "sticky",
2527
- top: "4px",
2528
- zIndex: 1,
2623
+ top: SPACE.S1,
2624
+ zIndex: Z_INDEX.sticky,
2529
2625
  pointerEvents: "none"
2530
2626
  },
2531
2627
  dayDividerPill: {
2532
2628
  display: "inline-block",
2533
- padding: "5px 14px",
2534
- fontSize: "13px",
2535
- fontWeight: 500,
2536
- color: "#334155",
2537
- backgroundColor: "#e2e8f0",
2538
- borderRadius: "12px",
2629
+ padding: `${SPACE.S1} ${SPACE.S3}`,
2630
+ fontSize: FONT_SIZE.sm,
2631
+ fontWeight: FONT_WEIGHT.medium,
2632
+ color: COLOR.slate700,
2633
+ backgroundColor: COLOR.slate200,
2634
+ borderRadius: RADIUS.lg,
2539
2635
  letterSpacing: "0.2px",
2540
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.04)"
2636
+ boxShadow: SHADOW.subtle
2541
2637
  },
2542
2638
  bubbleSlot: {
2543
2639
  animation: "natoe-colab-message-in 180ms ease-out"
@@ -2580,14 +2676,14 @@ var styles7 = {
2580
2676
  container: {
2581
2677
  display: "flex",
2582
2678
  alignItems: "stretch",
2583
- gap: "8px",
2584
- padding: "8px 12px",
2585
- backgroundColor: "#f9fafb",
2586
- borderTop: "1px solid #e5e7eb"
2679
+ gap: SPACE.S2,
2680
+ padding: `${SPACE.S2} ${SPACE.S3}`,
2681
+ backgroundColor: COLOR.neutral50,
2682
+ borderTop: `1px solid ${COLOR.neutral200}`
2587
2683
  },
2588
2684
  bar: {
2589
2685
  width: "3px",
2590
- backgroundColor: "#2563eb",
2686
+ backgroundColor: COLOR.primary,
2591
2687
  borderRadius: "2px",
2592
2688
  flexShrink: 0
2593
2689
  },
@@ -2601,20 +2697,20 @@ var styles7 = {
2601
2697
  senderLine: {
2602
2698
  display: "flex",
2603
2699
  alignItems: "center",
2604
- gap: "4px"
2700
+ gap: SPACE.S1
2605
2701
  },
2606
2702
  senderIcon: {
2607
- fontSize: "11px",
2608
- color: "#2563eb"
2703
+ fontSize: FONT_SIZE.xs,
2704
+ color: COLOR.primary
2609
2705
  },
2610
2706
  senderName: {
2611
- fontSize: "12px",
2612
- fontWeight: 600,
2613
- color: "#2563eb"
2707
+ fontSize: FONT_SIZE.xs,
2708
+ fontWeight: FONT_WEIGHT.semibold,
2709
+ color: COLOR.primary
2614
2710
  },
2615
2711
  preview: {
2616
- fontSize: "12px",
2617
- color: "#6b7280",
2712
+ fontSize: FONT_SIZE.xs,
2713
+ color: COLOR.neutral500,
2618
2714
  overflow: "hidden",
2619
2715
  textOverflow: "ellipsis",
2620
2716
  whiteSpace: "nowrap"
@@ -2626,12 +2722,12 @@ var styles7 = {
2626
2722
  display: "flex",
2627
2723
  alignItems: "center",
2628
2724
  justifyContent: "center",
2629
- color: "#6b7280",
2725
+ color: COLOR.neutral500,
2630
2726
  backgroundColor: "transparent",
2631
2727
  border: "none",
2632
- borderRadius: "4px",
2728
+ borderRadius: RADIUS.sm,
2633
2729
  cursor: "pointer",
2634
- fontSize: "12px",
2730
+ fontSize: FONT_SIZE.xs,
2635
2731
  flexShrink: 0
2636
2732
  }
2637
2733
  };
@@ -2691,6 +2787,7 @@ function MessageInput({
2691
2787
  }) {
2692
2788
  const [text, setText] = React4.useState("");
2693
2789
  const [isSending, setIsSending] = React4.useState(false);
2790
+ const [isUploading, setIsUploading] = React4.useState(false);
2694
2791
  const [fileError, setFileError] = React4.useState(null);
2695
2792
  const fileInputRef = React4.useRef(null);
2696
2793
  const typingTimeoutRef = React4.useRef(null);
@@ -2754,10 +2851,12 @@ function MessageInput({
2754
2851
  return;
2755
2852
  }
2756
2853
  setIsSending(true);
2854
+ setIsUploading(true);
2757
2855
  try {
2758
2856
  await onSendFile(file);
2759
2857
  } finally {
2760
2858
  setIsSending(false);
2859
+ setIsUploading(false);
2761
2860
  if (fileInputRef.current) fileInputRef.current.value = "";
2762
2861
  }
2763
2862
  },
@@ -2765,6 +2864,10 @@ function MessageInput({
2765
2864
  );
2766
2865
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: styles8.container, children: [
2767
2866
  replyTo && onCancelReply && /* @__PURE__ */ jsxRuntime.jsx(ReplyPreview, { message: replyTo, onCancel: onCancelReply }),
2867
+ isUploading && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles8.uploadBanner, children: [
2868
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles8.uploadSpinner }),
2869
+ "Uploading file\u2026"
2870
+ ] }),
2768
2871
  fileError && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles8.error, role: "alert", children: [
2769
2872
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles8.errorText, children: fileError }),
2770
2873
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2839,7 +2942,7 @@ function MessageInput({
2839
2942
  opacity: text.trim() ? 1 : 0.4
2840
2943
  },
2841
2944
  type: "button",
2842
- children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: "#ffffff" })
2945
+ children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: COLOR.white })
2843
2946
  }
2844
2947
  )
2845
2948
  ] })
@@ -2847,19 +2950,39 @@ function MessageInput({
2847
2950
  }
2848
2951
  var styles8 = {
2849
2952
  container: {
2850
- borderTop: "1px solid #e5e7eb",
2851
- backgroundColor: "#ffffff"
2953
+ borderTop: `1px solid ${COLOR.neutral200}`,
2954
+ backgroundColor: COLOR.white
2955
+ },
2956
+ uploadBanner: {
2957
+ display: "flex",
2958
+ alignItems: "center",
2959
+ gap: SPACE.S2,
2960
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2961
+ fontSize: FONT_SIZE.xs,
2962
+ color: COLOR.neutral500,
2963
+ backgroundColor: COLOR.neutral50,
2964
+ borderBottom: `1px solid ${COLOR.neutral200}`
2965
+ },
2966
+ uploadSpinner: {
2967
+ display: "inline-block",
2968
+ width: "12px",
2969
+ height: "12px",
2970
+ border: `2px solid ${COLOR.neutral300}`,
2971
+ borderTopColor: COLOR.primary,
2972
+ borderRadius: RADIUS.full,
2973
+ animation: "natoe-colab-spin 0.7s linear infinite",
2974
+ flexShrink: 0
2852
2975
  },
2853
2976
  error: {
2854
2977
  display: "flex",
2855
2978
  alignItems: "center",
2856
2979
  justifyContent: "space-between",
2857
- gap: "8px",
2858
- padding: "8px 12px 8px 16px",
2859
- fontSize: "13px",
2860
- color: "#b91c1c",
2861
- backgroundColor: "#fef2f2",
2862
- borderTop: "1px solid #fecaca"
2980
+ gap: SPACE.S2,
2981
+ padding: `${SPACE.S2} ${SPACE.S3} ${SPACE.S2} ${SPACE.S4}`,
2982
+ fontSize: FONT_SIZE.sm,
2983
+ color: COLOR.dangerFg,
2984
+ backgroundColor: COLOR.dangerBg,
2985
+ borderTop: `1px solid ${COLOR.dangerBorder}`
2863
2986
  },
2864
2987
  errorText: {
2865
2988
  flex: 1,
@@ -2873,52 +2996,52 @@ var styles8 = {
2873
2996
  justifyContent: "center",
2874
2997
  backgroundColor: "transparent",
2875
2998
  border: "none",
2876
- color: "#b91c1c",
2877
- borderRadius: "4px",
2999
+ color: COLOR.dangerFg,
3000
+ borderRadius: RADIUS.sm,
2878
3001
  cursor: "pointer",
2879
3002
  flexShrink: 0
2880
3003
  },
2881
3004
  inputBar: {
2882
3005
  display: "flex",
2883
3006
  alignItems: "flex-end",
2884
- gap: "6px",
2885
- padding: "10px 12px"
3007
+ gap: SPACE.S2,
3008
+ padding: `${SPACE.S3} ${SPACE.S3}`
2886
3009
  },
2887
3010
  iconButton: {
2888
- width: "44px",
2889
- height: "44px",
3011
+ width: SIZE.controlPrimary,
3012
+ height: SIZE.controlPrimary,
2890
3013
  display: "flex",
2891
3014
  alignItems: "center",
2892
3015
  justifyContent: "center",
2893
3016
  backgroundColor: "transparent",
2894
3017
  border: "none",
2895
- borderRadius: "50%",
3018
+ borderRadius: RADIUS.full,
2896
3019
  cursor: "pointer",
2897
3020
  flexShrink: 0
2898
3021
  },
2899
3022
  textarea: {
2900
3023
  flex: 1,
2901
- padding: "10px 14px",
2902
- fontSize: "15px",
2903
- lineHeight: "1.45",
2904
- border: "1px solid #d1d5db",
2905
- borderRadius: "22px",
3024
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3025
+ fontSize: FONT_SIZE.md,
3026
+ lineHeight: LINE_HEIGHT.normal,
3027
+ border: `1px solid ${COLOR.neutral300}`,
3028
+ borderRadius: RADIUS.pill,
2906
3029
  resize: "none",
2907
3030
  outline: "none",
2908
3031
  fontFamily: "inherit",
2909
3032
  maxHeight: "120px",
2910
- minHeight: "44px"
3033
+ minHeight: SIZE.controlPrimary
2911
3034
  },
2912
3035
  sendButton: {
2913
- width: "44px",
2914
- height: "44px",
3036
+ width: SIZE.controlPrimary,
3037
+ height: SIZE.controlPrimary,
2915
3038
  display: "flex",
2916
3039
  alignItems: "center",
2917
3040
  justifyContent: "center",
2918
- backgroundColor: "#2563eb",
2919
- color: "#ffffff",
3041
+ backgroundColor: COLOR.primary,
3042
+ color: COLOR.white,
2920
3043
  border: "none",
2921
- borderRadius: "50%",
3044
+ borderRadius: RADIUS.full,
2922
3045
  cursor: "pointer",
2923
3046
  flexShrink: 0
2924
3047
  }};
@@ -2937,7 +3060,7 @@ function ParticipantsList({
2937
3060
  {
2938
3061
  style: {
2939
3062
  ...styles9.statusDot,
2940
- backgroundColor: participant.isOnline ? "#22c55e" : "#d1d5db"
3063
+ backgroundColor: participant.isOnline ? COLOR.success : COLOR.neutral300
2941
3064
  }
2942
3065
  }
2943
3066
  )
@@ -2993,9 +3116,9 @@ var styles9 = {
2993
3116
  item: {
2994
3117
  display: "flex",
2995
3118
  alignItems: "center",
2996
- gap: "10px",
2997
- padding: "8px 0",
2998
- borderBottom: "1px solid #f9fafb"
3119
+ gap: SPACE.S3,
3120
+ padding: `${SPACE.S2} 0`,
3121
+ borderBottom: `1px solid ${COLOR.neutral50}`
2999
3122
  },
3000
3123
  avatar: {
3001
3124
  position: "relative",
@@ -3006,55 +3129,55 @@ var styles9 = {
3006
3129
  avatarImg: {
3007
3130
  width: "32px",
3008
3131
  height: "32px",
3009
- borderRadius: "50%",
3132
+ borderRadius: RADIUS.full,
3010
3133
  objectFit: "cover"
3011
3134
  },
3012
3135
  avatarFallback: {
3013
3136
  width: "32px",
3014
3137
  height: "32px",
3015
- borderRadius: "50%",
3016
- backgroundColor: "#e5e7eb",
3138
+ borderRadius: RADIUS.full,
3139
+ backgroundColor: COLOR.neutral200,
3017
3140
  display: "flex",
3018
3141
  alignItems: "center",
3019
3142
  justifyContent: "center",
3020
- fontSize: "13px",
3021
- fontWeight: 600,
3022
- color: "#6b7280"
3143
+ fontSize: FONT_SIZE.sm,
3144
+ fontWeight: FONT_WEIGHT.semibold,
3145
+ color: COLOR.neutral500
3023
3146
  },
3024
3147
  statusDot: {
3025
3148
  position: "absolute",
3026
3149
  bottom: "0",
3027
3150
  right: "0",
3028
- width: "8px",
3029
- height: "8px",
3030
- borderRadius: "50%",
3031
- border: "2px solid #ffffff"
3151
+ width: SPACE.S2,
3152
+ height: SPACE.S2,
3153
+ borderRadius: RADIUS.full,
3154
+ border: `2px solid ${COLOR.white}`
3032
3155
  },
3033
3156
  info: {
3034
3157
  display: "flex",
3035
3158
  alignItems: "center",
3036
- gap: "6px",
3159
+ gap: SPACE.S2,
3037
3160
  flex: 1,
3038
3161
  minWidth: 0
3039
3162
  },
3040
3163
  name: {
3041
- fontSize: "13px",
3042
- fontWeight: 500,
3043
- color: "#111827",
3164
+ fontSize: FONT_SIZE.sm,
3165
+ fontWeight: FONT_WEIGHT.medium,
3166
+ color: COLOR.neutral900,
3044
3167
  overflow: "hidden",
3045
3168
  textOverflow: "ellipsis",
3046
3169
  whiteSpace: "nowrap"
3047
3170
  },
3048
3171
  youBadge: {
3049
- fontSize: "11px",
3050
- fontWeight: 400,
3051
- color: "#9ca3af"
3172
+ fontSize: FONT_SIZE.xs,
3173
+ fontWeight: FONT_WEIGHT.regular,
3174
+ color: COLOR.neutral400
3052
3175
  },
3053
3176
  roleBadge: {
3054
- fontSize: "10px",
3055
- fontWeight: 500,
3056
- padding: "1px 6px",
3057
- borderRadius: "4px",
3177
+ fontSize: FONT_SIZE.xs,
3178
+ fontWeight: FONT_WEIGHT.medium,
3179
+ padding: `2px ${SPACE.S2}`,
3180
+ borderRadius: RADIUS.sm,
3058
3181
  whiteSpace: "nowrap"
3059
3182
  },
3060
3183
  removeButton: {
@@ -3065,10 +3188,10 @@ var styles9 = {
3065
3188
  justifyContent: "center",
3066
3189
  backgroundColor: "transparent",
3067
3190
  border: "none",
3068
- borderRadius: "4px",
3191
+ borderRadius: RADIUS.sm,
3069
3192
  cursor: "pointer",
3070
- fontSize: "11px",
3071
- color: "#9ca3af",
3193
+ fontSize: FONT_SIZE.xs,
3194
+ color: COLOR.neutral400,
3072
3195
  flexShrink: 0
3073
3196
  }
3074
3197
  };
@@ -3220,19 +3343,19 @@ var styles10 = {
3220
3343
  display: "flex",
3221
3344
  flexDirection: "column",
3222
3345
  height: "100%",
3223
- backgroundColor: "#ffffff"
3346
+ backgroundColor: COLOR.white
3224
3347
  },
3225
3348
  header: {
3226
3349
  display: "flex",
3227
3350
  justifyContent: "space-between",
3228
3351
  alignItems: "center",
3229
- padding: "12px 16px",
3230
- borderBottom: "1px solid #e5e7eb"
3352
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3353
+ borderBottom: `1px solid ${COLOR.neutral200}`
3231
3354
  },
3232
3355
  title: {
3233
3356
  margin: 0,
3234
- fontSize: "16px",
3235
- fontWeight: 600
3357
+ fontSize: FONT_SIZE.lg,
3358
+ fontWeight: FONT_WEIGHT.semibold
3236
3359
  },
3237
3360
  closeButton: {
3238
3361
  width: "28px",
@@ -3242,139 +3365,139 @@ var styles10 = {
3242
3365
  justifyContent: "center",
3243
3366
  backgroundColor: "transparent",
3244
3367
  border: "none",
3245
- borderRadius: "4px",
3368
+ borderRadius: RADIUS.sm,
3246
3369
  cursor: "pointer",
3247
- fontSize: "14px",
3248
- color: "#6b7280"
3370
+ fontSize: FONT_SIZE.sm,
3371
+ color: COLOR.neutral500
3249
3372
  },
3250
3373
  error: {
3251
- padding: "8px 16px",
3252
- fontSize: "13px",
3253
- color: "#dc2626",
3254
- backgroundColor: "#fef2f2"
3374
+ padding: `${SPACE.S2} ${SPACE.S4}`,
3375
+ fontSize: FONT_SIZE.sm,
3376
+ color: COLOR.danger,
3377
+ backgroundColor: COLOR.dangerBg
3255
3378
  },
3256
3379
  section: {
3257
- padding: "16px",
3258
- borderBottom: "1px solid #f3f4f6"
3380
+ padding: SPACE.S4,
3381
+ borderBottom: `1px solid ${COLOR.neutral100}`
3259
3382
  },
3260
3383
  sectionHeader: {
3261
3384
  display: "flex",
3262
3385
  justifyContent: "space-between",
3263
3386
  alignItems: "center",
3264
- marginBottom: "8px"
3387
+ marginBottom: SPACE.S2
3265
3388
  },
3266
3389
  label: {
3267
- fontSize: "12px",
3268
- fontWeight: 600,
3269
- color: "#6b7280",
3390
+ fontSize: FONT_SIZE.xs,
3391
+ fontWeight: FONT_WEIGHT.semibold,
3392
+ color: COLOR.neutral500,
3270
3393
  textTransform: "uppercase",
3271
3394
  letterSpacing: "0.05em"
3272
3395
  },
3273
3396
  channelName: {
3274
- fontSize: "14px",
3275
- color: "#111827"
3397
+ fontSize: FONT_SIZE.sm,
3398
+ color: COLOR.neutral900
3276
3399
  },
3277
3400
  editRow: {
3278
3401
  display: "flex",
3279
3402
  alignItems: "center",
3280
- gap: "8px",
3281
- marginTop: "6px"
3403
+ gap: SPACE.S2,
3404
+ marginTop: SPACE.S2
3282
3405
  },
3283
3406
  input: {
3284
- padding: "6px 10px",
3285
- fontSize: "13px",
3286
- border: "1px solid #d1d5db",
3287
- borderRadius: "6px",
3407
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3408
+ fontSize: FONT_SIZE.sm,
3409
+ border: `1px solid ${COLOR.neutral300}`,
3410
+ borderRadius: RADIUS.md,
3288
3411
  outline: "none",
3289
3412
  width: "100%"
3290
3413
  },
3291
3414
  editButton: {
3292
- padding: "4px 10px",
3293
- fontSize: "12px",
3294
- color: "#2563eb",
3415
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3416
+ fontSize: FONT_SIZE.xs,
3417
+ color: COLOR.primary,
3295
3418
  backgroundColor: "transparent",
3296
3419
  border: "none",
3297
3420
  cursor: "pointer"
3298
3421
  },
3299
3422
  saveButton: {
3300
- padding: "6px 12px",
3301
- fontSize: "12px",
3302
- fontWeight: 500,
3303
- color: "#ffffff",
3304
- backgroundColor: "#2563eb",
3423
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3424
+ fontSize: FONT_SIZE.xs,
3425
+ fontWeight: FONT_WEIGHT.medium,
3426
+ color: COLOR.white,
3427
+ backgroundColor: COLOR.primary,
3305
3428
  border: "none",
3306
- borderRadius: "6px",
3429
+ borderRadius: RADIUS.md,
3307
3430
  cursor: "pointer",
3308
3431
  whiteSpace: "nowrap"
3309
3432
  },
3310
3433
  cancelButton: {
3311
- padding: "6px 12px",
3312
- fontSize: "12px",
3313
- color: "#6b7280",
3434
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3435
+ fontSize: FONT_SIZE.xs,
3436
+ color: COLOR.neutral500,
3314
3437
  backgroundColor: "transparent",
3315
- border: "1px solid #d1d5db",
3316
- borderRadius: "6px",
3438
+ border: `1px solid ${COLOR.neutral300}`,
3439
+ borderRadius: RADIUS.md,
3317
3440
  cursor: "pointer",
3318
3441
  whiteSpace: "nowrap"
3319
3442
  },
3320
3443
  addButton: {
3321
- padding: "4px 10px",
3322
- fontSize: "12px",
3323
- fontWeight: 500,
3324
- color: "#2563eb",
3325
- backgroundColor: "#eff6ff",
3444
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3445
+ fontSize: FONT_SIZE.xs,
3446
+ fontWeight: FONT_WEIGHT.medium,
3447
+ color: COLOR.primary,
3448
+ backgroundColor: COLOR.primaryBg,
3326
3449
  border: "none",
3327
- borderRadius: "4px",
3450
+ borderRadius: RADIUS.sm,
3328
3451
  cursor: "pointer"
3329
3452
  },
3330
3453
  inviteForm: {
3331
3454
  display: "flex",
3332
3455
  flexDirection: "column",
3333
- gap: "8px",
3334
- padding: "12px",
3335
- marginBottom: "12px",
3336
- backgroundColor: "#f9fafb",
3337
- borderRadius: "8px"
3456
+ gap: SPACE.S2,
3457
+ padding: SPACE.S3,
3458
+ marginBottom: SPACE.S3,
3459
+ backgroundColor: COLOR.neutral50,
3460
+ borderRadius: RADIUS.md
3338
3461
  },
3339
3462
  inviteActions: {
3340
3463
  display: "flex",
3341
- gap: "8px"
3464
+ gap: SPACE.S2
3342
3465
  },
3343
3466
  dangerZone: {
3344
- padding: "16px",
3467
+ padding: SPACE.S4,
3345
3468
  marginTop: "auto",
3346
3469
  display: "flex",
3347
3470
  flexDirection: "column",
3348
- gap: "8px"
3471
+ gap: SPACE.S2
3349
3472
  },
3350
3473
  leaveButton: {
3351
- padding: "8px",
3352
- fontSize: "13px",
3353
- fontWeight: 500,
3354
- color: "#b45309",
3474
+ padding: SPACE.S2,
3475
+ fontSize: FONT_SIZE.sm,
3476
+ fontWeight: FONT_WEIGHT.medium,
3477
+ color: COLOR.warning,
3355
3478
  backgroundColor: "#fffbeb",
3356
3479
  border: "1px solid #fde68a",
3357
- borderRadius: "6px",
3480
+ borderRadius: RADIUS.md,
3358
3481
  cursor: "pointer"
3359
3482
  },
3360
3483
  deleteButton: {
3361
- padding: "8px",
3362
- fontSize: "13px",
3363
- fontWeight: 500,
3364
- color: "#dc2626",
3365
- backgroundColor: "#fef2f2",
3366
- border: "1px solid #fecaca",
3367
- borderRadius: "6px",
3484
+ padding: SPACE.S2,
3485
+ fontSize: FONT_SIZE.sm,
3486
+ fontWeight: FONT_WEIGHT.medium,
3487
+ color: COLOR.danger,
3488
+ backgroundColor: COLOR.dangerBg,
3489
+ border: `1px solid ${COLOR.dangerBorder}`,
3490
+ borderRadius: RADIUS.md,
3368
3491
  cursor: "pointer"
3369
3492
  },
3370
3493
  confirmDeleteButton: {
3371
- padding: "8px",
3372
- fontSize: "13px",
3373
- fontWeight: 600,
3374
- color: "#ffffff",
3375
- backgroundColor: "#dc2626",
3494
+ padding: SPACE.S2,
3495
+ fontSize: FONT_SIZE.sm,
3496
+ fontWeight: FONT_WEIGHT.semibold,
3497
+ color: COLOR.white,
3498
+ backgroundColor: COLOR.danger,
3376
3499
  border: "none",
3377
- borderRadius: "6px",
3500
+ borderRadius: RADIUS.md,
3378
3501
  cursor: "pointer"
3379
3502
  }
3380
3503
  };
@@ -3397,13 +3520,13 @@ function PinnedMessagesBar({
3397
3520
  };
3398
3521
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: styles11.container, children: [
3399
3522
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles11.indicator, children: [
3400
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles11.pinIcon, children: "\u{1F4CC}" }),
3523
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 14, color: COLOR.primary }),
3401
3524
  pinnedMessages.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles11.segments, children: pinnedMessages.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
3402
3525
  "span",
3403
3526
  {
3404
3527
  style: {
3405
3528
  ...styles11.segment,
3406
- backgroundColor: i === safeIndex ? "#2563eb" : "#d1d5db"
3529
+ backgroundColor: i === safeIndex ? COLOR.primary : COLOR.neutral300
3407
3530
  }
3408
3531
  },
3409
3532
  i
@@ -3467,20 +3590,17 @@ var styles11 = {
3467
3590
  container: {
3468
3591
  display: "flex",
3469
3592
  alignItems: "center",
3470
- gap: "8px",
3471
- padding: "6px 12px",
3472
- backgroundColor: "#eff6ff",
3473
- borderBottom: "1px solid #dbeafe"
3593
+ gap: SPACE.S2,
3594
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3595
+ backgroundColor: COLOR.primaryBg,
3596
+ borderBottom: `1px solid ${COLOR.primaryBg}`
3474
3597
  },
3475
3598
  indicator: {
3476
3599
  display: "flex",
3477
3600
  alignItems: "center",
3478
- gap: "4px",
3601
+ gap: SPACE.S1,
3479
3602
  flexShrink: 0
3480
3603
  },
3481
- pinIcon: {
3482
- fontSize: "13px"
3483
- },
3484
3604
  segments: {
3485
3605
  display: "flex",
3486
3606
  flexDirection: "column",
@@ -3505,19 +3625,19 @@ var styles11 = {
3505
3625
  overflow: "hidden"
3506
3626
  },
3507
3627
  label: {
3508
- fontSize: "11px",
3509
- fontWeight: 600,
3510
- color: "#2563eb"
3628
+ fontSize: FONT_SIZE.xs,
3629
+ fontWeight: FONT_WEIGHT.semibold,
3630
+ color: COLOR.primary
3511
3631
  },
3512
3632
  preview: {
3513
- fontSize: "12px",
3514
- color: "#374151",
3633
+ fontSize: FONT_SIZE.xs,
3634
+ color: COLOR.neutral700,
3515
3635
  overflow: "hidden",
3516
3636
  textOverflow: "ellipsis",
3517
3637
  whiteSpace: "nowrap"
3518
3638
  },
3519
3639
  sender: {
3520
- fontWeight: 600
3640
+ fontWeight: FONT_WEIGHT.semibold
3521
3641
  },
3522
3642
  unpinButton: {
3523
3643
  width: "24px",
@@ -3525,12 +3645,12 @@ var styles11 = {
3525
3645
  display: "flex",
3526
3646
  alignItems: "center",
3527
3647
  justifyContent: "center",
3528
- color: "#6b7280",
3648
+ color: COLOR.neutral500,
3529
3649
  backgroundColor: "transparent",
3530
3650
  border: "none",
3531
- borderRadius: "4px",
3651
+ borderRadius: RADIUS.sm,
3532
3652
  cursor: "pointer",
3533
- fontSize: "11px",
3653
+ fontSize: FONT_SIZE.xs,
3534
3654
  flexShrink: 0
3535
3655
  }
3536
3656
  };
@@ -3565,15 +3685,15 @@ var styles12 = {
3565
3685
  transform: "translateX(-50%)",
3566
3686
  display: "flex",
3567
3687
  alignItems: "center",
3568
- gap: "12px",
3569
- padding: "10px 14px",
3570
- backgroundColor: "#1e293b",
3571
- color: "#ffffff",
3572
- borderRadius: "8px",
3573
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.18)",
3574
- fontSize: "14px",
3688
+ gap: SPACE.S3,
3689
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3690
+ backgroundColor: COLOR.slate800,
3691
+ color: COLOR.white,
3692
+ borderRadius: RADIUS.md,
3693
+ boxShadow: SHADOW.toast,
3694
+ fontSize: FONT_SIZE.sm,
3575
3695
  maxWidth: "90%",
3576
- zIndex: 20
3696
+ zIndex: Z_INDEX.toast
3577
3697
  },
3578
3698
  message: {
3579
3699
  whiteSpace: "nowrap",
@@ -3583,11 +3703,11 @@ var styles12 = {
3583
3703
  action: {
3584
3704
  background: "transparent",
3585
3705
  border: "none",
3586
- color: "#93c5fd",
3587
- fontWeight: 600,
3588
- fontSize: "14px",
3706
+ color: COLOR.primaryBg,
3707
+ fontWeight: FONT_WEIGHT.semibold,
3708
+ fontSize: FONT_SIZE.sm,
3589
3709
  cursor: "pointer",
3590
- padding: "4px 6px",
3710
+ padding: `${SPACE.S1} ${SPACE.S2}`,
3591
3711
  textTransform: "uppercase",
3592
3712
  letterSpacing: "0.4px"
3593
3713
  }
@@ -3800,10 +3920,10 @@ var panelStyles = {
3800
3920
  display: "flex",
3801
3921
  flexDirection: "column",
3802
3922
  height: "100%",
3803
- backgroundColor: "#ffffff",
3804
- borderRadius: "8px",
3923
+ backgroundColor: COLOR.white,
3924
+ borderRadius: RADIUS.md,
3805
3925
  overflow: "hidden",
3806
- border: "1px solid #e5e7eb",
3926
+ border: `1px solid ${COLOR.neutral200}`,
3807
3927
  fontFamily: FONT_STACK
3808
3928
  },
3809
3929
  loadingState: {
@@ -3811,8 +3931,8 @@ var panelStyles = {
3811
3931
  alignItems: "center",
3812
3932
  justifyContent: "center",
3813
3933
  height: "100%",
3814
- fontSize: "14px",
3815
- color: "#9ca3af"
3934
+ fontSize: FONT_SIZE.sm,
3935
+ color: COLOR.neutral500
3816
3936
  },
3817
3937
  errorState: {
3818
3938
  display: "flex",
@@ -3820,18 +3940,18 @@ var panelStyles = {
3820
3940
  alignItems: "center",
3821
3941
  justifyContent: "center",
3822
3942
  height: "100%",
3823
- padding: "24px",
3943
+ padding: SPACE.S6,
3824
3944
  textAlign: "center"
3825
3945
  },
3826
3946
  errorTitle: {
3827
- fontSize: "15px",
3828
- fontWeight: 500,
3829
- color: "#dc2626",
3830
- margin: "0 0 4px"
3947
+ fontSize: FONT_SIZE.md,
3948
+ fontWeight: FONT_WEIGHT.medium,
3949
+ color: COLOR.danger,
3950
+ margin: `0 0 ${SPACE.S1}`
3831
3951
  },
3832
3952
  errorMessage: {
3833
- fontSize: "13px",
3834
- color: "#6b7280",
3953
+ fontSize: FONT_SIZE.sm,
3954
+ color: COLOR.neutral500,
3835
3955
  margin: 0
3836
3956
  }
3837
3957
  };
@@ -4002,7 +4122,7 @@ function CollabPopup({
4002
4122
  "aria-label": isMinimized ? "Expand chat" : "Minimize chat",
4003
4123
  title: isMinimized ? "Expand" : "Minimize",
4004
4124
  type: "button",
4005
- children: isMinimized ? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, { size: 16, color: "#cbd5e1" }) : /* @__PURE__ */ jsxRuntime.jsx(MinimizeIcon, { size: 16, color: "#cbd5e1" })
4125
+ children: isMinimized ? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, { size: 16, color: COLOR.slate200 }) : /* @__PURE__ */ jsxRuntime.jsx(MinimizeIcon, { size: 16, color: COLOR.slate200 })
4006
4126
  }
4007
4127
  ),
4008
4128
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4013,7 +4133,7 @@ function CollabPopup({
4013
4133
  "aria-label": "Close chat",
4014
4134
  title: "Close",
4015
4135
  type: "button",
4016
- children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: "#cbd5e1" })
4136
+ children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: COLOR.slate200 })
4017
4137
  }
4018
4138
  )
4019
4139
  ] })
@@ -4026,14 +4146,14 @@ function CollabPopup({
4026
4146
  var styles13 = {
4027
4147
  container: {
4028
4148
  position: "fixed",
4029
- zIndex: 9999,
4030
- borderRadius: "12px",
4031
- boxShadow: "0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
4149
+ zIndex: Z_INDEX.dialog,
4150
+ borderRadius: RADIUS.lg,
4151
+ boxShadow: SHADOW.dialog,
4032
4152
  overflow: "hidden",
4033
4153
  display: "flex",
4034
4154
  flexDirection: "column",
4035
- backgroundColor: "#ffffff",
4036
- border: "1px solid #e5e7eb",
4155
+ backgroundColor: COLOR.white,
4156
+ border: `1px solid ${COLOR.neutral200}`,
4037
4157
  transition: "height 0.2s ease",
4038
4158
  fontFamily: FONT_STACK
4039
4159
  },
@@ -4041,37 +4161,37 @@ var styles13 = {
4041
4161
  display: "flex",
4042
4162
  justifyContent: "space-between",
4043
4163
  alignItems: "center",
4044
- padding: "0 8px 0 14px",
4164
+ padding: `0 ${SPACE.S2} 0 ${SPACE.S4}`,
4045
4165
  height: "52px",
4046
- backgroundColor: "#1e293b",
4166
+ backgroundColor: COLOR.slate800,
4047
4167
  cursor: "grab",
4048
4168
  userSelect: "none",
4049
4169
  flexShrink: 0
4050
4170
  },
4051
4171
  titleText: {
4052
- fontSize: "15px",
4053
- fontWeight: 500,
4054
- color: "#ffffff",
4172
+ fontSize: FONT_SIZE.md,
4173
+ fontWeight: FONT_WEIGHT.medium,
4174
+ color: COLOR.white,
4055
4175
  overflow: "hidden",
4056
4176
  textOverflow: "ellipsis",
4057
4177
  whiteSpace: "nowrap"
4058
4178
  },
4059
4179
  titleActions: {
4060
4180
  display: "flex",
4061
- gap: "4px",
4181
+ gap: SPACE.S1,
4062
4182
  flexShrink: 0
4063
4183
  },
4064
4184
  titleButton: {
4065
- width: "40px",
4066
- height: "40px",
4185
+ width: SIZE.control,
4186
+ height: SIZE.control,
4067
4187
  display: "flex",
4068
4188
  alignItems: "center",
4069
4189
  justifyContent: "center",
4070
4190
  backgroundColor: "transparent",
4071
4191
  border: "none",
4072
- borderRadius: "6px",
4192
+ borderRadius: RADIUS.md,
4073
4193
  cursor: "pointer",
4074
- color: "#cbd5e1"
4194
+ color: COLOR.slate200
4075
4195
  },
4076
4196
  panelWrapper: {
4077
4197
  flex: 1,
@@ -4544,55 +4664,55 @@ var styles14 = {
4544
4664
  display: "flex",
4545
4665
  flexDirection: "column",
4546
4666
  width: "100%",
4547
- padding: "6px 8px",
4548
- backgroundColor: "#ffffff",
4549
- border: "1px solid #e5e7eb",
4550
- borderRadius: "8px",
4667
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4668
+ backgroundColor: COLOR.white,
4669
+ border: `1px solid ${COLOR.neutral200}`,
4670
+ borderRadius: RADIUS.md,
4551
4671
  fontFamily: FONT_STACK
4552
4672
  },
4553
4673
  loadingState: {
4554
- padding: "8px",
4555
- fontSize: "12px",
4556
- color: "#9ca3af",
4674
+ padding: SPACE.S2,
4675
+ fontSize: FONT_SIZE.xs,
4676
+ color: COLOR.neutral500,
4557
4677
  textAlign: "center"
4558
4678
  },
4559
4679
  error: {
4560
- padding: "4px 8px",
4561
- marginBottom: "4px",
4562
- fontSize: "11px",
4563
- color: "#dc2626",
4564
- backgroundColor: "#fef2f2",
4565
- borderRadius: "4px"
4680
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4681
+ marginBottom: SPACE.S1,
4682
+ fontSize: FONT_SIZE.xs,
4683
+ color: COLOR.danger,
4684
+ backgroundColor: COLOR.dangerBg,
4685
+ borderRadius: RADIUS.sm
4566
4686
  },
4567
4687
  preview: {
4568
4688
  display: "flex",
4569
4689
  flexDirection: "column",
4570
4690
  gap: "2px",
4571
- marginBottom: "6px",
4572
- paddingBottom: "6px",
4573
- borderBottom: "1px solid #f3f4f6"
4691
+ marginBottom: SPACE.S1,
4692
+ paddingBottom: SPACE.S1,
4693
+ borderBottom: `1px solid ${COLOR.neutral100}`
4574
4694
  },
4575
4695
  messageRow: {
4576
4696
  display: "flex",
4577
4697
  alignItems: "center",
4578
- gap: "6px",
4579
- fontSize: "12px",
4580
- lineHeight: "1.4",
4698
+ gap: SPACE.S2,
4699
+ fontSize: FONT_SIZE.xs,
4700
+ lineHeight: LINE_HEIGHT.normal,
4581
4701
  overflow: "hidden"
4582
4702
  },
4583
4703
  roleDot: {
4584
4704
  flexShrink: 0,
4585
4705
  width: "6px",
4586
4706
  height: "6px",
4587
- borderRadius: "50%"
4707
+ borderRadius: RADIUS.full
4588
4708
  },
4589
4709
  senderName: {
4590
4710
  flexShrink: 0,
4591
- fontWeight: 600,
4592
- color: "#374151"
4711
+ fontWeight: FONT_WEIGHT.semibold,
4712
+ color: COLOR.neutral700
4593
4713
  },
4594
4714
  messageText: {
4595
- color: "#4b5563",
4715
+ color: COLOR.neutral600,
4596
4716
  overflow: "hidden",
4597
4717
  textOverflow: "ellipsis",
4598
4718
  whiteSpace: "nowrap",
@@ -4600,8 +4720,8 @@ var styles14 = {
4600
4720
  flex: 1
4601
4721
  },
4602
4722
  systemRow: {
4603
- fontSize: "11px",
4604
- color: "#9ca3af",
4723
+ fontSize: FONT_SIZE.xs,
4724
+ color: COLOR.neutral400,
4605
4725
  fontStyle: "italic",
4606
4726
  textAlign: "center",
4607
4727
  padding: "2px 0"
@@ -4613,11 +4733,11 @@ var styles14 = {
4613
4733
  audioPlayer: {
4614
4734
  display: "inline-flex",
4615
4735
  alignItems: "center",
4616
- gap: "6px",
4617
- padding: "2px 8px",
4618
- borderRadius: "12px",
4619
- backgroundColor: "#eff6ff",
4620
- border: "1px solid #dbeafe",
4736
+ gap: SPACE.S2,
4737
+ padding: `2px ${SPACE.S2}`,
4738
+ borderRadius: RADIUS.lg,
4739
+ backgroundColor: COLOR.primaryBg,
4740
+ border: `1px solid ${COLOR.primaryBg}`,
4621
4741
  flex: 1,
4622
4742
  minWidth: 0
4623
4743
  },
@@ -4627,11 +4747,11 @@ var styles14 = {
4627
4747
  display: "flex",
4628
4748
  alignItems: "center",
4629
4749
  justifyContent: "center",
4630
- fontSize: "10px",
4631
- color: "#ffffff",
4632
- backgroundColor: "#2563eb",
4750
+ fontSize: FONT_SIZE.xs,
4751
+ color: COLOR.white,
4752
+ backgroundColor: COLOR.primary,
4633
4753
  border: "none",
4634
- borderRadius: "50%",
4754
+ borderRadius: RADIUS.full,
4635
4755
  cursor: "pointer",
4636
4756
  flexShrink: 0
4637
4757
  },
@@ -4639,7 +4759,7 @@ var styles14 = {
4639
4759
  display: "inline-flex",
4640
4760
  alignItems: "center",
4641
4761
  gap: "2px",
4642
- height: "16px",
4762
+ height: SPACE.S4,
4643
4763
  flex: 1,
4644
4764
  minWidth: 0
4645
4765
  },
@@ -4647,27 +4767,27 @@ var styles14 = {
4647
4767
  display: "inline-block",
4648
4768
  width: "2px",
4649
4769
  borderRadius: "1px",
4650
- backgroundColor: "#60a5fa"
4770
+ backgroundColor: COLOR.primary
4651
4771
  },
4652
4772
  audioDuration: {
4653
- fontSize: "11px",
4654
- color: "#2563eb",
4773
+ fontSize: FONT_SIZE.xs,
4774
+ color: COLOR.primary,
4655
4775
  fontVariantNumeric: "tabular-nums",
4656
- fontWeight: 500,
4776
+ fontWeight: FONT_WEIGHT.medium,
4657
4777
  flexShrink: 0
4658
4778
  },
4659
4779
  // ── Input bar ──
4660
4780
  inputBar: {
4661
4781
  display: "flex",
4662
4782
  alignItems: "center",
4663
- gap: "6px"
4783
+ gap: SPACE.S2
4664
4784
  },
4665
4785
  input: {
4666
4786
  flex: 1,
4667
- padding: "6px 10px",
4668
- fontSize: "13px",
4669
- border: "1px solid #e5e7eb",
4670
- borderRadius: "16px",
4787
+ padding: `${SPACE.S2} ${SPACE.S3}`,
4788
+ fontSize: FONT_SIZE.sm,
4789
+ border: `1px solid ${COLOR.neutral200}`,
4790
+ borderRadius: RADIUS.pill,
4671
4791
  outline: "none",
4672
4792
  fontFamily: "inherit",
4673
4793
  minWidth: 0
@@ -4676,12 +4796,12 @@ var styles14 = {
4676
4796
  flexShrink: 0,
4677
4797
  minWidth: "18px",
4678
4798
  height: "18px",
4679
- padding: "0 5px",
4680
- fontSize: "10px",
4681
- fontWeight: 600,
4682
- color: "#ffffff",
4683
- backgroundColor: "#dc2626",
4684
- borderRadius: "10px",
4799
+ padding: `0 ${SPACE.S1}`,
4800
+ fontSize: FONT_SIZE.xs,
4801
+ fontWeight: FONT_WEIGHT.semibold,
4802
+ color: COLOR.white,
4803
+ backgroundColor: COLOR.danger,
4804
+ borderRadius: RADIUS.pill,
4685
4805
  display: "flex",
4686
4806
  alignItems: "center",
4687
4807
  justifyContent: "center"
@@ -4690,8 +4810,8 @@ var styles14 = {
4690
4810
  flexShrink: 0,
4691
4811
  width: "6px",
4692
4812
  height: "6px",
4693
- borderRadius: "50%",
4694
- backgroundColor: "#22c55e"
4813
+ borderRadius: RADIUS.full,
4814
+ backgroundColor: COLOR.success
4695
4815
  },
4696
4816
  sendButton: {
4697
4817
  flexShrink: 0,
@@ -4700,11 +4820,11 @@ var styles14 = {
4700
4820
  display: "flex",
4701
4821
  alignItems: "center",
4702
4822
  justifyContent: "center",
4703
- fontSize: "13px",
4704
- color: "#ffffff",
4705
- backgroundColor: "#2563eb",
4823
+ fontSize: FONT_SIZE.sm,
4824
+ color: COLOR.white,
4825
+ backgroundColor: COLOR.primary,
4706
4826
  border: "none",
4707
- borderRadius: "50%",
4827
+ borderRadius: RADIUS.full,
4708
4828
  cursor: "pointer"
4709
4829
  },
4710
4830
  expandButton: {
@@ -4714,11 +4834,11 @@ var styles14 = {
4714
4834
  display: "flex",
4715
4835
  alignItems: "center",
4716
4836
  justifyContent: "center",
4717
- fontSize: "12px",
4718
- color: "#6b7280",
4837
+ fontSize: FONT_SIZE.xs,
4838
+ color: COLOR.neutral500,
4719
4839
  backgroundColor: "transparent",
4720
- border: "1px solid #e5e7eb",
4721
- borderRadius: "50%",
4840
+ border: `1px solid ${COLOR.neutral200}`,
4841
+ borderRadius: RADIUS.full,
4722
4842
  cursor: "pointer"
4723
4843
  }};
4724
4844
  function useConversationList(options) {
@@ -4882,52 +5002,52 @@ var styles15 = {
4882
5002
  container: {
4883
5003
  display: "flex",
4884
5004
  alignItems: "center",
4885
- gap: "12px",
4886
- padding: "10px 12px",
5005
+ gap: SPACE.S3,
5006
+ padding: `${SPACE.S3} ${SPACE.S3}`,
4887
5007
  width: "100%",
4888
5008
  backgroundColor: "transparent",
4889
5009
  border: "none",
4890
- borderBottom: "1px solid #f3f4f6",
5010
+ borderBottom: `1px solid ${COLOR.neutral100}`,
4891
5011
  cursor: "pointer",
4892
5012
  textAlign: "left"
4893
5013
  },
4894
5014
  selected: {
4895
- backgroundColor: "#eff6ff"
5015
+ backgroundColor: COLOR.primaryBg
4896
5016
  },
4897
5017
  unread: {},
4898
5018
  avatarWrapper: {
4899
5019
  position: "relative",
4900
- width: "40px",
4901
- height: "40px",
5020
+ width: SIZE.avatar,
5021
+ height: SIZE.avatar,
4902
5022
  flexShrink: 0
4903
5023
  },
4904
5024
  avatar: {
4905
- width: "40px",
4906
- height: "40px",
4907
- borderRadius: "50%",
5025
+ width: SIZE.avatar,
5026
+ height: SIZE.avatar,
5027
+ borderRadius: RADIUS.full,
4908
5028
  objectFit: "cover"
4909
5029
  },
4910
5030
  avatarFallback: {
4911
- width: "40px",
4912
- height: "40px",
4913
- borderRadius: "50%",
4914
- backgroundColor: "#e5e7eb",
5031
+ width: SIZE.avatar,
5032
+ height: SIZE.avatar,
5033
+ borderRadius: RADIUS.full,
5034
+ backgroundColor: COLOR.neutral200,
4915
5035
  display: "flex",
4916
5036
  alignItems: "center",
4917
5037
  justifyContent: "center",
4918
- fontSize: "15px",
4919
- fontWeight: 600,
4920
- color: "#6b7280"
5038
+ fontSize: FONT_SIZE.md,
5039
+ fontWeight: FONT_WEIGHT.semibold,
5040
+ color: COLOR.neutral500
4921
5041
  },
4922
5042
  unreadDot: {
4923
5043
  position: "absolute",
4924
5044
  top: "0",
4925
5045
  left: "0",
4926
- width: "10px",
4927
- height: "10px",
4928
- borderRadius: "50%",
4929
- backgroundColor: "#2563eb",
4930
- border: "2px solid #ffffff"
5046
+ width: SIZE.dot,
5047
+ height: SIZE.dot,
5048
+ borderRadius: RADIUS.full,
5049
+ backgroundColor: COLOR.primary,
5050
+ border: `2px solid ${COLOR.white}`
4931
5051
  },
4932
5052
  content: {
4933
5053
  flex: 1,
@@ -4940,12 +5060,12 @@ var styles15 = {
4940
5060
  display: "flex",
4941
5061
  justifyContent: "space-between",
4942
5062
  alignItems: "baseline",
4943
- gap: "8px"
5063
+ gap: SPACE.S2
4944
5064
  },
4945
5065
  name: {
4946
- fontSize: "15px",
4947
- fontWeight: 500,
4948
- color: "#111827",
5066
+ fontSize: FONT_SIZE.md,
5067
+ fontWeight: FONT_WEIGHT.medium,
5068
+ color: COLOR.neutral900,
4949
5069
  overflow: "hidden",
4950
5070
  textOverflow: "ellipsis",
4951
5071
  whiteSpace: "nowrap",
@@ -4953,26 +5073,26 @@ var styles15 = {
4953
5073
  minWidth: 0
4954
5074
  },
4955
5075
  nameUnread: {
4956
- fontWeight: 700
5076
+ fontWeight: FONT_WEIGHT.bold
4957
5077
  },
4958
5078
  time: {
4959
- fontSize: "12px",
4960
- color: "#6b7280",
5079
+ fontSize: FONT_SIZE.xs,
5080
+ color: COLOR.neutral500,
4961
5081
  flexShrink: 0
4962
5082
  },
4963
5083
  timeUnread: {
4964
- color: "#2563eb",
4965
- fontWeight: 600
5084
+ color: COLOR.primary,
5085
+ fontWeight: FONT_WEIGHT.semibold
4966
5086
  },
4967
5087
  bottomRow: {
4968
5088
  display: "flex",
4969
5089
  justifyContent: "space-between",
4970
5090
  alignItems: "center",
4971
- gap: "8px"
5091
+ gap: SPACE.S2
4972
5092
  },
4973
5093
  preview: {
4974
- fontSize: "14px",
4975
- color: "#4b5563",
5094
+ fontSize: FONT_SIZE.sm,
5095
+ color: COLOR.neutral600,
4976
5096
  overflow: "hidden",
4977
5097
  textOverflow: "ellipsis",
4978
5098
  whiteSpace: "nowrap",
@@ -4980,18 +5100,18 @@ var styles15 = {
4980
5100
  minWidth: 0
4981
5101
  },
4982
5102
  previewUnread: {
4983
- color: "#111827",
4984
- fontWeight: 500
5103
+ color: COLOR.neutral900,
5104
+ fontWeight: FONT_WEIGHT.medium
4985
5105
  },
4986
5106
  badge: {
4987
5107
  minWidth: "20px",
4988
5108
  height: "20px",
4989
- padding: "0 6px",
4990
- fontSize: "11px",
4991
- fontWeight: 600,
4992
- color: "#ffffff",
4993
- backgroundColor: "#2563eb",
4994
- borderRadius: "10px",
5109
+ padding: `0 ${SPACE.S2}`,
5110
+ fontSize: FONT_SIZE.xs,
5111
+ fontWeight: FONT_WEIGHT.semibold,
5112
+ color: COLOR.white,
5113
+ backgroundColor: COLOR.primary,
5114
+ borderRadius: RADIUS.pill,
4995
5115
  display: "flex",
4996
5116
  alignItems: "center",
4997
5117
  justifyContent: "center",
@@ -5092,89 +5212,89 @@ var styles16 = {
5092
5212
  display: "flex",
5093
5213
  flexDirection: "column",
5094
5214
  height: "100%",
5095
- backgroundColor: "#ffffff",
5096
- borderRight: "1px solid #e5e7eb"
5215
+ backgroundColor: COLOR.white,
5216
+ borderRight: `1px solid ${COLOR.neutral200}`
5097
5217
  },
5098
5218
  header: {
5099
- padding: "12px",
5100
- borderBottom: "1px solid #e5e7eb",
5101
- backgroundColor: "#f9fafb",
5219
+ padding: SPACE.S3,
5220
+ borderBottom: `1px solid ${COLOR.neutral200}`,
5221
+ backgroundColor: COLOR.neutral50,
5102
5222
  flexShrink: 0
5103
5223
  },
5104
5224
  titleRow: {
5105
5225
  display: "flex",
5106
5226
  alignItems: "center",
5107
- gap: "8px",
5108
- marginBottom: "8px"
5227
+ gap: SPACE.S2,
5228
+ marginBottom: SPACE.S2
5109
5229
  },
5110
5230
  title: {
5111
5231
  margin: 0,
5112
- fontSize: "15px",
5113
- fontWeight: 600,
5114
- color: "#111827"
5232
+ fontSize: FONT_SIZE.md,
5233
+ fontWeight: FONT_WEIGHT.semibold,
5234
+ color: COLOR.neutral900
5115
5235
  },
5116
5236
  totalBadge: {
5117
5237
  minWidth: "20px",
5118
5238
  height: "20px",
5119
- padding: "0 6px",
5120
- fontSize: "11px",
5121
- fontWeight: 600,
5122
- color: "#ffffff",
5123
- backgroundColor: "#2563eb",
5124
- borderRadius: "10px",
5239
+ padding: `0 ${SPACE.S2}`,
5240
+ fontSize: FONT_SIZE.xs,
5241
+ fontWeight: FONT_WEIGHT.semibold,
5242
+ color: COLOR.white,
5243
+ backgroundColor: COLOR.primary,
5244
+ borderRadius: RADIUS.pill,
5125
5245
  display: "flex",
5126
5246
  alignItems: "center",
5127
5247
  justifyContent: "center"
5128
5248
  },
5129
5249
  searchRow: {
5130
- marginBottom: "8px"
5250
+ marginBottom: SPACE.S2
5131
5251
  },
5132
5252
  searchInput: {
5133
5253
  width: "100%",
5134
- padding: "6px 10px",
5135
- fontSize: "13px",
5136
- border: "1px solid #e5e7eb",
5137
- borderRadius: "6px",
5254
+ padding: `${SPACE.S2} ${SPACE.S3}`,
5255
+ fontSize: FONT_SIZE.sm,
5256
+ border: `1px solid ${COLOR.neutral200}`,
5257
+ borderRadius: RADIUS.md,
5138
5258
  outline: "none",
5139
5259
  fontFamily: "inherit"
5140
5260
  },
5141
5261
  filterRow: {
5142
5262
  display: "flex",
5143
- gap: "4px"
5263
+ gap: SPACE.S1
5144
5264
  },
5145
5265
  filterButton: {
5146
5266
  flex: 1,
5147
- padding: "5px 8px",
5148
- fontSize: "12px",
5149
- color: "#6b7280",
5150
- backgroundColor: "#ffffff",
5151
- border: "1px solid #e5e7eb",
5152
- borderRadius: "6px",
5267
+ padding: `${SPACE.S1} ${SPACE.S2}`,
5268
+ fontSize: FONT_SIZE.xs,
5269
+ color: COLOR.neutral500,
5270
+ backgroundColor: COLOR.white,
5271
+ border: `1px solid ${COLOR.neutral200}`,
5272
+ borderRadius: RADIUS.md,
5153
5273
  cursor: "pointer"
5154
5274
  },
5155
5275
  filterButtonActive: {
5156
- color: "#ffffff",
5157
- backgroundColor: "#2563eb",
5158
- borderColor: "#2563eb",
5159
- fontWeight: 500
5276
+ color: COLOR.white,
5277
+ backgroundColor: COLOR.primary,
5278
+ borderColor: COLOR.primary,
5279
+ fontWeight: FONT_WEIGHT.medium
5160
5280
  },
5161
5281
  list: {
5162
5282
  flex: 1,
5163
5283
  overflowY: "auto"
5164
5284
  },
5165
5285
  state: {
5166
- padding: "24px 16px",
5167
- fontSize: "13px",
5168
- color: "#9ca3af",
5286
+ padding: `${SPACE.S6} ${SPACE.S4}`,
5287
+ fontSize: FONT_SIZE.sm,
5288
+ color: COLOR.neutral500,
5169
5289
  textAlign: "center"
5170
5290
  },
5171
5291
  errorState: {
5172
- padding: "16px",
5173
- fontSize: "13px",
5174
- color: "#dc2626",
5175
- backgroundColor: "#fef2f2",
5176
- margin: "12px",
5177
- borderRadius: "6px",
5292
+ padding: SPACE.S4,
5293
+ fontSize: FONT_SIZE.sm,
5294
+ color: COLOR.danger,
5295
+ backgroundColor: COLOR.dangerBg,
5296
+ margin: SPACE.S3,
5297
+ borderRadius: RADIUS.md,
5178
5298
  textAlign: "center"
5179
5299
  }
5180
5300
  };
@@ -5241,6 +5361,18 @@ function CollabInbox({
5241
5361
  }
5242
5362
  function buildPatientData(item) {
5243
5363
  if (item.patientSnapshot) return item.patientSnapshot;
5364
+ const parts = item.name.split(" - ");
5365
+ if (parts.length >= 3) {
5366
+ const last4 = parts[parts.length - 1];
5367
+ const labName = parts[parts.length - 2];
5368
+ const patientName = parts.slice(0, parts.length - 2).join(" - ");
5369
+ return {
5370
+ patientName,
5371
+ labName: labName || void 0,
5372
+ orderId: item.orderId,
5373
+ displayOrderId: last4
5374
+ };
5375
+ }
5244
5376
  return {
5245
5377
  patientName: item.name,
5246
5378
  orderId: item.orderId
@@ -5258,7 +5390,7 @@ var styles17 = {
5258
5390
  display: "flex",
5259
5391
  height: "100%",
5260
5392
  width: "100%",
5261
- backgroundColor: "#ffffff",
5393
+ backgroundColor: COLOR.white,
5262
5394
  fontFamily: FONT_STACK
5263
5395
  },
5264
5396
  sidebar: {
@@ -5279,15 +5411,15 @@ var styles17 = {
5279
5411
  display: "flex",
5280
5412
  flexDirection: "column",
5281
5413
  minWidth: 0,
5282
- padding: "12px",
5283
- backgroundColor: "#f3f4f6"
5414
+ padding: SPACE.S3,
5415
+ backgroundColor: COLOR.neutral100
5284
5416
  },
5285
5417
  mainCompact: {
5286
5418
  flex: 1,
5287
5419
  display: "flex",
5288
5420
  flexDirection: "column",
5289
5421
  minWidth: 0,
5290
- backgroundColor: "#f3f4f6"
5422
+ backgroundColor: COLOR.neutral100
5291
5423
  },
5292
5424
  panel: {
5293
5425
  height: "100%",
@@ -5299,23 +5431,23 @@ var styles17 = {
5299
5431
  flexDirection: "column",
5300
5432
  alignItems: "center",
5301
5433
  justifyContent: "center",
5302
- padding: "48px 24px",
5434
+ padding: `${SPACE.S12} ${SPACE.S6}`,
5303
5435
  textAlign: "center"
5304
5436
  },
5305
5437
  emptyIcon: {
5306
- fontSize: "48px",
5307
- marginBottom: "12px"
5438
+ fontSize: FONT_SIZE.xxl,
5439
+ marginBottom: SPACE.S3
5308
5440
  },
5309
5441
  emptyTitle: {
5310
- margin: "0 0 6px",
5311
- fontSize: "16px",
5312
- fontWeight: 600,
5313
- color: "#374151"
5442
+ margin: `0 0 ${SPACE.S2}`,
5443
+ fontSize: FONT_SIZE.lg,
5444
+ fontWeight: FONT_WEIGHT.semibold,
5445
+ color: COLOR.neutral700
5314
5446
  },
5315
5447
  emptySubtitle: {
5316
5448
  margin: 0,
5317
- fontSize: "13px",
5318
- color: "#6b7280",
5449
+ fontSize: FONT_SIZE.sm,
5450
+ color: COLOR.neutral500,
5319
5451
  maxWidth: "320px"
5320
5452
  }
5321
5453
  };