@bubble-design-system/ui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -1214,6 +1214,344 @@ button {
1214
1214
  }
1215
1215
 
1216
1216
 
1217
+ /* === components/Chat.css === */
1218
+ /* Chat */
1219
+
1220
+ /* ── Thread container ───────────────────────────────── */
1221
+ .pds-chat-thread {
1222
+ display: flex;
1223
+ flex-direction: column;
1224
+ gap: 2px;
1225
+ padding: 16px;
1226
+ overflow-y: auto;
1227
+ }
1228
+
1229
+ /* ── Message wrapper ────────────────────────────────── */
1230
+ .pds-chat-msg {
1231
+ display: flex;
1232
+ flex-direction: column;
1233
+ max-width: 72%;
1234
+ gap: 3px;
1235
+ }
1236
+ .pds-chat-msg--received {
1237
+ align-self: flex-start;
1238
+ align-items: flex-start;
1239
+ }
1240
+ .pds-chat-msg--sent {
1241
+ align-self: flex-end;
1242
+ align-items: flex-end;
1243
+ }
1244
+
1245
+ /* Group spacing — first/solo get top margin to separate runs */
1246
+ .pds-chat-msg--solo,
1247
+ .pds-chat-msg--first {
1248
+ margin-top: 14px;
1249
+ }
1250
+ .pds-chat-thread > .pds-chat-msg:first-child {
1251
+ margin-top: 0;
1252
+ }
1253
+
1254
+ /* ── Meta row (name + time, shown on first/solo) ────── */
1255
+ .pds-chat-msg__meta-row {
1256
+ display: flex;
1257
+ align-items: center;
1258
+ gap: 6px;
1259
+ padding: 0 4px;
1260
+ margin-bottom: 2px;
1261
+ }
1262
+ .pds-chat-msg--sent .pds-chat-msg__meta-row {
1263
+ flex-direction: row-reverse;
1264
+ }
1265
+
1266
+ .pds-chat-msg__name {
1267
+ font-size: var(--font-size-xs);
1268
+ font-weight: var(--font-weight-medium);
1269
+ color: var(--color-text-secondary);
1270
+ letter-spacing: var(--letter-snug);
1271
+ }
1272
+ .pds-chat-msg__time {
1273
+ font-size: 11px;
1274
+ color: var(--color-text-tertiary);
1275
+ font-family: var(--font-mono);
1276
+ }
1277
+
1278
+ /* ── Row: avatar slot + bubble column ───────────────── */
1279
+ .pds-chat-msg__row {
1280
+ display: flex;
1281
+ align-items: flex-end;
1282
+ gap: 8px;
1283
+ }
1284
+ .pds-chat-msg--sent .pds-chat-msg__row {
1285
+ flex-direction: row-reverse;
1286
+ }
1287
+
1288
+ /* fixed-width slot keeps bubbles aligned within their column */
1289
+ .pds-chat-msg__avatar-slot {
1290
+ width: 32px;
1291
+ flex: none;
1292
+ display: flex;
1293
+ align-items: flex-end;
1294
+ justify-content: center;
1295
+ }
1296
+
1297
+ .pds-chat-msg__bubble-col {
1298
+ display: flex;
1299
+ flex-direction: column;
1300
+ gap: 4px;
1301
+ min-width: 0;
1302
+ }
1303
+ .pds-chat-msg--sent .pds-chat-msg__bubble-col {
1304
+ align-items: flex-end;
1305
+ }
1306
+
1307
+ /* ── Bubble ──────────────────────────────────────────
1308
+ Elevation-only (no border), per the convention in
1309
+ Popover/DataTable/CommandPalette — --shadow-sm is
1310
+ already retuned per [data-tone], so the bubble reads
1311
+ correctly in vivid/pastel/soft without branching. */
1312
+ .pds-chat-bubble {
1313
+ padding: 9px 14px;
1314
+ font-size: var(--font-size-sm);
1315
+ line-height: 1.55;
1316
+ word-break: break-word;
1317
+ border-radius: var(--radius-xl);
1318
+ max-width: 100%;
1319
+ }
1320
+
1321
+ .pds-chat-bubble--received {
1322
+ background: var(--color-bg-primary);
1323
+ color: var(--color-text-primary);
1324
+ box-shadow: var(--shadow-sm);
1325
+ }
1326
+ /* Tail corner: flat top-left on solo/first */
1327
+ .pds-chat-bubble--received.pds-chat-bubble--solo,
1328
+ .pds-chat-bubble--received.pds-chat-bubble--first {
1329
+ border-top-left-radius: var(--radius-sm);
1330
+ }
1331
+ /* Mid run: both left corners flat */
1332
+ .pds-chat-bubble--received.pds-chat-bubble--middle {
1333
+ border-top-left-radius: var(--radius-sm);
1334
+ border-bottom-left-radius: var(--radius-sm);
1335
+ }
1336
+ /* Last in run: only top-left flat */
1337
+ .pds-chat-bubble--received.pds-chat-bubble--last {
1338
+ border-top-left-radius: var(--radius-sm);
1339
+ }
1340
+
1341
+ .pds-chat-bubble--sent {
1342
+ background: var(--color-bg-brand);
1343
+ color: var(--color-text-on-brand);
1344
+ box-shadow: var(--shadow-sm);
1345
+ }
1346
+ .pds-chat-bubble--sent.pds-chat-bubble--solo,
1347
+ .pds-chat-bubble--sent.pds-chat-bubble--first {
1348
+ border-top-right-radius: var(--radius-sm);
1349
+ }
1350
+ .pds-chat-bubble--sent.pds-chat-bubble--middle {
1351
+ border-top-right-radius: var(--radius-sm);
1352
+ border-bottom-right-radius: var(--radius-sm);
1353
+ }
1354
+ .pds-chat-bubble--sent.pds-chat-bubble--last {
1355
+ border-top-right-radius: var(--radius-sm);
1356
+ }
1357
+
1358
+ /* ── Reactions ──────────────────────────────────────── */
1359
+ .pds-chat-reactions {
1360
+ display: flex;
1361
+ gap: 4px;
1362
+ flex-wrap: wrap;
1363
+ }
1364
+ .pds-chat-reaction {
1365
+ display: inline-flex;
1366
+ align-items: center;
1367
+ gap: 3px;
1368
+ height: 24px;
1369
+ padding: 0 8px;
1370
+ background: var(--color-bg-primary);
1371
+ border: 0;
1372
+ border-radius: var(--radius-full);
1373
+ box-shadow: var(--shadow-sm);
1374
+ font-size: 13px;
1375
+ line-height: 1;
1376
+ font-family: inherit;
1377
+ cursor: pointer;
1378
+ transition:
1379
+ background var(--duration-fast) var(--ease-out),
1380
+ transform var(--duration-fast) var(--ease-out);
1381
+ }
1382
+ .pds-chat-reaction:hover {
1383
+ background: var(--color-bg-hover);
1384
+ transform: scale(1.08);
1385
+ }
1386
+ .pds-chat-reaction__count {
1387
+ font-size: 11px;
1388
+ font-weight: var(--font-weight-medium);
1389
+ color: var(--color-text-secondary);
1390
+ }
1391
+ .pds-chat-reaction--mine {
1392
+ background: var(--color-bg-brand-subtle);
1393
+ }
1394
+ .pds-chat-reaction--mine .pds-chat-reaction__count {
1395
+ color: var(--color-text-brand);
1396
+ }
1397
+
1398
+ /* ── Delivery status (sent only) ────────────────────── */
1399
+ .pds-chat-msg__status {
1400
+ display: flex;
1401
+ align-items: center;
1402
+ gap: 4px;
1403
+ color: var(--color-text-tertiary);
1404
+ margin-top: 2px;
1405
+ padding: 0 2px;
1406
+ }
1407
+ .pds-chat-msg__status--read {
1408
+ color: var(--color-bg-brand);
1409
+ }
1410
+ .pds-chat-msg__status-label {
1411
+ font-size: 11px;
1412
+ text-transform: capitalize;
1413
+ font-family: var(--font-mono);
1414
+ }
1415
+
1416
+ /* ── Date divider ───────────────────────────────────── */
1417
+ .pds-chat-divider {
1418
+ display: flex;
1419
+ align-items: center;
1420
+ gap: 12px;
1421
+ margin: 12px 0 4px;
1422
+ }
1423
+ .pds-chat-divider::before,
1424
+ .pds-chat-divider::after {
1425
+ content: "";
1426
+ flex: 1;
1427
+ height: 1px;
1428
+ background: var(--color-border-secondary);
1429
+ }
1430
+ .pds-chat-divider__label {
1431
+ font-size: 11px;
1432
+ font-family: var(--font-mono);
1433
+ color: var(--color-text-tertiary);
1434
+ white-space: nowrap;
1435
+ letter-spacing: var(--letter-wide);
1436
+ text-transform: uppercase;
1437
+ }
1438
+
1439
+ /* ── Compose bar ─────────────────────────────────────
1440
+ --color-bg-secondary equals --color-bg-page in soft
1441
+ tone (the gray page) and a light gray in vivid/pastel,
1442
+ so the white --color-bg-primary field floats above it
1443
+ in every tone without a [data-tone] branch. */
1444
+ .pds-chat-compose {
1445
+ display: flex;
1446
+ align-items: flex-end;
1447
+ gap: 8px;
1448
+ padding: 12px 16px 14px;
1449
+ background: var(--color-bg-secondary);
1450
+ border-top: 1px solid var(--color-border-tertiary);
1451
+ }
1452
+ .pds-chat-compose__avatar {
1453
+ flex: none;
1454
+ padding-bottom: 3px;
1455
+ }
1456
+
1457
+ /* pill input wrapper */
1458
+ .pds-chat-compose__field {
1459
+ flex: 1;
1460
+ display: flex;
1461
+ align-items: flex-end;
1462
+ gap: 2px;
1463
+ background: var(--color-bg-primary);
1464
+ border-radius: var(--ctrl-radius);
1465
+ box-shadow: var(--shadow-md);
1466
+ padding: 5px 6px 5px 14px;
1467
+ transition: box-shadow var(--duration-fast) var(--ease-out);
1468
+ }
1469
+ .pds-chat-compose__field:focus-within {
1470
+ box-shadow: var(--shadow-focus);
1471
+ }
1472
+
1473
+ /* textarea inside compose */
1474
+ .pds-chat-compose__textarea {
1475
+ flex: 1;
1476
+ border: 0;
1477
+ background: transparent;
1478
+ font-family: inherit;
1479
+ font-size: var(--font-size-sm);
1480
+ color: var(--color-text-primary);
1481
+ resize: none;
1482
+ outline: none;
1483
+ min-height: 24px;
1484
+ max-height: 120px;
1485
+ line-height: 1.5;
1486
+ padding: 5px 0;
1487
+ overflow-y: auto;
1488
+ }
1489
+ .pds-chat-compose__textarea::placeholder {
1490
+ color: var(--color-text-tertiary);
1491
+ }
1492
+
1493
+ /* icon buttons inside the pill */
1494
+ .pds-chat-compose__icon-btn {
1495
+ flex: none;
1496
+ display: flex;
1497
+ align-items: center;
1498
+ justify-content: center;
1499
+ width: 30px;
1500
+ height: 30px;
1501
+ padding: 0;
1502
+ border: 0;
1503
+ border-radius: var(--radius-full);
1504
+ background: transparent;
1505
+ color: var(--color-text-tertiary);
1506
+ cursor: pointer;
1507
+ transition:
1508
+ background var(--duration-fast) var(--ease-out),
1509
+ color var(--duration-fast) var(--ease-out);
1510
+ }
1511
+ .pds-chat-compose__icon-btn:hover {
1512
+ background: var(--color-bg-hover);
1513
+ color: var(--color-text-secondary);
1514
+ }
1515
+
1516
+ /* send button */
1517
+ .pds-chat-send {
1518
+ flex: none;
1519
+ width: 36px;
1520
+ height: 36px;
1521
+ padding: 0;
1522
+ border: 0;
1523
+ border-radius: var(--radius-full);
1524
+ background: var(--color-bg-brand);
1525
+ color: var(--color-text-on-brand);
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: center;
1529
+ cursor: pointer;
1530
+ opacity: 0.38;
1531
+ transition:
1532
+ background var(--duration-fast) var(--ease-out),
1533
+ transform var(--duration-fast) var(--ease-out),
1534
+ opacity var(--duration-fast) var(--ease-out),
1535
+ box-shadow var(--duration-fast) var(--ease-out);
1536
+ }
1537
+ .pds-chat-send--active {
1538
+ opacity: 1;
1539
+ box-shadow: var(--shadow-sm);
1540
+ }
1541
+ .pds-chat-send--active:hover {
1542
+ background: var(--color-bg-brand-hover);
1543
+ box-shadow: var(--shadow-md);
1544
+ transform: scale(1.07);
1545
+ }
1546
+ .pds-chat-send--active:active {
1547
+ box-shadow: var(--shadow-sm);
1548
+ transform: scale(0.93);
1549
+ }
1550
+ .pds-chat-send:disabled {
1551
+ cursor: not-allowed;
1552
+ }
1553
+
1554
+
1217
1555
  /* === components/Checkbox.css === */
1218
1556
  /* Checkbox */
1219
1557
  .pds-checkbox {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bubble-design-system/ui",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Bubble Design System — soft + teal floating-pill UI on Base UI, with token-driven theming and a single shipped stylesheet (no Tailwind required).",
5
5
  "keywords": [
6
6
  "react",