@yuva-devlab/ui 2.0.0 → 2.1.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.
Files changed (69) hide show
  1. package/dist/common.css +0 -40
  2. package/dist/components/badge/badge.css +31 -27
  3. package/dist/components/badge/badge.mdx +6 -4
  4. package/dist/components/chain-of-thought/chain-of-thought.css +72 -0
  5. package/dist/components/chain-of-thought/chain-of-thought.mdx +18 -0
  6. package/dist/components/checkpoint/checkpoint.css +54 -0
  7. package/dist/components/checkpoint/checkpoint.mdx +18 -0
  8. package/dist/components/code-block/code-block.css +84 -0
  9. package/dist/components/code-block/code-block.mdx +26 -0
  10. package/dist/components/confirmation/confirmation.css +75 -0
  11. package/dist/components/confirmation/confirmation.mdx +22 -0
  12. package/dist/components/context/context.css +80 -0
  13. package/dist/components/context/context.mdx +18 -0
  14. package/dist/components/data-table/data-table.css +71 -0
  15. package/dist/components/data-table/data-table.mdx +22 -0
  16. package/dist/components/file-tree/file-tree.css +58 -0
  17. package/dist/components/file-tree/file-tree.mdx +18 -0
  18. package/dist/components/input-number/input-number.css +95 -0
  19. package/dist/components/input-number/input-number.mdx +34 -0
  20. package/dist/components/kbd/kbd.css +78 -0
  21. package/dist/components/kbd/kbd.mdx +30 -0
  22. package/dist/components/message/message.css +89 -0
  23. package/dist/components/message/message.mdx +14 -0
  24. package/dist/components/model-selector/model-selector.css +138 -0
  25. package/dist/components/model-selector/model-selector.mdx +26 -0
  26. package/dist/components/multi-select/multi-select.css +212 -0
  27. package/dist/components/multi-select/multi-select.mdx +30 -0
  28. package/dist/components/password-input/password-input.css +21 -0
  29. package/dist/components/password-input/password-input.mdx +30 -0
  30. package/dist/components/plan/plan.css +106 -0
  31. package/dist/components/plan/plan.mdx +22 -0
  32. package/dist/components/popover/popover.css +0 -5
  33. package/dist/components/prompt-input/prompt-input.css +140 -0
  34. package/dist/components/prompt-input/prompt-input.mdx +22 -0
  35. package/dist/components/queue/queue.css +76 -0
  36. package/dist/components/queue/queue.mdx +18 -0
  37. package/dist/components/search-input/search-input.css +21 -0
  38. package/dist/components/search-input/search-input.mdx +30 -0
  39. package/dist/components/select/select.css +1 -1
  40. package/dist/components/sonner/sonner.css +68 -17
  41. package/dist/components/sonner/sonner.mdx +5 -3
  42. package/dist/components/sources/sources.css +105 -0
  43. package/dist/components/sources/sources.mdx +18 -0
  44. package/dist/components/stack-trace/stack-trace.css +105 -0
  45. package/dist/components/stack-trace/stack-trace.mdx +18 -0
  46. package/dist/components/subagent/subagent.css +70 -0
  47. package/dist/components/subagent/subagent.mdx +18 -0
  48. package/dist/components/suggestion/suggestion.css +52 -0
  49. package/dist/components/suggestion/suggestion.mdx +14 -0
  50. package/dist/components/terminal/terminal.css +60 -0
  51. package/dist/components/terminal/terminal.mdx +26 -0
  52. package/dist/components/test-results/test-results.css +108 -0
  53. package/dist/components/test-results/test-results.mdx +18 -0
  54. package/dist/components/tool-call/tool-call.css +111 -0
  55. package/dist/components/tool-call/tool-call.mdx +22 -0
  56. package/dist/components/trace/trace.css +100 -0
  57. package/dist/components/trace/trace.mdx +18 -0
  58. package/dist/components.css +2582 -299
  59. package/dist/index.cjs +3539 -818
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +1041 -8
  62. package/dist/index.d.ts +1041 -8
  63. package/dist/index.js +3570 -864
  64. package/dist/index.js.map +1 -1
  65. package/dist/preset.css +0 -1
  66. package/dist/styles/common.css +0 -40
  67. package/dist/styles/components.css +2582 -299
  68. package/dist/styles/preset.css +0 -1
  69. package/package.json +1 -1
@@ -278,40 +278,44 @@
278
278
  border-color: var(--border);
279
279
  }
280
280
 
