@godxjp/ui 20.2.1 → 21.0.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/components/data-display/chat-bubble.d.ts +30 -0
- package/dist/components/data-display/chat-bubble.js +229 -0
- package/dist/components/data-display/descriptions.js +4 -1
- package/dist/components/data-display/index.d.ts +4 -2
- package/dist/components/data-display/index.js +5 -2
- package/dist/components/data-display/popover.js +3 -2
- package/dist/components/data-display/scroll-area.js +26 -1
- package/dist/components/data-display/tree.d.ts +8 -0
- package/dist/components/data-display/tree.js +426 -0
- package/dist/components/data-entry/chat-composer.d.ts +50 -0
- package/dist/components/data-entry/chat-composer.js +163 -0
- package/dist/components/data-entry/chat-suggestion.d.ts +28 -0
- package/dist/components/data-entry/chat-suggestion.js +285 -0
- package/dist/components/data-entry/index.d.ts +4 -0
- package/dist/components/data-entry/index.js +4 -0
- package/dist/components/data-entry/textarea.js +3 -1
- package/dist/components/data-entry/tree-utils.d.ts +10 -48
- package/dist/components/data-entry/tree-utils.js +1 -154
- package/dist/i18n/messages/en.json +45 -0
- package/dist/i18n/messages/ja.json +43 -0
- package/dist/i18n/messages/vi.json +44 -0
- package/dist/lib/tree.d.ts +53 -0
- package/dist/lib/tree.js +155 -0
- package/dist/props/components/data-display.prop.d.ts +187 -1
- package/dist/props/components/data-entry.prop.d.ts +127 -0
- package/dist/props/registry.d.ts +140 -3
- package/dist/props/registry.js +202 -3
- package/dist/styles/control.css +7 -0
- package/dist/styles/data-display-layout.css +309 -55
- package/dist/styles/data-entry-layout.css +64 -0
- package/dist/styles/shell-layout.css +2 -1
- package/dist/tokens/base.css +3 -0
- package/dist/tokens/components/chat-bubble.css +36 -0
- package/dist/tokens/components/chat-composer.css +19 -0
- package/dist/tokens/components/data-display.css +0 -6
- package/dist/tokens/components/descriptions.css +4 -0
- package/dist/tokens/components/shell.css +1 -0
- package/dist/tokens/components/tree.css +27 -0
- package/docs/FRAME-COVERAGE-LEDGER.md +1 -1
- package/docs/FRAME-COVERAGE-REPORT.md +8 -3
- package/docs/data-display/chat-bubble.tsx +397 -0
- package/docs/data-display/timeline.tsx +46 -0
- package/docs/data-display/tree.tsx +394 -0
- package/docs/data-entry/chat-composer.tsx +464 -0
- package/docs/data-entry/chat-suggestion.tsx +301 -0
- package/docs/roadmap/ai-chat-components.md +207 -0
- package/docs/roadmap/antd-parity.md +154 -0
- package/docs/roadmap/badge-tag-chip-count.md +172 -0
- package/docs/roadmap/list-masonry.md +159 -0
- package/docs/roadmap/parity-audit-data-display-feedback.md +567 -0
- package/docs/roadmap/parity-audit-data-entry.md +344 -0
- package/docs/roadmap/parity-audit-layout-navigation-general.md +464 -0
- package/docs/roadmap/parity-backlog.md +79 -0
- package/docs/roadmap/tree-components.md +151 -0
- package/docs/showcase/table-tree-rows.tsx +4 -4
- package/package.json +5 -3
- package/dist/components/data-display/tree-list.d.ts +0 -13
- package/dist/components/data-display/tree-list.js +0 -26
- package/docs/data-display/tree-list.tsx +0 -107
|
@@ -251,61 +251,6 @@
|
|
|
251
251
|
background: hsl(var(--muted-foreground));
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
-
.ui-tree-list {
|
|
255
|
-
display: flex;
|
|
256
|
-
flex-direction: column;
|
|
257
|
-
gap: var(--space-1);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
.ui-tree-item {
|
|
261
|
-
display: flex;
|
|
262
|
-
min-height: 2.25rem;
|
|
263
|
-
align-items: center;
|
|
264
|
-
gap: var(--space-2);
|
|
265
|
-
padding-inline: var(--space-3);
|
|
266
|
-
border: 1px solid hsl(var(--border));
|
|
267
|
-
border-radius: var(--radius);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
.ui-tree-item[data-active="true"] {
|
|
271
|
-
border-color: var(--tree-item-active-border, hsl(var(--primary) / 0.3));
|
|
272
|
-
background: var(--tree-item-active-background, hsl(var(--primary) / 0.05));
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.ui-tree-item {
|
|
276
|
-
margin-inline-start: calc(var(--tree-item-depth, 0) * var(--tree-item-indent-width));
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.ui-tree-item > svg {
|
|
280
|
-
width: 1rem;
|
|
281
|
-
height: 1rem;
|
|
282
|
-
color: hsl(var(--primary));
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.ui-tree-item > svg:first-child {
|
|
286
|
-
width: 0.75rem;
|
|
287
|
-
height: 0.75rem;
|
|
288
|
-
color: hsl(var(--muted-foreground));
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.ui-tree-item-body {
|
|
292
|
-
min-width: 0;
|
|
293
|
-
flex: 1;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.ui-tree-item-title {
|
|
297
|
-
font-family: var(--font-family-mono);
|
|
298
|
-
font-size: var(--tree-item-title-font-size);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
.ui-tree-item-description {
|
|
302
|
-
overflow: hidden;
|
|
303
|
-
color: hsl(var(--muted-foreground));
|
|
304
|
-
font-size: var(--tree-item-description-font-size);
|
|
305
|
-
text-overflow: ellipsis;
|
|
306
|
-
white-space: nowrap;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
254
|
.ui-timeline {
|
|
310
255
|
display: flex;
|
|
311
256
|
flex-direction: column;
|
|
@@ -395,6 +340,10 @@
|
|
|
395
340
|
}
|
|
396
341
|
|
|
397
342
|
.ui-timeline-title {
|
|
343
|
+
|
|
344
|
+
min-inline-size: 0;
|
|
345
|
+
flex: 1 1 0%;
|
|
346
|
+
|
|
398
347
|
font-weight: var(--font-weight-medium);
|
|
399
348
|
}
|
|
400
349
|
|
|
@@ -795,6 +744,10 @@
|
|
|
795
744
|
|
|
796
745
|
@layer components {
|
|
797
746
|
|
|
747
|
+
[data-slot="scroll-area-viewport"][data-orientation="vertical"] > * {
|
|
748
|
+
display: block !important;
|
|
749
|
+
}
|
|
750
|
+
|
|
798
751
|
.ui-scroll-area-bar {
|
|
799
752
|
padding: var(--scroll-area-bar-padding);
|
|
800
753
|
}
|
|
@@ -1399,3 +1352,304 @@
|
|
|
1399
1352
|
font-size: var(--prose-code-font-size);
|
|
1400
1353
|
}
|
|
1401
1354
|
}
|
|
1355
|
+
|
|
1356
|
+
@layer components {
|
|
1357
|
+
|
|
1358
|
+
.ui-chat-bubble {
|
|
1359
|
+
display: flex;
|
|
1360
|
+
align-items: flex-start;
|
|
1361
|
+
gap: var(--chat-bubble-gap);
|
|
1362
|
+
min-inline-size: 0;
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1365
|
+
.ui-chat-bubble[data-placement="end"] {
|
|
1366
|
+
flex-direction: row-reverse;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
.ui-chat-bubble-avatar {
|
|
1370
|
+
display: inline-flex;
|
|
1371
|
+
flex: none;
|
|
1372
|
+
inline-size: var(--chat-bubble-avatar-size, var(--control-height));
|
|
1373
|
+
block-size: var(--chat-bubble-avatar-size, var(--control-height));
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
.ui-chat-bubble-avatar > .ui-avatar {
|
|
1377
|
+
inline-size: 100%;
|
|
1378
|
+
block-size: 100%;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
.ui-chat-bubble-column {
|
|
1382
|
+
display: flex;
|
|
1383
|
+
min-inline-size: 0;
|
|
1384
|
+
max-inline-size: min(var(--chat-bubble-max-inline-size), 100%);
|
|
1385
|
+
flex-direction: column;
|
|
1386
|
+
gap: var(--space-1);
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
.ui-chat-bubble[data-placement="end"] .ui-chat-bubble-column {
|
|
1390
|
+
align-items: flex-end;
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
.ui-chat-bubble-body {
|
|
1394
|
+
min-inline-size: 0;
|
|
1395
|
+
border-radius: var(--chat-bubble-radius);
|
|
1396
|
+
padding-block: var(--chat-bubble-padding-block);
|
|
1397
|
+
padding-inline: var(--chat-bubble-padding-inline);
|
|
1398
|
+
background: var(--chat-bubble-background, hsl(var(--muted)));
|
|
1399
|
+
color: var(--chat-bubble-foreground, hsl(var(--foreground)));
|
|
1400
|
+
|
|
1401
|
+
overflow-wrap: anywhere;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
.ui-chat-bubble[data-variant="outlined"] .ui-chat-bubble-body {
|
|
1405
|
+
border: var(--stroke-hairline) solid var(--chat-bubble-border-color, hsl(var(--border)));
|
|
1406
|
+
background: transparent;
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1409
|
+
.ui-chat-bubble[data-variant="borderless"] .ui-chat-bubble-body {
|
|
1410
|
+
background: transparent;
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
.ui-chat-bubble[data-variant="borderless"][data-tone="default"] .ui-chat-bubble-body {
|
|
1414
|
+
padding-inline: 0;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
.ui-chat-bubble[data-placement="end"][data-variant="filled"] .ui-chat-bubble-body {
|
|
1418
|
+
background: var(--chat-bubble-end-background, hsl(var(--primary) / 0.1));
|
|
1419
|
+
color: var(--chat-bubble-end-foreground, hsl(var(--foreground)));
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
.ui-chat-bubble[data-size="xs"] {
|
|
1423
|
+
--chat-bubble-padding-block: var(--space-1);
|
|
1424
|
+
--chat-bubble-padding-inline: var(--space-2);
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
.ui-chat-bubble[data-size="sm"] {
|
|
1428
|
+
--chat-bubble-padding-block: var(--space-1);
|
|
1429
|
+
--chat-bubble-padding-inline: var(--space-3);
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
.ui-chat-bubble[data-size="lg"] {
|
|
1433
|
+
--chat-bubble-padding-block: var(--space-3);
|
|
1434
|
+
--chat-bubble-padding-inline: var(--space-4);
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
.ui-chat-bubble[data-tone="info"] .ui-chat-bubble-body {
|
|
1438
|
+
border: var(--stroke-hairline) solid hsl(var(--info) / var(--chat-bubble-tone-border-alpha));
|
|
1439
|
+
background: hsl(var(--info) / var(--chat-bubble-tone-background-alpha));
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
.ui-chat-bubble[data-tone="success"] .ui-chat-bubble-body {
|
|
1443
|
+
border: var(--stroke-hairline) solid hsl(var(--success) / var(--chat-bubble-tone-border-alpha));
|
|
1444
|
+
background: hsl(var(--success) / var(--chat-bubble-tone-background-alpha));
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
.ui-chat-bubble[data-tone="warning"] .ui-chat-bubble-body {
|
|
1448
|
+
border: var(--stroke-hairline) solid hsl(var(--warning) / var(--chat-bubble-tone-border-alpha));
|
|
1449
|
+
background: hsl(var(--warning) / var(--chat-bubble-tone-background-alpha));
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
.ui-chat-bubble[data-tone="destructive"] .ui-chat-bubble-body {
|
|
1453
|
+
border: var(--stroke-hairline) solid
|
|
1454
|
+
hsl(var(--destructive) / var(--chat-bubble-tone-border-alpha));
|
|
1455
|
+
background: hsl(var(--destructive) / var(--chat-bubble-tone-background-alpha));
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
.ui-chat-bubble-caret {
|
|
1459
|
+
display: inline-block;
|
|
1460
|
+
inline-size: var(--chat-bubble-typing-caret-width);
|
|
1461
|
+
block-size: var(--chat-bubble-typing-caret-height);
|
|
1462
|
+
margin-inline-start: var(--space-1);
|
|
1463
|
+
background: var(--chat-bubble-typing-caret-color, hsl(var(--muted-foreground)));
|
|
1464
|
+
vertical-align: text-bottom;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
.ui-chat-bubble-skeleton {
|
|
1468
|
+
display: grid;
|
|
1469
|
+
gap: var(--skeleton-row-gap);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
.ui-chat-bubble-skeleton-line {
|
|
1473
|
+
block-size: var(--skeleton-block-height);
|
|
1474
|
+
inline-size: var(--chat-bubble-max-inline-size);
|
|
1475
|
+
max-inline-size: 100%;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
.ui-chat-bubble-skeleton-line--short {
|
|
1479
|
+
inline-size: var(--chat-bubble-skeleton-short-inline-size);
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
.ui-chat-bubble-list {
|
|
1483
|
+
position: relative;
|
|
1484
|
+
display: flex;
|
|
1485
|
+
min-block-size: 0;
|
|
1486
|
+
flex-direction: column;
|
|
1487
|
+
|
|
1488
|
+
block-size: 100%;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
.ui-chat-bubble-list-scroller {
|
|
1492
|
+
min-block-size: 0;
|
|
1493
|
+
flex: 1 1 auto;
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
.ui-chat-bubble-list-feed {
|
|
1497
|
+
display: flex;
|
|
1498
|
+
flex-direction: column;
|
|
1499
|
+
gap: var(--chat-bubble-list-gap);
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
.ui-chat-bubble-list-jump {
|
|
1503
|
+
position: absolute;
|
|
1504
|
+
display: flex;
|
|
1505
|
+
inset-inline: 0;
|
|
1506
|
+
inset-block-end: var(--chat-bubble-list-jump-inset);
|
|
1507
|
+
justify-content: center;
|
|
1508
|
+
pointer-events: none;
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
.ui-chat-bubble-list-jump > * {
|
|
1512
|
+
pointer-events: auto;
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
@layer components {
|
|
1517
|
+
.ui-tree {
|
|
1518
|
+
display: flex;
|
|
1519
|
+
flex-direction: column;
|
|
1520
|
+
font-size: var(--tree-node-font-size);
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
.ui-tree-node {
|
|
1524
|
+
display: flex;
|
|
1525
|
+
align-items: center;
|
|
1526
|
+
gap: var(--tree-node-gap);
|
|
1527
|
+
|
|
1528
|
+
min-block-size: var(--tree-node-height, var(--control-height));
|
|
1529
|
+
border-radius: var(--tree-node-radius);
|
|
1530
|
+
padding-inline: var(--tree-node-padding-inline);
|
|
1531
|
+
|
|
1532
|
+
padding-inline-start: calc(
|
|
1533
|
+
var(--tree-node-padding-inline) + var(--tree-node-level, 0) * var(--tree-indent-width)
|
|
1534
|
+
);
|
|
1535
|
+
cursor: pointer;
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
|
+
.ui-tree-node:hover {
|
|
1539
|
+
background: var(--tree-node-hover-background, hsl(var(--accent)));
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
.ui-tree-node[data-selected="true"] {
|
|
1543
|
+
background: var(--tree-node-selected-background, hsl(var(--accent)));
|
|
1544
|
+
color: var(--tree-node-selected-foreground, hsl(var(--accent-foreground)));
|
|
1545
|
+
font-weight: var(--font-weight-medium);
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
.ui-tree-node[data-disabled] {
|
|
1549
|
+
cursor: not-allowed;
|
|
1550
|
+
opacity: var(--disabled-opacity);
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
.ui-tree-switcher {
|
|
1554
|
+
display: inline-flex;
|
|
1555
|
+
flex: none;
|
|
1556
|
+
align-items: center;
|
|
1557
|
+
justify-content: center;
|
|
1558
|
+
inline-size: var(--tree-switcher-size);
|
|
1559
|
+
block-size: var(--tree-switcher-size);
|
|
1560
|
+
color: var(--tree-switcher-color, hsl(var(--muted-foreground)));
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
.ui-tree-switcher > svg {
|
|
1564
|
+
inline-size: var(--tree-icon-size);
|
|
1565
|
+
block-size: var(--tree-icon-size);
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
.ui-tree-switcher[data-leaf] {
|
|
1569
|
+
cursor: default;
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
.ui-tree-check {
|
|
1573
|
+
display: inline-flex;
|
|
1574
|
+
flex: none;
|
|
1575
|
+
align-items: center;
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1578
|
+
.ui-tree-icon {
|
|
1579
|
+
display: inline-flex;
|
|
1580
|
+
flex: none;
|
|
1581
|
+
align-items: center;
|
|
1582
|
+
color: hsl(var(--muted-foreground));
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
.ui-tree-icon > svg {
|
|
1586
|
+
inline-size: var(--tree-icon-size);
|
|
1587
|
+
block-size: var(--tree-icon-size);
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
.ui-tree-label {
|
|
1591
|
+
overflow: hidden;
|
|
1592
|
+
flex: 1;
|
|
1593
|
+
text-overflow: ellipsis;
|
|
1594
|
+
white-space: nowrap;
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
.ui-tree-group {
|
|
1598
|
+
display: flex;
|
|
1599
|
+
flex-direction: column;
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
.ui-tree[data-show-line="true"] .ui-tree-group {
|
|
1603
|
+
position: relative;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
.ui-tree[data-show-line="true"] .ui-tree-group::before {
|
|
1607
|
+
position: absolute;
|
|
1608
|
+
inset-block: 0;
|
|
1609
|
+
|
|
1610
|
+
inset-inline-start: calc(
|
|
1611
|
+
var(--tree-node-padding-inline) + (var(--tree-node-level, 1) - 1) * var(--tree-indent-width) +
|
|
1612
|
+
var(--tree-switcher-size) / 2
|
|
1613
|
+
);
|
|
1614
|
+
border-inline-start: 1px solid var(--tree-line-color, hsl(var(--border)));
|
|
1615
|
+
content: "";
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
.ui-tree-loading {
|
|
1619
|
+
display: flex;
|
|
1620
|
+
align-items: center;
|
|
1621
|
+
min-block-size: var(--tree-node-height, var(--control-height));
|
|
1622
|
+
padding-inline-start: calc(
|
|
1623
|
+
var(--tree-node-padding-inline) + var(--tree-node-level, 0) * var(--tree-indent-width) +
|
|
1624
|
+
var(--tree-switcher-size)
|
|
1625
|
+
);
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
.ui-tree-loading-bar {
|
|
1629
|
+
block-size: var(--tree-icon-size);
|
|
1630
|
+
inline-size: var(--tree-loading-bar-inline-size);
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
.ui-tree-empty {
|
|
1634
|
+
padding-block: var(--space-4);
|
|
1635
|
+
padding-inline: var(--tree-node-padding-inline);
|
|
1636
|
+
color: hsl(var(--muted-foreground));
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
.ui-tree[data-size="xs"] {
|
|
1640
|
+
--tree-node-height: var(--control-height-xs);
|
|
1641
|
+
--tree-node-font-size: var(--font-size-xs);
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
.ui-tree[data-size="sm"] {
|
|
1645
|
+
--tree-node-height: var(--control-height-sm);
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
.ui-tree[data-size="lg"] {
|
|
1649
|
+
--tree-node-height: var(--control-height-lg);
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
.ui-tree[data-variant="directory"] .ui-tree-node[data-selected="true"] {
|
|
1653
|
+
background: var(--tree-node-selected-background, hsl(var(--primary) / 0.12));
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
@@ -480,4 +480,68 @@
|
|
|
480
480
|
max-block-size: var(--branch-scope-picker-list-max-height);
|
|
481
481
|
overflow-y: auto;
|
|
482
482
|
}
|
|
483
|
+
|
|
484
|
+
.ui-chat-composer {
|
|
485
|
+
display: flex;
|
|
486
|
+
flex-direction: column;
|
|
487
|
+
gap: var(--chat-composer-gap);
|
|
488
|
+
inline-size: 100%;
|
|
489
|
+
padding-block: var(--chat-composer-padding-block);
|
|
490
|
+
padding-inline: var(--chat-composer-padding-inline);
|
|
491
|
+
border-width: var(--control-border-width);
|
|
492
|
+
border-style: solid;
|
|
493
|
+
border-radius: var(--chat-composer-radius, var(--control-radius));
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.ui-chat-composer[data-disabled] {
|
|
497
|
+
cursor: not-allowed;
|
|
498
|
+
opacity: var(--disabled-opacity);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.ui-chat-composer-header {
|
|
502
|
+
padding-block-end: var(--chat-composer-gap);
|
|
503
|
+
border-block-end: var(
|
|
504
|
+
--chat-composer-header-border,
|
|
505
|
+
var(--control-border-width) solid hsl(var(--border))
|
|
506
|
+
);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.ui-chat-composer-row {
|
|
510
|
+
display: flex;
|
|
511
|
+
align-items: flex-end;
|
|
512
|
+
gap: var(--chat-composer-row-gap);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.ui-chat-composer-prefix,
|
|
516
|
+
.ui-chat-composer-actions {
|
|
517
|
+
display: flex;
|
|
518
|
+
flex-shrink: 0;
|
|
519
|
+
align-items: center;
|
|
520
|
+
gap: var(--chat-composer-row-gap);
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.ui-chat-composer-field {
|
|
524
|
+
flex: 1 1 auto;
|
|
525
|
+
min-inline-size: 0;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.ui-chat-composer .ui-textarea-autogrow::after {
|
|
529
|
+
min-block-size: var(--chat-composer-min-height, var(--control-height));
|
|
530
|
+
max-block-size: var(--chat-composer-max-height, calc(var(--control-height) * 5));
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.ui-chat-composer-footer {
|
|
534
|
+
font-size: var(--chat-composer-footer-font-size);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
@layer components {
|
|
540
|
+
|
|
541
|
+
.ui-chat-suggestion-item-text {
|
|
542
|
+
display: flex;
|
|
543
|
+
flex-direction: column;
|
|
544
|
+
min-inline-size: 0;
|
|
545
|
+
text-align: start;
|
|
546
|
+
}
|
|
483
547
|
}
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"sidebar footer";
|
|
13
13
|
grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
|
|
14
14
|
grid-template-rows: var(--app-shell-bar-height) minmax(0, 1fr) auto;
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
height: calc(100vh - var(--app-shell-viewport-inset, 0px));
|
|
16
17
|
background: hsl(var(--background));
|
|
17
18
|
}
|
|
18
19
|
|
package/dist/tokens/base.css
CHANGED
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
@import "./components/data-display.css";
|
|
23
23
|
@import "./components/scroll-area.css";
|
|
24
24
|
@import "./components/list-row.css";
|
|
25
|
+
@import "./components/chat-bubble.css";
|
|
25
26
|
@import "./components/logo.css";
|
|
26
27
|
@import "./components/email.css";
|
|
27
28
|
@import "./components/data-entry.css";
|
|
29
|
+
@import "./components/chat-composer.css";
|
|
28
30
|
@import "./components/upload.css";
|
|
29
31
|
@import "./components/shell.css";
|
|
30
32
|
@import "./components/separator.css";
|
|
@@ -33,3 +35,4 @@
|
|
|
33
35
|
@import "./components/error-surface.css";
|
|
34
36
|
@import "./components/activity.css";
|
|
35
37
|
@import "./components/text.css";
|
|
38
|
+
@import "./components/tree.css";
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
:root {
|
|
3
|
+
|
|
4
|
+
--chat-bubble-background: initial;
|
|
5
|
+
|
|
6
|
+
--chat-bubble-foreground: initial;
|
|
7
|
+
|
|
8
|
+
--chat-bubble-border-color: initial;
|
|
9
|
+
--chat-bubble-radius: var(--radius-lg);
|
|
10
|
+
|
|
11
|
+
--chat-bubble-gap: var(--space-3);
|
|
12
|
+
|
|
13
|
+
--chat-bubble-max-inline-size: 34rem;
|
|
14
|
+
|
|
15
|
+
--chat-bubble-avatar-size: initial;
|
|
16
|
+
|
|
17
|
+
--chat-bubble-padding-block: var(--space-2);
|
|
18
|
+
--chat-bubble-padding-inline: var(--space-3);
|
|
19
|
+
|
|
20
|
+
--chat-bubble-list-gap: var(--space-4);
|
|
21
|
+
|
|
22
|
+
--chat-bubble-list-jump-inset: var(--space-3);
|
|
23
|
+
|
|
24
|
+
--chat-bubble-typing-caret-color: initial;
|
|
25
|
+
--chat-bubble-typing-caret-width: var(--stroke-md);
|
|
26
|
+
|
|
27
|
+
--chat-bubble-typing-caret-height: 1em;
|
|
28
|
+
|
|
29
|
+
--chat-bubble-skeleton-short-inline-size: 60%;
|
|
30
|
+
|
|
31
|
+
--chat-bubble-tone-background-alpha: 0.08;
|
|
32
|
+
--chat-bubble-tone-border-alpha: 0.35;
|
|
33
|
+
|
|
34
|
+
--chat-bubble-end-background: initial;
|
|
35
|
+
--chat-bubble-end-foreground: initial;
|
|
36
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
:root {
|
|
3
|
+
|
|
4
|
+
--chat-composer-min-height: initial;
|
|
5
|
+
--chat-composer-max-height: initial;
|
|
6
|
+
|
|
7
|
+
--chat-composer-gap: var(--space-2);
|
|
8
|
+
|
|
9
|
+
--chat-composer-padding-block: var(--space-2);
|
|
10
|
+
--chat-composer-padding-inline: var(--space-2);
|
|
11
|
+
|
|
12
|
+
--chat-composer-row-gap: var(--space-2);
|
|
13
|
+
|
|
14
|
+
--chat-composer-radius: initial;
|
|
15
|
+
|
|
16
|
+
--chat-composer-header-border: initial;
|
|
17
|
+
|
|
18
|
+
--chat-composer-footer-font-size: var(--font-size-xs);
|
|
19
|
+
}
|
|
@@ -31,9 +31,6 @@
|
|
|
31
31
|
--prose-code-space-inline: var(--space-1);
|
|
32
32
|
--prose-code-radius: var(--radius-sm);
|
|
33
33
|
--prose-image-radius: var(--radius-md);
|
|
34
|
-
--tree-item-indent-width: var(--space-5);
|
|
35
|
-
--tree-item-title-font-size: var(--font-size-xs);
|
|
36
|
-
--tree-item-description-font-size: var(--font-size-xs);
|
|
37
34
|
--timeline-note-font-size: var(--font-size-xs);
|
|
38
35
|
|
|
39
36
|
--avatar-background: initial;
|
|
@@ -80,9 +77,6 @@
|
|
|
80
77
|
--timeline-dot-current-background: initial;
|
|
81
78
|
--timeline-line-completed-background: initial;
|
|
82
79
|
|
|
83
|
-
--tree-item-active-border: initial;
|
|
84
|
-
--tree-item-active-background: initial;
|
|
85
|
-
|
|
86
80
|
--qr-code-foreground: 0 0% 0%;
|
|
87
81
|
--qr-code-background: 0 0% 100%;
|
|
88
82
|
--qr-code-size-xs: 6rem;
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
--descriptions-value-line-height: calc(1.25 / 0.875);
|
|
16
16
|
|
|
17
|
+
--descriptions-label-font-size: var(--descriptions-value-font-size);
|
|
18
|
+
|
|
19
|
+
--descriptions-label-line-height: var(--descriptions-value-line-height);
|
|
20
|
+
|
|
17
21
|
--descriptions-row-border: none;
|
|
18
22
|
--descriptions-row-min-height: auto;
|
|
19
23
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
|
|
5
|
+
--tree-node-height: initial;
|
|
6
|
+
|
|
7
|
+
--tree-indent-width: var(--space-5);
|
|
8
|
+
|
|
9
|
+
--tree-node-padding-inline: var(--space-2);
|
|
10
|
+
--tree-node-gap: var(--space-2);
|
|
11
|
+
--tree-node-radius: var(--radius-sm);
|
|
12
|
+
--tree-node-font-size: var(--font-size-sm);
|
|
13
|
+
|
|
14
|
+
--tree-switcher-size: 1.25rem;
|
|
15
|
+
|
|
16
|
+
--tree-switcher-color: initial;
|
|
17
|
+
|
|
18
|
+
--tree-icon-size: var(--icon-size-md);
|
|
19
|
+
|
|
20
|
+
--tree-line-color: initial;
|
|
21
|
+
|
|
22
|
+
--tree-node-hover-background: initial;
|
|
23
|
+
--tree-node-selected-background: initial;
|
|
24
|
+
--tree-node-selected-foreground: initial;
|
|
25
|
+
|
|
26
|
+
--tree-loading-bar-inline-size: 40%;
|
|
27
|
+
}
|
|
@@ -112,7 +112,7 @@ The executed geometry sweep (`pnpm check:frame-geometry`, `scripts/frame-geometr
|
|
|
112
112
|
|
|
113
113
|
## Known gaps
|
|
114
114
|
|
|
115
|
-
The issue's "Initial known gaps to encode" are locked in code (`KNOWN_GAPS` in `scripts/frame-coverage-contract.mjs`) and mirrored into `policy.knownGaps`: Button, Card, Card subcomponents, EmptyState, Progress, Carousel, DataTable, Charts and the Timeline/
|
|
115
|
+
The issue's "Initial known gaps to encode" are locked in code (`KNOWN_GAPS` in `scripts/frame-coverage-contract.mjs`) and mirrored into `policy.knownGaps`: Button, Card, Card subcomponents, EmptyState, Progress, Carousel, DataTable, Charts and the Timeline/PasswordStrength locale stress. They cannot be deleted, and they cannot be waived through `policy.notApplicable` — they must be **covered** or stay **UNTESTED**.
|
|
116
116
|
|
|
117
117
|
## Current state — read this before quoting coverage
|
|
118
118
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> Generated by `scripts/frame-coverage.mjs` (issue #163). Do not edit by hand — run `pnpm check:frame-coverage`.
|
|
4
4
|
> Standard: [FRAME-COVERAGE-STANDARD.md](./FRAME-COVERAGE-STANDARD.md). A missing dimension is **UNTESTED**, never a pass.
|
|
5
5
|
|
|
6
|
-
- Public components: **
|
|
7
|
-
- With ≥1 frame: **
|
|
6
|
+
- Public components: **141**
|
|
7
|
+
- With ≥1 frame: **136** · zero-frame: **5**
|
|
8
8
|
- Fully covered (every contract axis declared): **0**
|
|
9
9
|
|
|
10
10
|
## UNTESTED — no `/frame/**` route
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- [ ] `CardBar`
|
|
14
14
|
- [ ] `VisuallyHidden`
|
|
15
15
|
- [ ] `RangeTimeline`
|
|
16
|
+
- [ ] `ChatBubbleList`
|
|
16
17
|
|
|
17
18
|
## Per-component contract axes
|
|
18
19
|
|
|
@@ -113,7 +114,7 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
|
|
|
113
114
|
| Popover | ✓ | N/A | N/A | · | · | · | · | · | · | · |
|
|
114
115
|
| ScrollArea | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
|
|
115
116
|
| Collapsible | ✓ | N/A | · | · | · | · | · | · | · | · |
|
|
116
|
-
|
|
|
117
|
+
| Tree | ✓ | · | · | · | · | · | · | · | · | · |
|
|
117
118
|
| Tooltip | ✓ | N/A | N/A | · | · | · | · | · | · | · |
|
|
118
119
|
| PrefetchLink | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
|
|
119
120
|
| Avatar | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
|
|
@@ -157,4 +158,8 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
|
|
|
157
158
|
| PermissionMatrix | ✓ | N/A | · | N/A | · | · | · | · | · | · |
|
|
158
159
|
| BranchScopePicker | ✓ | N/A | · | · | · | · | · | · | · | · |
|
|
159
160
|
| ServiceRolePanel | ✓ | N/A | · | · | · | · | · | · | · | · |
|
|
161
|
+
| ChatBubble | ✓ | · | · | N/A | · | · | · | · | · | · |
|
|
162
|
+
| ChatBubbleList | **✗** | N/A | N/A | N/A | · | · | · | · | · | · |
|
|
163
|
+
| ChatComposer | ✓ | · | · | · | · | · | · | · | · | · |
|
|
164
|
+
| ChatSuggestion | ✓ | N/A | N/A | · | · | · | · | · | · | · |
|
|
160
165
|
|