@natoe/colab 0.1.8 → 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
  };
@@ -2846,7 +2942,7 @@ function MessageInput({
2846
2942
  opacity: text.trim() ? 1 : 0.4
2847
2943
  },
2848
2944
  type: "button",
2849
- children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: "#ffffff" })
2945
+ children: /* @__PURE__ */ jsxRuntime.jsx(SendIcon, { size: 20, color: COLOR.white })
2850
2946
  }
2851
2947
  )
2852
2948
  ] })
@@ -2854,26 +2950,26 @@ function MessageInput({
2854
2950
  }
2855
2951
  var styles8 = {
2856
2952
  container: {
2857
- borderTop: "1px solid #e5e7eb",
2858
- backgroundColor: "#ffffff"
2953
+ borderTop: `1px solid ${COLOR.neutral200}`,
2954
+ backgroundColor: COLOR.white
2859
2955
  },
2860
2956
  uploadBanner: {
2861
2957
  display: "flex",
2862
2958
  alignItems: "center",
2863
- gap: "8px",
2864
- padding: "6px 14px",
2865
- fontSize: "12px",
2866
- color: "#6b7280",
2867
- backgroundColor: "#f9fafb",
2868
- borderBottom: "1px solid #e5e7eb"
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}`
2869
2965
  },
2870
2966
  uploadSpinner: {
2871
2967
  display: "inline-block",
2872
2968
  width: "12px",
2873
2969
  height: "12px",
2874
- border: "2px solid #d1d5db",
2875
- borderTopColor: "#7c3aed",
2876
- borderRadius: "50%",
2970
+ border: `2px solid ${COLOR.neutral300}`,
2971
+ borderTopColor: COLOR.primary,
2972
+ borderRadius: RADIUS.full,
2877
2973
  animation: "natoe-colab-spin 0.7s linear infinite",
2878
2974
  flexShrink: 0
2879
2975
  },
@@ -2881,12 +2977,12 @@ var styles8 = {
2881
2977
  display: "flex",
2882
2978
  alignItems: "center",
2883
2979
  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"
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}`
2890
2986
  },
2891
2987
  errorText: {
2892
2988
  flex: 1,
@@ -2900,52 +2996,52 @@ var styles8 = {
2900
2996
  justifyContent: "center",
2901
2997
  backgroundColor: "transparent",
2902
2998
  border: "none",
2903
- color: "#b91c1c",
2904
- borderRadius: "4px",
2999
+ color: COLOR.dangerFg,
3000
+ borderRadius: RADIUS.sm,
2905
3001
  cursor: "pointer",
2906
3002
  flexShrink: 0
2907
3003
  },
2908
3004
  inputBar: {
2909
3005
  display: "flex",
2910
3006
  alignItems: "flex-end",
2911
- gap: "6px",
2912
- padding: "10px 12px"
3007
+ gap: SPACE.S2,
3008
+ padding: `${SPACE.S3} ${SPACE.S3}`
2913
3009
  },
2914
3010
  iconButton: {
2915
- width: "44px",
2916
- height: "44px",
3011
+ width: SIZE.controlPrimary,
3012
+ height: SIZE.controlPrimary,
2917
3013
  display: "flex",
2918
3014
  alignItems: "center",
2919
3015
  justifyContent: "center",
2920
3016
  backgroundColor: "transparent",
2921
3017
  border: "none",
2922
- borderRadius: "50%",
3018
+ borderRadius: RADIUS.full,
2923
3019
  cursor: "pointer",
2924
3020
  flexShrink: 0
2925
3021
  },
2926
3022
  textarea: {
2927
3023
  flex: 1,
2928
- padding: "10px 14px",
2929
- fontSize: "15px",
2930
- lineHeight: "1.45",
2931
- border: "1px solid #d1d5db",
2932
- 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,
2933
3029
  resize: "none",
2934
3030
  outline: "none",
2935
3031
  fontFamily: "inherit",
2936
3032
  maxHeight: "120px",
2937
- minHeight: "44px"
3033
+ minHeight: SIZE.controlPrimary
2938
3034
  },
2939
3035
  sendButton: {
2940
- width: "44px",
2941
- height: "44px",
3036
+ width: SIZE.controlPrimary,
3037
+ height: SIZE.controlPrimary,
2942
3038
  display: "flex",
2943
3039
  alignItems: "center",
2944
3040
  justifyContent: "center",
2945
- backgroundColor: "#2563eb",
2946
- color: "#ffffff",
3041
+ backgroundColor: COLOR.primary,
3042
+ color: COLOR.white,
2947
3043
  border: "none",
2948
- borderRadius: "50%",
3044
+ borderRadius: RADIUS.full,
2949
3045
  cursor: "pointer",
2950
3046
  flexShrink: 0
2951
3047
  }};
@@ -2964,7 +3060,7 @@ function ParticipantsList({
2964
3060
  {
2965
3061
  style: {
2966
3062
  ...styles9.statusDot,
2967
- backgroundColor: participant.isOnline ? "#22c55e" : "#d1d5db"
3063
+ backgroundColor: participant.isOnline ? COLOR.success : COLOR.neutral300
2968
3064
  }
2969
3065
  }
2970
3066
  )
@@ -3020,9 +3116,9 @@ var styles9 = {
3020
3116
  item: {
3021
3117
  display: "flex",
3022
3118
  alignItems: "center",
3023
- gap: "10px",
3024
- padding: "8px 0",
3025
- borderBottom: "1px solid #f9fafb"
3119
+ gap: SPACE.S3,
3120
+ padding: `${SPACE.S2} 0`,
3121
+ borderBottom: `1px solid ${COLOR.neutral50}`
3026
3122
  },
3027
3123
  avatar: {
3028
3124
  position: "relative",
@@ -3033,55 +3129,55 @@ var styles9 = {
3033
3129
  avatarImg: {
3034
3130
  width: "32px",
3035
3131
  height: "32px",
3036
- borderRadius: "50%",
3132
+ borderRadius: RADIUS.full,
3037
3133
  objectFit: "cover"
3038
3134
  },
3039
3135
  avatarFallback: {
3040
3136
  width: "32px",
3041
3137
  height: "32px",
3042
- borderRadius: "50%",
3043
- backgroundColor: "#e5e7eb",
3138
+ borderRadius: RADIUS.full,
3139
+ backgroundColor: COLOR.neutral200,
3044
3140
  display: "flex",
3045
3141
  alignItems: "center",
3046
3142
  justifyContent: "center",
3047
- fontSize: "13px",
3048
- fontWeight: 600,
3049
- color: "#6b7280"
3143
+ fontSize: FONT_SIZE.sm,
3144
+ fontWeight: FONT_WEIGHT.semibold,
3145
+ color: COLOR.neutral500
3050
3146
  },
3051
3147
  statusDot: {
3052
3148
  position: "absolute",
3053
3149
  bottom: "0",
3054
3150
  right: "0",
3055
- width: "8px",
3056
- height: "8px",
3057
- borderRadius: "50%",
3058
- border: "2px solid #ffffff"
3151
+ width: SPACE.S2,
3152
+ height: SPACE.S2,
3153
+ borderRadius: RADIUS.full,
3154
+ border: `2px solid ${COLOR.white}`
3059
3155
  },
3060
3156
  info: {
3061
3157
  display: "flex",
3062
3158
  alignItems: "center",
3063
- gap: "6px",
3159
+ gap: SPACE.S2,
3064
3160
  flex: 1,
3065
3161
  minWidth: 0
3066
3162
  },
3067
3163
  name: {
3068
- fontSize: "13px",
3069
- fontWeight: 500,
3070
- color: "#111827",
3164
+ fontSize: FONT_SIZE.sm,
3165
+ fontWeight: FONT_WEIGHT.medium,
3166
+ color: COLOR.neutral900,
3071
3167
  overflow: "hidden",
3072
3168
  textOverflow: "ellipsis",
3073
3169
  whiteSpace: "nowrap"
3074
3170
  },
3075
3171
  youBadge: {
3076
- fontSize: "11px",
3077
- fontWeight: 400,
3078
- color: "#9ca3af"
3172
+ fontSize: FONT_SIZE.xs,
3173
+ fontWeight: FONT_WEIGHT.regular,
3174
+ color: COLOR.neutral400
3079
3175
  },
3080
3176
  roleBadge: {
3081
- fontSize: "10px",
3082
- fontWeight: 500,
3083
- padding: "1px 6px",
3084
- borderRadius: "4px",
3177
+ fontSize: FONT_SIZE.xs,
3178
+ fontWeight: FONT_WEIGHT.medium,
3179
+ padding: `2px ${SPACE.S2}`,
3180
+ borderRadius: RADIUS.sm,
3085
3181
  whiteSpace: "nowrap"
3086
3182
  },
3087
3183
  removeButton: {
@@ -3092,10 +3188,10 @@ var styles9 = {
3092
3188
  justifyContent: "center",
3093
3189
  backgroundColor: "transparent",
3094
3190
  border: "none",
3095
- borderRadius: "4px",
3191
+ borderRadius: RADIUS.sm,
3096
3192
  cursor: "pointer",
3097
- fontSize: "11px",
3098
- color: "#9ca3af",
3193
+ fontSize: FONT_SIZE.xs,
3194
+ color: COLOR.neutral400,
3099
3195
  flexShrink: 0
3100
3196
  }
3101
3197
  };
@@ -3247,19 +3343,19 @@ var styles10 = {
3247
3343
  display: "flex",
3248
3344
  flexDirection: "column",
3249
3345
  height: "100%",
3250
- backgroundColor: "#ffffff"
3346
+ backgroundColor: COLOR.white
3251
3347
  },
3252
3348
  header: {
3253
3349
  display: "flex",
3254
3350
  justifyContent: "space-between",
3255
3351
  alignItems: "center",
3256
- padding: "12px 16px",
3257
- borderBottom: "1px solid #e5e7eb"
3352
+ padding: `${SPACE.S3} ${SPACE.S4}`,
3353
+ borderBottom: `1px solid ${COLOR.neutral200}`
3258
3354
  },
3259
3355
  title: {
3260
3356
  margin: 0,
3261
- fontSize: "16px",
3262
- fontWeight: 600
3357
+ fontSize: FONT_SIZE.lg,
3358
+ fontWeight: FONT_WEIGHT.semibold
3263
3359
  },
3264
3360
  closeButton: {
3265
3361
  width: "28px",
@@ -3269,139 +3365,139 @@ var styles10 = {
3269
3365
  justifyContent: "center",
3270
3366
  backgroundColor: "transparent",
3271
3367
  border: "none",
3272
- borderRadius: "4px",
3368
+ borderRadius: RADIUS.sm,
3273
3369
  cursor: "pointer",
3274
- fontSize: "14px",
3275
- color: "#6b7280"
3370
+ fontSize: FONT_SIZE.sm,
3371
+ color: COLOR.neutral500
3276
3372
  },
3277
3373
  error: {
3278
- padding: "8px 16px",
3279
- fontSize: "13px",
3280
- color: "#dc2626",
3281
- backgroundColor: "#fef2f2"
3374
+ padding: `${SPACE.S2} ${SPACE.S4}`,
3375
+ fontSize: FONT_SIZE.sm,
3376
+ color: COLOR.danger,
3377
+ backgroundColor: COLOR.dangerBg
3282
3378
  },
3283
3379
  section: {
3284
- padding: "16px",
3285
- borderBottom: "1px solid #f3f4f6"
3380
+ padding: SPACE.S4,
3381
+ borderBottom: `1px solid ${COLOR.neutral100}`
3286
3382
  },
3287
3383
  sectionHeader: {
3288
3384
  display: "flex",
3289
3385
  justifyContent: "space-between",
3290
3386
  alignItems: "center",
3291
- marginBottom: "8px"
3387
+ marginBottom: SPACE.S2
3292
3388
  },
3293
3389
  label: {
3294
- fontSize: "12px",
3295
- fontWeight: 600,
3296
- color: "#6b7280",
3390
+ fontSize: FONT_SIZE.xs,
3391
+ fontWeight: FONT_WEIGHT.semibold,
3392
+ color: COLOR.neutral500,
3297
3393
  textTransform: "uppercase",
3298
3394
  letterSpacing: "0.05em"
3299
3395
  },
3300
3396
  channelName: {
3301
- fontSize: "14px",
3302
- color: "#111827"
3397
+ fontSize: FONT_SIZE.sm,
3398
+ color: COLOR.neutral900
3303
3399
  },
3304
3400
  editRow: {
3305
3401
  display: "flex",
3306
3402
  alignItems: "center",
3307
- gap: "8px",
3308
- marginTop: "6px"
3403
+ gap: SPACE.S2,
3404
+ marginTop: SPACE.S2
3309
3405
  },
3310
3406
  input: {
3311
- padding: "6px 10px",
3312
- fontSize: "13px",
3313
- border: "1px solid #d1d5db",
3314
- borderRadius: "6px",
3407
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3408
+ fontSize: FONT_SIZE.sm,
3409
+ border: `1px solid ${COLOR.neutral300}`,
3410
+ borderRadius: RADIUS.md,
3315
3411
  outline: "none",
3316
3412
  width: "100%"
3317
3413
  },
3318
3414
  editButton: {
3319
- padding: "4px 10px",
3320
- fontSize: "12px",
3321
- color: "#2563eb",
3415
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3416
+ fontSize: FONT_SIZE.xs,
3417
+ color: COLOR.primary,
3322
3418
  backgroundColor: "transparent",
3323
3419
  border: "none",
3324
3420
  cursor: "pointer"
3325
3421
  },
3326
3422
  saveButton: {
3327
- padding: "6px 12px",
3328
- fontSize: "12px",
3329
- fontWeight: 500,
3330
- color: "#ffffff",
3331
- 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,
3332
3428
  border: "none",
3333
- borderRadius: "6px",
3429
+ borderRadius: RADIUS.md,
3334
3430
  cursor: "pointer",
3335
3431
  whiteSpace: "nowrap"
3336
3432
  },
3337
3433
  cancelButton: {
3338
- padding: "6px 12px",
3339
- fontSize: "12px",
3340
- color: "#6b7280",
3434
+ padding: `${SPACE.S2} ${SPACE.S3}`,
3435
+ fontSize: FONT_SIZE.xs,
3436
+ color: COLOR.neutral500,
3341
3437
  backgroundColor: "transparent",
3342
- border: "1px solid #d1d5db",
3343
- borderRadius: "6px",
3438
+ border: `1px solid ${COLOR.neutral300}`,
3439
+ borderRadius: RADIUS.md,
3344
3440
  cursor: "pointer",
3345
3441
  whiteSpace: "nowrap"
3346
3442
  },
3347
3443
  addButton: {
3348
- padding: "4px 10px",
3349
- fontSize: "12px",
3350
- fontWeight: 500,
3351
- color: "#2563eb",
3352
- 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,
3353
3449
  border: "none",
3354
- borderRadius: "4px",
3450
+ borderRadius: RADIUS.sm,
3355
3451
  cursor: "pointer"
3356
3452
  },
3357
3453
  inviteForm: {
3358
3454
  display: "flex",
3359
3455
  flexDirection: "column",
3360
- gap: "8px",
3361
- padding: "12px",
3362
- marginBottom: "12px",
3363
- backgroundColor: "#f9fafb",
3364
- borderRadius: "8px"
3456
+ gap: SPACE.S2,
3457
+ padding: SPACE.S3,
3458
+ marginBottom: SPACE.S3,
3459
+ backgroundColor: COLOR.neutral50,
3460
+ borderRadius: RADIUS.md
3365
3461
  },
3366
3462
  inviteActions: {
3367
3463
  display: "flex",
3368
- gap: "8px"
3464
+ gap: SPACE.S2
3369
3465
  },
3370
3466
  dangerZone: {
3371
- padding: "16px",
3467
+ padding: SPACE.S4,
3372
3468
  marginTop: "auto",
3373
3469
  display: "flex",
3374
3470
  flexDirection: "column",
3375
- gap: "8px"
3471
+ gap: SPACE.S2
3376
3472
  },
3377
3473
  leaveButton: {
3378
- padding: "8px",
3379
- fontSize: "13px",
3380
- fontWeight: 500,
3381
- color: "#b45309",
3474
+ padding: SPACE.S2,
3475
+ fontSize: FONT_SIZE.sm,
3476
+ fontWeight: FONT_WEIGHT.medium,
3477
+ color: COLOR.warning,
3382
3478
  backgroundColor: "#fffbeb",
3383
3479
  border: "1px solid #fde68a",
3384
- borderRadius: "6px",
3480
+ borderRadius: RADIUS.md,
3385
3481
  cursor: "pointer"
3386
3482
  },
3387
3483
  deleteButton: {
3388
- padding: "8px",
3389
- fontSize: "13px",
3390
- fontWeight: 500,
3391
- color: "#dc2626",
3392
- backgroundColor: "#fef2f2",
3393
- border: "1px solid #fecaca",
3394
- 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,
3395
3491
  cursor: "pointer"
3396
3492
  },
3397
3493
  confirmDeleteButton: {
3398
- padding: "8px",
3399
- fontSize: "13px",
3400
- fontWeight: 600,
3401
- color: "#ffffff",
3402
- backgroundColor: "#dc2626",
3494
+ padding: SPACE.S2,
3495
+ fontSize: FONT_SIZE.sm,
3496
+ fontWeight: FONT_WEIGHT.semibold,
3497
+ color: COLOR.white,
3498
+ backgroundColor: COLOR.danger,
3403
3499
  border: "none",
3404
- borderRadius: "6px",
3500
+ borderRadius: RADIUS.md,
3405
3501
  cursor: "pointer"
3406
3502
  }
3407
3503
  };
@@ -3424,13 +3520,13 @@ function PinnedMessagesBar({
3424
3520
  };
3425
3521
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: styles11.container, children: [
3426
3522
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: styles11.indicator, children: [
3427
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: styles11.pinIcon, children: "\u{1F4CC}" }),
3523
+ /* @__PURE__ */ jsxRuntime.jsx(PinIcon, { size: 14, color: COLOR.primary }),
3428
3524
  pinnedMessages.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { style: styles11.segments, children: pinnedMessages.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
3429
3525
  "span",
3430
3526
  {
3431
3527
  style: {
3432
3528
  ...styles11.segment,
3433
- backgroundColor: i === safeIndex ? "#2563eb" : "#d1d5db"
3529
+ backgroundColor: i === safeIndex ? COLOR.primary : COLOR.neutral300
3434
3530
  }
3435
3531
  },
3436
3532
  i
@@ -3494,20 +3590,17 @@ var styles11 = {
3494
3590
  container: {
3495
3591
  display: "flex",
3496
3592
  alignItems: "center",
3497
- gap: "8px",
3498
- padding: "6px 12px",
3499
- backgroundColor: "#eff6ff",
3500
- borderBottom: "1px solid #dbeafe"
3593
+ gap: SPACE.S2,
3594
+ padding: `${SPACE.S1} ${SPACE.S3}`,
3595
+ backgroundColor: COLOR.primaryBg,
3596
+ borderBottom: `1px solid ${COLOR.primaryBg}`
3501
3597
  },
3502
3598
  indicator: {
3503
3599
  display: "flex",
3504
3600
  alignItems: "center",
3505
- gap: "4px",
3601
+ gap: SPACE.S1,
3506
3602
  flexShrink: 0
3507
3603
  },
3508
- pinIcon: {
3509
- fontSize: "13px"
3510
- },
3511
3604
  segments: {
3512
3605
  display: "flex",
3513
3606
  flexDirection: "column",
@@ -3532,19 +3625,19 @@ var styles11 = {
3532
3625
  overflow: "hidden"
3533
3626
  },
3534
3627
  label: {
3535
- fontSize: "11px",
3536
- fontWeight: 600,
3537
- color: "#2563eb"
3628
+ fontSize: FONT_SIZE.xs,
3629
+ fontWeight: FONT_WEIGHT.semibold,
3630
+ color: COLOR.primary
3538
3631
  },
3539
3632
  preview: {
3540
- fontSize: "12px",
3541
- color: "#374151",
3633
+ fontSize: FONT_SIZE.xs,
3634
+ color: COLOR.neutral700,
3542
3635
  overflow: "hidden",
3543
3636
  textOverflow: "ellipsis",
3544
3637
  whiteSpace: "nowrap"
3545
3638
  },
3546
3639
  sender: {
3547
- fontWeight: 600
3640
+ fontWeight: FONT_WEIGHT.semibold
3548
3641
  },
3549
3642
  unpinButton: {
3550
3643
  width: "24px",
@@ -3552,12 +3645,12 @@ var styles11 = {
3552
3645
  display: "flex",
3553
3646
  alignItems: "center",
3554
3647
  justifyContent: "center",
3555
- color: "#6b7280",
3648
+ color: COLOR.neutral500,
3556
3649
  backgroundColor: "transparent",
3557
3650
  border: "none",
3558
- borderRadius: "4px",
3651
+ borderRadius: RADIUS.sm,
3559
3652
  cursor: "pointer",
3560
- fontSize: "11px",
3653
+ fontSize: FONT_SIZE.xs,
3561
3654
  flexShrink: 0
3562
3655
  }
3563
3656
  };
@@ -3592,15 +3685,15 @@ var styles12 = {
3592
3685
  transform: "translateX(-50%)",
3593
3686
  display: "flex",
3594
3687
  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",
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,
3602
3695
  maxWidth: "90%",
3603
- zIndex: 20
3696
+ zIndex: Z_INDEX.toast
3604
3697
  },
3605
3698
  message: {
3606
3699
  whiteSpace: "nowrap",
@@ -3610,11 +3703,11 @@ var styles12 = {
3610
3703
  action: {
3611
3704
  background: "transparent",
3612
3705
  border: "none",
3613
- color: "#93c5fd",
3614
- fontWeight: 600,
3615
- fontSize: "14px",
3706
+ color: COLOR.primaryBg,
3707
+ fontWeight: FONT_WEIGHT.semibold,
3708
+ fontSize: FONT_SIZE.sm,
3616
3709
  cursor: "pointer",
3617
- padding: "4px 6px",
3710
+ padding: `${SPACE.S1} ${SPACE.S2}`,
3618
3711
  textTransform: "uppercase",
3619
3712
  letterSpacing: "0.4px"
3620
3713
  }
@@ -3827,10 +3920,10 @@ var panelStyles = {
3827
3920
  display: "flex",
3828
3921
  flexDirection: "column",
3829
3922
  height: "100%",
3830
- backgroundColor: "#ffffff",
3831
- borderRadius: "8px",
3923
+ backgroundColor: COLOR.white,
3924
+ borderRadius: RADIUS.md,
3832
3925
  overflow: "hidden",
3833
- border: "1px solid #e5e7eb",
3926
+ border: `1px solid ${COLOR.neutral200}`,
3834
3927
  fontFamily: FONT_STACK
3835
3928
  },
3836
3929
  loadingState: {
@@ -3838,8 +3931,8 @@ var panelStyles = {
3838
3931
  alignItems: "center",
3839
3932
  justifyContent: "center",
3840
3933
  height: "100%",
3841
- fontSize: "14px",
3842
- color: "#9ca3af"
3934
+ fontSize: FONT_SIZE.sm,
3935
+ color: COLOR.neutral500
3843
3936
  },
3844
3937
  errorState: {
3845
3938
  display: "flex",
@@ -3847,18 +3940,18 @@ var panelStyles = {
3847
3940
  alignItems: "center",
3848
3941
  justifyContent: "center",
3849
3942
  height: "100%",
3850
- padding: "24px",
3943
+ padding: SPACE.S6,
3851
3944
  textAlign: "center"
3852
3945
  },
3853
3946
  errorTitle: {
3854
- fontSize: "15px",
3855
- fontWeight: 500,
3856
- color: "#dc2626",
3857
- margin: "0 0 4px"
3947
+ fontSize: FONT_SIZE.md,
3948
+ fontWeight: FONT_WEIGHT.medium,
3949
+ color: COLOR.danger,
3950
+ margin: `0 0 ${SPACE.S1}`
3858
3951
  },
3859
3952
  errorMessage: {
3860
- fontSize: "13px",
3861
- color: "#6b7280",
3953
+ fontSize: FONT_SIZE.sm,
3954
+ color: COLOR.neutral500,
3862
3955
  margin: 0
3863
3956
  }
3864
3957
  };
@@ -4029,7 +4122,7 @@ function CollabPopup({
4029
4122
  "aria-label": isMinimized ? "Expand chat" : "Minimize chat",
4030
4123
  title: isMinimized ? "Expand" : "Minimize",
4031
4124
  type: "button",
4032
- 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 })
4033
4126
  }
4034
4127
  ),
4035
4128
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4040,7 +4133,7 @@ function CollabPopup({
4040
4133
  "aria-label": "Close chat",
4041
4134
  title: "Close",
4042
4135
  type: "button",
4043
- children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: "#cbd5e1" })
4136
+ children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, { size: 16, color: COLOR.slate200 })
4044
4137
  }
4045
4138
  )
4046
4139
  ] })
@@ -4053,14 +4146,14 @@ function CollabPopup({
4053
4146
  var styles13 = {
4054
4147
  container: {
4055
4148
  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)",
4149
+ zIndex: Z_INDEX.dialog,
4150
+ borderRadius: RADIUS.lg,
4151
+ boxShadow: SHADOW.dialog,
4059
4152
  overflow: "hidden",
4060
4153
  display: "flex",
4061
4154
  flexDirection: "column",
4062
- backgroundColor: "#ffffff",
4063
- border: "1px solid #e5e7eb",
4155
+ backgroundColor: COLOR.white,
4156
+ border: `1px solid ${COLOR.neutral200}`,
4064
4157
  transition: "height 0.2s ease",
4065
4158
  fontFamily: FONT_STACK
4066
4159
  },
@@ -4068,37 +4161,37 @@ var styles13 = {
4068
4161
  display: "flex",
4069
4162
  justifyContent: "space-between",
4070
4163
  alignItems: "center",
4071
- padding: "0 8px 0 14px",
4164
+ padding: `0 ${SPACE.S2} 0 ${SPACE.S4}`,
4072
4165
  height: "52px",
4073
- backgroundColor: "#1e293b",
4166
+ backgroundColor: COLOR.slate800,
4074
4167
  cursor: "grab",
4075
4168
  userSelect: "none",
4076
4169
  flexShrink: 0
4077
4170
  },
4078
4171
  titleText: {
4079
- fontSize: "15px",
4080
- fontWeight: 500,
4081
- color: "#ffffff",
4172
+ fontSize: FONT_SIZE.md,
4173
+ fontWeight: FONT_WEIGHT.medium,
4174
+ color: COLOR.white,
4082
4175
  overflow: "hidden",
4083
4176
  textOverflow: "ellipsis",
4084
4177
  whiteSpace: "nowrap"
4085
4178
  },
4086
4179
  titleActions: {
4087
4180
  display: "flex",
4088
- gap: "4px",
4181
+ gap: SPACE.S1,
4089
4182
  flexShrink: 0
4090
4183
  },
4091
4184
  titleButton: {
4092
- width: "40px",
4093
- height: "40px",
4185
+ width: SIZE.control,
4186
+ height: SIZE.control,
4094
4187
  display: "flex",
4095
4188
  alignItems: "center",
4096
4189
  justifyContent: "center",
4097
4190
  backgroundColor: "transparent",
4098
4191
  border: "none",
4099
- borderRadius: "6px",
4192
+ borderRadius: RADIUS.md,
4100
4193
  cursor: "pointer",
4101
- color: "#cbd5e1"
4194
+ color: COLOR.slate200
4102
4195
  },
4103
4196
  panelWrapper: {
4104
4197
  flex: 1,
@@ -4571,55 +4664,55 @@ var styles14 = {
4571
4664
  display: "flex",
4572
4665
  flexDirection: "column",
4573
4666
  width: "100%",
4574
- padding: "6px 8px",
4575
- backgroundColor: "#ffffff",
4576
- border: "1px solid #e5e7eb",
4577
- borderRadius: "8px",
4667
+ padding: `${SPACE.S1} ${SPACE.S2}`,
4668
+ backgroundColor: COLOR.white,
4669
+ border: `1px solid ${COLOR.neutral200}`,
4670
+ borderRadius: RADIUS.md,
4578
4671
  fontFamily: FONT_STACK
4579
4672
  },
4580
4673
  loadingState: {
4581
- padding: "8px",
4582
- fontSize: "12px",
4583
- color: "#9ca3af",
4674
+ padding: SPACE.S2,
4675
+ fontSize: FONT_SIZE.xs,
4676
+ color: COLOR.neutral500,
4584
4677
  textAlign: "center"
4585
4678
  },
4586
4679
  error: {
4587
- padding: "4px 8px",
4588
- marginBottom: "4px",
4589
- fontSize: "11px",
4590
- color: "#dc2626",
4591
- backgroundColor: "#fef2f2",
4592
- 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
4593
4686
  },
4594
4687
  preview: {
4595
4688
  display: "flex",
4596
4689
  flexDirection: "column",
4597
4690
  gap: "2px",
4598
- marginBottom: "6px",
4599
- paddingBottom: "6px",
4600
- borderBottom: "1px solid #f3f4f6"
4691
+ marginBottom: SPACE.S1,
4692
+ paddingBottom: SPACE.S1,
4693
+ borderBottom: `1px solid ${COLOR.neutral100}`
4601
4694
  },
4602
4695
  messageRow: {
4603
4696
  display: "flex",
4604
4697
  alignItems: "center",
4605
- gap: "6px",
4606
- fontSize: "12px",
4607
- lineHeight: "1.4",
4698
+ gap: SPACE.S2,
4699
+ fontSize: FONT_SIZE.xs,
4700
+ lineHeight: LINE_HEIGHT.normal,
4608
4701
  overflow: "hidden"
4609
4702
  },
4610
4703
  roleDot: {
4611
4704
  flexShrink: 0,
4612
4705
  width: "6px",
4613
4706
  height: "6px",
4614
- borderRadius: "50%"
4707
+ borderRadius: RADIUS.full
4615
4708
  },
4616
4709
  senderName: {
4617
4710
  flexShrink: 0,
4618
- fontWeight: 600,
4619
- color: "#374151"
4711
+ fontWeight: FONT_WEIGHT.semibold,
4712
+ color: COLOR.neutral700
4620
4713
  },
4621
4714
  messageText: {
4622
- color: "#4b5563",
4715
+ color: COLOR.neutral600,
4623
4716
  overflow: "hidden",
4624
4717
  textOverflow: "ellipsis",
4625
4718
  whiteSpace: "nowrap",
@@ -4627,8 +4720,8 @@ var styles14 = {
4627
4720
  flex: 1
4628
4721
  },
4629
4722
  systemRow: {
4630
- fontSize: "11px",
4631
- color: "#9ca3af",
4723
+ fontSize: FONT_SIZE.xs,
4724
+ color: COLOR.neutral400,
4632
4725
  fontStyle: "italic",
4633
4726
  textAlign: "center",
4634
4727
  padding: "2px 0"
@@ -4640,11 +4733,11 @@ var styles14 = {
4640
4733
  audioPlayer: {
4641
4734
  display: "inline-flex",
4642
4735
  alignItems: "center",
4643
- gap: "6px",
4644
- padding: "2px 8px",
4645
- borderRadius: "12px",
4646
- backgroundColor: "#eff6ff",
4647
- 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}`,
4648
4741
  flex: 1,
4649
4742
  minWidth: 0
4650
4743
  },
@@ -4654,11 +4747,11 @@ var styles14 = {
4654
4747
  display: "flex",
4655
4748
  alignItems: "center",
4656
4749
  justifyContent: "center",
4657
- fontSize: "10px",
4658
- color: "#ffffff",
4659
- backgroundColor: "#2563eb",
4750
+ fontSize: FONT_SIZE.xs,
4751
+ color: COLOR.white,
4752
+ backgroundColor: COLOR.primary,
4660
4753
  border: "none",
4661
- borderRadius: "50%",
4754
+ borderRadius: RADIUS.full,
4662
4755
  cursor: "pointer",
4663
4756
  flexShrink: 0
4664
4757
  },
@@ -4666,7 +4759,7 @@ var styles14 = {
4666
4759
  display: "inline-flex",
4667
4760
  alignItems: "center",
4668
4761
  gap: "2px",
4669
- height: "16px",
4762
+ height: SPACE.S4,
4670
4763
  flex: 1,
4671
4764
  minWidth: 0
4672
4765
  },
@@ -4674,27 +4767,27 @@ var styles14 = {
4674
4767
  display: "inline-block",
4675
4768
  width: "2px",
4676
4769
  borderRadius: "1px",
4677
- backgroundColor: "#60a5fa"
4770
+ backgroundColor: COLOR.primary
4678
4771
  },
4679
4772
  audioDuration: {
4680
- fontSize: "11px",
4681
- color: "#2563eb",
4773
+ fontSize: FONT_SIZE.xs,
4774
+ color: COLOR.primary,
4682
4775
  fontVariantNumeric: "tabular-nums",
4683
- fontWeight: 500,
4776
+ fontWeight: FONT_WEIGHT.medium,
4684
4777
  flexShrink: 0
4685
4778
  },
4686
4779
  // ── Input bar ──
4687
4780
  inputBar: {
4688
4781
  display: "flex",
4689
4782
  alignItems: "center",
4690
- gap: "6px"
4783
+ gap: SPACE.S2
4691
4784
  },
4692
4785
  input: {
4693
4786
  flex: 1,
4694
- padding: "6px 10px",
4695
- fontSize: "13px",
4696
- border: "1px solid #e5e7eb",
4697
- borderRadius: "16px",
4787
+ padding: `${SPACE.S2} ${SPACE.S3}`,
4788
+ fontSize: FONT_SIZE.sm,
4789
+ border: `1px solid ${COLOR.neutral200}`,
4790
+ borderRadius: RADIUS.pill,
4698
4791
  outline: "none",
4699
4792
  fontFamily: "inherit",
4700
4793
  minWidth: 0
@@ -4703,12 +4796,12 @@ var styles14 = {
4703
4796
  flexShrink: 0,
4704
4797
  minWidth: "18px",
4705
4798
  height: "18px",
4706
- padding: "0 5px",
4707
- fontSize: "10px",
4708
- fontWeight: 600,
4709
- color: "#ffffff",
4710
- backgroundColor: "#dc2626",
4711
- 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,
4712
4805
  display: "flex",
4713
4806
  alignItems: "center",
4714
4807
  justifyContent: "center"
@@ -4717,8 +4810,8 @@ var styles14 = {
4717
4810
  flexShrink: 0,
4718
4811
  width: "6px",
4719
4812
  height: "6px",
4720
- borderRadius: "50%",
4721
- backgroundColor: "#22c55e"
4813
+ borderRadius: RADIUS.full,
4814
+ backgroundColor: COLOR.success
4722
4815
  },
4723
4816
  sendButton: {
4724
4817
  flexShrink: 0,
@@ -4727,11 +4820,11 @@ var styles14 = {
4727
4820
  display: "flex",
4728
4821
  alignItems: "center",
4729
4822
  justifyContent: "center",
4730
- fontSize: "13px",
4731
- color: "#ffffff",
4732
- backgroundColor: "#2563eb",
4823
+ fontSize: FONT_SIZE.sm,
4824
+ color: COLOR.white,
4825
+ backgroundColor: COLOR.primary,
4733
4826
  border: "none",
4734
- borderRadius: "50%",
4827
+ borderRadius: RADIUS.full,
4735
4828
  cursor: "pointer"
4736
4829
  },
4737
4830
  expandButton: {
@@ -4741,11 +4834,11 @@ var styles14 = {
4741
4834
  display: "flex",
4742
4835
  alignItems: "center",
4743
4836
  justifyContent: "center",
4744
- fontSize: "12px",
4745
- color: "#6b7280",
4837
+ fontSize: FONT_SIZE.xs,
4838
+ color: COLOR.neutral500,
4746
4839
  backgroundColor: "transparent",
4747
- border: "1px solid #e5e7eb",
4748
- borderRadius: "50%",
4840
+ border: `1px solid ${COLOR.neutral200}`,
4841
+ borderRadius: RADIUS.full,
4749
4842
  cursor: "pointer"
4750
4843
  }};
4751
4844
  function useConversationList(options) {
@@ -4909,52 +5002,52 @@ var styles15 = {
4909
5002
  container: {
4910
5003
  display: "flex",
4911
5004
  alignItems: "center",
4912
- gap: "12px",
4913
- padding: "10px 12px",
5005
+ gap: SPACE.S3,
5006
+ padding: `${SPACE.S3} ${SPACE.S3}`,
4914
5007
  width: "100%",
4915
5008
  backgroundColor: "transparent",
4916
5009
  border: "none",
4917
- borderBottom: "1px solid #f3f4f6",
5010
+ borderBottom: `1px solid ${COLOR.neutral100}`,
4918
5011
  cursor: "pointer",
4919
5012
  textAlign: "left"
4920
5013
  },
4921
5014
  selected: {
4922
- backgroundColor: "#eff6ff"
5015
+ backgroundColor: COLOR.primaryBg
4923
5016
  },
4924
5017
  unread: {},
4925
5018
  avatarWrapper: {
4926
5019
  position: "relative",
4927
- width: "40px",
4928
- height: "40px",
5020
+ width: SIZE.avatar,
5021
+ height: SIZE.avatar,
4929
5022
  flexShrink: 0
4930
5023
  },
4931
5024
  avatar: {
4932
- width: "40px",
4933
- height: "40px",
4934
- borderRadius: "50%",
5025
+ width: SIZE.avatar,
5026
+ height: SIZE.avatar,
5027
+ borderRadius: RADIUS.full,
4935
5028
  objectFit: "cover"
4936
5029
  },
4937
5030
  avatarFallback: {
4938
- width: "40px",
4939
- height: "40px",
4940
- borderRadius: "50%",
4941
- backgroundColor: "#e5e7eb",
5031
+ width: SIZE.avatar,
5032
+ height: SIZE.avatar,
5033
+ borderRadius: RADIUS.full,
5034
+ backgroundColor: COLOR.neutral200,
4942
5035
  display: "flex",
4943
5036
  alignItems: "center",
4944
5037
  justifyContent: "center",
4945
- fontSize: "15px",
4946
- fontWeight: 600,
4947
- color: "#6b7280"
5038
+ fontSize: FONT_SIZE.md,
5039
+ fontWeight: FONT_WEIGHT.semibold,
5040
+ color: COLOR.neutral500
4948
5041
  },
4949
5042
  unreadDot: {
4950
5043
  position: "absolute",
4951
5044
  top: "0",
4952
5045
  left: "0",
4953
- width: "10px",
4954
- height: "10px",
4955
- borderRadius: "50%",
4956
- backgroundColor: "#2563eb",
4957
- 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}`
4958
5051
  },
4959
5052
  content: {
4960
5053
  flex: 1,
@@ -4967,12 +5060,12 @@ var styles15 = {
4967
5060
  display: "flex",
4968
5061
  justifyContent: "space-between",
4969
5062
  alignItems: "baseline",
4970
- gap: "8px"
5063
+ gap: SPACE.S2
4971
5064
  },
4972
5065
  name: {
4973
- fontSize: "15px",
4974
- fontWeight: 500,
4975
- color: "#111827",
5066
+ fontSize: FONT_SIZE.md,
5067
+ fontWeight: FONT_WEIGHT.medium,
5068
+ color: COLOR.neutral900,
4976
5069
  overflow: "hidden",
4977
5070
  textOverflow: "ellipsis",
4978
5071
  whiteSpace: "nowrap",
@@ -4980,26 +5073,26 @@ var styles15 = {
4980
5073
  minWidth: 0
4981
5074
  },
4982
5075
  nameUnread: {
4983
- fontWeight: 700
5076
+ fontWeight: FONT_WEIGHT.bold
4984
5077
  },
4985
5078
  time: {
4986
- fontSize: "12px",
4987
- color: "#6b7280",
5079
+ fontSize: FONT_SIZE.xs,
5080
+ color: COLOR.neutral500,
4988
5081
  flexShrink: 0
4989
5082
  },
4990
5083
  timeUnread: {
4991
- color: "#2563eb",
4992
- fontWeight: 600
5084
+ color: COLOR.primary,
5085
+ fontWeight: FONT_WEIGHT.semibold
4993
5086
  },
4994
5087
  bottomRow: {
4995
5088
  display: "flex",
4996
5089
  justifyContent: "space-between",
4997
5090
  alignItems: "center",
4998
- gap: "8px"
5091
+ gap: SPACE.S2
4999
5092
  },
5000
5093
  preview: {
5001
- fontSize: "14px",
5002
- color: "#4b5563",
5094
+ fontSize: FONT_SIZE.sm,
5095
+ color: COLOR.neutral600,
5003
5096
  overflow: "hidden",
5004
5097
  textOverflow: "ellipsis",
5005
5098
  whiteSpace: "nowrap",
@@ -5007,18 +5100,18 @@ var styles15 = {
5007
5100
  minWidth: 0
5008
5101
  },
5009
5102
  previewUnread: {
5010
- color: "#111827",
5011
- fontWeight: 500
5103
+ color: COLOR.neutral900,
5104
+ fontWeight: FONT_WEIGHT.medium
5012
5105
  },
5013
5106
  badge: {
5014
5107
  minWidth: "20px",
5015
5108
  height: "20px",
5016
- padding: "0 6px",
5017
- fontSize: "11px",
5018
- fontWeight: 600,
5019
- color: "#ffffff",
5020
- backgroundColor: "#2563eb",
5021
- 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,
5022
5115
  display: "flex",
5023
5116
  alignItems: "center",
5024
5117
  justifyContent: "center",
@@ -5119,89 +5212,89 @@ var styles16 = {
5119
5212
  display: "flex",
5120
5213
  flexDirection: "column",
5121
5214
  height: "100%",
5122
- backgroundColor: "#ffffff",
5123
- borderRight: "1px solid #e5e7eb"
5215
+ backgroundColor: COLOR.white,
5216
+ borderRight: `1px solid ${COLOR.neutral200}`
5124
5217
  },
5125
5218
  header: {
5126
- padding: "12px",
5127
- borderBottom: "1px solid #e5e7eb",
5128
- backgroundColor: "#f9fafb",
5219
+ padding: SPACE.S3,
5220
+ borderBottom: `1px solid ${COLOR.neutral200}`,
5221
+ backgroundColor: COLOR.neutral50,
5129
5222
  flexShrink: 0
5130
5223
  },
5131
5224
  titleRow: {
5132
5225
  display: "flex",
5133
5226
  alignItems: "center",
5134
- gap: "8px",
5135
- marginBottom: "8px"
5227
+ gap: SPACE.S2,
5228
+ marginBottom: SPACE.S2
5136
5229
  },
5137
5230
  title: {
5138
5231
  margin: 0,
5139
- fontSize: "15px",
5140
- fontWeight: 600,
5141
- color: "#111827"
5232
+ fontSize: FONT_SIZE.md,
5233
+ fontWeight: FONT_WEIGHT.semibold,
5234
+ color: COLOR.neutral900
5142
5235
  },
5143
5236
  totalBadge: {
5144
5237
  minWidth: "20px",
5145
5238
  height: "20px",
5146
- padding: "0 6px",
5147
- fontSize: "11px",
5148
- fontWeight: 600,
5149
- color: "#ffffff",
5150
- backgroundColor: "#2563eb",
5151
- 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,
5152
5245
  display: "flex",
5153
5246
  alignItems: "center",
5154
5247
  justifyContent: "center"
5155
5248
  },
5156
5249
  searchRow: {
5157
- marginBottom: "8px"
5250
+ marginBottom: SPACE.S2
5158
5251
  },
5159
5252
  searchInput: {
5160
5253
  width: "100%",
5161
- padding: "6px 10px",
5162
- fontSize: "13px",
5163
- border: "1px solid #e5e7eb",
5164
- borderRadius: "6px",
5254
+ padding: `${SPACE.S2} ${SPACE.S3}`,
5255
+ fontSize: FONT_SIZE.sm,
5256
+ border: `1px solid ${COLOR.neutral200}`,
5257
+ borderRadius: RADIUS.md,
5165
5258
  outline: "none",
5166
5259
  fontFamily: "inherit"
5167
5260
  },
5168
5261
  filterRow: {
5169
5262
  display: "flex",
5170
- gap: "4px"
5263
+ gap: SPACE.S1
5171
5264
  },
5172
5265
  filterButton: {
5173
5266
  flex: 1,
5174
- padding: "5px 8px",
5175
- fontSize: "12px",
5176
- color: "#6b7280",
5177
- backgroundColor: "#ffffff",
5178
- border: "1px solid #e5e7eb",
5179
- 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,
5180
5273
  cursor: "pointer"
5181
5274
  },
5182
5275
  filterButtonActive: {
5183
- color: "#ffffff",
5184
- backgroundColor: "#2563eb",
5185
- borderColor: "#2563eb",
5186
- fontWeight: 500
5276
+ color: COLOR.white,
5277
+ backgroundColor: COLOR.primary,
5278
+ borderColor: COLOR.primary,
5279
+ fontWeight: FONT_WEIGHT.medium
5187
5280
  },
5188
5281
  list: {
5189
5282
  flex: 1,
5190
5283
  overflowY: "auto"
5191
5284
  },
5192
5285
  state: {
5193
- padding: "24px 16px",
5194
- fontSize: "13px",
5195
- color: "#9ca3af",
5286
+ padding: `${SPACE.S6} ${SPACE.S4}`,
5287
+ fontSize: FONT_SIZE.sm,
5288
+ color: COLOR.neutral500,
5196
5289
  textAlign: "center"
5197
5290
  },
5198
5291
  errorState: {
5199
- padding: "16px",
5200
- fontSize: "13px",
5201
- color: "#dc2626",
5202
- backgroundColor: "#fef2f2",
5203
- margin: "12px",
5204
- 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,
5205
5298
  textAlign: "center"
5206
5299
  }
5207
5300
  };
@@ -5297,7 +5390,7 @@ var styles17 = {
5297
5390
  display: "flex",
5298
5391
  height: "100%",
5299
5392
  width: "100%",
5300
- backgroundColor: "#ffffff",
5393
+ backgroundColor: COLOR.white,
5301
5394
  fontFamily: FONT_STACK
5302
5395
  },
5303
5396
  sidebar: {
@@ -5318,15 +5411,15 @@ var styles17 = {
5318
5411
  display: "flex",
5319
5412
  flexDirection: "column",
5320
5413
  minWidth: 0,
5321
- padding: "12px",
5322
- backgroundColor: "#f3f4f6"
5414
+ padding: SPACE.S3,
5415
+ backgroundColor: COLOR.neutral100
5323
5416
  },
5324
5417
  mainCompact: {
5325
5418
  flex: 1,
5326
5419
  display: "flex",
5327
5420
  flexDirection: "column",
5328
5421
  minWidth: 0,
5329
- backgroundColor: "#f3f4f6"
5422
+ backgroundColor: COLOR.neutral100
5330
5423
  },
5331
5424
  panel: {
5332
5425
  height: "100%",
@@ -5338,23 +5431,23 @@ var styles17 = {
5338
5431
  flexDirection: "column",
5339
5432
  alignItems: "center",
5340
5433
  justifyContent: "center",
5341
- padding: "48px 24px",
5434
+ padding: `${SPACE.S12} ${SPACE.S6}`,
5342
5435
  textAlign: "center"
5343
5436
  },
5344
5437
  emptyIcon: {
5345
- fontSize: "48px",
5346
- marginBottom: "12px"
5438
+ fontSize: FONT_SIZE.xxl,
5439
+ marginBottom: SPACE.S3
5347
5440
  },
5348
5441
  emptyTitle: {
5349
- margin: "0 0 6px",
5350
- fontSize: "16px",
5351
- fontWeight: 600,
5352
- color: "#374151"
5442
+ margin: `0 0 ${SPACE.S2}`,
5443
+ fontSize: FONT_SIZE.lg,
5444
+ fontWeight: FONT_WEIGHT.semibold,
5445
+ color: COLOR.neutral700
5353
5446
  },
5354
5447
  emptySubtitle: {
5355
5448
  margin: 0,
5356
- fontSize: "13px",
5357
- color: "#6b7280",
5449
+ fontSize: FONT_SIZE.sm,
5450
+ color: COLOR.neutral500,
5358
5451
  maxWidth: "320px"
5359
5452
  }
5360
5453
  };