281
- .dl-status-badge {
281
+ .dl-badge-wrapper {
282
+ position: relative;
283
+ display: inline-flex;
284
+ vertical-align: middle;
285
+ flex-shrink: 0;
286
+ }
287
+
288
+ .dl-badge-count {
289
+ position: absolute;
290
+ top: 0;
291
+ right: 0;
292
+ transform: translate(50%, -50%);
293
+ transform-origin: 100% 0%;
294
+ z-index: 10;
282
295
  display: inline-flex;
283
296
  align-items: center;
284
- gap: 0.375rem;
297
+ justify-content: center;
298
+ min-width: 1.25rem;
299
+ height: 1.25rem;
300
+ padding: 0 0.375rem;
285
301
  border-radius: 9999px;
286
- padding: 0.25rem 0.625rem;
287
- font-size: 0.75rem;
288
- font-weight: 500;
302
+ background-color: var(--destructive);
303
+ color: var(--destructive-foreground);
304
+ font-size: 0.6875rem;
305
+ font-weight: 600;
306
+ line-height: 1;
307
+ white-space: nowrap;
308
+ box-shadow: 0 0 0 2px var(--background);
289
309
  }
290
- .dl-status-badge__dot {
310
+
311
+ .dl-badge-dot {
312
+ min-width: 0.5rem;
291
313
  width: 0.5rem;
292
314
  height: 0.5rem;
315
+ padding: 0;
293
316
  border-radius: 9999px;
294
- flex-shrink: 0;
295
- }
296
- .dl-status-badge--success {
297
- background-color: color-mix(in oklch, var(--success) 15%, transparent);
298
- color: var(--success);
299
- }
300
- .dl-status-badge--destructive {
301
- background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
302
- color: var(--destructive);
303
- }
304
- .dl-status-badge--warning {
305
- background-color: color-mix(in oklch, var(--warning) 15%, transparent);
306
- color: var(--warning);
307
- }
308
- .dl-status-badge--info {
309
- background-color: color-mix(in oklch, var(--info) 15%, transparent);
310
- color: var(--info);
311
- }
312
- .dl-status-badge--muted {
313
- background-color: var(--muted);
314
- color: var(--muted-foreground);
317
+ background-color: var(--destructive);
318
+ box-shadow: 0 0 0 2px var(--background);
315
319
  }
316
320
 
317
321
  /* ── breadcrumb/breadcrumb.css ── */
@@ -886,6 +890,80 @@
886
890
  transform: translateX(-50%) rotate(90deg);
887
891
  }
888
892
 
893
+ /* ── chain-of-thought/chain-of-thought.css ── */
894
+ .dl-cot {
895
+ display: flex;
896
+ flex-direction: column;
897
+ width: 100%;
898
+ border-radius: var(--radius-md, 0.375rem);
899
+ border: 1px solid var(--border);
900
+ background-color: var(--secondary, var(--card));
901
+ font-size: 0.8125rem;
902
+ overflow: hidden;
903
+ transition: border-color 0.15s ease;
904
+ }
905
+
906
+ .dl-cot:hover {
907
+ border-color: color-mix(in oklch, var(--primary) 30%, var(--border));
908
+ }
909
+
910
+ .dl-cot__header {
911
+ display: flex;
912
+ align-items: center;
913
+ justify-content: space-between;
914
+ width: 100%;
915
+ padding: 0.5rem 0.75rem;
916
+ background: transparent;
917
+ border: none;
918
+ cursor: pointer;
919
+ text-align: left;
920
+ font: inherit;
921
+ color: var(--foreground);
922
+ }
923
+
924
+ .dl-cot__summary {
925
+ display: flex;
926
+ align-items: center;
927
+ gap: 0.5rem;
928
+ font-weight: 500;
929
+ }
930
+
931
+ .dl-cot__chevron {
932
+ width: 0.875rem;
933
+ height: 0.875rem;
934
+ color: var(--muted-foreground);
935
+ transition: transform 0.2s ease;
936
+ }
937
+
938
+ .dl-cot[data-state="open"] .dl-cot__chevron {
939
+ transform: rotate(180deg);
940
+ }
941
+
942
+ .dl-cot__content {
943
+ display: flex;
944
+ flex-direction: column;
945
+ gap: 0.375rem;
946
+ padding: 0.5rem 0.75rem 0.75rem;
947
+ border-top: 1px solid var(--border);
948
+ background-color: var(--background);
949
+ }
950
+
951
+ .dl-cot__step {
952
+ display: flex;
953
+ align-items: center;
954
+ gap: 0.5rem;
955
+ font-size: 0.75rem;
956
+ color: var(--muted-foreground);
957
+ }
958
+
959
+ .dl-cot__step--running {
960
+ color: var(--foreground);
961
+ }
962
+
963
+ .dl-cot__step--error {
964
+ color: var(--destructive);
965
+ }
966
+
889
967
  /* ── chart/chart.css ── */
890
968
  .dl-chart-container {
891
969
  display: flex;
@@ -1052,6 +1130,148 @@
1052
1130
  height: 0.75rem;
1053
1131
  }
1054
1132
 
1133
+ /* ── checkpoint/checkpoint.css ── */
1134
+ .dl-checkpoint {
1135
+ position: relative;
1136
+ display: flex;
1137
+ align-items: center;
1138
+ justify-content: center;
1139
+ width: 100%;
1140
+ margin: 1.25rem 0;
1141
+ }
1142
+
1143
+ .dl-checkpoint::before {
1144
+ content: "";
1145
+ position: absolute;
1146
+ left: 0;
1147
+ right: 0;
1148
+ top: 50%;
1149
+ height: 1px;
1150
+ background-color: var(--border);
1151
+ z-index: 1;
1152
+ }
1153
+
1154
+ .dl-checkpoint__content {
1155
+ position: relative;
1156
+ z-index: 2;
1157
+ display: inline-flex;
1158
+ align-items: center;
1159
+ gap: 0.5rem;
1160
+ padding: 0.25rem 0.75rem;
1161
+ border-radius: 9999px;
1162
+ background-color: var(--background);
1163
+ border: 1px solid var(--border);
1164
+ font-size: 0.75rem;
1165
+ color: var(--muted-foreground);
1166
+ box-shadow: 0 1px 2px rgb(0 0 0 / 0.05);
1167
+ }
1168
+
1169
+ .dl-checkpoint__restore-btn {
1170
+ display: inline-flex;
1171
+ align-items: center;
1172
+ gap: 0.25rem;
1173
+ background: transparent;
1174
+ border: none;
1175
+ font: inherit;
1176
+ font-weight: 500;
1177
+ font-size: 0.6875rem;
1178
+ color: var(--primary);
1179
+ cursor: pointer;
1180
+ padding: 0.125rem 0.375rem;
1181
+ border-radius: var(--radius-sm, 0.25rem);
1182
+ transition: all 0.15s ease;
1183
+ }
1184
+
1185
+ .dl-checkpoint__restore-btn:hover {
1186
+ background-color: color-mix(in oklch, var(--primary) 10%, transparent);
1187
+ }
1188
+
1189
+ /* ── code-block/code-block.css ── */
1190
+ .dl-code-block {
1191
+ position: relative;
1192
+ display: flex;
1193
+ flex-direction: column;
1194
+ width: 100%;
1195
+ border-radius: var(--radius-md, 0.375rem);
1196
+ border: 1px solid var(--border);
1197
+ background-color: var(--secondary, #0d1117);
1198
+ color: var(--foreground);
1199
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
1200
+ font-size: 0.8125rem;
1201
+ overflow: hidden;
1202
+ }
1203
+
1204
+ .dl-code-block__header {
1205
+ display: flex;
1206
+ align-items: center;
1207
+ justify-content: space-between;
1208
+ padding: 0.375rem 0.75rem;
1209
+ border-bottom: 1px solid var(--border);
1210
+ background-color: var(--background);
1211
+ font-size: 0.75rem;
1212
+ color: var(--muted-foreground);
1213
+ }
1214
+
1215
+ .dl-code-block__filename {
1216
+ font-weight: 500;
1217
+ color: var(--foreground);
1218
+ }
1219
+
1220
+ .dl-code-block__language {
1221
+ text-transform: uppercase;
1222
+ font-size: 0.6875rem;
1223
+ letter-spacing: 0.05em;
1224
+ opacity: 0.8;
1225
+ }
1226
+
1227
+ .dl-code-block__copy-btn {
1228
+ display: inline-flex;
1229
+ align-items: center;
1230
+ justify-content: center;
1231
+ width: 1.625rem;
1232
+ height: 1.625rem;
1233
+ border-radius: var(--radius-sm, 0.25rem);
1234
+ border: 1px solid transparent;
1235
+ background: transparent;
1236
+ color: var(--muted-foreground);
1237
+ cursor: pointer;
1238
+ transition: all 0.15s ease;
1239
+ }
1240
+
1241
+ .dl-code-block__copy-btn:hover {
1242
+ background-color: var(--accent);
1243
+ color: var(--foreground);
1244
+ border-color: var(--border);
1245
+ }
1246
+
1247
+ .dl-code-block__content {
1248
+ margin: 0;
1249
+ padding: 0.75rem 1rem;
1250
+ overflow-x: auto;
1251
+ line-height: 1.5;
1252
+ tab-size: 2;
1253
+ }
1254
+
1255
+ .dl-code-block__content--wrap {
1256
+ white-space: pre-wrap;
1257
+ word-break: break-all;
1258
+ }
1259
+
1260
+ .dl-code-block__line {
1261
+ display: flex;
1262
+ min-height: 1.25rem;
1263
+ }
1264
+
1265
+ .dl-code-block__line-num {
1266
+ display: inline-block;
1267
+ width: 2rem;
1268
+ padding-right: 0.75rem;
1269
+ text-align: right;
1270
+ color: var(--muted-foreground);
1271
+ opacity: 0.5;
1272
+ user-select: none;
1273
+ }
1274
+
1055
1275
  /* ── command/command.css ── */
1056
1276
  .dl-command {
1057
1277
  display: flex;
@@ -1179,40 +1399,199 @@
1179
1399
  color: var(--muted-foreground);
1180
1400
  }
1181
1401
 
1182
- /* ── context-menu/context-menu.css ── */
1183
- .dl-context-menu-content {
1184
- z-index: 50;
1185
- min-width: 8rem;
1186
- overflow: hidden;
1402
+ /* ── confirmation/confirmation.css ── */
1403
+ .dl-confirmation {
1404
+ display: flex;
1405
+ align-items: center;
1406
+ justify-content: space-between;
1407
+ gap: 1rem;
1408
+ width: 100%;
1187
1409
  border-radius: var(--radius-md, 0.375rem);
1410
+ padding: 0.75rem 1rem;
1188
1411
  border: 1px solid var(--border);
1189
- background-color: var(--popover);
1190
- color: var(--popover-foreground);
1191
- padding: 0.25rem;
1192
- box-shadow: 0 4px 24px rgb(0 0 0 / 0.12);
1412
+ background-color: var(--card, var(--background));
1413
+ color: var(--card-foreground, var(--foreground));
1414
+ font-size: 0.875rem;
1193
1415
  }
1194
1416
 
1195
- .dl-context-menu-content[data-state="open"] {
1196
- animation: dl-fade-in 100ms ease;
1417
+ .dl-confirmation--sm {
1418
+ padding: 0.5rem 0.75rem;
1419
+ font-size: 0.8125rem;
1197
1420
  }
1198
1421
 
1199
- .dl-context-menu-content[data-state="closed"] {
1200
- animation: dl-fade-out 100ms ease;
1422
+ .dl-confirmation--destructive {
1423
+ border-color: color-mix(in oklch, var(--destructive) 40%, transparent);
1424
+ background-color: color-mix(in oklch, var(--destructive) 5%, transparent);
1201
1425
  }
1202
1426
 
1203
- /* ── copy-button/copy-button.css ── */
1204
- .dl-copy-button {
1427
+ .dl-confirmation__body {
1428
+ display: flex;
1429
+ align-items: center;
1430
+ gap: 0.75rem;
1431
+ flex: 1;
1432
+ min-width: 0;
1433
+ }
1434
+
1435
+ .dl-confirmation__media {
1205
1436
  display: inline-flex;
1206
1437
  align-items: center;
1207
1438
  justify-content: center;
1208
- gap: 0.375rem;
1209
- font-size: 0.75rem;
1210
- font-weight: 500;
1211
- border-radius: var(--radius, 0.375rem);
1212
- border: 1px solid var(--border);
1213
- background: var(--card);
1214
- color: var(--foreground);
1215
- padding: 0.25rem 0.625rem;
1439
+ width: 2rem;
1440
+ height: 2rem;
1441
+ border-radius: var(--radius-sm, 0.25rem);
1442
+ background-color: var(--secondary);
1443
+ color: var(--secondary-foreground);
1444
+ flex-shrink: 0;
1445
+ }
1446
+
1447
+ .dl-confirmation--destructive .dl-confirmation__media {
1448
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
1449
+ color: var(--destructive);
1450
+ }
1451
+
1452
+ .dl-confirmation__content {
1453
+ display: flex;
1454
+ flex-direction: column;
1455
+ gap: 0.125rem;
1456
+ min-width: 0;
1457
+ }
1458
+
1459
+ .dl-confirmation__title {
1460
+ font-size: 0.875rem;
1461
+ font-weight: 500;
1462
+ line-height: 1.25;
1463
+ color: var(--foreground);
1464
+ }
1465
+
1466
+ .dl-confirmation__description {
1467
+ font-size: 0.75rem;
1468
+ color: var(--muted-foreground);
1469
+ line-height: 1.35;
1470
+ }
1471
+
1472
+ .dl-confirmation__actions {
1473
+ display: flex;
1474
+ align-items: center;
1475
+ gap: 0.5rem;
1476
+ flex-shrink: 0;
1477
+ }
1478
+
1479
+ /* ── context/context.css ── */
1480
+ .dl-context-usage {
1481
+ display: flex;
1482
+ flex-direction: column;
1483
+ gap: 0.5rem;
1484
+ width: 100%;
1485
+ padding: 0.75rem;
1486
+ border-radius: var(--radius-md, 0.375rem);
1487
+ border: 1px solid var(--border);
1488
+ background-color: var(--card, var(--background));
1489
+ font-size: 0.8125rem;
1490
+ }
1491
+
1492
+ .dl-context-usage--sm {
1493
+ padding: 0.5rem;
1494
+ font-size: 0.75rem;
1495
+ }
1496
+
1497
+ .dl-context-usage__header {
1498
+ display: flex;
1499
+ align-items: center;
1500
+ justify-content: space-between;
1501
+ gap: 0.5rem;
1502
+ }
1503
+
1504
+ .dl-context-usage__title {
1505
+ display: flex;
1506
+ align-items: center;
1507
+ gap: 0.375rem;
1508
+ font-weight: 600;
1509
+ color: var(--foreground);
1510
+ }
1511
+
1512
+ .dl-context-usage__fraction {
1513
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
1514
+ font-size: 0.75rem;
1515
+ color: var(--muted-foreground);
1516
+ }
1517
+
1518
+ .dl-context-usage__bar-bg {
1519
+ position: relative;
1520
+ width: 100%;
1521
+ height: 0.375rem;
1522
+ border-radius: 9999px;
1523
+ background-color: var(--muted);
1524
+ overflow: hidden;
1525
+ }
1526
+
1527
+ .dl-context-usage__bar-fill {
1528
+ height: 100%;
1529
+ border-radius: 9999px;
1530
+ transition: width 0.3s ease;
1531
+ background-color: var(--primary);
1532
+ }
1533
+
1534
+ .dl-context-usage__bar-fill--warning {
1535
+ background-color: var(--warning);
1536
+ }
1537
+
1538
+ .dl-context-usage__bar-fill--danger {
1539
+ background-color: var(--destructive);
1540
+ }
1541
+
1542
+ .dl-context-usage__breakdown {
1543
+ display: flex;
1544
+ align-items: center;
1545
+ gap: 0.5rem;
1546
+ flex-wrap: wrap;
1547
+ font-size: 0.6875rem;
1548
+ color: var(--muted-foreground);
1549
+ margin-top: 0.25rem;
1550
+ }
1551
+
1552
+ .dl-context-usage__pill {
1553
+ display: inline-flex;
1554
+ align-items: center;
1555
+ gap: 0.25rem;
1556
+ padding: 0.125rem 0.375rem;
1557
+ border-radius: var(--radius-sm, 0.25rem);
1558
+ background-color: var(--muted);
1559
+ }
1560
+
1561
+ /* ── context-menu/context-menu.css ── */
1562
+ .dl-context-menu-content {
1563
+ z-index: 50;
1564
+ min-width: 8rem;
1565
+ overflow: hidden;
1566
+ border-radius: var(--radius-md, 0.375rem);
1567
+ border: 1px solid var(--border);
1568
+ background-color: var(--popover);
1569
+ color: var(--popover-foreground);
1570
+ padding: 0.25rem;
1571
+ box-shadow: 0 4px 24px rgb(0 0 0 / 0.12);
1572
+ }
1573
+
1574
+ .dl-context-menu-content[data-state="open"] {
1575
+ animation: dl-fade-in 100ms ease;
1576
+ }
1577
+
1578
+ .dl-context-menu-content[data-state="closed"] {
1579
+ animation: dl-fade-out 100ms ease;
1580
+ }
1581
+
1582
+ /* ── copy-button/copy-button.css ── */
1583
+ .dl-copy-button {
1584
+ display: inline-flex;
1585
+ align-items: center;
1586
+ justify-content: center;
1587
+ gap: 0.375rem;
1588
+ font-size: 0.75rem;
1589
+ font-weight: 500;
1590
+ border-radius: var(--radius, 0.375rem);
1591
+ border: 1px solid var(--border);
1592
+ background: var(--card);
1593
+ color: var(--foreground);
1594
+ padding: 0.25rem 0.625rem;
1216
1595
  cursor: pointer;
1217
1596
  transition: all 0.15s ease;
1218
1597
  user-select: none;
@@ -1236,6 +1615,79 @@
1236
1615
  flex-shrink: 0;
1237
1616
  }
1238
1617
 
1618
+ /* ── data-table/data-table.css ── */
1619
+ .dl-data-table-container {
1620
+ display: flex;
1621
+ flex-direction: column;
1622
+ width: 100%;
1623
+ border-radius: var(--radius-md, 0.375rem);
1624
+ border: 1px solid var(--border);
1625
+ background-color: var(--card, var(--background));
1626
+ overflow: hidden;
1627
+ }
1628
+
1629
+ .dl-data-table-wrapper {
1630
+ overflow-x: auto;
1631
+ width: 100%;
1632
+ }
1633
+
1634
+ .dl-data-table-sort-btn {
1635
+ display: inline-flex;
1636
+ align-items: center;
1637
+ gap: 0.375rem;
1638
+ background: transparent;
1639
+ border: none;
1640
+ font: inherit;
1641
+ color: inherit;
1642
+ cursor: pointer;
1643
+ padding: 0;
1644
+ user-select: none;
1645
+ }
1646
+
1647
+ .dl-data-table-sort-btn:hover {
1648
+ color: var(--foreground);
1649
+ }
1650
+
1651
+ .dl-data-table-sort-icon {
1652
+ width: 0.875rem;
1653
+ height: 0.875rem;
1654
+ color: var(--muted-foreground);
1655
+ transition: color 0.15s ease;
1656
+ }
1657
+
1658
+ .dl-data-table-sort-btn:hover .dl-data-table-sort-icon {
1659
+ color: var(--foreground);
1660
+ }
1661
+
1662
+ .dl-data-table-row--clickable {
1663
+ cursor: pointer;
1664
+ }
1665
+
1666
+ .dl-data-table-footer {
1667
+ display: flex;
1668
+ flex-wrap: wrap;
1669
+ align-items: center;
1670
+ justify-content: space-between;
1671
+ gap: 1rem;
1672
+ padding: 0.75rem 1rem;
1673
+ border-top: 1px solid var(--border);
1674
+ background-color: var(--background);
1675
+ font-size: 0.8125rem;
1676
+ color: var(--muted-foreground);
1677
+ }
1678
+
1679
+ .dl-data-table-summary {
1680
+ display: flex;
1681
+ align-items: center;
1682
+ gap: 0.25rem;
1683
+ }
1684
+
1685
+ .dl-data-table-empty {
1686
+ padding: 3rem 1rem;
1687
+ text-align: center;
1688
+ color: var(--muted-foreground);
1689
+ }
1690
+
1239
1691
  /* ── date-picker/date-picker.css ── */
1240
1692
  .dl-date-picker-trigger {
1241
1693
  width: 100%;
@@ -1659,6 +2111,66 @@
1659
2111
  margin-top: var(--space-4, 1rem);
1660
2112
  }
1661
2113
 
2114
+ /* ── file-tree/file-tree.css ── */
2115
+ .dl-file-tree {
2116
+ display: flex;
2117
+ flex-direction: column;
2118
+ width: 100%;
2119
+ font-size: 0.8125rem;
2120
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
2121
+ user-select: none;
2122
+ background-color: var(--card, var(--background));
2123
+ border: 1px solid var(--border);
2124
+ border-radius: var(--radius-md, 0.375rem);
2125
+ padding: 0.375rem;
2126
+ }
2127
+
2128
+ .dl-file-tree__node {
2129
+ display: flex;
2130
+ align-items: center;
2131
+ gap: 0.375rem;
2132
+ padding: 0.25rem 0.5rem;
2133
+ border-radius: var(--radius-sm, 0.25rem);
2134
+ cursor: pointer;
2135
+ color: var(--muted-foreground);
2136
+ transition: all 0.12s ease;
2137
+ }
2138
+
2139
+ .dl-file-tree__node:hover {
2140
+ background-color: var(--accent);
2141
+ color: var(--accent-foreground);
2142
+ }
2143
+
2144
+ .dl-file-tree__node--active {
2145
+ background-color: var(--accent);
2146
+ color: var(--foreground);
2147
+ font-weight: 500;
2148
+ }
2149
+
2150
+ .dl-file-tree__icon {
2151
+ display: flex;
2152
+ align-items: center;
2153
+ justify-content: center;
2154
+ width: 1rem;
2155
+ height: 1rem;
2156
+ flex-shrink: 0;
2157
+ }
2158
+
2159
+ .dl-file-tree__name {
2160
+ overflow: hidden;
2161
+ text-overflow: ellipsis;
2162
+ white-space: nowrap;
2163
+ }
2164
+
2165
+ .dl-file-tree__children {
2166
+ display: flex;
2167
+ flex-direction: column;
2168
+ position: relative;
2169
+ margin-left: 0.75rem;
2170
+ padding-left: 0.5rem;
2171
+ border-left: 1px solid var(--border);
2172
+ }
2173
+
1662
2174
  /* ── form/form.css ── */
1663
2175
  .dl-form-item {
1664
2176
  display: flex;
@@ -1794,16 +2306,113 @@
1794
2306
  -webkit-appearance: none;
1795
2307
  }
1796
2308
 
1797
- /* ── input-otp/input-otp.css ── */
1798
- .dl-input-otp-container {
1799
- display: flex;
2309
+ /* ── input-number/input-number.css ── */
2310
+ .dl-input-number {
2311
+ position: relative;
2312
+ display: inline-flex;
1800
2313
  align-items: center;
1801
- gap: 0.5rem;
2314
+ width: 100%;
2315
+ max-width: 10rem;
2316
+ height: var(--control-height-md, 2.25rem);
2317
+ border-radius: var(--radius-md, 0.375rem);
2318
+ border: 1px solid var(--input, var(--border));
2319
+ background-color: var(--background);
2320
+ color: var(--foreground);
2321
+ font-size: 0.875rem;
2322
+ transition:
2323
+ border-color 0.15s ease,
2324
+ box-shadow 0.15s ease;
2325
+ overflow: hidden;
1802
2326
  }
1803
2327
 
1804
- .dl-input-otp-container:has(:disabled) {
1805
- opacity: 0.5;
1806
- }
2328
+ .dl-input-number:focus-within {
2329
+ outline: none;
2330
+ border-color: var(--ring);
2331
+ box-shadow: 0 0 0 1px var(--ring);
2332
+ }
2333
+
2334
+ .dl-input-number--disabled {
2335
+ opacity: 0.5;
2336
+ cursor: not-allowed;
2337
+ background-color: var(--muted);
2338
+ }
2339
+
2340
+ .dl-input-number__input {
2341
+ flex: 1;
2342
+ width: 100%;
2343
+ height: 100%;
2344
+ padding: 0 0.75rem;
2345
+ background: transparent;
2346
+ border: none;
2347
+ color: inherit;
2348
+ font-family: inherit;
2349
+ font-size: inherit;
2350
+ text-align: left;
2351
+ }
2352
+
2353
+ .dl-input-number__input:focus {
2354
+ outline: none;
2355
+ }
2356
+
2357
+ .dl-input-number__controls {
2358
+ display: flex;
2359
+ flex-direction: column;
2360
+ height: 100%;
2361
+ width: 1.5rem;
2362
+ border-left: 1px solid var(--border);
2363
+ background-color: var(--secondary);
2364
+ }
2365
+
2366
+ .dl-input-number__btn {
2367
+ display: flex;
2368
+ align-items: center;
2369
+ justify-content: center;
2370
+ height: 50%;
2371
+ width: 100%;
2372
+ background: transparent;
2373
+ border: none;
2374
+ padding: 0;
2375
+ cursor: pointer;
2376
+ color: var(--muted-foreground);
2377
+ transition:
2378
+ color 0.15s ease,
2379
+ background-color 0.15s ease;
2380
+ }
2381
+
2382
+ .dl-input-number__btn:hover:not(:disabled) {
2383
+ background-color: var(--accent);
2384
+ color: var(--foreground);
2385
+ }
2386
+
2387
+ .dl-input-number__btn:disabled {
2388
+ opacity: 0.35;
2389
+ cursor: not-allowed;
2390
+ }
2391
+
2392
+ .dl-input-number__btn--up {
2393
+ border-bottom: 1px solid var(--border);
2394
+ }
2395
+
2396
+ .dl-input-number__prefix,
2397
+ .dl-input-number__suffix {
2398
+ display: flex;
2399
+ align-items: center;
2400
+ padding: 0 0.5rem;
2401
+ color: var(--muted-foreground);
2402
+ font-size: 0.75rem;
2403
+ user-select: none;
2404
+ }
2405
+
2406
+ /* ── input-otp/input-otp.css ── */
2407
+ .dl-input-otp-container {
2408
+ display: flex;
2409
+ align-items: center;
2410
+ gap: 0.5rem;
2411
+ }
2412
+
2413
+ .dl-input-otp-container:has(:disabled) {
2414
+ opacity: 0.5;
2415
+ }
1807
2416
 
1808
2417
  .dl-input-otp {
1809
2418
  cursor: default;
@@ -1866,6 +2475,86 @@
1866
2475
  animation: dl-pulse 1s infinite;
1867
2476
  }
1868
2477
 
2478
+ /* ── kbd/kbd.css ── */
2479
+ .dl-kbd {
2480
+ display: inline-flex;
2481
+ align-items: center;
2482
+ justify-content: center;
2483
+ font-family: var(
2484
+ --font-mono,
2485
+ ui-monospace,
2486
+ SFMono-Regular,
2487
+ Menlo,
2488
+ Monaco,
2489
+ Consolas,
2490
+ monospace
2491
+ );
2492
+ font-weight: 500;
2493
+ user-select: none;
2494
+ pointer-events: none;
2495
+ white-space: nowrap;
2496
+ vertical-align: baseline;
2497
+ box-sizing: border-box;
2498
+ }
2499
+
2500
+ /* ── Sizes ── */
2501
+ .dl-kbd--sm {
2502
+ min-width: 1.125rem;
2503
+ height: 1.125rem;
2504
+ padding: 0 0.25rem;
2505
+ font-size: 0.625rem;
2506
+ border-radius: var(--radius-sm, 0.25rem);
2507
+ }
2508
+
2509
+ .dl-kbd--md {
2510
+ min-width: 1.375rem;
2511
+ height: 1.375rem;
2512
+ padding: 0 0.375rem;
2513
+ font-size: 0.6875rem;
2514
+ border-radius: var(--radius-sm, 0.25rem);
2515
+ }
2516
+
2517
+ .dl-kbd--lg {
2518
+ min-width: 1.625rem;
2519
+ height: 1.625rem;
2520
+ padding: 0 0.5rem;
2521
+ font-size: 0.75rem;
2522
+ border-radius: var(--radius-md, 0.375rem);
2523
+ }
2524
+
2525
+ /* ── Variants ── */
2526
+ .dl-kbd--default {
2527
+ background-color: var(--muted);
2528
+ color: var(--muted-foreground);
2529
+ border: 1px solid var(--border);
2530
+ box-shadow: 0 1px 0 0 var(--border);
2531
+ }
2532
+
2533
+ .dl-kbd--outline {
2534
+ background-color: transparent;
2535
+ color: var(--foreground);
2536
+ border: 1px solid var(--border);
2537
+ }
2538
+
2539
+ .dl-kbd--ghost {
2540
+ background-color: transparent;
2541
+ color: var(--muted-foreground);
2542
+ border: none;
2543
+ }
2544
+
2545
+ /* ── KbdGroup ── */
2546
+ .dl-kbd-group {
2547
+ display: inline-flex;
2548
+ align-items: center;
2549
+ gap: 0.25rem;
2550
+ }
2551
+
2552
+ .dl-kbd-separator {
2553
+ color: var(--muted-foreground);
2554
+ font-size: 0.6875rem;
2555
+ user-select: none;
2556
+ }
2557
+
1869
2558
  /* ── label/label.css ── */
1870
2559
  .dl-label {
1871
2560
  font-size: 0.75rem;
@@ -1958,6 +2647,97 @@
1958
2647
  color: var(--accent-foreground);
1959
2648
  }
1960
2649
 
2650
+ /* ── message/message.css ── */
2651
+ .dl-message {
2652
+ display: flex;
2653
+ gap: 0.75rem;
2654
+ width: 100%;
2655
+ padding: 0.75rem 0;
2656
+ color: var(--foreground);
2657
+ font-size: 0.875rem;
2658
+ line-height: 1.5;
2659
+ }
2660
+
2661
+ .dl-message--user {
2662
+ flex-direction: row-reverse;
2663
+ }
2664
+
2665
+ .dl-message__avatar {
2666
+ display: inline-flex;
2667
+ align-items: center;
2668
+ justify-content: center;
2669
+ width: 2rem;
2670
+ height: 2rem;
2671
+ border-radius: 9999px;
2672
+ background-color: var(--secondary);
2673
+ color: var(--secondary-foreground);
2674
+ font-weight: 600;
2675
+ font-size: 0.75rem;
2676
+ flex-shrink: 0;
2677
+ border: 1px solid var(--border);
2678
+ }
2679
+
2680
+ .dl-message--assistant .dl-message__avatar {
2681
+ background-color: color-mix(in oklch, var(--primary) 12%, transparent);
2682
+ color: var(--primary);
2683
+ border-color: color-mix(in oklch, var(--primary) 25%, transparent);
2684
+ }
2685
+
2686
+ .dl-message__body {
2687
+ display: flex;
2688
+ flex-direction: column;
2689
+ gap: 0.375rem;
2690
+ max-width: 80%;
2691
+ }
2692
+
2693
+ .dl-message--user .dl-message__body {
2694
+ align-items: flex-end;
2695
+ }
2696
+
2697
+ .dl-message__content {
2698
+ border-radius: var(--radius-lg, 0.5rem);
2699
+ padding: 0.625rem 0.875rem;
2700
+ background-color: var(--card, var(--background));
2701
+ border: 1px solid var(--border);
2702
+ }
2703
+
2704
+ .dl-message--user .dl-message__content {
2705
+ background-color: var(--primary);
2706
+ color: var(--primary-foreground);
2707
+ border-color: var(--primary);
2708
+ }
2709
+
2710
+ .dl-message__actions {
2711
+ display: flex;
2712
+ align-items: center;
2713
+ gap: 0.25rem;
2714
+ opacity: 0.8;
2715
+ transition: opacity 0.15s ease;
2716
+ }
2717
+
2718
+ .dl-message:hover .dl-message__actions {
2719
+ opacity: 1;
2720
+ }
2721
+
2722
+ .dl-message__action-btn {
2723
+ display: inline-flex;
2724
+ align-items: center;
2725
+ justify-content: center;
2726
+ width: 1.5rem;
2727
+ height: 1.5rem;
2728
+ border-radius: var(--radius-sm, 0.25rem);
2729
+ border: none;
2730
+ background: transparent;
2731
+ color: var(--muted-foreground);
2732
+ cursor: pointer;
2733
+ transition: all 0.15s ease;
2734
+ }
2735
+
2736
+ .dl-message__action-btn:hover {
2737
+ background-color: var(--secondary);
2738
+ color: var(--foreground);
2739
+ }
2740
+
1961
2741
  /* ── metric-card/metric-card.css ── */
1962
2742
  .dl-metrics-grid {
1963
2743
  display: grid;
@@ -2028,261 +2808,961 @@
2028
2808
  color: var(--destructive);
2029
2809
  }
2030
2810
 
2031
- /* ── navigation-menu/navigation-menu.css ── */
2032
- .dl-navigation-menu {
2811
+ /* ── model-selector/model-selector.css ── */
2812
+ .dl-model-selector {
2033
2813
  position: relative;
2034
- z-index: 10;
2035
- display: flex;
2036
- max-width: max-content;
2037
- flex: 1;
2038
- align-items: center;
2039
- justify-content: center;
2040
- }
2041
-
2042
- .dl-navigation-menu-list {
2043
- display: flex;
2044
- flex: 1;
2045
- list-style: none;
2046
- align-items: center;
2047
- justify-content: center;
2048
- gap: 0.25rem;
2049
- margin: 0;
2050
- padding: 0;
2814
+ display: inline-flex;
2051
2815
  }
2052
2816
 
2053
- .dl-navigation-menu-trigger {
2817
+ .dl-model-selector__trigger {
2054
2818
  display: inline-flex;
2055
- height: var(--control-height-md, 2.25rem);
2056
- width: max-content;
2057
2819
  align-items: center;
2058
- justify-content: center;
2820
+ justify-content: space-between;
2821
+ gap: 0.5rem;
2822
+ padding: 0.375rem 0.625rem;
2823
+ font-size: 0.8125rem;
2824
+ font-weight: 500;
2825
+ line-height: 1;
2059
2826
  border-radius: var(--radius-md, 0.375rem);
2827
+ border: 1px solid var(--border);
2060
2828
  background-color: var(--background);
2061
- padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
2062
- font-size: 0.875rem;
2063
- font-weight: 500;
2829
+ color: var(--foreground);
2064
2830
  cursor: pointer;
2065
- border: none;
2066
- color: inherit;
2831
+ transition: all 0.15s ease;
2832
+ user-select: none;
2067
2833
  font-family: inherit;
2068
- transition:
2069
- background-color 0.15s ease,
2070
- color 0.15s ease;
2071
- outline: none;
2072
2834
  }
2073
2835
 
2074
- .dl-navigation-menu-trigger:hover,
2075
- .dl-navigation-menu-trigger:focus,
2076
- .dl-navigation-menu-trigger[data-state="open"] {
2836
+ .dl-model-selector__trigger:hover:not(:disabled) {
2077
2837
  background-color: var(--accent);
2078
2838
  color: var(--accent-foreground);
2079
2839
  }
2080
2840
 
2081
- .dl-navigation-menu-trigger:disabled {
2082
- pointer-events: none;
2083
- opacity: 0.5;
2084
- cursor: not-allowed;
2841
+ .dl-model-selector__trigger:focus-visible {
2842
+ outline: 2px solid var(--ring);
2843
+ outline-offset: 2px;
2085
2844
  }
2086
2845
 
2087
- .dl-navigation-menu-chevron {
2088
- position: relative;
2089
- top: 1px;
2090
- margin-left: 0.25rem;
2091
- width: 0.75rem;
2092
- height: 0.75rem;
2093
- transition: transform 0.2s ease;
2846
+ .dl-model-selector__trigger:disabled {
2847
+ opacity: 0.5;
2848
+ cursor: not-allowed;
2094
2849
  }
2095
2850
 
2096
- .dl-navigation-menu-trigger[data-state="open"] .dl-navigation-menu-chevron {
2097
- transform: rotate(180deg);
2851
+ .dl-model-selector__trigger--sm {
2852
+ padding: 0.25rem 0.5rem;
2853
+ font-size: 0.75rem;
2098
2854
  }
2099
2855
 
2100
- .dl-navigation-menu-content {
2856
+ .dl-model-selector__content {
2857
+ position: absolute;
2858
+ top: calc(100% + 4px);
2859
+ left: 0;
2860
+ z-index: 50;
2861
+ min-width: 16rem;
2862
+ max-width: 22rem;
2863
+ border-radius: var(--radius-md, 0.375rem);
2864
+ border: 1px solid var(--border);
2865
+ background-color: var(--popover, var(--background));
2866
+ color: var(--popover-foreground, var(--foreground));
2867
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2868
+ padding: 0.375rem;
2869
+ display: flex;
2870
+ flex-direction: column;
2871
+ gap: 0.25rem;
2872
+ max-height: 20rem;
2873
+ overflow-y: auto;
2874
+ }
2875
+
2876
+ .dl-model-selector__search {
2877
+ padding: 0.375rem 0.5rem;
2878
+ margin-bottom: 0.25rem;
2879
+ font-size: 0.75rem;
2880
+ border-radius: var(--radius-sm, 0.25rem);
2881
+ border: 1px solid var(--border);
2882
+ background-color: var(--input);
2883
+ color: var(--foreground);
2884
+ outline: none;
2885
+ }
2886
+
2887
+ .dl-model-selector__search:focus {
2888
+ border-color: var(--ring);
2889
+ }
2890
+
2891
+ .dl-model-selector__item {
2892
+ display: flex;
2893
+ align-items: flex-start;
2894
+ justify-content: space-between;
2895
+ gap: 0.5rem;
2896
+ padding: 0.5rem;
2897
+ border-radius: var(--radius-sm, 0.25rem);
2898
+ cursor: pointer;
2899
+ transition: background-color 0.12s ease;
2900
+ user-select: none;
2901
+ }
2902
+
2903
+ .dl-model-selector__item:hover:not([data-disabled="true"]) {
2904
+ background-color: var(--accent);
2905
+ }
2906
+
2907
+ .dl-model-selector__item--active {
2908
+ background-color: var(--accent);
2909
+ }
2910
+
2911
+ .dl-model-selector__item-info {
2912
+ display: flex;
2913
+ flex-direction: column;
2914
+ gap: 0.125rem;
2915
+ min-width: 0;
2916
+ }
2917
+
2918
+ .dl-model-selector__item-title {
2919
+ display: flex;
2920
+ align-items: center;
2921
+ gap: 0.375rem;
2922
+ font-weight: 500;
2923
+ font-size: 0.8125rem;
2924
+ }
2925
+
2926
+ .dl-model-selector__item-desc {
2927
+ font-size: 0.75rem;
2928
+ color: var(--muted-foreground);
2929
+ line-height: 1.3;
2930
+ }
2931
+
2932
+ .dl-model-selector__item-tags {
2933
+ display: flex;
2934
+ align-items: center;
2935
+ gap: 0.25rem;
2936
+ margin-top: 0.25rem;
2937
+ flex-wrap: wrap;
2938
+ }
2939
+
2940
+ .dl-model-selector__tag {
2941
+ display: inline-flex;
2942
+ align-items: center;
2943
+ font-size: 0.6875rem;
2944
+ padding: 0.0625rem 0.375rem;
2945
+ border-radius: 9999px;
2946
+ background-color: var(--muted);
2947
+ color: var(--muted-foreground);
2948
+ font-weight: 500;
2949
+ }
2950
+
2951
+ /* ── multi-select/multi-select.css ── */
2952
+ .dl-multi-select-trigger {
2953
+ display: flex;
2954
+ width: 100%;
2955
+ min-height: var(--control-height-md, 2.25rem);
2956
+ height: auto;
2957
+ align-items: center;
2958
+ justify-content: space-between;
2959
+ border-radius: var(--radius-md, 0.375rem);
2960
+ border: 1px solid var(--input, var(--border));
2961
+ background-color: var(--background);
2962
+ padding: 0.25rem 0.75rem;
2963
+ font-size: 0.875rem;
2964
+ line-height: 1.25rem;
2965
+ color: var(--foreground);
2966
+ cursor: pointer;
2967
+ transition:
2968
+ border-color 0.15s ease,
2969
+ box-shadow 0.15s ease;
2970
+ gap: 0.5rem;
2971
+ }
2972
+
2973
+ .dl-multi-select-trigger:focus-visible {
2974
+ outline: none;
2975
+ border-color: var(--ring);
2976
+ box-shadow: 0 0 0 1px var(--ring);
2977
+ }
2978
+
2979
+ .dl-multi-select-trigger--disabled {
2980
+ opacity: 0.5;
2981
+ cursor: not-allowed;
2982
+ background-color: var(--muted);
2983
+ }
2984
+
2985
+ .dl-multi-select-tags {
2986
+ display: flex;
2987
+ flex-wrap: wrap;
2988
+ align-items: center;
2989
+ gap: 0.25rem;
2990
+ flex: 1;
2991
+ min-width: 0;
2992
+ }
2993
+
2994
+ .dl-multi-select-placeholder {
2995
+ color: var(--muted-foreground);
2996
+ user-select: none;
2997
+ }
2998
+
2999
+ .dl-multi-select-chip {
3000
+ display: inline-flex;
3001
+ align-items: center;
3002
+ gap: 0.25rem;
3003
+ background-color: var(--secondary);
3004
+ color: var(--secondary-foreground);
3005
+ border-radius: var(--radius-sm, 0.25rem);
3006
+ padding: 0.125rem 0.375rem;
3007
+ font-size: 0.75rem;
3008
+ font-weight: 500;
3009
+ line-height: 1;
3010
+ max-width: 100%;
3011
+ }
3012
+
3013
+ .dl-multi-select-chip__text {
3014
+ overflow: hidden;
3015
+ text-overflow: ellipsis;
3016
+ white-space: nowrap;
3017
+ }
3018
+
3019
+ .dl-multi-select-chip__remove {
3020
+ display: inline-flex;
3021
+ align-items: center;
3022
+ justify-content: center;
3023
+ background: transparent;
3024
+ border: none;
3025
+ cursor: pointer;
3026
+ padding: 0;
3027
+ color: var(--muted-foreground);
3028
+ transition: color 0.15s ease;
3029
+ }
3030
+
3031
+ .dl-multi-select-chip__remove:hover {
3032
+ color: var(--foreground);
3033
+ }
3034
+
3035
+ .dl-multi-select-content {
3036
+ width: var(--radix-popover-trigger-width);
3037
+ min-width: 14rem;
3038
+ padding: 0.25rem;
3039
+ background-color: var(--popover);
3040
+ color: var(--popover-foreground);
3041
+ border: 1px solid var(--border);
3042
+ border-radius: var(--radius-md, 0.375rem);
3043
+ box-shadow: 0 4px 16px rgb(0 0 0 / 0.1);
3044
+ z-index: 50;
3045
+ }
3046
+
3047
+ .dl-multi-select-search {
3048
+ position: relative;
3049
+ display: flex;
3050
+ align-items: center;
3051
+ padding: 0.25rem 0.5rem 0.5rem;
3052
+ border-bottom: 1px solid var(--border);
3053
+ }
3054
+
3055
+ .dl-multi-select-search-icon {
3056
+ position: absolute;
3057
+ left: 0.875rem;
3058
+ top: 50%;
3059
+ transform: translateY(-60%);
3060
+ width: 0.875rem;
3061
+ height: 0.875rem;
3062
+ color: var(--muted-foreground);
3063
+ pointer-events: none;
3064
+ }
3065
+
3066
+ .dl-multi-select-search-input {
3067
+ width: 100%;
3068
+ height: 1.875rem;
3069
+ padding-left: 1.75rem;
3070
+ padding-right: 0.5rem;
3071
+ font-size: 0.8125rem;
3072
+ border-radius: var(--radius-sm, 0.25rem);
3073
+ border: 1px solid var(--border);
3074
+ background: var(--background);
3075
+ }
3076
+
3077
+ .dl-multi-select-search-input:focus {
3078
+ outline: none;
3079
+ border-color: var(--ring);
3080
+ }
3081
+
3082
+ .dl-multi-select-actions {
3083
+ display: flex;
3084
+ align-items: center;
3085
+ justify-content: space-between;
3086
+ padding: 0.375rem 0.5rem;
3087
+ border-bottom: 1px solid var(--border);
3088
+ font-size: 0.75rem;
3089
+ color: var(--muted-foreground);
3090
+ }
3091
+
3092
+ .dl-multi-select-action-btn {
3093
+ background: transparent;
3094
+ border: none;
3095
+ color: var(--primary);
3096
+ font-size: 0.75rem;
3097
+ font-weight: 500;
3098
+ cursor: pointer;
3099
+ padding: 0.125rem 0.25rem;
3100
+ border-radius: var(--radius-sm, 0.25rem);
3101
+ }
3102
+
3103
+ .dl-multi-select-action-btn:hover {
3104
+ text-decoration: underline;
3105
+ }
3106
+
3107
+ .dl-multi-select-list {
3108
+ max-height: 14rem;
3109
+ overflow-y: auto;
3110
+ padding: 0.25rem 0;
3111
+ }
3112
+
3113
+ .dl-multi-select-item {
3114
+ display: flex;
3115
+ align-items: center;
3116
+ gap: 0.5rem;
3117
+ padding: 0.375rem 0.5rem;
3118
+ font-size: 0.8125rem;
3119
+ border-radius: var(--radius-sm, 0.25rem);
3120
+ cursor: pointer;
3121
+ user-select: none;
3122
+ transition: background-color 0.15s ease;
3123
+ }
3124
+
3125
+ .dl-multi-select-item:hover:not(.dl-multi-select-item--disabled) {
3126
+ background-color: var(--accent);
3127
+ color: var(--accent-foreground);
3128
+ }
3129
+
3130
+ .dl-multi-select-item--selected {
3131
+ font-weight: 500;
3132
+ }
3133
+
3134
+ .dl-multi-select-item--disabled {
3135
+ opacity: 0.5;
3136
+ cursor: not-allowed;
3137
+ }
3138
+
3139
+ .dl-multi-select-checkbox {
3140
+ display: inline-flex;
3141
+ align-items: center;
3142
+ justify-content: center;
3143
+ width: 1rem;
3144
+ height: 1rem;
3145
+ border-radius: 0.1875rem;
3146
+ border: 1px solid var(--input, var(--border));
3147
+ background-color: var(--background);
3148
+ color: var(--primary-foreground);
3149
+ flex-shrink: 0;
3150
+ transition: all 0.15s ease;
3151
+ }
3152
+
3153
+ .dl-multi-select-item--selected .dl-multi-select-checkbox {
3154
+ background-color: var(--primary);
3155
+ border-color: var(--primary);
3156
+ }
3157
+
3158
+ .dl-multi-select-empty {
3159
+ padding: 1.25rem 0.5rem;
3160
+ text-align: center;
3161
+ font-size: 0.8125rem;
3162
+ color: var(--muted-foreground);
3163
+ }
3164
+
3165
+ /* ── navigation-menu/navigation-menu.css ── */
3166
+ .dl-navigation-menu {
3167
+ position: relative;
3168
+ z-index: 10;
3169
+ display: flex;
3170
+ max-width: max-content;
3171
+ flex: 1;
3172
+ align-items: center;
3173
+ justify-content: center;
3174
+ }
3175
+
3176
+ .dl-navigation-menu-list {
3177
+ display: flex;
3178
+ flex: 1;
3179
+ list-style: none;
3180
+ align-items: center;
3181
+ justify-content: center;
3182
+ gap: 0.25rem;
3183
+ margin: 0;
3184
+ padding: 0;
3185
+ }
3186
+
3187
+ .dl-navigation-menu-trigger {
3188
+ display: inline-flex;
3189
+ height: var(--control-height-md, 2.25rem);
3190
+ width: max-content;
3191
+ align-items: center;
3192
+ justify-content: center;
3193
+ border-radius: var(--radius-md, 0.375rem);
3194
+ background-color: var(--background);
3195
+ padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
3196
+ font-size: 0.875rem;
3197
+ font-weight: 500;
3198
+ cursor: pointer;
3199
+ border: none;
3200
+ color: inherit;
3201
+ font-family: inherit;
3202
+ transition:
3203
+ background-color 0.15s ease,
3204
+ color 0.15s ease;
3205
+ outline: none;
3206
+ }
3207
+
3208
+ .dl-navigation-menu-trigger:hover,
3209
+ .dl-navigation-menu-trigger:focus,
3210
+ .dl-navigation-menu-trigger[data-state="open"] {
3211
+ background-color: var(--accent);
3212
+ color: var(--accent-foreground);
3213
+ }
3214
+
3215
+ .dl-navigation-menu-trigger:disabled {
3216
+ pointer-events: none;
3217
+ opacity: 0.5;
3218
+ cursor: not-allowed;
3219
+ }
3220
+
3221
+ .dl-navigation-menu-chevron {
3222
+ position: relative;
3223
+ top: 1px;
3224
+ margin-left: 0.25rem;
3225
+ width: 0.75rem;
3226
+ height: 0.75rem;
3227
+ transition: transform 0.2s ease;
3228
+ }
3229
+
3230
+ .dl-navigation-menu-trigger[data-state="open"] .dl-navigation-menu-chevron {
3231
+ transform: rotate(180deg);
3232
+ }
3233
+
3234
+ .dl-navigation-menu-content {
2101
3235
  left: 0;
2102
3236
  top: 0;
2103
3237
  width: 100%;
2104
3238
  }
2105
3239
 
2106
- @media (min-width: 768px) {
2107
- .dl-navigation-menu-content {
2108
- position: absolute;
2109
- width: auto;
2110
- }
3240
+ @media (min-width: 768px) {
3241
+ .dl-navigation-menu-content {
3242
+ position: absolute;
3243
+ width: auto;
3244
+ }
3245
+ }
3246
+
3247
+ .dl-navigation-menu-viewport-wrapper {
3248
+ position: absolute;
3249
+ left: 0;
3250
+ top: 100%;
3251
+ display: flex;
3252
+ justify-content: center;
3253
+ }
3254
+
3255
+ .dl-navigation-menu-viewport {
3256
+ position: relative;
3257
+ margin-top: 0.375rem;
3258
+ height: var(--radix-navigation-menu-viewport-height);
3259
+ width: 100%;
3260
+ overflow: hidden;
3261
+ border-radius: var(--radius-md, 0.375rem);
3262
+ border: 1px solid var(--border);
3263
+ background-color: var(--popover);
3264
+ color: var(--popover-foreground);
3265
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.12);
3266
+ transform-origin: top center;
3267
+ }
3268
+
3269
+ @media (min-width: 768px) {
3270
+ .dl-navigation-menu-viewport {
3271
+ width: var(--radix-navigation-menu-viewport-width);
3272
+ }
3273
+ }
3274
+
3275
+ .dl-navigation-menu-viewport[data-state="open"] {
3276
+ animation: dl-zoom-in 150ms ease;
3277
+ }
3278
+
3279
+ .dl-navigation-menu-viewport[data-state="closed"] {
3280
+ animation: dl-zoom-out 150ms ease;
3281
+ }
3282
+
3283
+ .dl-navigation-menu-indicator {
3284
+ top: 100%;
3285
+ z-index: 1;
3286
+ display: flex;
3287
+ height: 0.375rem;
3288
+ align-items: flex-end;
3289
+ justify-content: center;
3290
+ overflow: hidden;
3291
+ }
3292
+
3293
+ .dl-navigation-menu-indicator__arrow {
3294
+ position: relative;
3295
+ top: 60%;
3296
+ width: 0.5rem;
3297
+ height: 0.5rem;
3298
+ transform: rotate(45deg);
3299
+ border-top-left-radius: 0.125rem;
3300
+ background-color: var(--border);
3301
+ box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
3302
+ }
3303
+
3304
+ /* ── pagination/pagination.css ── */
3305
+ .dl-pagination {
3306
+ margin-inline: auto;
3307
+ display: flex;
3308
+ width: 100%;
3309
+ justify-content: center;
3310
+ }
3311
+
3312
+ .dl-pagination-content {
3313
+ display: flex;
3314
+ flex-direction: row;
3315
+ align-items: center;
3316
+ gap: 0.25rem;
3317
+ list-style: none;
3318
+ margin: 0;
3319
+ padding: 0;
3320
+ }
3321
+
3322
+ .dl-pagination-item {
3323
+ display: inline-flex;
3324
+ }
3325
+
3326
+ .dl-pagination-prev {
3327
+ gap: 0.25rem;
3328
+ padding-inline-start: 0.625rem;
3329
+ }
3330
+
3331
+ .dl-pagination-next {
3332
+ gap: 0.25rem;
3333
+ padding-inline-end: 0.625rem;
3334
+ }
3335
+
3336
+ .dl-pagination-icon {
3337
+ width: 1rem;
3338
+ height: 1rem;
3339
+ flex-shrink: 0;
3340
+ }
3341
+
3342
+ .dl-pagination-ellipsis {
3343
+ display: flex;
3344
+ align-items: center;
3345
+ justify-content: center;
3346
+ width: var(--control-height-md, 2.25rem);
3347
+ height: var(--control-height-md, 2.25rem);
3348
+ }
3349
+
3350
+ .dl-pagination-ellipsis svg {
3351
+ width: 1rem;
3352
+ height: 1rem;
3353
+ }
3354
+
3355
+ /* ── panel/panel.css ── */
3356
+ .dl-panel {
3357
+ border-radius: var(--radius-lg, 0.5rem);
3358
+ border: 1px solid var(--border);
3359
+ background-color: var(--card);
3360
+ padding: 1rem;
3361
+ }
3362
+ .dl-panel__header {
3363
+ margin-bottom: 0.75rem;
3364
+ display: flex;
3365
+ align-items: center;
3366
+ gap: 0.5rem;
3367
+ }
3368
+ .dl-panel__title {
3369
+ font-family: inherit;
3370
+ font-size: 0.875rem;
3371
+ font-weight: 600;
3372
+ margin: 0;
3373
+ }
3374
+ .dl-panel__meta {
3375
+ margin-left: auto;
3376
+ font-family: monospace;
3377
+ font-size: 0.625rem;
3378
+ color: var(--muted-foreground);
3379
+ }
3380
+
3381
+ /* ── password-input/password-input.css ── */
3382
+ .dl-password-toggle-btn {
3383
+ display: inline-flex;
3384
+ align-items: center;
3385
+ justify-content: center;
3386
+ background: transparent;
3387
+ border: none;
3388
+ cursor: pointer;
3389
+ padding: 0;
3390
+ color: var(--muted-foreground);
3391
+ transition: color 0.15s ease;
3392
+ }
3393
+
3394
+ .dl-password-toggle-btn:hover {
3395
+ color: var(--foreground);
3396
+ }
3397
+
3398
+ .dl-password-toggle-btn:focus-visible {
3399
+ outline: 2px solid var(--ring);
3400
+ outline-offset: 2px;
3401
+ border-radius: var(--radius-sm, 0.25rem);
3402
+ }
3403
+
3404
+ /* ── plan/plan.css ── */
3405
+ .dl-plan {
3406
+ display: flex;
3407
+ flex-direction: column;
3408
+ width: 100%;
3409
+ border-radius: var(--radius-md, 0.375rem);
3410
+ border: 1px solid var(--border);
3411
+ background-color: var(--card, var(--background));
3412
+ overflow: hidden;
3413
+ }
3414
+
3415
+ .dl-plan__header {
3416
+ display: flex;
3417
+ align-items: center;
3418
+ justify-content: space-between;
3419
+ padding: 0.625rem 0.875rem;
3420
+ border-bottom: 1px solid var(--border);
3421
+ background-color: var(--muted);
3422
+ font-size: 0.8125rem;
3423
+ }
3424
+
3425
+ .dl-plan__header-title {
3426
+ display: flex;
3427
+ align-items: center;
3428
+ gap: 0.5rem;
3429
+ font-weight: 600;
3430
+ color: var(--foreground);
3431
+ }
3432
+
3433
+ .dl-plan__header-meta {
3434
+ display: flex;
3435
+ align-items: center;
3436
+ gap: 0.5rem;
3437
+ font-size: 0.75rem;
3438
+ color: var(--muted-foreground);
3439
+ }
3440
+
3441
+ .dl-plan__tasks {
3442
+ display: flex;
3443
+ flex-direction: column;
3444
+ padding: 0.5rem 0;
3445
+ }
3446
+
3447
+ .dl-plan__task {
3448
+ display: flex;
3449
+ flex-direction: column;
3450
+ padding: 0.5rem 0.875rem;
3451
+ transition: background-color 0.12s ease;
3452
+ }
3453
+
3454
+ .dl-plan__task:hover {
3455
+ background-color: var(--accent);
3456
+ }
3457
+
3458
+ .dl-plan__task-header {
3459
+ display: flex;
3460
+ align-items: flex-start;
3461
+ gap: 0.625rem;
3462
+ cursor: pointer;
3463
+ user-select: none;
2111
3464
  }
2112
3465
 
2113
- .dl-navigation-menu-viewport-wrapper {
2114
- position: absolute;
2115
- left: 0;
2116
- top: 100%;
3466
+ .dl-plan__task-icon {
3467
+ margin-top: 0.125rem;
2117
3468
  display: flex;
3469
+ align-items: center;
2118
3470
  justify-content: center;
3471
+ shrink: 0;
2119
3472
  }
2120
3473
 
2121
- .dl-navigation-menu-viewport {
2122
- position: relative;
2123
- margin-top: 0.375rem;
2124
- height: var(--radix-navigation-menu-viewport-height);
2125
- width: 100%;
2126
- overflow: hidden;
2127
- border-radius: var(--radius-md, 0.375rem);
2128
- border: 1px solid var(--border);
2129
- background-color: var(--popover);
2130
- color: var(--popover-foreground);
2131
- box-shadow: 0 4px 20px rgb(0 0 0 / 0.12);
2132
- transform-origin: top center;
3474
+ .dl-plan__task-body {
3475
+ display: flex;
3476
+ flex-direction: column;
3477
+ flex: 1;
3478
+ min-width: 0;
2133
3479
  }
2134
3480
 
2135
- @media (min-width: 768px) {
2136
- .dl-navigation-menu-viewport {
2137
- width: var(--radix-navigation-menu-viewport-width);
2138
- }
3481
+ .dl-plan__task-title {
3482
+ font-size: 0.8125rem;
3483
+ font-weight: 500;
3484
+ color: var(--foreground);
2139
3485
  }
2140
3486
 
2141
- .dl-navigation-menu-viewport[data-state="open"] {
2142
- animation: dl-zoom-in 150ms ease;
3487
+ .dl-plan__task--completed .dl-plan__task-title {
3488
+ color: var(--muted-foreground);
2143
3489
  }
2144
3490
 
2145
- .dl-navigation-menu-viewport[data-state="closed"] {
2146
- animation: dl-zoom-out 150ms ease;
3491
+ .dl-plan__task-desc {
3492
+ font-size: 0.75rem;
3493
+ color: var(--muted-foreground);
3494
+ margin-top: 0.125rem;
3495
+ line-height: 1.4;
2147
3496
  }
2148
3497
 
2149
- .dl-navigation-menu-indicator {
2150
- top: 100%;
2151
- z-index: 1;
3498
+ .dl-plan__task-details {
3499
+ margin-top: 0.5rem;
3500
+ padding-left: 1.5rem;
3501
+ font-size: 0.75rem;
3502
+ color: var(--muted-foreground);
3503
+ }
3504
+
3505
+ .dl-plan__subtask-item {
2152
3506
  display: flex;
2153
- height: 0.375rem;
2154
- align-items: flex-end;
2155
- justify-content: center;
2156
- overflow: hidden;
3507
+ align-items: center;
3508
+ gap: 0.375rem;
3509
+ padding: 0.125rem 0;
2157
3510
  }
2158
3511
 
2159
- .dl-navigation-menu-indicator__arrow {
3512
+ /* ── popover/popover.css ── */
3513
+ .dl-popover {
3514
+ z-index: 50;
3515
+ width: 18rem;
3516
+ border-radius: var(--radius, 0.5rem);
3517
+ border: 1px solid var(--border);
3518
+ background-color: var(--popover);
3519
+ color: var(--popover-foreground);
3520
+ padding: var(--space-4, 1rem);
3521
+ box-shadow: 0 4px 24px rgb(0 0 0/0.12);
3522
+ outline: none;
3523
+ }
3524
+ .dl-popover[data-state="open"] {
3525
+ animation: dl-fade-in 150ms ease;
3526
+ }
3527
+ .dl-popover[data-state="closed"] {
3528
+ animation: dl-fade-out 150ms ease;
3529
+ }
3530
+
3531
+ /* ── progress/progress.css ── */
3532
+ .dl-progress {
2160
3533
  position: relative;
2161
- top: 60%;
2162
- width: 0.5rem;
2163
3534
  height: 0.5rem;
2164
- transform: rotate(45deg);
2165
- border-top-left-radius: 0.125rem;
2166
- background-color: var(--border);
2167
- box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
3535
+ width: 100%;
3536
+ overflow: hidden;
3537
+ border-radius: 9999px;
3538
+ background-color: var(--secondary);
3539
+ }
3540
+ .dl-progress__indicator {
3541
+ height: 100%;
3542
+ width: 100%;
3543
+ background-color: var(--primary);
3544
+ transition: transform 0.3s ease;
3545
+ transform-origin: left;
2168
3546
  }
2169
3547
 
2170
- /* ── pagination/pagination.css ── */
2171
- .dl-pagination {
2172
- margin-inline: auto;
3548
+ /* ── prompt-input/prompt-input.css ── */
3549
+ .dl-prompt-input {
2173
3550
  display: flex;
3551
+ flex-direction: column;
2174
3552
  width: 100%;
2175
- justify-content: center;
3553
+ border-radius: var(--radius-lg, 0.5rem);
3554
+ border: 1px solid var(--border);
3555
+ background-color: var(--card, var(--background));
3556
+ box-shadow: 0 2px 8px rgb(0 0 0 / 0.05);
3557
+ transition:
3558
+ border-color 0.15s ease,
3559
+ box-shadow 0.15s ease;
3560
+ overflow: hidden;
2176
3561
  }
2177
3562
 
2178
- .dl-pagination-content {
3563
+ .dl-prompt-input:focus-within {
3564
+ border-color: var(--ring);
3565
+ box-shadow: 0 0 0 1px var(--ring);
3566
+ }
3567
+
3568
+ .dl-prompt-input--disabled {
3569
+ opacity: 0.5;
3570
+ cursor: not-allowed;
3571
+ }
3572
+
3573
+ .dl-prompt-input__attachments {
2179
3574
  display: flex;
2180
- flex-direction: row;
3575
+ flex-wrap: wrap;
3576
+ gap: 0.375rem;
3577
+ padding: 0.5rem 0.75rem 0;
3578
+ }
3579
+
3580
+ .dl-prompt-input__chip {
3581
+ display: inline-flex;
2181
3582
  align-items: center;
2182
- gap: 0.25rem;
2183
- list-style: none;
2184
- margin: 0;
2185
- padding: 0;
3583
+ gap: 0.375rem;
3584
+ padding: 0.1875rem 0.5rem;
3585
+ border-radius: var(--radius-sm, 0.25rem);
3586
+ background-color: var(--secondary);
3587
+ color: var(--secondary-foreground);
3588
+ font-size: 0.75rem;
3589
+ border: 1px solid var(--border);
2186
3590
  }
2187
3591
 
2188
- .dl-pagination-item {
3592
+ .dl-prompt-input__chip-name {
3593
+ max-width: 10rem;
3594
+ overflow: hidden;
3595
+ text-overflow: ellipsis;
3596
+ white-space: nowrap;
3597
+ }
3598
+
3599
+ .dl-prompt-input__chip-remove {
3600
+ background: transparent;
3601
+ border: none;
3602
+ cursor: pointer;
3603
+ padding: 0;
3604
+ color: var(--muted-foreground);
2189
3605
  display: inline-flex;
3606
+ align-items: center;
2190
3607
  }
2191
3608
 
2192
- .dl-pagination-prev {
2193
- gap: 0.25rem;
2194
- padding-inline-start: 0.625rem;
3609
+ .dl-prompt-input__chip-remove:hover {
3610
+ color: var(--foreground);
2195
3611
  }
2196
3612
 
2197
- .dl-pagination-next {
2198
- gap: 0.25rem;
2199
- padding-inline-end: 0.625rem;
3613
+ .dl-prompt-input__textarea {
3614
+ width: 100%;
3615
+ min-height: 3.5rem;
3616
+ max-height: 14rem;
3617
+ padding: 0.75rem 0.875rem;
3618
+ border: none;
3619
+ background: transparent;
3620
+ color: var(--foreground);
3621
+ font-family: inherit;
3622
+ font-size: 0.875rem;
3623
+ line-height: 1.4;
3624
+ resize: none;
3625
+ outline: none;
3626
+ box-sizing: border-box;
2200
3627
  }
2201
3628
 
2202
- .dl-pagination-icon {
2203
- width: 1rem;
2204
- height: 1rem;
2205
- flex-shrink: 0;
3629
+ .dl-prompt-input__textarea::placeholder {
3630
+ color: var(--muted-foreground);
2206
3631
  }
2207
3632
 
2208
- .dl-pagination-ellipsis {
3633
+ .dl-prompt-input__toolbar {
3634
+ display: flex;
3635
+ align-items: center;
3636
+ justify-content: space-between;
3637
+ padding: 0.375rem 0.75rem 0.625rem;
3638
+ gap: 0.5rem;
3639
+ }
3640
+
3641
+ .dl-prompt-input__left-actions,
3642
+ .dl-prompt-input__right-actions {
2209
3643
  display: flex;
2210
3644
  align-items: center;
3645
+ gap: 0.375rem;
3646
+ }
3647
+
3648
+ .dl-prompt-input__btn {
3649
+ display: inline-flex;
3650
+ align-items: center;
2211
3651
  justify-content: center;
2212
- width: var(--control-height-md, 2.25rem);
2213
- height: var(--control-height-md, 2.25rem);
3652
+ width: 1.875rem;
3653
+ height: 1.875rem;
3654
+ border-radius: 9999px;
3655
+ border: 1px solid var(--border);
3656
+ background-color: transparent;
3657
+ color: var(--muted-foreground);
3658
+ cursor: pointer;
3659
+ transition: all 0.15s ease;
2214
3660
  }
2215
3661
 
2216
- .dl-pagination-ellipsis svg {
2217
- width: 1rem;
2218
- height: 1rem;
3662
+ .dl-prompt-input__btn:hover:not(:disabled) {
3663
+ background-color: var(--accent);
3664
+ color: var(--foreground);
2219
3665
  }
2220
3666
 
2221
- /* ── panel/panel.css ── */
2222
- .dl-panel {
2223
- border-radius: var(--radius-lg, 0.5rem);
3667
+ .dl-prompt-input__btn:disabled {
3668
+ opacity: 0.4;
3669
+ cursor: not-allowed;
3670
+ }
3671
+
3672
+ .dl-prompt-input__btn--send {
3673
+ background-color: var(--primary);
3674
+ color: var(--primary-foreground);
3675
+ border-color: var(--primary);
3676
+ }
3677
+
3678
+ .dl-prompt-input__btn--send:hover:not(:disabled) {
3679
+ opacity: 0.9;
3680
+ background-color: var(--primary);
3681
+ color: var(--primary-foreground);
3682
+ }
3683
+
3684
+ .dl-prompt-input__btn--stop {
3685
+ background-color: var(--destructive);
3686
+ color: var(--destructive-foreground);
3687
+ border-color: var(--destructive);
3688
+ }
3689
+
3690
+ /* ── queue/queue.css ── */
3691
+ .dl-queue {
3692
+ display: flex;
3693
+ flex-direction: column;
3694
+ width: 100%;
3695
+ border-radius: var(--radius-md, 0.375rem);
2224
3696
  border: 1px solid var(--border);
2225
- background-color: var(--card);
2226
- padding: 1rem;
3697
+ background-color: var(--card, var(--background));
3698
+ overflow: hidden;
3699
+ font-size: 0.8125rem;
2227
3700
  }
2228
- .dl-panel__header {
2229
- margin-bottom: 0.75rem;
3701
+
3702
+ .dl-queue__header {
2230
3703
  display: flex;
2231
3704
  align-items: center;
2232
- gap: 0.5rem;
2233
- }
2234
- .dl-panel__title {
2235
- font-family: inherit;
2236
- font-size: 0.875rem;
3705
+ justify-content: space-between;
3706
+ padding: 0.5rem 0.75rem;
3707
+ background-color: var(--muted);
3708
+ border-bottom: 1px solid var(--border);
2237
3709
  font-weight: 600;
2238
- margin: 0;
3710
+ color: var(--foreground);
2239
3711
  }
2240
- .dl-panel__meta {
2241
- margin-left: auto;
2242
- font-family: monospace;
2243
- font-size: 0.625rem;
2244
- color: var(--muted-foreground);
3712
+
3713
+ .dl-queue__list {
3714
+ display: flex;
3715
+ flex-direction: column;
3716
+ divide-y: 1px solid var(--border);
2245
3717
  }
2246
3718
 
2247
- /* ── popover/popover.css ── */
2248
- .dl-popover {
2249
- z-index: 50;
2250
- width: 18rem;
2251
- border-radius: var(--radius, 0.5rem);
2252
- border: 1px solid var(--border);
2253
- background-color: var(--popover);
2254
- color: var(--popover-foreground);
2255
- padding: var(--space-4, 1rem);
2256
- box-shadow: 0 4px 24px rgb(0 0 0/0.12);
2257
- outline: none;
3719
+ .dl-queue-item {
3720
+ display: flex;
3721
+ align-items: center;
3722
+ justify-content: space-between;
3723
+ padding: 0.5rem 0.75rem;
3724
+ gap: 0.5rem;
3725
+ transition: background-color 0.12s ease;
2258
3726
  }
2259
- .dl-popover[data-state="open"] {
2260
- animation: dl-fade-in 150ms ease;
3727
+
3728
+ .dl-queue-item:hover {
3729
+ background-color: var(--accent);
2261
3730
  }
2262
- .dl-popover[data-state="closed"] {
2263
- animation: dl-fade-out 150ms ease;
3731
+
3732
+ .dl-queue-item__info {
3733
+ display: flex;
3734
+ align-items: center;
3735
+ gap: 0.5rem;
3736
+ min-width: 0;
2264
3737
  }
2265
3738
 
2266
- .dl-popover.dl-date-picker-content {
2267
- width: auto;
2268
- padding: 0;
3739
+ .dl-queue-item__index {
3740
+ display: inline-flex;
3741
+ align-items: center;
3742
+ justify-content: center;
3743
+ width: 1.25rem;
3744
+ height: 1.25rem;
3745
+ border-radius: 9999px;
3746
+ background-color: var(--muted);
3747
+ font-size: 0.6875rem;
3748
+ font-weight: 600;
3749
+ color: var(--muted-foreground);
3750
+ shrink: 0;
2269
3751
  }
2270
3752
 
2271
- /* ── progress/progress.css ── */
2272
- .dl-progress {
2273
- position: relative;
2274
- height: 0.5rem;
2275
- width: 100%;
3753
+ .dl-queue-item__title {
2276
3754
  overflow: hidden;
2277
- border-radius: 9999px;
2278
- background-color: var(--secondary);
3755
+ text-overflow: ellipsis;
3756
+ white-space: nowrap;
3757
+ font-weight: 500;
3758
+ color: var(--foreground);
2279
3759
  }
2280
- .dl-progress__indicator {
2281
- height: 100%;
2282
- width: 100%;
2283
- background-color: var(--primary);
2284
- transition: transform 0.3s ease;
2285
- transform-origin: left;
3760
+
3761
+ .dl-queue-item__actions {
3762
+ display: flex;
3763
+ align-items: center;
3764
+ gap: 0.5rem;
3765
+ shrink: 0;
2286
3766
  }
2287
3767
 
2288
3768
  /* ── radio-group/radio-group.css ── */
@@ -2427,6 +3907,29 @@
2427
3907
  background-color: var(--border);
2428
3908
  }
2429
3909
 
3910
+ /* ── search-input/search-input.css ── */
3911
+ .dl-search-clear-btn {
3912
+ display: inline-flex;
3913
+ align-items: center;
3914
+ justify-content: center;
3915
+ background: transparent;
3916
+ border: none;
3917
+ cursor: pointer;
3918
+ padding: 0;
3919
+ color: var(--muted-foreground);
3920
+ transition: color 0.15s ease;
3921
+ }
3922
+
3923
+ .dl-search-clear-btn:hover {
3924
+ color: var(--foreground);
3925
+ }
3926
+
3927
+ .dl-search-clear-btn:focus-visible {
3928
+ outline: 2px solid var(--ring);
3929
+ outline-offset: 2px;
3930
+ border-radius: var(--radius-sm, 0.25rem);
3931
+ }
3932
+
2430
3933
  /* ── searchable-select/searchable-select.css ── */
2431
3934
  .dl-searchable-select-trigger {
2432
3935
  width: 100%;
@@ -2701,7 +4204,7 @@
2701
4204
  max-height: 24rem;
2702
4205
  min-width: var(--radix-select-trigger-width, 8rem);
2703
4206
  width: var(--radix-select-trigger-width, max-content);
2704
- max-width: var(--radix-select-content-available-width, 100vw);
4207
+ max-width: max-content;
2705
4208
  overflow: hidden;
2706
4209
  border-radius: var(--radius-md, 0.375rem);
2707
4210
  border: 1px solid var(--border);
@@ -3367,34 +4870,34 @@
3367
4870
  /* ── sonner/sonner.css ── */
3368
4871
  .dl-toaster {
3369
4872
  font-family: inherit;
3370
- --normal-bg: var(--card, var(--background));
3371
- --normal-text: var(--card-foreground, var(--foreground));
3372
- --normal-border: var(--border);
4873
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4874
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4875
+ --normal-border: var(--toast-border, var(--border));
3373
4876
  }
3374
4877
 
3375
4878
  [data-sonner-toaster][data-sonner-theme="dark"],
3376
4879
  .dark [data-sonner-toaster],
3377
4880
  [data-theme*="dark"] [data-sonner-toaster] {
3378
- --normal-bg: var(--card, var(--background));
3379
- --normal-text: var(--card-foreground, var(--foreground));
3380
- --normal-border: var(--border);
4881
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4882
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4883
+ --normal-border: var(--toast-border, var(--border));
3381
4884
  }
3382
4885
 
3383
4886
  [data-sonner-toaster][data-sonner-theme="light"],
3384
4887
  .light [data-sonner-toaster],
3385
4888
  [data-theme*="light"] [data-sonner-toaster] {
3386
- --normal-bg: var(--card, var(--background));
3387
- --normal-text: var(--card-foreground, var(--foreground));
3388
- --normal-border: var(--border);
4889
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4890
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4891
+ --normal-border: var(--toast-border, var(--border));
3389
4892
  }
3390
4893
 
3391
4894
  .dl-toaster .dl-toast,
3392
4895
  [data-sonner-toaster] [data-sonner-toast][data-styled="true"] {
3393
- border-radius: var(--radius-md, 0.375rem);
3394
- border: 1px solid var(--border);
3395
- background-color: var(--card, var(--background));
3396
- color: var(--card-foreground, var(--foreground));
3397
- box-shadow: 0 8px 32px rgb(0 0 0 / 0.15);
4896
+ border-radius: var(--toast-radius, var(--radius-md, 0.375rem));
4897
+ border: 1px solid var(--toast-border, var(--border));
4898
+ background-color: var(--toast-bg, var(--card, var(--background)));
4899
+ color: var(--toast-fg, var(--card-foreground, var(--foreground)));
4900
+ box-shadow: var(--toast-shadow, 0 8px 32px rgb(0 0 0 / 0.15));
3398
4901
  }
3399
4902
 
3400
4903
  .dl-toaster .dl-toast__desc,
@@ -3415,9 +4918,276 @@
3415
4918
  }
3416
4919
 
3417
4920
  [data-sonner-toaster] [data-sonner-toast] [data-close-button] {
4921
+ background-color: var(--toast-bg, var(--card, var(--background)));
4922
+ border-color: var(--toast-border, var(--border));
4923
+ color: var(--toast-fg, var(--card-foreground, var(--foreground)));
4924
+ }
4925
+
4926
+ /* ── FinAI Semantic Feedback (Text & Icon Colors, Subtle Borders via CSS Variables) ── */
4927
+ [data-sonner-toaster] [data-sonner-toast][data-type="success"] {
4928
+ border-color: color-mix(
4929
+ in oklch,
4930
+ var(--toast-success, var(--success)) 35%,
4931
+ transparent
4932
+ );
4933
+ }
4934
+
4935
+ [data-sonner-toaster] [data-sonner-toast][data-type="success"] [data-icon] {
4936
+ color: var(--toast-success, var(--success));
4937
+ }
4938
+
4939
+ [data-sonner-toaster] [data-sonner-toast][data-type="error"],
4940
+ [data-sonner-toaster] [data-sonner-toast][data-type="destructive"] {
4941
+ border-color: color-mix(
4942
+ in oklch,
4943
+ var(--toast-destructive, var(--destructive)) 35%,
4944
+ transparent
4945
+ );
4946
+ }
4947
+
4948
+ [data-sonner-toaster] [data-sonner-toast][data-type="error"] [data-icon],
4949
+ [data-sonner-toaster]
4950
+ [data-sonner-toast][data-type="destructive"]
4951
+ [data-icon] {
4952
+ color: var(--toast-destructive, var(--destructive));
4953
+ }
4954
+
4955
+ [data-sonner-toaster] [data-sonner-toast][data-type="warning"] {
4956
+ border-color: color-mix(
4957
+ in oklch,
4958
+ var(--toast-warning, var(--warning)) 35%,
4959
+ transparent
4960
+ );
4961
+ }
4962
+
4963
+ [data-sonner-toaster] [data-sonner-toast][data-type="warning"] [data-icon] {
4964
+ color: var(--toast-warning, var(--warning));
4965
+ }
4966
+
4967
+ [data-sonner-toaster] [data-sonner-toast][data-type="info"] {
4968
+ border-color: color-mix(
4969
+ in oklch,
4970
+ var(--toast-info, var(--info)) 35%,
4971
+ transparent
4972
+ );
4973
+ }
4974
+
4975
+ [data-sonner-toaster] [data-sonner-toast][data-type="info"] [data-icon] {
4976
+ color: var(--toast-info, var(--info));
4977
+ }
4978
+
4979
+ /* ── sources/sources.css ── */
4980
+ .dl-citation {
4981
+ display: inline-flex;
4982
+ align-items: center;
4983
+ justify-content: center;
4984
+ min-width: 1.125rem;
4985
+ height: 1.125rem;
4986
+ padding: 0 0.25rem;
4987
+ margin: 0 0.125rem;
4988
+ font-size: 0.6875rem;
4989
+ font-weight: 600;
4990
+ line-height: 1;
4991
+ border-radius: var(--radius-sm, 0.25rem);
4992
+ background-color: var(--muted);
4993
+ color: var(--primary);
4994
+ border: 1px solid var(--border);
4995
+ cursor: pointer;
4996
+ vertical-align: baseline;
4997
+ transition: all 0.12s ease;
4998
+ text-decoration: none;
4999
+ }
5000
+
5001
+ .dl-citation:hover {
5002
+ background-color: var(--accent);
5003
+ color: var(--accent-foreground);
5004
+ border-color: var(--ring);
5005
+ }
5006
+
5007
+ .dl-sources {
5008
+ display: flex;
5009
+ flex-direction: column;
5010
+ gap: 0.5rem;
5011
+ width: 100%;
5012
+ margin-top: 0.75rem;
5013
+ }
5014
+
5015
+ .dl-sources__header {
5016
+ display: flex;
5017
+ align-items: center;
5018
+ gap: 0.375rem;
5019
+ font-size: 0.75rem;
5020
+ font-weight: 600;
5021
+ text-transform: uppercase;
5022
+ letter-spacing: 0.05em;
5023
+ color: var(--muted-foreground);
5024
+ }
5025
+
5026
+ .dl-sources__grid {
5027
+ display: grid;
5028
+ grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
5029
+ gap: 0.5rem;
5030
+ }
5031
+
5032
+ .dl-source-card {
5033
+ display: flex;
5034
+ flex-direction: column;
5035
+ padding: 0.5rem 0.625rem;
5036
+ border-radius: var(--radius-md, 0.375rem);
5037
+ border: 1px solid var(--border);
3418
5038
  background-color: var(--card, var(--background));
3419
- border-color: var(--border);
3420
- color: var(--card-foreground, var(--foreground));
5039
+ text-decoration: none;
5040
+ color: var(--foreground);
5041
+ transition: all 0.15s ease;
5042
+ }
5043
+
5044
+ .dl-source-card:hover {
5045
+ border-color: var(--ring);
5046
+ background-color: var(--accent);
5047
+ }
5048
+
5049
+ .dl-source-card__meta {
5050
+ display: flex;
5051
+ align-items: center;
5052
+ gap: 0.375rem;
5053
+ font-size: 0.6875rem;
5054
+ color: var(--muted-foreground);
5055
+ }
5056
+
5057
+ .dl-source-card__index {
5058
+ display: inline-flex;
5059
+ align-items: center;
5060
+ justify-content: center;
5061
+ width: 0.875rem;
5062
+ height: 0.875rem;
5063
+ border-radius: 9999px;
5064
+ background-color: var(--muted);
5065
+ font-weight: 600;
5066
+ font-size: 0.625rem;
5067
+ }
5068
+
5069
+ .dl-source-card__domain {
5070
+ overflow: hidden;
5071
+ text-overflow: ellipsis;
5072
+ white-space: nowrap;
5073
+ }
5074
+
5075
+ .dl-source-card__title {
5076
+ margin-top: 0.25rem;
5077
+ font-size: 0.75rem;
5078
+ font-weight: 500;
5079
+ line-height: 1.3;
5080
+ display: -webkit-box;
5081
+ -webkit-line-clamp: 2;
5082
+ -webkit-box-orient: vertical;
5083
+ overflow: hidden;
5084
+ }
5085
+
5086
+ /* ── stack-trace/stack-trace.css ── */
5087
+ .dl-stack-trace {
5088
+ display: flex;
5089
+ flex-direction: column;
5090
+ width: 100%;
5091
+ border-radius: var(--radius-md, 0.375rem);
5092
+ border: 1px solid var(--border);
5093
+ background-color: var(--card, var(--background));
5094
+ overflow: hidden;
5095
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5096
+ font-size: 0.8125rem;
5097
+ }
5098
+
5099
+ .dl-stack-trace__header {
5100
+ display: flex;
5101
+ align-items: flex-start;
5102
+ justify-content: space-between;
5103
+ padding: 0.625rem 0.875rem;
5104
+ background-color: color-mix(
5105
+ in oklch,
5106
+ var(--destructive) 10%,
5107
+ var(--background)
5108
+ );
5109
+ border-bottom: 1px solid var(--border);
5110
+ gap: 0.75rem;
5111
+ }
5112
+
5113
+ .dl-stack-trace__title {
5114
+ display: flex;
5115
+ flex-direction: column;
5116
+ gap: 0.125rem;
5117
+ }
5118
+
5119
+ .dl-stack-trace__error-type {
5120
+ font-weight: 700;
5121
+ color: var(--destructive);
5122
+ font-size: 0.875rem;
5123
+ }
5124
+
5125
+ .dl-stack-trace__message {
5126
+ color: var(--foreground);
5127
+ font-size: 0.8125rem;
5128
+ line-height: 1.4;
5129
+ word-break: break-word;
5130
+ }
5131
+
5132
+ .dl-stack-trace__frames {
5133
+ display: flex;
5134
+ flex-direction: column;
5135
+ divide-y: 1px solid var(--border);
5136
+ max-height: 22rem;
5137
+ overflow-y: auto;
5138
+ }
5139
+
5140
+ .dl-stack-frame {
5141
+ display: flex;
5142
+ flex-direction: column;
5143
+ padding: 0.5rem 0.875rem;
5144
+ border-bottom: 1px solid var(--border);
5145
+ transition: background-color 0.12s ease;
5146
+ }
5147
+
5148
+ .dl-stack-frame:last-child {
5149
+ border-bottom: none;
5150
+ }
5151
+
5152
+ .dl-stack-frame:hover {
5153
+ background-color: var(--accent);
5154
+ }
5155
+
5156
+ .dl-stack-frame--internal {
5157
+ opacity: 0.65;
5158
+ }
5159
+
5160
+ .dl-stack-frame__header {
5161
+ display: flex;
5162
+ align-items: baseline;
5163
+ justify-content: space-between;
5164
+ gap: 0.5rem;
5165
+ cursor: pointer;
5166
+ user-select: none;
5167
+ }
5168
+
5169
+ .dl-stack-frame__fn {
5170
+ font-weight: 600;
5171
+ color: var(--primary);
5172
+ }
5173
+
5174
+ .dl-stack-frame__location {
5175
+ color: var(--muted-foreground);
5176
+ font-size: 0.75rem;
5177
+ overflow: hidden;
5178
+ text-overflow: ellipsis;
5179
+ white-space: nowrap;
5180
+ }
5181
+
5182
+ .dl-stack-frame__snippet {
5183
+ margin-top: 0.375rem;
5184
+ padding: 0.375rem 0.5rem;
5185
+ background-color: var(--muted);
5186
+ border-radius: var(--radius-sm, 0.25rem);
5187
+ font-size: 0.75rem;
5188
+ line-height: 1.4;
5189
+ white-space: pre-wrap;
5190
+ color: var(--foreground);
3421
5191
  }
3422
5192
 
3423
5193
  /* ── status-badge/status-badge.css ── */
@@ -3521,6 +5291,132 @@
3521
5291
  color: var(--muted-foreground);
3522
5292
  }
3523
5293
 
5294
+ /* ── subagent/subagent.css ── */
5295
+ .dl-subagent {
5296
+ display: flex;
5297
+ flex-direction: column;
5298
+ width: 100%;
5299
+ border-radius: var(--radius-md, 0.375rem);
5300
+ border: 1px solid var(--border);
5301
+ background-color: var(--card, var(--background));
5302
+ overflow: hidden;
5303
+ font-size: 0.8125rem;
5304
+ }
5305
+
5306
+ .dl-subagent__header {
5307
+ display: flex;
5308
+ align-items: center;
5309
+ justify-content: space-between;
5310
+ padding: 0.5rem 0.75rem;
5311
+ background-color: var(--muted);
5312
+ border-bottom: 1px solid var(--border);
5313
+ cursor: pointer;
5314
+ user-select: none;
5315
+ }
5316
+
5317
+ .dl-subagent__title-area {
5318
+ display: flex;
5319
+ align-items: center;
5320
+ gap: 0.5rem;
5321
+ }
5322
+
5323
+ .dl-subagent__avatar {
5324
+ display: flex;
5325
+ align-items: center;
5326
+ justify-content: center;
5327
+ width: 1.5rem;
5328
+ height: 1.5rem;
5329
+ border-radius: 9999px;
5330
+ background-color: var(--primary);
5331
+ color: var(--primary-foreground);
5332
+ font-size: 0.6875rem;
5333
+ font-weight: 700;
5334
+ }
5335
+
5336
+ .dl-subagent__meta {
5337
+ display: flex;
5338
+ flex-direction: column;
5339
+ }
5340
+
5341
+ .dl-subagent__name {
5342
+ font-weight: 600;
5343
+ color: var(--foreground);
5344
+ line-height: 1.2;
5345
+ }
5346
+
5347
+ .dl-subagent__role {
5348
+ font-size: 0.6875rem;
5349
+ color: var(--muted-foreground);
5350
+ }
5351
+
5352
+ .dl-subagent__badges {
5353
+ display: flex;
5354
+ align-items: center;
5355
+ gap: 0.375rem;
5356
+ }
5357
+
5358
+ .dl-subagent__content {
5359
+ padding: 0.75rem;
5360
+ background-color: var(--background);
5361
+ font-size: 0.75rem;
5362
+ line-height: 1.5;
5363
+ color: var(--foreground);
5364
+ }
5365
+
5366
+ /* ── suggestion/suggestion.css ── */
5367
+ .dl-suggestion-list {
5368
+ display: flex;
5369
+ gap: 0.5rem;
5370
+ width: 100%;
5371
+ }
5372
+
5373
+ .dl-suggestion-list--wrap {
5374
+ flex-wrap: wrap;
5375
+ }
5376
+
5377
+ .dl-suggestion-list--scroll {
5378
+ overflow-x: auto;
5379
+ padding-bottom: 0.25rem;
5380
+ }
5381
+
5382
+ .dl-suggestion {
5383
+ display: inline-flex;
5384
+ align-items: center;
5385
+ gap: 0.375rem;
5386
+ padding: 0.375rem 0.75rem;
5387
+ border-radius: 9999px;
5388
+ border: 1px solid var(--border);
5389
+ background-color: var(--secondary, var(--background));
5390
+ color: var(--foreground);
5391
+ font-size: 0.75rem;
5392
+ font-weight: 500;
5393
+ cursor: pointer;
5394
+ text-align: left;
5395
+ transition: all 0.15s ease;
5396
+ white-space: nowrap;
5397
+ }
5398
+
5399
+ .dl-suggestion:hover {
5400
+ background-color: var(--accent);
5401
+ border-color: color-mix(in oklch, var(--primary) 30%, var(--border));
5402
+ }
5403
+
5404
+ .dl-suggestion__icon {
5405
+ display: inline-flex;
5406
+ align-items: center;
5407
+ justify-content: center;
5408
+ color: var(--muted-foreground);
5409
+ }
5410
+
5411
+ .dl-suggestion:hover .dl-suggestion__icon {
5412
+ color: var(--primary);
5413
+ }
5414
+
5415
+ .dl-suggestion__description {
5416
+ color: var(--muted-foreground);
5417
+ font-weight: 400;
5418
+ }
5419
+
3524
5420
  /* ── switch/switch.css ── */
3525
5421
  .dl-switch {
3526
5422
  display: inline-flex;
@@ -3594,76 +5490,248 @@
3594
5490
  border-top: 1px solid var(--border);
3595
5491
  font-weight: 500;
3596
5492
  }
3597
- .dl-table__row {
3598
- border-bottom: 1px solid var(--border);
3599
- transition: background-color 0.1s;
5493
+ .dl-table__row {
5494
+ border-bottom: 1px solid var(--border);
5495
+ transition: background-color 0.1s;
5496
+ }
5497
+ .dl-table__head-cell {
5498
+ height: var(--control-height-md, 2.5rem);
5499
+ padding: var(--table-row-padding-y, 0.5rem)
5500
+ var(--table-row-padding-x, 0.75rem);
5501
+ text-align: left;
5502
+ font-weight: 500;
5503
+ color: var(--muted-foreground);
5504
+ white-space: nowrap;
5505
+ }
5506
+ .dl-table__cell {
5507
+ padding: var(--table-row-padding-y, 0.75rem)
5508
+ var(--table-row-padding-x, 0.75rem);
5509
+ vertical-align: middle;
5510
+ }
5511
+ .dl-table__caption {
5512
+ margin-top: 1rem;
5513
+ font-size: 0.875rem;
5514
+ color: var(--muted-foreground);
5515
+ }
5516
+
5517
+ /* ── tabs/tabs.css ── */
5518
+ .dl-tabs-list {
5519
+ display: inline-flex;
5520
+ height: var(--control-height-md, 2.25rem);
5521
+ align-items: center;
5522
+ justify-content: center;
5523
+ border-radius: var(--radius, 0.5rem);
5524
+ background-color: var(--muted);
5525
+ padding: 0.25rem;
5526
+ color: var(--muted-foreground);
5527
+ }
5528
+ .dl-tabs-trigger {
5529
+ display: inline-flex;
5530
+ align-items: center;
5531
+ justify-content: center;
5532
+ white-space: nowrap;
5533
+ border-radius: calc(var(--radius, 0.5rem) - 2px);
5534
+ padding: 0.25rem 0.75rem;
5535
+ font-size: 0.875rem;
5536
+ font-weight: 500;
5537
+ cursor: pointer;
5538
+ font-family: inherit;
5539
+ transition: all 0.15s ease;
5540
+ border: none;
5541
+ background: transparent;
5542
+ color: inherit;
5543
+ }
5544
+ .dl-tabs-trigger:focus-visible {
5545
+ outline: 2px solid var(--ring);
5546
+ outline-offset: 2px;
5547
+ }
5548
+ .dl-tabs-trigger:disabled {
5549
+ pointer-events: none;
5550
+ opacity: 0.5;
5551
+ }
5552
+ .dl-tabs-trigger[data-state="active"] {
5553
+ background-color: var(--background);
5554
+ color: var(--foreground);
5555
+ box-shadow: 0 1px 3px rgb(0 0 0/0.1);
5556
+ }
5557
+ .dl-tabs-content {
5558
+ margin-top: 0.5rem;
5559
+ }
5560
+ .dl-tabs-content:focus-visible {
5561
+ outline: 2px solid var(--ring);
5562
+ outline-offset: 2px;
5563
+ }
5564
+
5565
+ /* ── terminal/terminal.css ── */
5566
+ .dl-terminal {
5567
+ display: flex;
5568
+ flex-direction: column;
5569
+ width: 100%;
5570
+ border-radius: var(--radius-md, 0.375rem);
5571
+ border: 1px solid var(--border);
5572
+ background-color: var(--secondary, #0d1117);
5573
+ color: var(--foreground);
5574
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5575
+ font-size: 0.8125rem;
5576
+ overflow: hidden;
5577
+ }
5578
+
5579
+ .dl-terminal__header {
5580
+ display: flex;
5581
+ align-items: center;
5582
+ justify-content: space-between;
5583
+ padding: 0.375rem 0.75rem;
5584
+ border-bottom: 1px solid var(--border);
5585
+ background-color: var(--background);
5586
+ font-size: 0.75rem;
5587
+ }
5588
+
5589
+ .dl-terminal__dots {
5590
+ display: flex;
5591
+ align-items: center;
5592
+ gap: 0.375rem;
5593
+ }
5594
+
5595
+ .dl-terminal__dot {
5596
+ width: 0.625rem;
5597
+ height: 0.625rem;
5598
+ border-radius: 9999px;
5599
+ background-color: var(--muted-foreground);
5600
+ opacity: 0.4;
5601
+ }
5602
+
5603
+ .dl-terminal__title {
5604
+ display: flex;
5605
+ align-items: center;
5606
+ gap: 0.375rem;
5607
+ font-weight: 500;
5608
+ color: var(--muted-foreground);
5609
+ }
5610
+
5611
+ .dl-terminal__output {
5612
+ margin: 0;
5613
+ padding: 0.75rem 1rem;
5614
+ overflow-y: auto;
5615
+ line-height: 1.5;
5616
+ white-space: pre-wrap;
5617
+ word-break: break-all;
5618
+ color: var(--foreground);
5619
+ }
5620
+
5621
+ .dl-terminal__prompt-line {
5622
+ color: var(--primary);
5623
+ font-weight: 600;
5624
+ margin-bottom: 0.25rem;
5625
+ }
5626
+
5627
+ /* ── test-results/test-results.css ── */
5628
+ .dl-test-results {
5629
+ display: flex;
5630
+ flex-direction: column;
5631
+ width: 100%;
5632
+ border-radius: var(--radius-md, 0.375rem);
5633
+ border: 1px solid var(--border);
5634
+ background-color: var(--card, var(--background));
5635
+ overflow: hidden;
5636
+ font-size: 0.8125rem;
5637
+ }
5638
+
5639
+ .dl-test-results__header {
5640
+ display: flex;
5641
+ align-items: center;
5642
+ justify-content: space-between;
5643
+ padding: 0.625rem 0.875rem;
5644
+ background-color: var(--muted);
5645
+ border-bottom: 1px solid var(--border);
5646
+ }
5647
+
5648
+ .dl-test-results__summary {
5649
+ display: flex;
5650
+ align-items: center;
5651
+ gap: 0.75rem;
5652
+ }
5653
+
5654
+ .dl-test-results__badge {
5655
+ display: inline-flex;
5656
+ align-items: center;
5657
+ gap: 0.25rem;
5658
+ font-weight: 600;
5659
+ font-size: 0.75rem;
5660
+ }
5661
+
5662
+ .dl-test-results__badge--passed {
5663
+ color: var(--success);
3600
5664
  }
3601
- .dl-table__head-cell {
3602
- height: var(--control-height-md, 2.5rem);
3603
- padding: var(--table-row-padding-y, 0.5rem)
3604
- var(--table-row-padding-x, 0.75rem);
3605
- text-align: left;
3606
- font-weight: 500;
5665
+
5666
+ .dl-test-results__badge--failed {
5667
+ color: var(--destructive);
5668
+ }
5669
+
5670
+ .dl-test-results__badge--skipped {
3607
5671
  color: var(--muted-foreground);
3608
- white-space: nowrap;
3609
5672
  }
3610
- .dl-table__cell {
3611
- padding: var(--table-row-padding-y, 0.75rem)
3612
- var(--table-row-padding-x, 0.75rem);
3613
- vertical-align: middle;
5673
+
5674
+ .dl-test-results__list {
5675
+ display: flex;
5676
+ flex-direction: column;
5677
+ divide-y: 1px solid var(--border);
5678
+ max-height: 20rem;
5679
+ overflow-y: auto;
3614
5680
  }
3615
- .dl-table__caption {
3616
- margin-top: 1rem;
3617
- font-size: 0.875rem;
3618
- color: var(--muted-foreground);
5681
+
5682
+ .dl-test-case {
5683
+ display: flex;
5684
+ flex-direction: column;
5685
+ padding: 0.5rem 0.875rem;
5686
+ transition: background-color 0.12s ease;
3619
5687
  }
3620
5688
 
3621
- /* ── tabs/tabs.css ── */
3622
- .dl-tabs-list {
3623
- display: inline-flex;
3624
- height: var(--control-height-md, 2.25rem);
3625
- align-items: center;
3626
- justify-content: center;
3627
- border-radius: var(--radius, 0.5rem);
3628
- background-color: var(--muted);
3629
- padding: 0.25rem;
3630
- color: var(--muted-foreground);
5689
+ .dl-test-case:hover {
5690
+ background-color: var(--accent);
3631
5691
  }
3632
- .dl-tabs-trigger {
3633
- display: inline-flex;
5692
+
5693
+ .dl-test-case__row {
5694
+ display: flex;
3634
5695
  align-items: center;
3635
- justify-content: center;
3636
- white-space: nowrap;
3637
- border-radius: calc(var(--radius, 0.5rem) - 2px);
3638
- padding: 0.25rem 0.75rem;
3639
- font-size: 0.875rem;
3640
- font-weight: 500;
3641
- cursor: pointer;
3642
- font-family: inherit;
3643
- transition: all 0.15s ease;
3644
- border: none;
3645
- background: transparent;
3646
- color: inherit;
3647
- }
3648
- .dl-tabs-trigger:focus-visible {
3649
- outline: 2px solid var(--ring);
3650
- outline-offset: 2px;
5696
+ justify-content: space-between;
5697
+ gap: 0.5rem;
3651
5698
  }
3652
- .dl-tabs-trigger:disabled {
3653
- pointer-events: none;
3654
- opacity: 0.5;
5699
+
5700
+ .dl-test-case__info {
5701
+ display: flex;
5702
+ align-items: center;
5703
+ gap: 0.5rem;
5704
+ min-width: 0;
3655
5705
  }
3656
- .dl-tabs-trigger[data-state="active"] {
3657
- background-color: var(--background);
5706
+
5707
+ .dl-test-case__name {
5708
+ font-weight: 500;
3658
5709
  color: var(--foreground);
3659
- box-shadow: 0 1px 3px rgb(0 0 0/0.1);
5710
+ overflow: hidden;
5711
+ text-overflow: ellipsis;
5712
+ white-space: nowrap;
3660
5713
  }
3661
- .dl-tabs-content {
3662
- margin-top: 0.5rem;
5714
+
5715
+ .dl-test-case__duration {
5716
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5717
+ font-size: 0.6875rem;
5718
+ color: var(--muted-foreground);
5719
+ shrink: 0;
3663
5720
  }
3664
- .dl-tabs-content:focus-visible {
3665
- outline: 2px solid var(--ring);
3666
- outline-offset: 2px;
5721
+
5722
+ .dl-test-case__error {
5723
+ margin-top: 0.375rem;
5724
+ padding: 0.375rem 0.5rem;
5725
+ background-color: color-mix(
5726
+ in oklch,
5727
+ var(--destructive) 10%,
5728
+ var(--background)
5729
+ );
5730
+ border-radius: var(--radius-sm, 0.25rem);
5731
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5732
+ font-size: 0.75rem;
5733
+ color: var(--destructive);
5734
+ white-space: pre-wrap;
3667
5735
  }
3668
5736
 
3669
5737
  /* ── textarea/textarea.css ── */
@@ -3791,6 +5859,119 @@
3791
5859
  gap: 0.25rem;
3792
5860
  }
3793
5861
 
5862
+ /* ── tool-call/tool-call.css ── */
5863
+ .dl-tool-call {
5864
+ display: flex;
5865
+ flex-direction: column;
5866
+ width: 100%;
5867
+ border-radius: var(--radius-md, 0.375rem);
5868
+ border: 1px solid var(--border);
5869
+ background-color: var(--card, var(--background));
5870
+ font-size: 0.8125rem;
5871
+ overflow: hidden;
5872
+ }
5873
+
5874
+ .dl-tool-call__header {
5875
+ display: flex;
5876
+ align-items: center;
5877
+ justify-content: space-between;
5878
+ width: 100%;
5879
+ padding: 0.5rem 0.75rem;
5880
+ background: transparent;
5881
+ border: none;
5882
+ cursor: pointer;
5883
+ text-align: left;
5884
+ font: inherit;
5885
+ color: var(--foreground);
5886
+ }
5887
+
5888
+ .dl-tool-call__title-wrap {
5889
+ display: flex;
5890
+ align-items: center;
5891
+ gap: 0.5rem;
5892
+ }
5893
+
5894
+ .dl-tool-call__icon {
5895
+ display: inline-flex;
5896
+ align-items: center;
5897
+ justify-content: center;
5898
+ width: 1.25rem;
5899
+ height: 1.25rem;
5900
+ color: var(--muted-foreground);
5901
+ }
5902
+
5903
+ .dl-tool-call__name {
5904
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5905
+ font-weight: 600;
5906
+ font-size: 0.75rem;
5907
+ }
5908
+
5909
+ .dl-tool-call__actions {
5910
+ display: flex;
5911
+ align-items: center;
5912
+ gap: 0.5rem;
5913
+ }
5914
+
5915
+ .dl-tool-call__status-badge {
5916
+ display: inline-flex;
5917
+ align-items: center;
5918
+ gap: 0.25rem;
5919
+ font-size: 0.6875rem;
5920
+ font-weight: 500;
5921
+ padding: 0.125rem 0.375rem;
5922
+ border-radius: var(--radius-sm, 0.25rem);
5923
+ }
5924
+
5925
+ .dl-tool-call__status-badge--running {
5926
+ background-color: color-mix(in oklch, var(--primary) 12%, transparent);
5927
+ color: var(--primary);
5928
+ }
5929
+
5930
+ .dl-tool-call__status-badge--success {
5931
+ background-color: color-mix(in oklch, var(--success) 12%, transparent);
5932
+ color: var(--success);
5933
+ }
5934
+
5935
+ .dl-tool-call__status-badge--error {
5936
+ background-color: color-mix(in oklch, var(--destructive) 12%, transparent);
5937
+ color: var(--destructive);
5938
+ }
5939
+
5940
+ .dl-tool-call__chevron {
5941
+ width: 0.875rem;
5942
+ height: 0.875rem;
5943
+ color: var(--muted-foreground);
5944
+ transition: transform 0.2s ease;
5945
+ }
5946
+
5947
+ .dl-tool-call[data-state="open"] .dl-tool-call__chevron {
5948
+ transform: rotate(180deg);
5949
+ }
5950
+
5951
+ .dl-tool-call__body {
5952
+ display: flex;
5953
+ flex-direction: column;
5954
+ gap: 0.5rem;
5955
+ padding: 0.5rem 0.75rem 0.75rem;
5956
+ border-top: 1px solid var(--border);
5957
+ background-color: var(--secondary, var(--background));
5958
+ }
5959
+
5960
+ .dl-tool-call__args {
5961
+ display: flex;
5962
+ flex-wrap: wrap;
5963
+ gap: 0.375rem;
5964
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5965
+ font-size: 0.6875rem;
5966
+ }
5967
+
5968
+ .dl-tool-call__arg-pill {
5969
+ padding: 0.125rem 0.375rem;
5970
+ border-radius: var(--radius-sm, 0.25rem);
5971
+ background-color: var(--background);
5972
+ border: 1px solid var(--border);
5973
+ }
5974
+
3794
5975
  /* ── tooltip/tooltip.css ── */
3795
5976
  .dl-tooltip {
3796
5977
  z-index: 50;
@@ -3810,6 +5991,108 @@
3810
5991
  animation: dl-fade-out 100ms ease;
3811
5992
  }
3812
5993
 
5994
+ /* ── trace/trace.css ── */
5995
+ .dl-trace {
5996
+ position: relative;
5997
+ display: flex;
5998
+ flex-direction: column;
5999
+ width: 100%;
6000
+ font-size: 0.8125rem;
6001
+ }
6002
+
6003
+ .dl-trace-line {
6004
+ position: relative;
6005
+ display: flex;
6006
+ align-items: center;
6007
+ gap: 0.625rem;
6008
+ padding: 0.375rem 0;
6009
+ color: var(--foreground);
6010
+ }
6011
+
6012
+ .dl-trace-icon {
6013
+ display: inline-flex;
6014
+ align-items: center;
6015
+ justify-content: center;
6016
+ width: 1.25rem;
6017
+ height: 1.25rem;
6018
+ border-radius: 9999px;
6019
+ background-color: var(--muted);
6020
+ color: var(--muted-foreground);
6021
+ flex-shrink: 0;
6022
+ }
6023
+
6024
+ .dl-trace-icon--running {
6025
+ background-color: transparent;
6026
+ color: var(--primary);
6027
+ animation: dl-spin 1s linear infinite;
6028
+ }
6029
+
6030
+ .dl-trace-icon--success {
6031
+ background-color: color-mix(in oklch, var(--success) 15%, transparent);
6032
+ color: var(--success);
6033
+ }
6034
+
6035
+ .dl-trace-icon--error {
6036
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
6037
+ color: var(--destructive);
6038
+ }
6039
+
6040
+ .dl-trace-title {
6041
+ display: flex;
6042
+ align-items: center;
6043
+ gap: 0.5rem;
6044
+ font-weight: 500;
6045
+ line-height: 1.25rem;
6046
+ color: var(--foreground);
6047
+ }
6048
+
6049
+ .dl-trace-content {
6050
+ margin-left: 1.875rem;
6051
+ padding: 0.25rem 0 0.5rem;
6052
+ color: var(--muted-foreground);
6053
+ }
6054
+
6055
+ .dl-trace-collapsible-trigger {
6056
+ display: flex;
6057
+ align-items: center;
6058
+ width: 100%;
6059
+ background: transparent;
6060
+ border: none;
6061
+ padding: 0;
6062
+ cursor: pointer;
6063
+ text-align: left;
6064
+ font: inherit;
6065
+ color: inherit;
6066
+ }
6067
+
6068
+ .dl-trace-collapsible-trigger:hover .dl-trace-title {
6069
+ color: var(--primary);
6070
+ }
6071
+
6072
+ /* ── Shimmer Animation Utility for AI Streaming ── */
6073
+ @keyframes dl-shimmer-sweep {
6074
+ 0% {
6075
+ background-position: -200% 0;
6076
+ }
6077
+ 100% {
6078
+ background-position: 200% 0;
6079
+ }
6080
+ }
6081
+
6082
+ .dl-shimmer {
6083
+ background: linear-gradient(
6084
+ 90deg,
6085
+ var(--muted-foreground) 0%,
6086
+ var(--foreground) 50%,
6087
+ var(--muted-foreground) 100%
6088
+ );
6089
+ background-size: 200% 100%;
6090
+ -webkit-background-clip: text;
6091
+ background-clip: text;
6092
+ -webkit-text-fill-color: transparent;
6093
+ animation: dl-shimmer-sweep 2.2s infinite linear;
6094
+ }
6095
+
3813
6096
  /* ── typography/typography.css ── */
3814
6097
  /**
3815
6098
  * @file typography.css