@natoe/colab 0.1.8 → 0.1.10

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,11 +1202,109 @@ 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,
1208
1304
  onOpenSettings,
1209
1305
  onBack,
1306
+ hideName = false,
1307
+ displayName,
1210
1308
  className
1211
1309
  }) {
1212
1310
  const hasDicom = !!(patientData.studyId && patientData.storageId);
@@ -1221,7 +1319,7 @@ function PatientHeader({
1221
1319
  meta.push({ label: "Ref", value: patientData.referringPhysician });
1222
1320
  }
1223
1321
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: styles.container, children: [
1224
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles.nameRow, children: [
1322
+ !hideName && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles.nameRow, children: [
1225
1323
  onBack && /* @__PURE__ */ jsxRuntime.jsx(
1226
1324
  "button",
1227
1325
  {
@@ -1230,10 +1328,10 @@ function PatientHeader({
1230
1328
  style: styles.backButton,
1231
1329
  "aria-label": "Back to conversations",
1232
1330
  title: "Back to conversations",
1233
- children: /* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 22, color: "#1f2937" })
1331
+ children: /* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 22, color: COLOR.neutral800 })
1234
1332
  }
1235
1333
  ),
1236
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles.nameText, children: buildChannelName(patientData) })
1334
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles.nameText, children: displayName ?? buildChannelName(patientData) })
1237
1335
  ] }),
1238
1336
  meta.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles.metaRow, children: meta.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("span", { style: styles.metaItem, children: [
1239
1337
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: styles.metaLabel, children: [
@@ -1252,7 +1350,7 @@ function PatientHeader({
1252
1350
  type: "button",
1253
1351
  "aria-label": "View DICOM study",
1254
1352
  children: [
1255
- /* @__PURE__ */ jsxRuntime.jsx(DicomIcon, { size: 18, color: "#ffffff" }),
1353
+ /* @__PURE__ */ jsxRuntime.jsx(DicomIcon, { size: 18, color: COLOR.white }),
1256
1354
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "View DICOM" })
1257
1355
  ]
1258
1356
  }
@@ -1265,7 +1363,7 @@ function PatientHeader({
1265
1363
  type: "button",
1266
1364
  "aria-label": "Open channel settings",
1267
1365
  children: [
1268
- /* @__PURE__ */ jsxRuntime.jsx(SettingsIcon, { size: 18, color: "#374151" }),
1366
+ /* @__PURE__ */ jsxRuntime.jsx(SettingsIcon, { size: 18, color: COLOR.neutral700 }),
1269
1367
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Settings" })
1270
1368
  ]
1271
1369
  }
@@ -1275,33 +1373,33 @@ function PatientHeader({
1275
1373
  }
1276
1374
  var styles = {
1277
1375
  container: {
1278
- padding: "14px 16px",
1279
- borderBottom: "1px solid #e5e7eb",
1280
- backgroundColor: "#f9fafb"
1376
+ padding: `${SPACE.S3} ${SPACE.S4}`,
1377
+ borderBottom: `1px solid ${COLOR.neutral200}`,
1378
+ backgroundColor: COLOR.neutral50
1281
1379
  },
1282
1380
  nameRow: {
1283
1381
  display: "flex",
1284
1382
  alignItems: "center",
1285
- gap: "6px"
1383
+ gap: SPACE.S2
1286
1384
  },
1287
1385
  backButton: {
1288
- width: "36px",
1289
- height: "36px",
1386
+ width: SIZE.controlIcon,
1387
+ height: SIZE.controlIcon,
1290
1388
  display: "flex",
1291
1389
  alignItems: "center",
1292
1390
  justifyContent: "center",
1293
- marginLeft: "-8px",
1391
+ marginLeft: `-${SPACE.S2}`,
1294
1392
  backgroundColor: "transparent",
1295
1393
  border: "none",
1296
- borderRadius: "50%",
1394
+ borderRadius: RADIUS.full,
1297
1395
  cursor: "pointer",
1298
1396
  flexShrink: 0
1299
1397
  },
1300
1398
  nameText: {
1301
- fontSize: "18px",
1302
- fontWeight: 600,
1303
- color: "#111827",
1304
- lineHeight: 1.3,
1399
+ fontSize: FONT_SIZE.lg,
1400
+ fontWeight: FONT_WEIGHT.semibold,
1401
+ color: COLOR.neutral900,
1402
+ lineHeight: LINE_HEIGHT.tight,
1305
1403
  minWidth: 0,
1306
1404
  overflow: "hidden",
1307
1405
  textOverflow: "ellipsis",
@@ -1310,53 +1408,53 @@ var styles = {
1310
1408
  metaRow: {
1311
1409
  display: "flex",
1312
1410
  flexWrap: "wrap",
1313
- columnGap: "14px",
1314
- rowGap: "4px",
1315
- marginTop: "6px"
1411
+ columnGap: SPACE.S3,
1412
+ rowGap: SPACE.S1,
1413
+ marginTop: SPACE.S1
1316
1414
  },
1317
1415
  metaItem: {
1318
- fontSize: "13px",
1319
- color: "#374151",
1416
+ fontSize: FONT_SIZE.sm,
1417
+ color: COLOR.neutral700,
1320
1418
  whiteSpace: "nowrap"
1321
1419
  },
1322
1420
  metaLabel: {
1323
- color: "#6b7280",
1324
- fontWeight: 500
1421
+ color: COLOR.neutral500,
1422
+ fontWeight: FONT_WEIGHT.medium
1325
1423
  },
1326
1424
  metaValue: {
1327
- color: "#111827"
1425
+ color: COLOR.neutral900
1328
1426
  },
1329
1427
  actions: {
1330
1428
  display: "flex",
1331
- gap: "8px",
1332
- marginTop: "10px"
1429
+ gap: SPACE.S2,
1430
+ marginTop: SPACE.S3
1333
1431
  },
1334
1432
  dicomButton: {
1335
1433
  display: "inline-flex",
1336
1434
  alignItems: "center",
1337
- gap: "8px",
1338
- minHeight: "40px",
1339
- padding: "8px 16px",
1340
- fontSize: "14px",
1341
- fontWeight: 500,
1342
- color: "#ffffff",
1343
- backgroundColor: "#2563eb",
1435
+ gap: SPACE.S2,
1436
+ minHeight: SIZE.control,
1437
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1438
+ fontSize: FONT_SIZE.sm,
1439
+ fontWeight: FONT_WEIGHT.medium,
1440
+ color: COLOR.white,
1441
+ backgroundColor: COLOR.primary,
1344
1442
  border: "none",
1345
- borderRadius: "6px",
1443
+ borderRadius: RADIUS.md,
1346
1444
  cursor: "pointer"
1347
1445
  },
1348
1446
  settingsButton: {
1349
1447
  display: "inline-flex",
1350
1448
  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",
1449
+ gap: SPACE.S2,
1450
+ minHeight: SIZE.control,
1451
+ padding: `${SPACE.S2} ${SPACE.S4}`,
1452
+ fontSize: FONT_SIZE.sm,
1453
+ fontWeight: FONT_WEIGHT.medium,
1454
+ color: COLOR.neutral700,
1455
+ backgroundColor: COLOR.white,
1456
+ border: `1px solid ${COLOR.neutral300}`,
1457
+ borderRadius: RADIUS.md,
1360
1458
  cursor: "pointer"
1361
1459
  }
1362
1460
  };
@@ -1366,10 +1464,10 @@ function ReplyQuoteBlock({
1366
1464
  onClick,
1367
1465
  className
1368
1466
  }) {
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";
1467
+ const baseBg = inOwnBubble ? "rgba(255,255,255,0.18)" : COLOR.neutral100;
1468
+ const barColor = inOwnBubble ? COLOR.white : COLOR.primary;
1469
+ const nameColor = inOwnBubble ? COLOR.white : COLOR.primary;
1470
+ const bodyColor = inOwnBubble ? "rgba(255,255,255,0.85)" : COLOR.neutral600;
1373
1471
  const preview = renderSnapshotPreview(snapshot);
1374
1472
  return /* @__PURE__ */ jsxRuntime.jsxs(
1375
1473
  "div",
@@ -1408,10 +1506,10 @@ function renderSnapshotPreview(snapshot) {
1408
1506
  var styles2 = {
1409
1507
  container: {
1410
1508
  display: "flex",
1411
- gap: "6px",
1412
- padding: "4px 8px",
1413
- marginBottom: "4px",
1414
- borderRadius: "6px",
1509
+ gap: SPACE.S2,
1510
+ padding: `${SPACE.S1} ${SPACE.S2}`,
1511
+ marginBottom: SPACE.S1,
1512
+ borderRadius: RADIUS.sm,
1415
1513
  cursor: "pointer",
1416
1514
  maxWidth: "100%"
1417
1515
  },
@@ -1428,13 +1526,13 @@ var styles2 = {
1428
1526
  overflow: "hidden"
1429
1527
  },
1430
1528
  senderName: {
1431
- fontSize: "11px",
1432
- fontWeight: 600,
1433
- lineHeight: "1.2"
1529
+ fontSize: FONT_SIZE.xs,
1530
+ fontWeight: FONT_WEIGHT.semibold,
1531
+ lineHeight: LINE_HEIGHT.tight
1434
1532
  },
1435
1533
  body: {
1436
- fontSize: "11px",
1437
- lineHeight: "1.3",
1534
+ fontSize: FONT_SIZE.xs,
1535
+ lineHeight: LINE_HEIGHT.tight,
1438
1536
  overflow: "hidden",
1439
1537
  textOverflow: "ellipsis",
1440
1538
  whiteSpace: "nowrap"
@@ -1481,22 +1579,22 @@ var styles3 = {
1481
1579
  container: {
1482
1580
  display: "flex",
1483
1581
  alignItems: "center",
1484
- gap: "4px",
1582
+ gap: SPACE.S1,
1485
1583
  marginTop: "2px",
1486
- fontSize: "10px",
1487
- opacity: 0.75
1584
+ fontSize: FONT_SIZE.xs,
1585
+ opacity: 0.85
1488
1586
  },
1489
1587
  checkmark: {
1490
- fontSize: "10px",
1491
- color: "#60a5fa"
1588
+ fontSize: FONT_SIZE.xs,
1589
+ color: COLOR.primary
1492
1590
  },
1493
1591
  label: {
1494
- fontSize: "10px",
1592
+ fontSize: FONT_SIZE.xs,
1495
1593
  color: "inherit"
1496
1594
  },
1497
1595
  moreButton: {
1498
- fontSize: "10px",
1499
- fontWeight: 600,
1596
+ fontSize: FONT_SIZE.xs,
1597
+ fontWeight: FONT_WEIGHT.semibold,
1500
1598
  color: "inherit",
1501
1599
  backgroundColor: "transparent",
1502
1600
  border: "none",
@@ -1664,7 +1762,7 @@ function MessageActionsMenu({
1664
1762
  onClick: () => run(() => onReply(message)),
1665
1763
  style: styles4.item,
1666
1764
  children: [
1667
- /* @__PURE__ */ jsxRuntime.jsx(ReplyIcon, { size: 18, color: "#374151" }),
1765
+ /* @__PURE__ */ jsxRuntime.jsx(ReplyIcon, { size: 18, color: COLOR.neutral700 }),
1668
1766
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Reply" })
1669
1767
  ]
1670
1768
  }
@@ -1677,7 +1775,7 @@ function MessageActionsMenu({
1677
1775
  onClick: () => run(() => onUnpin(message.id)),
1678
1776
  style: styles4.item,
1679
1777
  children: [
1680
- /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: "#374151" }),
1778
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1681
1779
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Unpin" })
1682
1780
  ]
1683
1781
  }
@@ -1694,7 +1792,7 @@ function MessageActionsMenu({
1694
1792
  },
1695
1793
  title: pinDisabled ? "Pin limit reached (max 3)" : void 0,
1696
1794
  children: [
1697
- /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: "#374151" }),
1795
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 16, color: COLOR.neutral700 }),
1698
1796
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: pinDisabled ? "Pin (limit reached)" : "Pin" })
1699
1797
  ]
1700
1798
  }
@@ -1707,7 +1805,7 @@ function MessageActionsMenu({
1707
1805
  onClick: () => run(() => onCopy(message.body)),
1708
1806
  style: styles4.item,
1709
1807
  children: [
1710
- /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, { size: 16, color: "#374151" }),
1808
+ /* @__PURE__ */ jsxRuntime.jsx(CopyIcon, { size: 16, color: COLOR.neutral700 }),
1711
1809
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Copy text" })
1712
1810
  ]
1713
1811
  }
@@ -1730,7 +1828,7 @@ function MessageActionsMenu({
1730
1828
  "aria-expanded": isOpen ? "true" : "false",
1731
1829
  title: "Message actions",
1732
1830
  style: styles4.trigger,
1733
- children: /* @__PURE__ */ jsxRuntime.jsx(MoreIcon, { size: 18, color: "#4b5563" })
1831
+ children: /* @__PURE__ */ jsxRuntime.jsx(MoreIcon, { size: 18, color: COLOR.neutral600 })
1734
1832
  }
1735
1833
  ),
1736
1834
  menu && typeof document !== "undefined" ? reactDom.createPortal(menu, document.body) : null
@@ -1742,45 +1840,45 @@ var styles4 = {
1742
1840
  display: "inline-block"
1743
1841
  },
1744
1842
  trigger: {
1745
- width: "36px",
1746
- height: "36px",
1843
+ width: SIZE.controlIcon,
1844
+ height: SIZE.controlIcon,
1747
1845
  display: "flex",
1748
1846
  alignItems: "center",
1749
1847
  justifyContent: "center",
1750
1848
  backgroundColor: "transparent",
1751
1849
  border: "none",
1752
- borderRadius: "50%",
1850
+ borderRadius: RADIUS.full,
1753
1851
  cursor: "pointer",
1754
- color: "#4b5563"
1852
+ color: COLOR.neutral600
1755
1853
  },
1756
1854
  menu: {
1757
1855
  position: "fixed",
1758
1856
  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
1857
+ backgroundColor: COLOR.white,
1858
+ border: `1px solid ${COLOR.neutral200}`,
1859
+ borderRadius: RADIUS.md,
1860
+ boxShadow: SHADOW.popover,
1861
+ padding: SPACE.S1,
1862
+ // Above the floating popup (z-index dialog) but below any future modal.
1863
+ zIndex: Z_INDEX.menu
1766
1864
  },
1767
1865
  item: {
1768
1866
  display: "flex",
1769
1867
  alignItems: "center",
1770
- gap: "10px",
1868
+ gap: SPACE.S3,
1771
1869
  width: "100%",
1772
- minHeight: "40px",
1773
- padding: "8px 12px",
1774
- fontSize: "14px",
1775
- color: "#111827",
1870
+ minHeight: SIZE.control,
1871
+ padding: `${SPACE.S2} ${SPACE.S3}`,
1872
+ fontSize: FONT_SIZE.sm,
1873
+ color: COLOR.neutral900,
1776
1874
  backgroundColor: "transparent",
1777
1875
  border: "none",
1778
- borderRadius: "6px",
1876
+ borderRadius: RADIUS.sm,
1779
1877
  cursor: "pointer",
1780
1878
  textAlign: "left"
1781
1879
  },
1782
1880
  itemDisabled: {
1783
- color: "#9ca3af",
1881
+ color: COLOR.neutral400,
1784
1882
  cursor: "not-allowed"
1785
1883
  }
1786
1884
  };
@@ -1812,7 +1910,7 @@ function AlertIcon({ size = 14, color = "currentColor" }) {
1812
1910
  }
1813
1911
  );
1814
1912
  }
1815
- function Spinner({ size = 16, color = "#6b7280", thickness = 2 }) {
1913
+ function Spinner({ size = 16, color = COLOR.neutral500, thickness = 2 }) {
1816
1914
  return /* @__PURE__ */ jsxRuntime.jsx(
1817
1915
  "span",
1818
1916
  {
@@ -2050,10 +2148,10 @@ var styles5 = {
2050
2148
  wrapper: {
2051
2149
  display: "flex",
2052
2150
  alignItems: "flex-end",
2053
- gap: "4px",
2054
- marginBottom: "8px",
2055
- paddingLeft: "16px",
2056
- paddingRight: "16px"
2151
+ gap: SPACE.S1,
2152
+ marginBottom: SPACE.S2,
2153
+ paddingLeft: SPACE.S4,
2154
+ paddingRight: SPACE.S4
2057
2155
  },
2058
2156
  bubbleWrapper: {
2059
2157
  position: "relative",
@@ -2064,64 +2162,64 @@ var styles5 = {
2064
2162
  alignSelf: "flex-end"
2065
2163
  },
2066
2164
  bubble: {
2067
- padding: "10px 14px",
2068
- borderRadius: "12px",
2165
+ padding: `${SPACE.S3} ${SPACE.S4}`,
2166
+ borderRadius: RADIUS.lg,
2069
2167
  wordBreak: "break-word"
2070
2168
  },
2071
2169
  ownBubble: {
2072
- backgroundColor: "#2563eb",
2073
- color: "#ffffff",
2074
- borderBottomRightRadius: "4px"
2170
+ backgroundColor: COLOR.primary,
2171
+ color: COLOR.white,
2172
+ borderBottomRightRadius: RADIUS.sm
2075
2173
  },
2076
2174
  otherBubble: {
2077
- backgroundColor: "#f3f4f6",
2078
- color: "#111827",
2079
- borderBottomLeftRadius: "4px"
2175
+ backgroundColor: COLOR.neutral100,
2176
+ color: COLOR.neutral900,
2177
+ borderBottomLeftRadius: RADIUS.sm
2080
2178
  },
2081
2179
  pinnedBadge: {
2082
2180
  display: "inline-flex",
2083
2181
  alignItems: "center",
2084
- gap: "4px",
2085
- fontSize: "12px",
2086
- fontWeight: 600,
2087
- marginBottom: "4px",
2088
- color: "#6b7280"
2182
+ gap: SPACE.S1,
2183
+ fontSize: FONT_SIZE.xs,
2184
+ fontWeight: FONT_WEIGHT.semibold,
2185
+ marginBottom: SPACE.S1,
2186
+ color: COLOR.neutral500
2089
2187
  },
2090
2188
  senderRow: {
2091
2189
  display: "flex",
2092
2190
  alignItems: "center",
2093
- gap: "6px",
2094
- marginBottom: "4px"
2191
+ gap: SPACE.S2,
2192
+ marginBottom: SPACE.S1
2095
2193
  },
2096
2194
  senderName: {
2097
- fontSize: "13px",
2098
- fontWeight: 600,
2099
- color: "#374151"
2195
+ fontSize: FONT_SIZE.sm,
2196
+ fontWeight: FONT_WEIGHT.semibold,
2197
+ color: COLOR.neutral700
2100
2198
  },
2101
2199
  roleBadge: {
2102
- fontSize: "11px",
2103
- fontWeight: 600,
2104
- padding: "2px 8px",
2105
- borderRadius: "4px"
2200
+ fontSize: FONT_SIZE.xs,
2201
+ fontWeight: FONT_WEIGHT.semibold,
2202
+ padding: `2px ${SPACE.S2}`,
2203
+ borderRadius: RADIUS.sm
2106
2204
  },
2107
2205
  textBody: {
2108
2206
  margin: 0,
2109
- fontSize: "15px",
2110
- lineHeight: "1.45"
2207
+ fontSize: FONT_SIZE.md,
2208
+ lineHeight: LINE_HEIGHT.normal
2111
2209
  },
2112
2210
  timestamp: {
2113
- fontSize: "12px",
2211
+ fontSize: FONT_SIZE.xs,
2114
2212
  color: "inherit",
2115
2213
  opacity: 0.8,
2116
- marginTop: "4px",
2214
+ marginTop: SPACE.S1,
2117
2215
  textAlign: "right"
2118
2216
  },
2119
2217
  statusRow: {
2120
2218
  display: "flex",
2121
2219
  alignItems: "center",
2122
- gap: "6px",
2123
- marginTop: "4px",
2124
- fontSize: "12px",
2220
+ gap: SPACE.S2,
2221
+ marginTop: SPACE.S1,
2222
+ fontSize: FONT_SIZE.xs,
2125
2223
  justifyContent: "flex-end",
2126
2224
  color: "rgba(255, 255, 255, 0.9)"
2127
2225
  },
@@ -2131,48 +2229,48 @@ var styles5 = {
2131
2229
  retryButton: {
2132
2230
  background: "transparent",
2133
2231
  border: "none",
2134
- color: "#ffffff",
2135
- fontWeight: 600,
2136
- fontSize: "12px",
2232
+ color: COLOR.white,
2233
+ fontWeight: FONT_WEIGHT.semibold,
2234
+ fontSize: FONT_SIZE.xs,
2137
2235
  textDecoration: "underline",
2138
2236
  cursor: "pointer",
2139
- padding: "0 2px"
2237
+ padding: `0 ${SPACE.S1}`
2140
2238
  },
2141
2239
  audioContainer: {
2142
2240
  display: "flex",
2143
2241
  alignItems: "center",
2144
- gap: "8px"
2242
+ gap: SPACE.S2
2145
2243
  },
2146
2244
  audioPlayer: {
2147
2245
  height: "32px",
2148
2246
  maxWidth: "220px"
2149
2247
  },
2150
2248
  audioDuration: {
2151
- fontSize: "12px",
2249
+ fontSize: FONT_SIZE.xs,
2152
2250
  opacity: 0.7,
2153
2251
  whiteSpace: "nowrap"
2154
2252
  },
2155
2253
  imagePreview: {
2156
2254
  maxWidth: "240px",
2157
2255
  maxHeight: "180px",
2158
- borderRadius: "8px",
2256
+ borderRadius: RADIUS.md,
2159
2257
  objectFit: "cover",
2160
2258
  cursor: "pointer"
2161
2259
  },
2162
2260
  fileLink: {
2163
2261
  display: "flex",
2164
2262
  alignItems: "center",
2165
- gap: "6px",
2263
+ gap: SPACE.S2,
2166
2264
  textDecoration: "none",
2167
2265
  color: "inherit",
2168
- padding: "6px 0"
2266
+ padding: `${SPACE.S1} 0`
2169
2267
  },
2170
2268
  fileName: {
2171
- fontSize: "13px",
2269
+ fontSize: FONT_SIZE.sm,
2172
2270
  textDecoration: "underline"
2173
2271
  },
2174
2272
  deepLink: {
2175
- color: "#3b82f6",
2273
+ color: COLOR.primary,
2176
2274
  textDecoration: "underline",
2177
2275
  cursor: "pointer"
2178
2276
  },
@@ -2180,34 +2278,34 @@ var styles5 = {
2180
2278
  display: "flex",
2181
2279
  flexDirection: "column",
2182
2280
  gap: "2px",
2183
- padding: "8px",
2184
- backgroundColor: "#eff6ff",
2185
- borderRadius: "8px",
2186
- border: "1px solid #bfdbfe",
2281
+ padding: SPACE.S2,
2282
+ backgroundColor: COLOR.primaryBg,
2283
+ borderRadius: RADIUS.md,
2284
+ border: `1px solid ${COLOR.primaryBg}`,
2187
2285
  cursor: "pointer"
2188
2286
  },
2189
2287
  deepLinkLabel: {
2190
- fontSize: "13px",
2191
- fontWeight: 500,
2192
- color: "#1d4ed8"
2288
+ fontSize: FONT_SIZE.sm,
2289
+ fontWeight: FONT_WEIGHT.medium,
2290
+ color: COLOR.primaryFg
2193
2291
  },
2194
2292
  deepLinkPath: {
2195
- fontSize: "11px",
2196
- color: "#6b7280",
2293
+ fontSize: FONT_SIZE.xs,
2294
+ color: COLOR.neutral500,
2197
2295
  fontFamily: "monospace"
2198
2296
  },
2199
2297
  systemMessage: {
2200
2298
  display: "flex",
2201
2299
  justifyContent: "center",
2202
2300
  alignItems: "center",
2203
- gap: "8px",
2204
- padding: "6px 16px",
2205
- fontSize: "13px",
2206
- color: "#6b7280"
2301
+ gap: SPACE.S2,
2302
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2303
+ fontSize: FONT_SIZE.sm,
2304
+ color: COLOR.neutral500
2207
2305
  },
2208
2306
  systemTime: {
2209
- fontSize: "12px",
2210
- color: "#9ca3af"
2307
+ fontSize: FONT_SIZE.xs,
2308
+ color: COLOR.neutral400
2211
2309
  }
2212
2310
  };
2213
2311
  function ChatIllustration({ size = 96 }) {
@@ -2462,34 +2560,34 @@ var styles6 = {
2462
2560
  container: {
2463
2561
  flex: 1,
2464
2562
  overflowY: "auto",
2465
- paddingTop: "12px",
2466
- paddingBottom: "8px"
2563
+ paddingTop: SPACE.S3,
2564
+ paddingBottom: SPACE.S2
2467
2565
  },
2468
2566
  loadingMore: {
2469
2567
  display: "flex",
2470
2568
  alignItems: "center",
2471
2569
  justifyContent: "center",
2472
- gap: "8px",
2473
- padding: "12px",
2474
- fontSize: "14px",
2475
- color: "#6b7280"
2570
+ gap: SPACE.S2,
2571
+ padding: SPACE.S3,
2572
+ fontSize: FONT_SIZE.sm,
2573
+ color: COLOR.neutral500
2476
2574
  },
2477
2575
  firstLoad: {
2478
2576
  display: "flex",
2479
2577
  alignItems: "center",
2480
2578
  justifyContent: "center",
2481
- padding: "48px 16px"
2579
+ padding: `${SPACE.S12} ${SPACE.S4}`
2482
2580
  },
2483
2581
  loadMoreButton: {
2484
2582
  display: "block",
2485
- margin: "0 auto 12px",
2583
+ margin: `0 auto ${SPACE.S3}`,
2486
2584
  minHeight: "36px",
2487
- padding: "8px 18px",
2488
- fontSize: "13px",
2489
- color: "#374151",
2585
+ padding: `${SPACE.S2} ${SPACE.S5}`,
2586
+ fontSize: FONT_SIZE.sm,
2587
+ color: COLOR.neutral700,
2490
2588
  backgroundColor: "transparent",
2491
- border: "1px solid #d1d5db",
2492
- borderRadius: "18px",
2589
+ border: `1px solid ${COLOR.neutral300}`,
2590
+ borderRadius: RADIUS.pill,
2493
2591
  cursor: "pointer"
2494
2592
  },
2495
2593
  empty: {
@@ -2497,47 +2595,47 @@ var styles6 = {
2497
2595
  flexDirection: "column",
2498
2596
  alignItems: "center",
2499
2597
  justifyContent: "center",
2500
- padding: "48px 16px",
2501
- color: "#6b7280"
2598
+ padding: `${SPACE.S12} ${SPACE.S4}`,
2599
+ color: COLOR.neutral500
2502
2600
  },
2503
2601
  emptyTitle: {
2504
- fontSize: "16px",
2505
- fontWeight: 600,
2506
- color: "#374151",
2507
- margin: "14px 0 4px"
2602
+ fontSize: FONT_SIZE.lg,
2603
+ fontWeight: FONT_WEIGHT.semibold,
2604
+ color: COLOR.neutral700,
2605
+ margin: `${SPACE.S3} 0 ${SPACE.S1}`
2508
2606
  },
2509
2607
  emptySubtitle: {
2510
- fontSize: "14px",
2608
+ fontSize: FONT_SIZE.sm,
2511
2609
  margin: 0,
2512
2610
  maxWidth: "280px",
2513
- lineHeight: 1.45,
2611
+ lineHeight: LINE_HEIGHT.normal,
2514
2612
  textAlign: "center"
2515
2613
  },
2516
2614
  typingIndicator: {
2517
- padding: "4px 16px 8px",
2518
- fontSize: "13px",
2519
- color: "#6b7280",
2615
+ padding: `${SPACE.S1} ${SPACE.S4} ${SPACE.S2}`,
2616
+ fontSize: FONT_SIZE.sm,
2617
+ color: COLOR.neutral500,
2520
2618
  fontStyle: "italic"
2521
2619
  },
2522
2620
  dayDivider: {
2523
2621
  display: "flex",
2524
2622
  justifyContent: "center",
2525
- margin: "12px 0 8px",
2623
+ margin: `${SPACE.S3} 0 ${SPACE.S2}`,
2526
2624
  position: "sticky",
2527
- top: "4px",
2528
- zIndex: 1,
2625
+ top: SPACE.S1,
2626
+ zIndex: Z_INDEX.sticky,
2529
2627
  pointerEvents: "none"
2530
2628
  },
2531
2629
  dayDividerPill: {
2532
2630
  display: "inline-block",
2533
- padding: "5px 14px",
2534
- fontSize: "13px",
2535
- fontWeight: 500,
2536
- color: "#334155",
2537
- backgroundColor: "#e2e8f0",
2538
- borderRadius: "12px",
2631
+ padding: `${SPACE.S1} ${SPACE.S3}`,
2632
+ fontSize: FONT_SIZE.sm,
2633
+ fontWeight: FONT_WEIGHT.medium,
2634
+ color: COLOR.slate700,
2635
+ backgroundColor: COLOR.slate200,
2636
+ borderRadius: RADIUS.lg,
2539
2637
  letterSpacing: "0.2px",
2540
- boxShadow: "0 1px 2px rgba(0, 0, 0, 0.04)"
2638
+ boxShadow: SHADOW.subtle
2541
2639
  },
2542
2640
  bubbleSlot: {
2543
2641
  animation: "natoe-colab-message-in 180ms ease-out"
@@ -2580,14 +2678,14 @@ var styles7 = {
2580
2678
  container: {
2581
2679
  display: "flex",
2582
2680
  alignItems: "stretch",
2583
- gap: "8px",
2584
- padding: "8px 12px",
2585
- backgroundColor: "#f9fafb",
2586
- borderTop: "1px solid #e5e7eb"
2681
+ gap: SPACE.S2,
2682
+ padding: `${SPACE.S2} ${SPACE.S3}`,
2683
+ backgroundColor: COLOR.neutral50,
2684
+ borderTop: `1px solid ${COLOR.neutral200}`
2587
2685
  },
2588
2686
  bar: {
2589
2687
  width: "3px",
2590
- backgroundColor: "#2563eb",
2688
+ backgroundColor: COLOR.primary,
2591
2689
  borderRadius: "2px",
2592
2690
  flexShrink: 0
2593
2691
  },
@@ -2601,20 +2699,20 @@ var styles7 = {
2601
2699
  senderLine: {
2602
2700
  display: "flex",
2603
2701
  alignItems: "center",
2604
- gap: "4px"
2702
+ gap: SPACE.S1
2605
2703
  },
2606
2704
  senderIcon: {
2607
- fontSize: "11px",
2608
- color: "#2563eb"
2705
+ fontSize: FONT_SIZE.xs,
2706
+ color: COLOR.primary
2609
2707
  },
2610
2708
  senderName: {
2611
- fontSize: "12px",
2612
- fontWeight: 600,
2613
- color: "#2563eb"
2709
+ fontSize: FONT_SIZE.xs,
2710
+ fontWeight: FONT_WEIGHT.semibold,
2711
+ color: COLOR.primary
2614
2712
  },
2615
2713
  preview: {
2616
- fontSize: "12px",
2617
- color: "#6b7280",
2714
+ fontSize: FONT_SIZE.xs,
2715
+ color: COLOR.neutral500,
2618
2716
  overflow: "hidden",
2619
2717
  textOverflow: "ellipsis",
2620
2718
  whiteSpace: "nowrap"
@@ -2626,12 +2724,12 @@ var styles7 = {
2626
2724
  display: "flex",
2627
2725
  alignItems: "center",
2628
2726
  justifyContent: "center",
2629
- color: "#6b7280",
2727
+ color: COLOR.neutral500,
2630
2728
  backgroundColor: "transparent",
2631
2729
  border: "none",
2632
- borderRadius: "4px",
2730
+ borderRadius: RADIUS.sm,
2633
2731
  cursor: "pointer",
2634
- fontSize: "12px",
2732
+ fontSize: FONT_SIZE.xs,
2635
2733
  flexShrink: 0
2636
2734
  }
2637
2735
  };
@@ -2846,7 +2944,7 @@ function MessageInput({
2846
2944
  opacity: text.trim() ? 1 : 0.4
2847
2945
  },
2848
2946
  type: "button",
2849
- children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: "#ffffff" })
2947
+ children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: COLOR.white })
2850
2948
  }
2851
2949
  )
2852
2950
  ] })
@@ -2854,26 +2952,26 @@ function MessageInput({
2854
2952
  }
2855
2953
  var styles8 = {
2856
2954
  container: {
2857
- borderTop: "1px solid #e5e7eb",
2858
- backgroundColor: "#ffffff"
2955
+ borderTop: `1px solid ${COLOR.neutral200}`,
2956
+ backgroundColor: COLOR.white
2859
2957
  },
2860
2958
  uploadBanner: {
2861
2959
  display: "flex",
2862
2960
  alignItems: "center",
2863
- gap: "8px",
2864
- padding: "6px 14px",
2865
- fontSize: "12px",
2866
- color: "#6b7280",
2867
- backgroundColor: "#f9fafb",
2868
- borderBottom: "1px solid #e5e7eb"
2961
+ gap: SPACE.S2,
2962
+ padding: `${SPACE.S1} ${SPACE.S4}`,
2963
+ fontSize: FONT_SIZE.xs,
2964
+ color: COLOR.neutral500,
2965
+ backgroundColor: COLOR.neutral50,
2966
+ borderBottom: `1px solid ${COLOR.neutral200}`
2869
2967
  },
2870
2968
  uploadSpinner: {
2871
2969
  display: "inline-block",
2872
2970
  width: "12px",
2873
2971
  height: "12px",
2874
- border: "2px solid #d1d5db",
2875
- borderTopColor: "#7c3aed",
2876
- borderRadius: "50%",
2972
+ border: `2px solid ${COLOR.neutral300}`,
2973
+ borderTopColor: COLOR.primary,
2974
+ borderRadius: RADIUS.full,
2877
2975
  animation: "natoe-colab-spin 0.7s linear infinite",
2878
2976
  flexShrink: 0
2879
2977
  },
@@ -2881,12 +2979,12 @@ var styles8 = {
2881
2979
  display: "flex",
2882
2980
  alignItems: "center",
2883
2981
  justifyContent: "space-between",
2884
- gap: "8px",
2885
- padding: "8px 12px 8px 16px",
2886
- fontSize: "13px",
2887
- color: "#b91c1c",
2888
- backgroundColor: "#fef2f2",
2889
- borderTop: "1px solid #fecaca"
2982
+ gap: SPACE.S2,
2983
+ padding: `${SPACE.S2} ${SPACE.S3} ${SPACE.S2} ${SPACE.S4}`,
2984
+ fontSize: FONT_SIZE.sm,
2985
+ color: COLOR.dangerFg,
2986
+ backgroundColor: COLOR.dangerBg,
2987
+ borderTop: `1px solid ${COLOR.dangerBorder}`
2890
2988
  },
2891
2989
  errorText: {
2892
2990
  flex: 1,
@@ -2900,52 +2998,52 @@ var styles8 = {
2900
2998
  justifyContent: "center",
2901
2999
  backgroundColor: "transparent",
2902
3000
  border: "none",
2903
- color: "#b91c1c",
2904
- borderRadius: "4px",
3001
+ color: COLOR.dangerFg,
3002
+ borderRadius: RADIUS.sm,
2905
3003
  cursor: "pointer",
2906
3004
  flexShrink: 0
2907
3005
  },
2908
3006
  inputBar: {
2909
3007
  display: "flex",
2910
3008
  alignItems: "flex-end",
2911
- gap: "6px",
2912
- padding: "10px 12px"
3009
+ gap: SPACE.S2,
3010
+ padding: `${SPACE.S3} ${SPACE.S3}`
2913
3011
  },
2914
3012
  iconButton: {
2915
- width: "44px",
2916
- height: "44px",
3013
+ width: SIZE.controlPrimary,
3014
+ height: SIZE.controlPrimary,
2917
3015
  display: "flex",
2918
3016
  alignItems: "center",
2919
3017
  justifyContent: "center",
2920
3018
  backgroundColor: "transparent",
2921
3019
  border: "none",
2922
- borderRadius: "50%",
3020
+ borderRadius: RADIUS.full,
2923
3021
  cursor: "pointer",
2924
3022
  flexShrink: 0
2925
3023
  },
2926
3024
  textarea: {
2927
3025
  flex: 1,
2928
- padding: "10px 14px",
2929
- fontSize: "15px",
2930
- lineHeight: "1.45",
2931
- border: "1px solid #d1d5db",
2932
- borderRadius: "22px",
3026
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3027
+ fontSize: FONT_SIZE.md,
3028
+ lineHeight: LINE_HEIGHT.normal,
3029
+ border: `1px solid ${COLOR.neutral300}`,
3030
+ borderRadius: RADIUS.pill,
2933
3031
  resize: "none",
2934
3032
  outline: "none",
2935
3033
  fontFamily: "inherit",
2936
3034
  maxHeight: "120px",
2937
- minHeight: "44px"
3035
+ minHeight: SIZE.controlPrimary
2938
3036
  },
2939
3037
  sendButton: {
2940
- width: "44px",
2941
- height: "44px",
3038
+ width: SIZE.controlPrimary,
3039
+ height: SIZE.controlPrimary,
2942
3040
  display: "flex",
2943
3041
  alignItems: "center",
2944
3042
  justifyContent: "center",
2945
- backgroundColor: "#2563eb",
2946
- color: "#ffffff",
3043
+ backgroundColor: COLOR.primary,
3044
+ color: COLOR.white,
2947
3045
  border: "none",
2948
- borderRadius: "50%",
3046
+ borderRadius: RADIUS.full,
2949
3047
  cursor: "pointer",
2950
3048
  flexShrink: 0
2951
3049
  }};
@@ -2964,7 +3062,7 @@ function ParticipantsList({
2964
3062
  {
2965
3063
  style: {
2966
3064
  ...styles9.statusDot,
2967
- backgroundColor: participant.isOnline ? "#22c55e" : "#d1d5db"
3065
+ backgroundColor: participant.isOnline ? COLOR.success : COLOR.neutral300
2968
3066
  }
2969
3067
  }
2970
3068
  )
@@ -3020,9 +3118,9 @@ var styles9 = {
3020
3118
  item: {
3021
3119
  display: "flex",
3022
3120
  alignItems: "center",
3023
- gap: "10px",
3024
- padding: "8px 0",
3025
- borderBottom: "1px solid #f9fafb"
3121
+ gap: SPACE.S3,
3122
+ padding: `${SPACE.S2} 0`,
3123
+ borderBottom: `1px solid ${COLOR.neutral50}`
3026
3124
  },
3027
3125
  avatar: {
3028
3126
  position: "relative",
@@ -3033,55 +3131,55 @@ var styles9 = {
3033
3131
  avatarImg: {
3034
3132
  width: "32px",
3035
3133
  height: "32px",
3036
- borderRadius: "50%",
3134
+ borderRadius: RADIUS.full,
3037
3135
  objectFit: "cover"
3038
3136
  },
3039
3137
  avatarFallback: {
3040
3138
  width: "32px",
3041
3139
  height: "32px",
3042
- borderRadius: "50%",
3043
- backgroundColor: "#e5e7eb",
3140
+ borderRadius: RADIUS.full,
3141
+ backgroundColor: COLOR.neutral200,
3044
3142
  display: "flex",
3045
3143
  alignItems: "center",
3046
3144
  justifyContent: "center",
3047
- fontSize: "13px",
3048
- fontWeight: 600,
3049
- color: "#6b7280"
3145
+ fontSize: FONT_SIZE.sm,
3146
+ fontWeight: FONT_WEIGHT.semibold,
3147
+ color: COLOR.neutral500
3050
3148
  },
3051
3149
  statusDot: {
3052
3150
  position: "absolute",
3053
3151
  bottom: "0",
3054
3152
  right: "0",
3055
- width: "8px",
3056
- height: "8px",
3057
- borderRadius: "50%",
3058
- border: "2px solid #ffffff"
3153
+ width: SPACE.S2,
3154
+ height: SPACE.S2,
3155
+ borderRadius: RADIUS.full,
3156
+ border: `2px solid ${COLOR.white}`
3059
3157
  },
3060
3158
  info: {
3061
3159
  display: "flex",
3062
3160
  alignItems: "center",
3063
- gap: "6px",
3161
+ gap: SPACE.S2,
3064
3162
  flex: 1,
3065
3163
  minWidth: 0
3066
3164
  },
3067
3165
  name: {
3068
- fontSize: "13px",
3069
- fontWeight: 500,
3070
- color: "#111827",
3166
+ fontSize: FONT_SIZE.sm,
3167
+ fontWeight: FONT_WEIGHT.medium,
3168
+ color: COLOR.neutral900,
3071
3169
  overflow: "hidden",
3072
3170
  textOverflow: "ellipsis",
3073
3171
  whiteSpace: "nowrap"
3074
3172
  },
3075
3173
  youBadge: {
3076
- fontSize: "11px",
3077
- fontWeight: 400,
3078
- color: "#9ca3af"
3174
+ fontSize: FONT_SIZE.xs,
3175
+ fontWeight: FONT_WEIGHT.regular,
3176
+ color: COLOR.neutral400
3079
3177
  },
3080
3178
  roleBadge: {
3081
- fontSize: "10px",
3082
- fontWeight: 500,
3083
- padding: "1px 6px",
3084
- borderRadius: "4px",
3179
+ fontSize: FONT_SIZE.xs,
3180
+ fontWeight: FONT_WEIGHT.medium,
3181
+ padding: `2px ${SPACE.S2}`,
3182
+ borderRadius: RADIUS.sm,
3085
3183
  whiteSpace: "nowrap"
3086
3184
  },
3087
3185
  removeButton: {
@@ -3092,10 +3190,10 @@ var styles9 = {
3092
3190
  justifyContent: "center",
3093
3191
  backgroundColor: "transparent",
3094
3192
  border: "none",
3095
- borderRadius: "4px",
3193
+ borderRadius: RADIUS.sm,
3096
3194
  cursor: "pointer",
3097
- fontSize: "11px",
3098
- color: "#9ca3af",
3195
+ fontSize: FONT_SIZE.xs,
3196
+ color: COLOR.neutral400,
3099
3197
  flexShrink: 0
3100
3198
  }
3101
3199
  };
@@ -3247,19 +3345,19 @@ var styles10 = {
3247
3345
  display: "flex",
3248
3346
  flexDirection: "column",
3249
3347
  height: "100%",
3250
- backgroundColor: "#ffffff"
3348
+ backgroundColor: COLOR.white
3251
3349
  },
3252
3350
  header: {
3253
3351
  display: "flex",
3254
3352
  justifyContent: "space-between",
3255
3353
  alignItems: "center",
3256
- padding: "12px 16px",
3257
- borderBottom: "1px solid #e5e7eb"
3354
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3355
+ borderBottom: `1px solid ${COLOR.neutral200}`
3258
3356
  },
3259
3357
  title: {
3260
3358
  margin: 0,
3261
- fontSize: "16px",
3262
- fontWeight: 600
3359
+ fontSize: FONT_SIZE.lg,
3360
+ fontWeight: FONT_WEIGHT.semibold
3263
3361
  },
3264
3362
  closeButton: {
3265
3363
  width: "28px",
@@ -3269,139 +3367,139 @@ var styles10 = {
3269
3367
  justifyContent: "center",
3270
3368
  backgroundColor: "transparent",
3271
3369
  border: "none",
3272
- borderRadius: "4px",
3370
+ borderRadius: RADIUS.sm,
3273
3371
  cursor: "pointer",
3274
- fontSize: "14px",
3275
- color: "#6b7280"
3372
+ fontSize: FONT_SIZE.sm,
3373
+ color: COLOR.neutral500
3276
3374
  },
3277
3375
  error: {
3278
- padding: "8px 16px",
3279
- fontSize: "13px",
3280
- color: "#dc2626",
3281
- backgroundColor: "#fef2f2"
3376
+ padding: `${SPACE.S2} ${SPACE.S4}`,
3377
+ fontSize: FONT_SIZE.sm,
3378
+ color: COLOR.danger,
3379
+ backgroundColor: COLOR.dangerBg
3282
3380
  },
3283
3381
  section: {
3284
- padding: "16px",
3285
- borderBottom: "1px solid #f3f4f6"
3382
+ padding: SPACE.S4,
3383
+ borderBottom: `1px solid ${COLOR.neutral100}`
3286
3384
  },
3287
3385
  sectionHeader: {
3288
3386
  display: "flex",
3289
3387
  justifyContent: "space-between",
3290
3388
  alignItems: "center",
3291
- marginBottom: "8px"
3389
+ marginBottom: SPACE.S2
3292
3390
  },
3293
3391
  label: {
3294
- fontSize: "12px",
3295
- fontWeight: 600,
3296
- color: "#6b7280",
3392
+ fontSize: FONT_SIZE.xs,
3393
+ fontWeight: FONT_WEIGHT.semibold,
3394
+ color: COLOR.neutral500,
3297
3395
  textTransform: "uppercase",
3298
3396
  letterSpacing: "0.05em"
3299
3397
  },
3300
3398
  channelName: {
3301
- fontSize: "14px",
3302
- color: "#111827"
3399
+ fontSize: FONT_SIZE.sm,
3400
+ color: COLOR.neutral900
3303
3401
  },
3304
3402
  editRow: {
3305
3403
  display: "flex",
3306
3404
  alignItems: "center",
3307
- gap: "8px",
3308
- marginTop: "6px"
3405
+ gap: SPACE.S2,
3406
+ marginTop: SPACE.S2
3309
3407
  },
3310
3408
  input: {
3311
- padding: "6px 10px",
3312
- fontSize: "13px",
3313
- border: "1px solid #d1d5db",
3314
- borderRadius: "6px",
3409
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3410
+ fontSize: FONT_SIZE.sm,
3411
+ border: `1px solid ${COLOR.neutral300}`,
3412
+ borderRadius: RADIUS.md,
3315
3413
  outline: "none",
3316
3414
  width: "100%"
3317
3415
  },
3318
3416
  editButton: {
3319
- padding: "4px 10px",
3320
- fontSize: "12px",
3321
- color: "#2563eb",
3417
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3418
+ fontSize: FONT_SIZE.xs,
3419
+ color: COLOR.primary,
3322
3420
  backgroundColor: "transparent",
3323
3421
  border: "none",
3324
3422
  cursor: "pointer"
3325
3423
  },
3326
3424
  saveButton: {
3327
- padding: "6px 12px",
3328
- fontSize: "12px",
3329
- fontWeight: 500,
3330
- color: "#ffffff",
3331
- backgroundColor: "#2563eb",
3425
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3426
+ fontSize: FONT_SIZE.xs,
3427
+ fontWeight: FONT_WEIGHT.medium,
3428
+ color: COLOR.white,
3429
+ backgroundColor: COLOR.primary,
3332
3430
  border: "none",
3333
- borderRadius: "6px",
3431
+ borderRadius: RADIUS.md,
3334
3432
  cursor: "pointer",
3335
3433
  whiteSpace: "nowrap"
3336
3434
  },
3337
3435
  cancelButton: {
3338
- padding: "6px 12px",
3339
- fontSize: "12px",
3340
- color: "#6b7280",
3436
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3437
+ fontSize: FONT_SIZE.xs,
3438
+ color: COLOR.neutral500,
3341
3439
  backgroundColor: "transparent",
3342
- border: "1px solid #d1d5db",
3343
- borderRadius: "6px",
3440
+ border: `1px solid ${COLOR.neutral300}`,
3441
+ borderRadius: RADIUS.md,
3344
3442
  cursor: "pointer",
3345
3443
  whiteSpace: "nowrap"
3346
3444
  },
3347
3445
  addButton: {
3348
- padding: "4px 10px",
3349
- fontSize: "12px",
3350
- fontWeight: 500,
3351
- color: "#2563eb",
3352
- backgroundColor: "#eff6ff",
3446
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3447
+ fontSize: FONT_SIZE.xs,
3448
+ fontWeight: FONT_WEIGHT.medium,
3449
+ color: COLOR.primary,
3450
+ backgroundColor: COLOR.primaryBg,
3353
3451
  border: "none",
3354
- borderRadius: "4px",
3452
+ borderRadius: RADIUS.sm,
3355
3453
  cursor: "pointer"
3356
3454
  },
3357
3455
  inviteForm: {
3358
3456
  display: "flex",
3359
3457
  flexDirection: "column",
3360
- gap: "8px",
3361
- padding: "12px",
3362
- marginBottom: "12px",
3363
- backgroundColor: "#f9fafb",
3364
- borderRadius: "8px"
3458
+ gap: SPACE.S2,
3459
+ padding: SPACE.S3,
3460
+ marginBottom: SPACE.S3,
3461
+ backgroundColor: COLOR.neutral50,
3462
+ borderRadius: RADIUS.md
3365
3463
  },
3366
3464
  inviteActions: {
3367
3465
  display: "flex",
3368
- gap: "8px"
3466
+ gap: SPACE.S2
3369
3467
  },
3370
3468
  dangerZone: {
3371
- padding: "16px",
3469
+ padding: SPACE.S4,
3372
3470
  marginTop: "auto",
3373
3471
  display: "flex",
3374
3472
  flexDirection: "column",
3375
- gap: "8px"
3473
+ gap: SPACE.S2
3376
3474
  },
3377
3475
  leaveButton: {
3378
- padding: "8px",
3379
- fontSize: "13px",
3380
- fontWeight: 500,
3381
- color: "#b45309",
3476
+ padding: SPACE.S2,
3477
+ fontSize: FONT_SIZE.sm,
3478
+ fontWeight: FONT_WEIGHT.medium,
3479
+ color: COLOR.warning,
3382
3480
  backgroundColor: "#fffbeb",
3383
3481
  border: "1px solid #fde68a",
3384
- borderRadius: "6px",
3482
+ borderRadius: RADIUS.md,
3385
3483
  cursor: "pointer"
3386
3484
  },
3387
3485
  deleteButton: {
3388
- padding: "8px",
3389
- fontSize: "13px",
3390
- fontWeight: 500,
3391
- color: "#dc2626",
3392
- backgroundColor: "#fef2f2",
3393
- border: "1px solid #fecaca",
3394
- borderRadius: "6px",
3486
+ padding: SPACE.S2,
3487
+ fontSize: FONT_SIZE.sm,
3488
+ fontWeight: FONT_WEIGHT.medium,
3489
+ color: COLOR.danger,
3490
+ backgroundColor: COLOR.dangerBg,
3491
+ border: `1px solid ${COLOR.dangerBorder}`,
3492
+ borderRadius: RADIUS.md,
3395
3493
  cursor: "pointer"
3396
3494
  },
3397
3495
  confirmDeleteButton: {
3398
- padding: "8px",
3399
- fontSize: "13px",
3400
- fontWeight: 600,
3401
- color: "#ffffff",
3402
- backgroundColor: "#dc2626",
3496
+ padding: SPACE.S2,
3497
+ fontSize: FONT_SIZE.sm,
3498
+ fontWeight: FONT_WEIGHT.semibold,
3499
+ color: COLOR.white,
3500
+ backgroundColor: COLOR.danger,
3403
3501
  border: "none",
3404
- borderRadius: "6px",
3502
+ borderRadius: RADIUS.md,
3405
3503
  cursor: "pointer"
3406
3504
  }
3407
3505
  };
@@ -3424,13 +3522,13 @@ function PinnedMessagesBar({
3424
3522
  };
3425
3523
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: styles11.container, children: [
3426
3524
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles11.indicator, children: [
3427
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles11.pinIcon, children: "\u{1F4CC}" }),
3525
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 14, color: COLOR.primary }),
3428
3526
  pinnedMessages.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles11.segments, children: pinnedMessages.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
3429
3527
  "span",
3430
3528
  {
3431
3529
  style: {
3432
3530
  ...styles11.segment,
3433
- backgroundColor: i === safeIndex ? "#2563eb" : "#d1d5db"
3531
+ backgroundColor: i === safeIndex ? COLOR.primary : COLOR.neutral300
3434
3532
  }
3435
3533
  },
3436
3534
  i
@@ -3494,20 +3592,17 @@ var styles11 = {
3494
3592
  container: {
3495
3593
  display: "flex",
3496
3594
  alignItems: "center",
3497
- gap: "8px",
3498
- padding: "6px 12px",
3499
- backgroundColor: "#eff6ff",
3500
- borderBottom: "1px solid #dbeafe"
3595
+ gap: SPACE.S2,
3596
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3597
+ backgroundColor: COLOR.primaryBg,
3598
+ borderBottom: `1px solid ${COLOR.primaryBg}`
3501
3599
  },
3502
3600
  indicator: {
3503
3601
  display: "flex",
3504
3602
  alignItems: "center",
3505
- gap: "4px",
3603
+ gap: SPACE.S1,
3506
3604
  flexShrink: 0
3507
3605
  },
3508
- pinIcon: {
3509
- fontSize: "13px"
3510
- },
3511
3606
  segments: {
3512
3607
  display: "flex",
3513
3608
  flexDirection: "column",
@@ -3532,19 +3627,19 @@ var styles11 = {
3532
3627
  overflow: "hidden"
3533
3628
  },
3534
3629
  label: {
3535
- fontSize: "11px",
3536
- fontWeight: 600,
3537
- color: "#2563eb"
3630
+ fontSize: FONT_SIZE.xs,
3631
+ fontWeight: FONT_WEIGHT.semibold,
3632
+ color: COLOR.primary
3538
3633
  },
3539
3634
  preview: {
3540
- fontSize: "12px",
3541
- color: "#374151",
3635
+ fontSize: FONT_SIZE.xs,
3636
+ color: COLOR.neutral700,
3542
3637
  overflow: "hidden",
3543
3638
  textOverflow: "ellipsis",
3544
3639
  whiteSpace: "nowrap"
3545
3640
  },
3546
3641
  sender: {
3547
- fontWeight: 600
3642
+ fontWeight: FONT_WEIGHT.semibold
3548
3643
  },
3549
3644
  unpinButton: {
3550
3645
  width: "24px",
@@ -3552,12 +3647,12 @@ var styles11 = {
3552
3647
  display: "flex",
3553
3648
  alignItems: "center",
3554
3649
  justifyContent: "center",
3555
- color: "#6b7280",
3650
+ color: COLOR.neutral500,
3556
3651
  backgroundColor: "transparent",
3557
3652
  border: "none",
3558
- borderRadius: "4px",
3653
+ borderRadius: RADIUS.sm,
3559
3654
  cursor: "pointer",
3560
- fontSize: "11px",
3655
+ fontSize: FONT_SIZE.xs,
3561
3656
  flexShrink: 0
3562
3657
  }
3563
3658
  };
@@ -3592,15 +3687,15 @@ var styles12 = {
3592
3687
  transform: "translateX(-50%)",
3593
3688
  display: "flex",
3594
3689
  alignItems: "center",
3595
- gap: "12px",
3596
- padding: "10px 14px",
3597
- backgroundColor: "#1e293b",
3598
- color: "#ffffff",
3599
- borderRadius: "8px",
3600
- boxShadow: "0 4px 12px rgba(0, 0, 0, 0.18)",
3601
- fontSize: "14px",
3690
+ gap: SPACE.S3,
3691
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3692
+ backgroundColor: COLOR.slate800,
3693
+ color: COLOR.white,
3694
+ borderRadius: RADIUS.md,
3695
+ boxShadow: SHADOW.toast,
3696
+ fontSize: FONT_SIZE.sm,
3602
3697
  maxWidth: "90%",
3603
- zIndex: 20
3698
+ zIndex: Z_INDEX.toast
3604
3699
  },
3605
3700
  message: {
3606
3701
  whiteSpace: "nowrap",
@@ -3610,11 +3705,11 @@ var styles12 = {
3610
3705
  action: {
3611
3706
  background: "transparent",
3612
3707
  border: "none",
3613
- color: "#93c5fd",
3614
- fontWeight: 600,
3615
- fontSize: "14px",
3708
+ color: COLOR.primaryBg,
3709
+ fontWeight: FONT_WEIGHT.semibold,
3710
+ fontSize: FONT_SIZE.sm,
3616
3711
  cursor: "pointer",
3617
- padding: "4px 6px",
3712
+ padding: `${SPACE.S1} ${SPACE.S2}`,
3618
3713
  textTransform: "uppercase",
3619
3714
  letterSpacing: "0.4px"
3620
3715
  }
@@ -3665,6 +3760,7 @@ function CollabPanel({
3665
3760
  participantIds,
3666
3761
  showSeenBy = true,
3667
3762
  onBack,
3763
+ hidePatientName = false,
3668
3764
  className,
3669
3765
  style
3670
3766
  }) {
@@ -3773,7 +3869,9 @@ function CollabPanel({
3773
3869
  participants,
3774
3870
  onOpenDicom: handleOpenDicom,
3775
3871
  onOpenSettings: () => setShowSettings(true),
3776
- onBack
3872
+ onBack,
3873
+ hideName: hidePatientName,
3874
+ displayName: conversation?.name
3777
3875
  }
3778
3876
  ),
3779
3877
  pinnedMessages.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
@@ -3827,10 +3925,10 @@ var panelStyles = {
3827
3925
  display: "flex",
3828
3926
  flexDirection: "column",
3829
3927
  height: "100%",
3830
- backgroundColor: "#ffffff",
3831
- borderRadius: "8px",
3928
+ backgroundColor: COLOR.white,
3929
+ borderRadius: RADIUS.md,
3832
3930
  overflow: "hidden",
3833
- border: "1px solid #e5e7eb",
3931
+ border: `1px solid ${COLOR.neutral200}`,
3834
3932
  fontFamily: FONT_STACK
3835
3933
  },
3836
3934
  loadingState: {
@@ -3838,8 +3936,8 @@ var panelStyles = {
3838
3936
  alignItems: "center",
3839
3937
  justifyContent: "center",
3840
3938
  height: "100%",
3841
- fontSize: "14px",
3842
- color: "#9ca3af"
3939
+ fontSize: FONT_SIZE.sm,
3940
+ color: COLOR.neutral500
3843
3941
  },
3844
3942
  errorState: {
3845
3943
  display: "flex",
@@ -3847,18 +3945,18 @@ var panelStyles = {
3847
3945
  alignItems: "center",
3848
3946
  justifyContent: "center",
3849
3947
  height: "100%",
3850
- padding: "24px",
3948
+ padding: SPACE.S6,
3851
3949
  textAlign: "center"
3852
3950
  },
3853
3951
  errorTitle: {
3854
- fontSize: "15px",
3855
- fontWeight: 500,
3856
- color: "#dc2626",
3857
- margin: "0 0 4px"
3952
+ fontSize: FONT_SIZE.md,
3953
+ fontWeight: FONT_WEIGHT.medium,
3954
+ color: COLOR.danger,
3955
+ margin: `0 0 ${SPACE.S1}`
3858
3956
  },
3859
3957
  errorMessage: {
3860
- fontSize: "13px",
3861
- color: "#6b7280",
3958
+ fontSize: FONT_SIZE.sm,
3959
+ color: COLOR.neutral500,
3862
3960
  margin: 0
3863
3961
  }
3864
3962
  };
@@ -4029,7 +4127,7 @@ function CollabPopup({
4029
4127
  "aria-label": isMinimized ? "Expand chat" : "Minimize chat",
4030
4128
  title: isMinimized ? "Expand" : "Minimize",
4031
4129
  type: "button",
4032
- children: isMinimized ? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, { size: 16, color: "#cbd5e1" }) : /* @__PURE__ */ jsxRuntime.jsx(MinimizeIcon, { size: 16, color: "#cbd5e1" })
4130
+ children: isMinimized ? /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, { size: 16, color: COLOR.slate200 }) : /* @__PURE__ */ jsxRuntime.jsx(MinimizeIcon, { size: 16, color: COLOR.slate200 })
4033
4131
  }
4034
4132
  ),
4035
4133
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4040,12 +4138,12 @@ function CollabPopup({
4040
4138
  "aria-label": "Close chat",
4041
4139
  title: "Close",
4042
4140
  type: "button",
4043
- children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: "#cbd5e1" })
4141
+ children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: COLOR.slate200 })
4044
4142
  }
4045
4143
  )
4046
4144
  ] })
4047
4145
  ] }),
4048
- !isMinimized && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles13.panelWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(CollabPanel, { orderId, patientData, participantIds }) })
4146
+ !isMinimized && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles13.panelWrapper, children: /* @__PURE__ */ jsxRuntime.jsx(CollabPanel, { orderId, patientData, participantIds, hidePatientName: true }) })
4049
4147
  ]
4050
4148
  }
4051
4149
  );
@@ -4053,14 +4151,14 @@ function CollabPopup({
4053
4151
  var styles13 = {
4054
4152
  container: {
4055
4153
  position: "fixed",
4056
- zIndex: 9999,
4057
- borderRadius: "12px",
4058
- boxShadow: "0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08)",
4154
+ zIndex: Z_INDEX.dialog,
4155
+ borderRadius: RADIUS.lg,
4156
+ boxShadow: SHADOW.dialog,
4059
4157
  overflow: "hidden",
4060
4158
  display: "flex",
4061
4159
  flexDirection: "column",
4062
- backgroundColor: "#ffffff",
4063
- border: "1px solid #e5e7eb",
4160
+ backgroundColor: COLOR.white,
4161
+ border: `1px solid ${COLOR.neutral200}`,
4064
4162
  transition: "height 0.2s ease",
4065
4163
  fontFamily: FONT_STACK
4066
4164
  },
@@ -4068,37 +4166,37 @@ var styles13 = {
4068
4166
  display: "flex",
4069
4167
  justifyContent: "space-between",
4070
4168
  alignItems: "center",
4071
- padding: "0 8px 0 14px",
4169
+ padding: `0 ${SPACE.S2} 0 ${SPACE.S4}`,
4072
4170
  height: "52px",
4073
- backgroundColor: "#1e293b",
4171
+ backgroundColor: COLOR.slate800,
4074
4172
  cursor: "grab",
4075
4173
  userSelect: "none",
4076
4174
  flexShrink: 0
4077
4175
  },
4078
4176
  titleText: {
4079
- fontSize: "15px",
4080
- fontWeight: 500,
4081
- color: "#ffffff",
4177
+ fontSize: FONT_SIZE.md,
4178
+ fontWeight: FONT_WEIGHT.medium,
4179
+ color: COLOR.white,
4082
4180
  overflow: "hidden",
4083
4181
  textOverflow: "ellipsis",
4084
4182
  whiteSpace: "nowrap"
4085
4183
  },
4086
4184
  titleActions: {
4087
4185
  display: "flex",
4088
- gap: "4px",
4186
+ gap: SPACE.S1,
4089
4187
  flexShrink: 0
4090
4188
  },
4091
4189
  titleButton: {
4092
- width: "40px",
4093
- height: "40px",
4190
+ width: SIZE.control,
4191
+ height: SIZE.control,
4094
4192
  display: "flex",
4095
4193
  alignItems: "center",
4096
4194
  justifyContent: "center",
4097
4195
  backgroundColor: "transparent",
4098
4196
  border: "none",
4099
- borderRadius: "6px",
4197
+ borderRadius: RADIUS.md,
4100
4198
  cursor: "pointer",
4101
- color: "#cbd5e1"
4199
+ color: COLOR.slate200
4102
4200
  },
4103
4201
  panelWrapper: {
4104
4202
  flex: 1,
@@ -4571,55 +4669,55 @@ var styles14 = {
4571
4669
  display: "flex",
4572
4670
  flexDirection: "column",
4573
4671
  width: "100%",
4574
- padding: "6px 8px",
4575
- backgroundColor: "#ffffff",
4576
- border: "1px solid #e5e7eb",
4577
- borderRadius: "8px",
4672
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4673
+ backgroundColor: COLOR.white,
4674
+ border: `1px solid ${COLOR.neutral200}`,
4675
+ borderRadius: RADIUS.md,
4578
4676
  fontFamily: FONT_STACK
4579
4677
  },
4580
4678
  loadingState: {
4581
- padding: "8px",
4582
- fontSize: "12px",
4583
- color: "#9ca3af",
4679
+ padding: SPACE.S2,
4680
+ fontSize: FONT_SIZE.xs,
4681
+ color: COLOR.neutral500,
4584
4682
  textAlign: "center"
4585
4683
  },
4586
4684
  error: {
4587
- padding: "4px 8px",
4588
- marginBottom: "4px",
4589
- fontSize: "11px",
4590
- color: "#dc2626",
4591
- backgroundColor: "#fef2f2",
4592
- borderRadius: "4px"
4685
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4686
+ marginBottom: SPACE.S1,
4687
+ fontSize: FONT_SIZE.xs,
4688
+ color: COLOR.danger,
4689
+ backgroundColor: COLOR.dangerBg,
4690
+ borderRadius: RADIUS.sm
4593
4691
  },
4594
4692
  preview: {
4595
4693
  display: "flex",
4596
4694
  flexDirection: "column",
4597
4695
  gap: "2px",
4598
- marginBottom: "6px",
4599
- paddingBottom: "6px",
4600
- borderBottom: "1px solid #f3f4f6"
4696
+ marginBottom: SPACE.S1,
4697
+ paddingBottom: SPACE.S1,
4698
+ borderBottom: `1px solid ${COLOR.neutral100}`
4601
4699
  },
4602
4700
  messageRow: {
4603
4701
  display: "flex",
4604
4702
  alignItems: "center",
4605
- gap: "6px",
4606
- fontSize: "12px",
4607
- lineHeight: "1.4",
4703
+ gap: SPACE.S2,
4704
+ fontSize: FONT_SIZE.xs,
4705
+ lineHeight: LINE_HEIGHT.normal,
4608
4706
  overflow: "hidden"
4609
4707
  },
4610
4708
  roleDot: {
4611
4709
  flexShrink: 0,
4612
4710
  width: "6px",
4613
4711
  height: "6px",
4614
- borderRadius: "50%"
4712
+ borderRadius: RADIUS.full
4615
4713
  },
4616
4714
  senderName: {
4617
4715
  flexShrink: 0,
4618
- fontWeight: 600,
4619
- color: "#374151"
4716
+ fontWeight: FONT_WEIGHT.semibold,
4717
+ color: COLOR.neutral700
4620
4718
  },
4621
4719
  messageText: {
4622
- color: "#4b5563",
4720
+ color: COLOR.neutral600,
4623
4721
  overflow: "hidden",
4624
4722
  textOverflow: "ellipsis",
4625
4723
  whiteSpace: "nowrap",
@@ -4627,8 +4725,8 @@ var styles14 = {
4627
4725
  flex: 1
4628
4726
  },
4629
4727
  systemRow: {
4630
- fontSize: "11px",
4631
- color: "#9ca3af",
4728
+ fontSize: FONT_SIZE.xs,
4729
+ color: COLOR.neutral400,
4632
4730
  fontStyle: "italic",
4633
4731
  textAlign: "center",
4634
4732
  padding: "2px 0"
@@ -4640,11 +4738,11 @@ var styles14 = {
4640
4738
  audioPlayer: {
4641
4739
  display: "inline-flex",
4642
4740
  alignItems: "center",
4643
- gap: "6px",
4644
- padding: "2px 8px",
4645
- borderRadius: "12px",
4646
- backgroundColor: "#eff6ff",
4647
- border: "1px solid #dbeafe",
4741
+ gap: SPACE.S2,
4742
+ padding: `2px ${SPACE.S2}`,
4743
+ borderRadius: RADIUS.lg,
4744
+ backgroundColor: COLOR.primaryBg,
4745
+ border: `1px solid ${COLOR.primaryBg}`,
4648
4746
  flex: 1,
4649
4747
  minWidth: 0
4650
4748
  },
@@ -4654,11 +4752,11 @@ var styles14 = {
4654
4752
  display: "flex",
4655
4753
  alignItems: "center",
4656
4754
  justifyContent: "center",
4657
- fontSize: "10px",
4658
- color: "#ffffff",
4659
- backgroundColor: "#2563eb",
4755
+ fontSize: FONT_SIZE.xs,
4756
+ color: COLOR.white,
4757
+ backgroundColor: COLOR.primary,
4660
4758
  border: "none",
4661
- borderRadius: "50%",
4759
+ borderRadius: RADIUS.full,
4662
4760
  cursor: "pointer",
4663
4761
  flexShrink: 0
4664
4762
  },
@@ -4666,7 +4764,7 @@ var styles14 = {
4666
4764
  display: "inline-flex",
4667
4765
  alignItems: "center",
4668
4766
  gap: "2px",
4669
- height: "16px",
4767
+ height: SPACE.S4,
4670
4768
  flex: 1,
4671
4769
  minWidth: 0
4672
4770
  },
@@ -4674,27 +4772,27 @@ var styles14 = {
4674
4772
  display: "inline-block",
4675
4773
  width: "2px",
4676
4774
  borderRadius: "1px",
4677
- backgroundColor: "#60a5fa"
4775
+ backgroundColor: COLOR.primary
4678
4776
  },
4679
4777
  audioDuration: {
4680
- fontSize: "11px",
4681
- color: "#2563eb",
4778
+ fontSize: FONT_SIZE.xs,
4779
+ color: COLOR.primary,
4682
4780
  fontVariantNumeric: "tabular-nums",
4683
- fontWeight: 500,
4781
+ fontWeight: FONT_WEIGHT.medium,
4684
4782
  flexShrink: 0
4685
4783
  },
4686
4784
  // ── Input bar ──
4687
4785
  inputBar: {
4688
4786
  display: "flex",
4689
4787
  alignItems: "center",
4690
- gap: "6px"
4788
+ gap: SPACE.S2
4691
4789
  },
4692
4790
  input: {
4693
4791
  flex: 1,
4694
- padding: "6px 10px",
4695
- fontSize: "13px",
4696
- border: "1px solid #e5e7eb",
4697
- borderRadius: "16px",
4792
+ padding: `${SPACE.S2} ${SPACE.S3}`,
4793
+ fontSize: FONT_SIZE.sm,
4794
+ border: `1px solid ${COLOR.neutral200}`,
4795
+ borderRadius: RADIUS.pill,
4698
4796
  outline: "none",
4699
4797
  fontFamily: "inherit",
4700
4798
  minWidth: 0
@@ -4703,12 +4801,12 @@ var styles14 = {
4703
4801
  flexShrink: 0,
4704
4802
  minWidth: "18px",
4705
4803
  height: "18px",
4706
- padding: "0 5px",
4707
- fontSize: "10px",
4708
- fontWeight: 600,
4709
- color: "#ffffff",
4710
- backgroundColor: "#dc2626",
4711
- borderRadius: "10px",
4804
+ padding: `0 ${SPACE.S1}`,
4805
+ fontSize: FONT_SIZE.xs,
4806
+ fontWeight: FONT_WEIGHT.semibold,
4807
+ color: COLOR.white,
4808
+ backgroundColor: COLOR.danger,
4809
+ borderRadius: RADIUS.pill,
4712
4810
  display: "flex",
4713
4811
  alignItems: "center",
4714
4812
  justifyContent: "center"
@@ -4717,8 +4815,8 @@ var styles14 = {
4717
4815
  flexShrink: 0,
4718
4816
  width: "6px",
4719
4817
  height: "6px",
4720
- borderRadius: "50%",
4721
- backgroundColor: "#22c55e"
4818
+ borderRadius: RADIUS.full,
4819
+ backgroundColor: COLOR.success
4722
4820
  },
4723
4821
  sendButton: {
4724
4822
  flexShrink: 0,
@@ -4727,11 +4825,11 @@ var styles14 = {
4727
4825
  display: "flex",
4728
4826
  alignItems: "center",
4729
4827
  justifyContent: "center",
4730
- fontSize: "13px",
4731
- color: "#ffffff",
4732
- backgroundColor: "#2563eb",
4828
+ fontSize: FONT_SIZE.sm,
4829
+ color: COLOR.white,
4830
+ backgroundColor: COLOR.primary,
4733
4831
  border: "none",
4734
- borderRadius: "50%",
4832
+ borderRadius: RADIUS.full,
4735
4833
  cursor: "pointer"
4736
4834
  },
4737
4835
  expandButton: {
@@ -4741,11 +4839,11 @@ var styles14 = {
4741
4839
  display: "flex",
4742
4840
  alignItems: "center",
4743
4841
  justifyContent: "center",
4744
- fontSize: "12px",
4745
- color: "#6b7280",
4842
+ fontSize: FONT_SIZE.xs,
4843
+ color: COLOR.neutral500,
4746
4844
  backgroundColor: "transparent",
4747
- border: "1px solid #e5e7eb",
4748
- borderRadius: "50%",
4845
+ border: `1px solid ${COLOR.neutral200}`,
4846
+ borderRadius: RADIUS.full,
4749
4847
  cursor: "pointer"
4750
4848
  }};
4751
4849
  function useConversationList(options) {
@@ -4909,52 +5007,52 @@ var styles15 = {
4909
5007
  container: {
4910
5008
  display: "flex",
4911
5009
  alignItems: "center",
4912
- gap: "12px",
4913
- padding: "10px 12px",
5010
+ gap: SPACE.S3,
5011
+ padding: `${SPACE.S3} ${SPACE.S3}`,
4914
5012
  width: "100%",
4915
5013
  backgroundColor: "transparent",
4916
5014
  border: "none",
4917
- borderBottom: "1px solid #f3f4f6",
5015
+ borderBottom: `1px solid ${COLOR.neutral100}`,
4918
5016
  cursor: "pointer",
4919
5017
  textAlign: "left"
4920
5018
  },
4921
5019
  selected: {
4922
- backgroundColor: "#eff6ff"
5020
+ backgroundColor: COLOR.primaryBg
4923
5021
  },
4924
5022
  unread: {},
4925
5023
  avatarWrapper: {
4926
5024
  position: "relative",
4927
- width: "40px",
4928
- height: "40px",
5025
+ width: SIZE.avatar,
5026
+ height: SIZE.avatar,
4929
5027
  flexShrink: 0
4930
5028
  },
4931
5029
  avatar: {
4932
- width: "40px",
4933
- height: "40px",
4934
- borderRadius: "50%",
5030
+ width: SIZE.avatar,
5031
+ height: SIZE.avatar,
5032
+ borderRadius: RADIUS.full,
4935
5033
  objectFit: "cover"
4936
5034
  },
4937
5035
  avatarFallback: {
4938
- width: "40px",
4939
- height: "40px",
4940
- borderRadius: "50%",
4941
- backgroundColor: "#e5e7eb",
5036
+ width: SIZE.avatar,
5037
+ height: SIZE.avatar,
5038
+ borderRadius: RADIUS.full,
5039
+ backgroundColor: COLOR.neutral200,
4942
5040
  display: "flex",
4943
5041
  alignItems: "center",
4944
5042
  justifyContent: "center",
4945
- fontSize: "15px",
4946
- fontWeight: 600,
4947
- color: "#6b7280"
5043
+ fontSize: FONT_SIZE.md,
5044
+ fontWeight: FONT_WEIGHT.semibold,
5045
+ color: COLOR.neutral500
4948
5046
  },
4949
5047
  unreadDot: {
4950
5048
  position: "absolute",
4951
5049
  top: "0",
4952
5050
  left: "0",
4953
- width: "10px",
4954
- height: "10px",
4955
- borderRadius: "50%",
4956
- backgroundColor: "#2563eb",
4957
- border: "2px solid #ffffff"
5051
+ width: SIZE.dot,
5052
+ height: SIZE.dot,
5053
+ borderRadius: RADIUS.full,
5054
+ backgroundColor: COLOR.primary,
5055
+ border: `2px solid ${COLOR.white}`
4958
5056
  },
4959
5057
  content: {
4960
5058
  flex: 1,
@@ -4967,12 +5065,12 @@ var styles15 = {
4967
5065
  display: "flex",
4968
5066
  justifyContent: "space-between",
4969
5067
  alignItems: "baseline",
4970
- gap: "8px"
5068
+ gap: SPACE.S2
4971
5069
  },
4972
5070
  name: {
4973
- fontSize: "15px",
4974
- fontWeight: 500,
4975
- color: "#111827",
5071
+ fontSize: FONT_SIZE.md,
5072
+ fontWeight: FONT_WEIGHT.medium,
5073
+ color: COLOR.neutral900,
4976
5074
  overflow: "hidden",
4977
5075
  textOverflow: "ellipsis",
4978
5076
  whiteSpace: "nowrap",
@@ -4980,26 +5078,26 @@ var styles15 = {
4980
5078
  minWidth: 0
4981
5079
  },
4982
5080
  nameUnread: {
4983
- fontWeight: 700
5081
+ fontWeight: FONT_WEIGHT.bold
4984
5082
  },
4985
5083
  time: {
4986
- fontSize: "12px",
4987
- color: "#6b7280",
5084
+ fontSize: FONT_SIZE.xs,
5085
+ color: COLOR.neutral500,
4988
5086
  flexShrink: 0
4989
5087
  },
4990
5088
  timeUnread: {
4991
- color: "#2563eb",
4992
- fontWeight: 600
5089
+ color: COLOR.primary,
5090
+ fontWeight: FONT_WEIGHT.semibold
4993
5091
  },
4994
5092
  bottomRow: {
4995
5093
  display: "flex",
4996
5094
  justifyContent: "space-between",
4997
5095
  alignItems: "center",
4998
- gap: "8px"
5096
+ gap: SPACE.S2
4999
5097
  },
5000
5098
  preview: {
5001
- fontSize: "14px",
5002
- color: "#4b5563",
5099
+ fontSize: FONT_SIZE.sm,
5100
+ color: COLOR.neutral600,
5003
5101
  overflow: "hidden",
5004
5102
  textOverflow: "ellipsis",
5005
5103
  whiteSpace: "nowrap",
@@ -5007,18 +5105,18 @@ var styles15 = {
5007
5105
  minWidth: 0
5008
5106
  },
5009
5107
  previewUnread: {
5010
- color: "#111827",
5011
- fontWeight: 500
5108
+ color: COLOR.neutral900,
5109
+ fontWeight: FONT_WEIGHT.medium
5012
5110
  },
5013
5111
  badge: {
5014
5112
  minWidth: "20px",
5015
5113
  height: "20px",
5016
- padding: "0 6px",
5017
- fontSize: "11px",
5018
- fontWeight: 600,
5019
- color: "#ffffff",
5020
- backgroundColor: "#2563eb",
5021
- borderRadius: "10px",
5114
+ padding: `0 ${SPACE.S2}`,
5115
+ fontSize: FONT_SIZE.xs,
5116
+ fontWeight: FONT_WEIGHT.semibold,
5117
+ color: COLOR.white,
5118
+ backgroundColor: COLOR.primary,
5119
+ borderRadius: RADIUS.pill,
5022
5120
  display: "flex",
5023
5121
  alignItems: "center",
5024
5122
  justifyContent: "center",
@@ -5119,89 +5217,89 @@ var styles16 = {
5119
5217
  display: "flex",
5120
5218
  flexDirection: "column",
5121
5219
  height: "100%",
5122
- backgroundColor: "#ffffff",
5123
- borderRight: "1px solid #e5e7eb"
5220
+ backgroundColor: COLOR.white,
5221
+ borderRight: `1px solid ${COLOR.neutral200}`
5124
5222
  },
5125
5223
  header: {
5126
- padding: "12px",
5127
- borderBottom: "1px solid #e5e7eb",
5128
- backgroundColor: "#f9fafb",
5224
+ padding: SPACE.S3,
5225
+ borderBottom: `1px solid ${COLOR.neutral200}`,
5226
+ backgroundColor: COLOR.neutral50,
5129
5227
  flexShrink: 0
5130
5228
  },
5131
5229
  titleRow: {
5132
5230
  display: "flex",
5133
5231
  alignItems: "center",
5134
- gap: "8px",
5135
- marginBottom: "8px"
5232
+ gap: SPACE.S2,
5233
+ marginBottom: SPACE.S2
5136
5234
  },
5137
5235
  title: {
5138
5236
  margin: 0,
5139
- fontSize: "15px",
5140
- fontWeight: 600,
5141
- color: "#111827"
5237
+ fontSize: FONT_SIZE.md,
5238
+ fontWeight: FONT_WEIGHT.semibold,
5239
+ color: COLOR.neutral900
5142
5240
  },
5143
5241
  totalBadge: {
5144
5242
  minWidth: "20px",
5145
5243
  height: "20px",
5146
- padding: "0 6px",
5147
- fontSize: "11px",
5148
- fontWeight: 600,
5149
- color: "#ffffff",
5150
- backgroundColor: "#2563eb",
5151
- borderRadius: "10px",
5244
+ padding: `0 ${SPACE.S2}`,
5245
+ fontSize: FONT_SIZE.xs,
5246
+ fontWeight: FONT_WEIGHT.semibold,
5247
+ color: COLOR.white,
5248
+ backgroundColor: COLOR.primary,
5249
+ borderRadius: RADIUS.pill,
5152
5250
  display: "flex",
5153
5251
  alignItems: "center",
5154
5252
  justifyContent: "center"
5155
5253
  },
5156
5254
  searchRow: {
5157
- marginBottom: "8px"
5255
+ marginBottom: SPACE.S2
5158
5256
  },
5159
5257
  searchInput: {
5160
5258
  width: "100%",
5161
- padding: "6px 10px",
5162
- fontSize: "13px",
5163
- border: "1px solid #e5e7eb",
5164
- borderRadius: "6px",
5259
+ padding: `${SPACE.S2} ${SPACE.S3}`,
5260
+ fontSize: FONT_SIZE.sm,
5261
+ border: `1px solid ${COLOR.neutral200}`,
5262
+ borderRadius: RADIUS.md,
5165
5263
  outline: "none",
5166
5264
  fontFamily: "inherit"
5167
5265
  },
5168
5266
  filterRow: {
5169
5267
  display: "flex",
5170
- gap: "4px"
5268
+ gap: SPACE.S1
5171
5269
  },
5172
5270
  filterButton: {
5173
5271
  flex: 1,
5174
- padding: "5px 8px",
5175
- fontSize: "12px",
5176
- color: "#6b7280",
5177
- backgroundColor: "#ffffff",
5178
- border: "1px solid #e5e7eb",
5179
- borderRadius: "6px",
5272
+ padding: `${SPACE.S1} ${SPACE.S2}`,
5273
+ fontSize: FONT_SIZE.xs,
5274
+ color: COLOR.neutral500,
5275
+ backgroundColor: COLOR.white,
5276
+ border: `1px solid ${COLOR.neutral200}`,
5277
+ borderRadius: RADIUS.md,
5180
5278
  cursor: "pointer"
5181
5279
  },
5182
5280
  filterButtonActive: {
5183
- color: "#ffffff",
5184
- backgroundColor: "#2563eb",
5185
- borderColor: "#2563eb",
5186
- fontWeight: 500
5281
+ color: COLOR.white,
5282
+ backgroundColor: COLOR.primary,
5283
+ borderColor: COLOR.primary,
5284
+ fontWeight: FONT_WEIGHT.medium
5187
5285
  },
5188
5286
  list: {
5189
5287
  flex: 1,
5190
5288
  overflowY: "auto"
5191
5289
  },
5192
5290
  state: {
5193
- padding: "24px 16px",
5194
- fontSize: "13px",
5195
- color: "#9ca3af",
5291
+ padding: `${SPACE.S6} ${SPACE.S4}`,
5292
+ fontSize: FONT_SIZE.sm,
5293
+ color: COLOR.neutral500,
5196
5294
  textAlign: "center"
5197
5295
  },
5198
5296
  errorState: {
5199
- padding: "16px",
5200
- fontSize: "13px",
5201
- color: "#dc2626",
5202
- backgroundColor: "#fef2f2",
5203
- margin: "12px",
5204
- borderRadius: "6px",
5297
+ padding: SPACE.S4,
5298
+ fontSize: FONT_SIZE.sm,
5299
+ color: COLOR.danger,
5300
+ backgroundColor: COLOR.dangerBg,
5301
+ margin: SPACE.S3,
5302
+ borderRadius: RADIUS.md,
5205
5303
  textAlign: "center"
5206
5304
  }
5207
5305
  };
@@ -5297,7 +5395,7 @@ var styles17 = {
5297
5395
  display: "flex",
5298
5396
  height: "100%",
5299
5397
  width: "100%",
5300
- backgroundColor: "#ffffff",
5398
+ backgroundColor: COLOR.white,
5301
5399
  fontFamily: FONT_STACK
5302
5400
  },
5303
5401
  sidebar: {
@@ -5318,15 +5416,15 @@ var styles17 = {
5318
5416
  display: "flex",
5319
5417
  flexDirection: "column",
5320
5418
  minWidth: 0,
5321
- padding: "12px",
5322
- backgroundColor: "#f3f4f6"
5419
+ padding: SPACE.S3,
5420
+ backgroundColor: COLOR.neutral100
5323
5421
  },
5324
5422
  mainCompact: {
5325
5423
  flex: 1,
5326
5424
  display: "flex",
5327
5425
  flexDirection: "column",
5328
5426
  minWidth: 0,
5329
- backgroundColor: "#f3f4f6"
5427
+ backgroundColor: COLOR.neutral100
5330
5428
  },
5331
5429
  panel: {
5332
5430
  height: "100%",
@@ -5338,23 +5436,23 @@ var styles17 = {
5338
5436
  flexDirection: "column",
5339
5437
  alignItems: "center",
5340
5438
  justifyContent: "center",
5341
- padding: "48px 24px",
5439
+ padding: `${SPACE.S12} ${SPACE.S6}`,
5342
5440
  textAlign: "center"
5343
5441
  },
5344
5442
  emptyIcon: {
5345
- fontSize: "48px",
5346
- marginBottom: "12px"
5443
+ fontSize: FONT_SIZE.xxl,
5444
+ marginBottom: SPACE.S3
5347
5445
  },
5348
5446
  emptyTitle: {
5349
- margin: "0 0 6px",
5350
- fontSize: "16px",
5351
- fontWeight: 600,
5352
- color: "#374151"
5447
+ margin: `0 0 ${SPACE.S2}`,
5448
+ fontSize: FONT_SIZE.lg,
5449
+ fontWeight: FONT_WEIGHT.semibold,
5450
+ color: COLOR.neutral700
5353
5451
  },
5354
5452
  emptySubtitle: {
5355
5453
  margin: 0,
5356
- fontSize: "13px",
5357
- color: "#6b7280",
5454
+ fontSize: FONT_SIZE.sm,
5455
+ color: COLOR.neutral500,
5358
5456
  maxWidth: "320px"
5359
5457
  }
5360
5458
  };