@yuva-devlab/ui 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) 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/legal-footer/legal-footer.css +98 -0
  23. package/dist/components/legal-footer/legal-footer.mdx +38 -0
  24. package/dist/components/message/message.css +89 -0
  25. package/dist/components/message/message.mdx +14 -0
  26. package/dist/components/model-selector/model-selector.css +138 -0
  27. package/dist/components/model-selector/model-selector.mdx +26 -0
  28. package/dist/components/multi-select/multi-select.css +212 -0
  29. package/dist/components/multi-select/multi-select.mdx +30 -0
  30. package/dist/components/password-input/password-input.css +21 -0
  31. package/dist/components/password-input/password-input.mdx +30 -0
  32. package/dist/components/plan/plan.css +106 -0
  33. package/dist/components/plan/plan.mdx +22 -0
  34. package/dist/components/popover/popover.css +0 -5
  35. package/dist/components/prompt-input/prompt-input.css +140 -0
  36. package/dist/components/prompt-input/prompt-input.mdx +22 -0
  37. package/dist/components/queue/queue.css +76 -0
  38. package/dist/components/queue/queue.mdx +18 -0
  39. package/dist/components/search-input/search-input.css +21 -0
  40. package/dist/components/search-input/search-input.mdx +30 -0
  41. package/dist/components/select/select.css +1 -1
  42. package/dist/components/sonner/sonner.css +68 -17
  43. package/dist/components/sonner/sonner.mdx +5 -3
  44. package/dist/components/sources/sources.css +105 -0
  45. package/dist/components/sources/sources.mdx +18 -0
  46. package/dist/components/stack-trace/stack-trace.css +105 -0
  47. package/dist/components/stack-trace/stack-trace.mdx +18 -0
  48. package/dist/components/subagent/subagent.css +70 -0
  49. package/dist/components/subagent/subagent.mdx +18 -0
  50. package/dist/components/suggestion/suggestion.css +52 -0
  51. package/dist/components/suggestion/suggestion.mdx +14 -0
  52. package/dist/components/terminal/terminal.css +60 -0
  53. package/dist/components/terminal/terminal.mdx +26 -0
  54. package/dist/components/test-results/test-results.css +108 -0
  55. package/dist/components/test-results/test-results.mdx +18 -0
  56. package/dist/components/tool-call/tool-call.css +111 -0
  57. package/dist/components/tool-call/tool-call.mdx +22 -0
  58. package/dist/components/trace/trace.css +100 -0
  59. package/dist/components/trace/trace.mdx +18 -0
  60. package/dist/components.css +2716 -333
  61. package/dist/index.cjs +3605 -793
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +1065 -8
  64. package/dist/index.d.ts +1065 -8
  65. package/dist/index.js +3638 -842
  66. package/dist/index.js.map +1 -1
  67. package/dist/preset.css +0 -1
  68. package/dist/styles/common.css +0 -40
  69. package/dist/styles/components.css +2716 -333
  70. package/dist/styles/preset.css +0 -1
  71. package/package.json +4 -3
@@ -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;
@@ -1881,6 +2570,106 @@
1881
2570
  margin-inline-start: 0.25rem;
1882
2571
  }
1883
2572
 
2573
+ /* ── legal-footer/legal-footer.css ── */
2574
+ /**
2575
+ * @file legal-footer.css
2576
+ * @description Scoped styles for the LegalFooter component.
2577
+ * Governed by semantic design tokens and W3C Cascade Layers.
2578
+ */
2579
+
2580
+ .dl-legal-footer {
2581
+ box-sizing: border-box;
2582
+ color: var(--muted-foreground);
2583
+ font-family: inherit;
2584
+ }
2585
+
2586
+ .dl-legal-footer--login {
2587
+ display: flex;
2588
+ flex-direction: column;
2589
+ align-items: center;
2590
+ justify-content: center;
2591
+ gap: 0.375rem;
2592
+ width: 100%;
2593
+ padding-top: 1rem;
2594
+ padding-bottom: 1rem;
2595
+ text-align: center;
2596
+ font-size: 0.75rem;
2597
+ line-height: 1rem;
2598
+ }
2599
+
2600
+ .dl-legal-footer__links {
2601
+ display: flex;
2602
+ align-items: center;
2603
+ justify-content: center;
2604
+ flex-wrap: wrap;
2605
+ gap: 0.75rem;
2606
+ font-size: 0.75rem;
2607
+ color: var(--muted-foreground);
2608
+ }
2609
+
2610
+ .dl-legal-footer__app-name {
2611
+ font-weight: 500;
2612
+ color: var(--foreground);
2613
+ }
2614
+
2615
+ .dl-legal-footer__divider {
2616
+ opacity: 0.4;
2617
+ user-select: none;
2618
+ }
2619
+
2620
+ .dl-legal-footer__link {
2621
+ color: var(--muted-foreground);
2622
+ text-decoration: none;
2623
+ transition: color 0.15s ease-in-out;
2624
+ }
2625
+
2626
+ .dl-legal-footer__link:hover {
2627
+ color: var(--foreground);
2628
+ }
2629
+
2630
+ .dl-legal-footer__copyright {
2631
+ margin: 0;
2632
+ font-size: 0.6875rem;
2633
+ opacity: 0.75;
2634
+ }
2635
+
2636
+ .dl-legal-footer--sidebar {
2637
+ display: flex;
2638
+ align-items: center;
2639
+ justify-content: space-between;
2640
+ width: 100%;
2641
+ padding: 0.5rem 0.75rem;
2642
+ font-size: 0.6875rem;
2643
+ border-top: 1px solid color-mix(in oklab, var(--border) 40%, transparent);
2644
+ color: var(--muted-foreground);
2645
+ opacity: 0.8;
2646
+ }
2647
+
2648
+ .dl-legal-footer--settings {
2649
+ display: flex;
2650
+ flex-direction: column;
2651
+ gap: 0.25rem;
2652
+ width: 100%;
2653
+ font-size: 0.75rem;
2654
+ }
2655
+
2656
+ .dl-legal-footer__meta-row {
2657
+ display: flex;
2658
+ align-items: center;
2659
+ justify-content: space-between;
2660
+ font-weight: 500;
2661
+ color: var(--foreground);
2662
+ }
2663
+
2664
+ .dl-legal-footer__version-badge {
2665
+ font-family: monospace;
2666
+ font-size: 0.6875rem;
2667
+ color: var(--muted-foreground);
2668
+ background-color: color-mix(in oklab, var(--muted) 50%, transparent);
2669
+ padding: 0.125rem 0.375rem;
2670
+ border-radius: var(--radius-sm, 0.25rem);
2671
+ }
2672
+
1884
2673
  /* ── loading-state/loading-state.css ── */
1885
2674
  .dl-loading {
1886
2675
  display: flex;
@@ -1958,57 +2747,148 @@
1958
2747
  color: var(--accent-foreground);
1959
2748
  }
1960
2749
 
1961
- /* ── metric-card/metric-card.css ── */
1962
- .dl-metrics-grid {
1963
- display: grid;
1964
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
1965
- border: 1px solid var(--border);
1966
- border-radius: var(--radius, 0.5rem);
1967
- background: var(--card);
1968
- overflow: hidden;
1969
- }
1970
-
1971
- .dl-metric-card {
2750
+ /* ── message/message.css ── */
2751
+ .dl-message {
1972
2752
  display: flex;
1973
- flex-direction: column;
1974
- padding: 1.25rem;
1975
- border-right: 1px solid var(--border);
1976
- position: relative;
1977
- transition: background-color 0.15s ease;
2753
+ gap: 0.75rem;
2754
+ width: 100%;
2755
+ padding: 0.75rem 0;
2756
+ color: var(--foreground);
2757
+ font-size: 0.875rem;
2758
+ line-height: 1.5;
1978
2759
  }
1979
2760
 
1980
- .dl-metric-card:last-child {
1981
- border-right: none;
2761
+ .dl-message--user {
2762
+ flex-direction: row-reverse;
1982
2763
  }
1983
2764
 
1984
- .dl-metric-card__header {
1985
- display: flex;
2765
+ .dl-message__avatar {
2766
+ display: inline-flex;
1986
2767
  align-items: center;
1987
- justify-content: space-between;
1988
- margin-bottom: 0.5rem;
2768
+ justify-content: center;
2769
+ width: 2rem;
2770
+ height: 2rem;
2771
+ border-radius: 9999px;
2772
+ background-color: var(--secondary);
2773
+ color: var(--secondary-foreground);
2774
+ font-weight: 600;
2775
+ font-size: 0.75rem;
2776
+ flex-shrink: 0;
2777
+ border: 1px solid var(--border);
1989
2778
  }
1990
2779
 
1991
- .dl-metric-card__label {
1992
- font-size: 0.6875rem;
1993
- font-weight: 500;
1994
- text-transform: uppercase;
1995
- letter-spacing: 0.05em;
1996
- color: var(--muted-foreground);
2780
+ .dl-message--assistant .dl-message__avatar {
2781
+ background-color: color-mix(in oklch, var(--primary) 12%, transparent);
2782
+ color: var(--primary);
2783
+ border-color: color-mix(in oklch, var(--primary) 25%, transparent);
1997
2784
  }
1998
2785
 
1999
- .dl-metric-card__icon {
2000
- color: var(--muted-foreground);
2001
- display: inline-flex;
2786
+ .dl-message__body {
2787
+ display: flex;
2788
+ flex-direction: column;
2789
+ gap: 0.375rem;
2790
+ max-width: 80%;
2002
2791
  }
2003
2792
 
2004
- .dl-metric-card__value-row {
2005
- display: flex;
2006
- align-items: baseline;
2007
- gap: 0.5rem;
2793
+ .dl-message--user .dl-message__body {
2794
+ align-items: flex-end;
2008
2795
  }
2009
2796
 
2010
- .dl-metric-card__value {
2011
- font-size: 1.75rem;
2797
+ .dl-message__content {
2798
+ border-radius: var(--radius-lg, 0.5rem);
2799
+ padding: 0.625rem 0.875rem;
2800
+ background-color: var(--card, var(--background));
2801
+ border: 1px solid var(--border);
2802
+ }
2803
+
2804
+ .dl-message--user .dl-message__content {
2805
+ background-color: var(--primary);
2806
+ color: var(--primary-foreground);
2807
+ border-color: var(--primary);
2808
+ }
2809
+
2810
+ .dl-message__actions {
2811
+ display: flex;
2812
+ align-items: center;
2813
+ gap: 0.25rem;
2814
+ opacity: 0.8;
2815
+ transition: opacity 0.15s ease;
2816
+ }
2817
+
2818
+ .dl-message:hover .dl-message__actions {
2819
+ opacity: 1;
2820
+ }
2821
+
2822
+ .dl-message__action-btn {
2823
+ display: inline-flex;
2824
+ align-items: center;
2825
+ justify-content: center;
2826
+ width: 1.5rem;
2827
+ height: 1.5rem;
2828
+ border-radius: var(--radius-sm, 0.25rem);
2829
+ border: none;
2830
+ background: transparent;
2831
+ color: var(--muted-foreground);
2832
+ cursor: pointer;
2833
+ transition: all 0.15s ease;
2834
+ }
2835
+
2836
+ .dl-message__action-btn:hover {
2837
+ background-color: var(--secondary);
2838
+ color: var(--foreground);
2839
+ }
2840
+
2841
+ /* ── metric-card/metric-card.css ── */
2842
+ .dl-metrics-grid {
2843
+ display: grid;
2844
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
2845
+ border: 1px solid var(--border);
2846
+ border-radius: var(--radius, 0.5rem);
2847
+ background: var(--card);
2848
+ overflow: hidden;
2849
+ }
2850
+
2851
+ .dl-metric-card {
2852
+ display: flex;
2853
+ flex-direction: column;
2854
+ padding: 1.25rem;
2855
+ border-right: 1px solid var(--border);
2856
+ position: relative;
2857
+ transition: background-color 0.15s ease;
2858
+ }
2859
+
2860
+ .dl-metric-card:last-child {
2861
+ border-right: none;
2862
+ }
2863
+
2864
+ .dl-metric-card__header {
2865
+ display: flex;
2866
+ align-items: center;
2867
+ justify-content: space-between;
2868
+ margin-bottom: 0.5rem;
2869
+ }
2870
+
2871
+ .dl-metric-card__label {
2872
+ font-size: 0.6875rem;
2873
+ font-weight: 500;
2874
+ text-transform: uppercase;
2875
+ letter-spacing: 0.05em;
2876
+ color: var(--muted-foreground);
2877
+ }
2878
+
2879
+ .dl-metric-card__icon {
2880
+ color: var(--muted-foreground);
2881
+ display: inline-flex;
2882
+ }
2883
+
2884
+ .dl-metric-card__value-row {
2885
+ display: flex;
2886
+ align-items: baseline;
2887
+ gap: 0.5rem;
2888
+ }
2889
+
2890
+ .dl-metric-card__value {
2891
+ font-size: 1.75rem;
2012
2892
  font-weight: 600;
2013
2893
  line-height: 1.2;
2014
2894
  color: var(--foreground);
@@ -2028,220 +2908,705 @@
2028
2908
  color: var(--destructive);
2029
2909
  }
2030
2910
 
2031
- /* ── navigation-menu/navigation-menu.css ── */
2032
- .dl-navigation-menu {
2911
+ /* ── model-selector/model-selector.css ── */
2912
+ .dl-model-selector {
2033
2913
  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;
2914
+ display: inline-flex;
2051
2915
  }
2052
2916
 
2053
- .dl-navigation-menu-trigger {
2917
+ .dl-model-selector__trigger {
2054
2918
  display: inline-flex;
2055
- height: var(--control-height-md, 2.25rem);
2056
- width: max-content;
2057
2919
  align-items: center;
2058
- justify-content: center;
2920
+ justify-content: space-between;
2921
+ gap: 0.5rem;
2922
+ padding: 0.375rem 0.625rem;
2923
+ font-size: 0.8125rem;
2924
+ font-weight: 500;
2925
+ line-height: 1;
2059
2926
  border-radius: var(--radius-md, 0.375rem);
2927
+ border: 1px solid var(--border);
2060
2928
  background-color: var(--background);
2061
- padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
2062
- font-size: 0.875rem;
2063
- font-weight: 500;
2929
+ color: var(--foreground);
2064
2930
  cursor: pointer;
2065
- border: none;
2066
- color: inherit;
2931
+ transition: all 0.15s ease;
2932
+ user-select: none;
2067
2933
  font-family: inherit;
2068
- transition:
2069
- background-color 0.15s ease,
2070
- color 0.15s ease;
2071
- outline: none;
2072
2934
  }
2073
2935
 
2074
- .dl-navigation-menu-trigger:hover,
2075
- .dl-navigation-menu-trigger:focus,
2076
- .dl-navigation-menu-trigger[data-state="open"] {
2936
+ .dl-model-selector__trigger:hover:not(:disabled) {
2077
2937
  background-color: var(--accent);
2078
2938
  color: var(--accent-foreground);
2079
2939
  }
2080
2940
 
2081
- .dl-navigation-menu-trigger:disabled {
2082
- pointer-events: none;
2083
- opacity: 0.5;
2084
- cursor: not-allowed;
2085
- }
2086
-
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;
2094
- }
2095
-
2096
- .dl-navigation-menu-trigger[data-state="open"] .dl-navigation-menu-chevron {
2097
- transform: rotate(180deg);
2941
+ .dl-model-selector__trigger:focus-visible {
2942
+ outline: 2px solid var(--ring);
2943
+ outline-offset: 2px;
2098
2944
  }
2099
2945
 
2100
- .dl-navigation-menu-content {
2101
- left: 0;
2102
- top: 0;
2103
- width: 100%;
2946
+ .dl-model-selector__trigger:disabled {
2947
+ opacity: 0.5;
2948
+ cursor: not-allowed;
2104
2949
  }
2105
2950
 
2106
- @media (min-width: 768px) {
2107
- .dl-navigation-menu-content {
2108
- position: absolute;
2109
- width: auto;
2110
- }
2951
+ .dl-model-selector__trigger--sm {
2952
+ padding: 0.25rem 0.5rem;
2953
+ font-size: 0.75rem;
2111
2954
  }
2112
2955
 
2113
- .dl-navigation-menu-viewport-wrapper {
2956
+ .dl-model-selector__content {
2114
2957
  position: absolute;
2958
+ top: calc(100% + 4px);
2115
2959
  left: 0;
2116
- top: 100%;
2960
+ z-index: 50;
2961
+ min-width: 16rem;
2962
+ max-width: 22rem;
2963
+ border-radius: var(--radius-md, 0.375rem);
2964
+ border: 1px solid var(--border);
2965
+ background-color: var(--popover, var(--background));
2966
+ color: var(--popover-foreground, var(--foreground));
2967
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2968
+ padding: 0.375rem;
2117
2969
  display: flex;
2118
- justify-content: center;
2970
+ flex-direction: column;
2971
+ gap: 0.25rem;
2972
+ max-height: 20rem;
2973
+ overflow-y: auto;
2119
2974
  }
2120
2975
 
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);
2976
+ .dl-model-selector__search {
2977
+ padding: 0.375rem 0.5rem;
2978
+ margin-bottom: 0.25rem;
2979
+ font-size: 0.75rem;
2980
+ border-radius: var(--radius-sm, 0.25rem);
2128
2981
  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;
2982
+ background-color: var(--input);
2983
+ color: var(--foreground);
2984
+ outline: none;
2133
2985
  }
2134
2986
 
2135
- @media (min-width: 768px) {
2136
- .dl-navigation-menu-viewport {
2137
- width: var(--radix-navigation-menu-viewport-width);
2138
- }
2987
+ .dl-model-selector__search:focus {
2988
+ border-color: var(--ring);
2139
2989
  }
2140
2990
 
2141
- .dl-navigation-menu-viewport[data-state="open"] {
2142
- animation: dl-zoom-in 150ms ease;
2991
+ .dl-model-selector__item {
2992
+ display: flex;
2993
+ align-items: flex-start;
2994
+ justify-content: space-between;
2995
+ gap: 0.5rem;
2996
+ padding: 0.5rem;
2997
+ border-radius: var(--radius-sm, 0.25rem);
2998
+ cursor: pointer;
2999
+ transition: background-color 0.12s ease;
3000
+ user-select: none;
2143
3001
  }
2144
3002
 
2145
- .dl-navigation-menu-viewport[data-state="closed"] {
2146
- animation: dl-zoom-out 150ms ease;
3003
+ .dl-model-selector__item:hover:not([data-disabled="true"]) {
3004
+ background-color: var(--accent);
2147
3005
  }
2148
3006
 
2149
- .dl-navigation-menu-indicator {
2150
- top: 100%;
2151
- z-index: 1;
2152
- display: flex;
2153
- height: 0.375rem;
2154
- align-items: flex-end;
2155
- justify-content: center;
2156
- overflow: hidden;
3007
+ .dl-model-selector__item--active {
3008
+ background-color: var(--accent);
2157
3009
  }
2158
3010
 
2159
- .dl-navigation-menu-indicator__arrow {
2160
- position: relative;
2161
- top: 60%;
2162
- width: 0.5rem;
2163
- 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);
3011
+ .dl-model-selector__item-info {
3012
+ display: flex;
3013
+ flex-direction: column;
3014
+ gap: 0.125rem;
3015
+ min-width: 0;
2168
3016
  }
2169
3017
 
2170
- /* ── pagination/pagination.css ── */
2171
- .dl-pagination {
2172
- margin-inline: auto;
3018
+ .dl-model-selector__item-title {
2173
3019
  display: flex;
2174
- width: 100%;
2175
- justify-content: center;
3020
+ align-items: center;
3021
+ gap: 0.375rem;
3022
+ font-weight: 500;
3023
+ font-size: 0.8125rem;
2176
3024
  }
2177
3025
 
2178
- .dl-pagination-content {
3026
+ .dl-model-selector__item-desc {
3027
+ font-size: 0.75rem;
3028
+ color: var(--muted-foreground);
3029
+ line-height: 1.3;
3030
+ }
3031
+
3032
+ .dl-model-selector__item-tags {
2179
3033
  display: flex;
2180
- flex-direction: row;
2181
3034
  align-items: center;
2182
3035
  gap: 0.25rem;
2183
- list-style: none;
2184
- margin: 0;
2185
- padding: 0;
3036
+ margin-top: 0.25rem;
3037
+ flex-wrap: wrap;
2186
3038
  }
2187
3039
 
2188
- .dl-pagination-item {
3040
+ .dl-model-selector__tag {
2189
3041
  display: inline-flex;
3042
+ align-items: center;
3043
+ font-size: 0.6875rem;
3044
+ padding: 0.0625rem 0.375rem;
3045
+ border-radius: 9999px;
3046
+ background-color: var(--muted);
3047
+ color: var(--muted-foreground);
3048
+ font-weight: 500;
2190
3049
  }
2191
3050
 
2192
- .dl-pagination-prev {
2193
- gap: 0.25rem;
3051
+ /* ── multi-select/multi-select.css ── */
3052
+ .dl-multi-select-trigger {
3053
+ display: flex;
3054
+ width: 100%;
3055
+ min-height: var(--control-height-md, 2.25rem);
3056
+ height: auto;
3057
+ align-items: center;
3058
+ justify-content: space-between;
3059
+ border-radius: var(--radius-md, 0.375rem);
3060
+ border: 1px solid var(--input, var(--border));
3061
+ background-color: var(--background);
3062
+ padding: 0.25rem 0.75rem;
3063
+ font-size: 0.875rem;
3064
+ line-height: 1.25rem;
3065
+ color: var(--foreground);
3066
+ cursor: pointer;
3067
+ transition:
3068
+ border-color 0.15s ease,
3069
+ box-shadow 0.15s ease;
3070
+ gap: 0.5rem;
3071
+ }
3072
+
3073
+ .dl-multi-select-trigger:focus-visible {
3074
+ outline: none;
3075
+ border-color: var(--ring);
3076
+ box-shadow: 0 0 0 1px var(--ring);
3077
+ }
3078
+
3079
+ .dl-multi-select-trigger--disabled {
3080
+ opacity: 0.5;
3081
+ cursor: not-allowed;
3082
+ background-color: var(--muted);
3083
+ }
3084
+
3085
+ .dl-multi-select-tags {
3086
+ display: flex;
3087
+ flex-wrap: wrap;
3088
+ align-items: center;
3089
+ gap: 0.25rem;
3090
+ flex: 1;
3091
+ min-width: 0;
3092
+ }
3093
+
3094
+ .dl-multi-select-placeholder {
3095
+ color: var(--muted-foreground);
3096
+ user-select: none;
3097
+ }
3098
+
3099
+ .dl-multi-select-chip {
3100
+ display: inline-flex;
3101
+ align-items: center;
3102
+ gap: 0.25rem;
3103
+ background-color: var(--secondary);
3104
+ color: var(--secondary-foreground);
3105
+ border-radius: var(--radius-sm, 0.25rem);
3106
+ padding: 0.125rem 0.375rem;
3107
+ font-size: 0.75rem;
3108
+ font-weight: 500;
3109
+ line-height: 1;
3110
+ max-width: 100%;
3111
+ }
3112
+
3113
+ .dl-multi-select-chip__text {
3114
+ overflow: hidden;
3115
+ text-overflow: ellipsis;
3116
+ white-space: nowrap;
3117
+ }
3118
+
3119
+ .dl-multi-select-chip__remove {
3120
+ display: inline-flex;
3121
+ align-items: center;
3122
+ justify-content: center;
3123
+ background: transparent;
3124
+ border: none;
3125
+ cursor: pointer;
3126
+ padding: 0;
3127
+ color: var(--muted-foreground);
3128
+ transition: color 0.15s ease;
3129
+ }
3130
+
3131
+ .dl-multi-select-chip__remove:hover {
3132
+ color: var(--foreground);
3133
+ }
3134
+
3135
+ .dl-multi-select-content {
3136
+ width: var(--radix-popover-trigger-width);
3137
+ min-width: 14rem;
3138
+ padding: 0.25rem;
3139
+ background-color: var(--popover);
3140
+ color: var(--popover-foreground);
3141
+ border: 1px solid var(--border);
3142
+ border-radius: var(--radius-md, 0.375rem);
3143
+ box-shadow: 0 4px 16px rgb(0 0 0 / 0.1);
3144
+ z-index: 50;
3145
+ }
3146
+
3147
+ .dl-multi-select-search {
3148
+ position: relative;
3149
+ display: flex;
3150
+ align-items: center;
3151
+ padding: 0.25rem 0.5rem 0.5rem;
3152
+ border-bottom: 1px solid var(--border);
3153
+ }
3154
+
3155
+ .dl-multi-select-search-icon {
3156
+ position: absolute;
3157
+ left: 0.875rem;
3158
+ top: 50%;
3159
+ transform: translateY(-60%);
3160
+ width: 0.875rem;
3161
+ height: 0.875rem;
3162
+ color: var(--muted-foreground);
3163
+ pointer-events: none;
3164
+ }
3165
+
3166
+ .dl-multi-select-search-input {
3167
+ width: 100%;
3168
+ height: 1.875rem;
3169
+ padding-left: 1.75rem;
3170
+ padding-right: 0.5rem;
3171
+ font-size: 0.8125rem;
3172
+ border-radius: var(--radius-sm, 0.25rem);
3173
+ border: 1px solid var(--border);
3174
+ background: var(--background);
3175
+ }
3176
+
3177
+ .dl-multi-select-search-input:focus {
3178
+ outline: none;
3179
+ border-color: var(--ring);
3180
+ }
3181
+
3182
+ .dl-multi-select-actions {
3183
+ display: flex;
3184
+ align-items: center;
3185
+ justify-content: space-between;
3186
+ padding: 0.375rem 0.5rem;
3187
+ border-bottom: 1px solid var(--border);
3188
+ font-size: 0.75rem;
3189
+ color: var(--muted-foreground);
3190
+ }
3191
+
3192
+ .dl-multi-select-action-btn {
3193
+ background: transparent;
3194
+ border: none;
3195
+ color: var(--primary);
3196
+ font-size: 0.75rem;
3197
+ font-weight: 500;
3198
+ cursor: pointer;
3199
+ padding: 0.125rem 0.25rem;
3200
+ border-radius: var(--radius-sm, 0.25rem);
3201
+ }
3202
+
3203
+ .dl-multi-select-action-btn:hover {
3204
+ text-decoration: underline;
3205
+ }
3206
+
3207
+ .dl-multi-select-list {
3208
+ max-height: 14rem;
3209
+ overflow-y: auto;
3210
+ padding: 0.25rem 0;
3211
+ }
3212
+
3213
+ .dl-multi-select-item {
3214
+ display: flex;
3215
+ align-items: center;
3216
+ gap: 0.5rem;
3217
+ padding: 0.375rem 0.5rem;
3218
+ font-size: 0.8125rem;
3219
+ border-radius: var(--radius-sm, 0.25rem);
3220
+ cursor: pointer;
3221
+ user-select: none;
3222
+ transition: background-color 0.15s ease;
3223
+ }
3224
+
3225
+ .dl-multi-select-item:hover:not(.dl-multi-select-item--disabled) {
3226
+ background-color: var(--accent);
3227
+ color: var(--accent-foreground);
3228
+ }
3229
+
3230
+ .dl-multi-select-item--selected {
3231
+ font-weight: 500;
3232
+ }
3233
+
3234
+ .dl-multi-select-item--disabled {
3235
+ opacity: 0.5;
3236
+ cursor: not-allowed;
3237
+ }
3238
+
3239
+ .dl-multi-select-checkbox {
3240
+ display: inline-flex;
3241
+ align-items: center;
3242
+ justify-content: center;
3243
+ width: 1rem;
3244
+ height: 1rem;
3245
+ border-radius: 0.1875rem;
3246
+ border: 1px solid var(--input, var(--border));
3247
+ background-color: var(--background);
3248
+ color: var(--primary-foreground);
3249
+ flex-shrink: 0;
3250
+ transition: all 0.15s ease;
3251
+ }
3252
+
3253
+ .dl-multi-select-item--selected .dl-multi-select-checkbox {
3254
+ background-color: var(--primary);
3255
+ border-color: var(--primary);
3256
+ }
3257
+
3258
+ .dl-multi-select-empty {
3259
+ padding: 1.25rem 0.5rem;
3260
+ text-align: center;
3261
+ font-size: 0.8125rem;
3262
+ color: var(--muted-foreground);
3263
+ }
3264
+
3265
+ /* ── navigation-menu/navigation-menu.css ── */
3266
+ .dl-navigation-menu {
3267
+ position: relative;
3268
+ z-index: 10;
3269
+ display: flex;
3270
+ max-width: max-content;
3271
+ flex: 1;
3272
+ align-items: center;
3273
+ justify-content: center;
3274
+ }
3275
+
3276
+ .dl-navigation-menu-list {
3277
+ display: flex;
3278
+ flex: 1;
3279
+ list-style: none;
3280
+ align-items: center;
3281
+ justify-content: center;
3282
+ gap: 0.25rem;
3283
+ margin: 0;
3284
+ padding: 0;
3285
+ }
3286
+
3287
+ .dl-navigation-menu-trigger {
3288
+ display: inline-flex;
3289
+ height: var(--control-height-md, 2.25rem);
3290
+ width: max-content;
3291
+ align-items: center;
3292
+ justify-content: center;
3293
+ border-radius: var(--radius-md, 0.375rem);
3294
+ background-color: var(--background);
3295
+ padding: var(--space-2, 0.5rem) var(--space-4, 1rem);
3296
+ font-size: 0.875rem;
3297
+ font-weight: 500;
3298
+ cursor: pointer;
3299
+ border: none;
3300
+ color: inherit;
3301
+ font-family: inherit;
3302
+ transition:
3303
+ background-color 0.15s ease,
3304
+ color 0.15s ease;
3305
+ outline: none;
3306
+ }
3307
+
3308
+ .dl-navigation-menu-trigger:hover,
3309
+ .dl-navigation-menu-trigger:focus,
3310
+ .dl-navigation-menu-trigger[data-state="open"] {
3311
+ background-color: var(--accent);
3312
+ color: var(--accent-foreground);
3313
+ }
3314
+
3315
+ .dl-navigation-menu-trigger:disabled {
3316
+ pointer-events: none;
3317
+ opacity: 0.5;
3318
+ cursor: not-allowed;
3319
+ }
3320
+
3321
+ .dl-navigation-menu-chevron {
3322
+ position: relative;
3323
+ top: 1px;
3324
+ margin-left: 0.25rem;
3325
+ width: 0.75rem;
3326
+ height: 0.75rem;
3327
+ transition: transform 0.2s ease;
3328
+ }
3329
+
3330
+ .dl-navigation-menu-trigger[data-state="open"] .dl-navigation-menu-chevron {
3331
+ transform: rotate(180deg);
3332
+ }
3333
+
3334
+ .dl-navigation-menu-content {
3335
+ left: 0;
3336
+ top: 0;
3337
+ width: 100%;
3338
+ }
3339
+
3340
+ @media (min-width: 768px) {
3341
+ .dl-navigation-menu-content {
3342
+ position: absolute;
3343
+ width: auto;
3344
+ }
3345
+ }
3346
+
3347
+ .dl-navigation-menu-viewport-wrapper {
3348
+ position: absolute;
3349
+ left: 0;
3350
+ top: 100%;
3351
+ display: flex;
3352
+ justify-content: center;
3353
+ }
3354
+
3355
+ .dl-navigation-menu-viewport {
3356
+ position: relative;
3357
+ margin-top: 0.375rem;
3358
+ height: var(--radix-navigation-menu-viewport-height);
3359
+ width: 100%;
3360
+ overflow: hidden;
3361
+ border-radius: var(--radius-md, 0.375rem);
3362
+ border: 1px solid var(--border);
3363
+ background-color: var(--popover);
3364
+ color: var(--popover-foreground);
3365
+ box-shadow: 0 4px 20px rgb(0 0 0 / 0.12);
3366
+ transform-origin: top center;
3367
+ }
3368
+
3369
+ @media (min-width: 768px) {
3370
+ .dl-navigation-menu-viewport {
3371
+ width: var(--radix-navigation-menu-viewport-width);
3372
+ }
3373
+ }
3374
+
3375
+ .dl-navigation-menu-viewport[data-state="open"] {
3376
+ animation: dl-zoom-in 150ms ease;
3377
+ }
3378
+
3379
+ .dl-navigation-menu-viewport[data-state="closed"] {
3380
+ animation: dl-zoom-out 150ms ease;
3381
+ }
3382
+
3383
+ .dl-navigation-menu-indicator {
3384
+ top: 100%;
3385
+ z-index: 1;
3386
+ display: flex;
3387
+ height: 0.375rem;
3388
+ align-items: flex-end;
3389
+ justify-content: center;
3390
+ overflow: hidden;
3391
+ }
3392
+
3393
+ .dl-navigation-menu-indicator__arrow {
3394
+ position: relative;
3395
+ top: 60%;
3396
+ width: 0.5rem;
3397
+ height: 0.5rem;
3398
+ transform: rotate(45deg);
3399
+ border-top-left-radius: 0.125rem;
3400
+ background-color: var(--border);
3401
+ box-shadow: 0 2px 4px rgb(0 0 0 / 0.1);
3402
+ }
3403
+
3404
+ /* ── pagination/pagination.css ── */
3405
+ .dl-pagination {
3406
+ margin-inline: auto;
3407
+ display: flex;
3408
+ width: 100%;
3409
+ justify-content: center;
3410
+ }
3411
+
3412
+ .dl-pagination-content {
3413
+ display: flex;
3414
+ flex-direction: row;
3415
+ align-items: center;
3416
+ gap: 0.25rem;
3417
+ list-style: none;
3418
+ margin: 0;
3419
+ padding: 0;
3420
+ }
3421
+
3422
+ .dl-pagination-item {
3423
+ display: inline-flex;
3424
+ }
3425
+
3426
+ .dl-pagination-prev {
3427
+ gap: 0.25rem;
2194
3428
  padding-inline-start: 0.625rem;
2195
3429
  }
2196
3430
 
2197
- .dl-pagination-next {
2198
- gap: 0.25rem;
2199
- padding-inline-end: 0.625rem;
3431
+ .dl-pagination-next {
3432
+ gap: 0.25rem;
3433
+ padding-inline-end: 0.625rem;
3434
+ }
3435
+
3436
+ .dl-pagination-icon {
3437
+ width: 1rem;
3438
+ height: 1rem;
3439
+ flex-shrink: 0;
3440
+ }
3441
+
3442
+ .dl-pagination-ellipsis {
3443
+ display: flex;
3444
+ align-items: center;
3445
+ justify-content: center;
3446
+ width: var(--control-height-md, 2.25rem);
3447
+ height: var(--control-height-md, 2.25rem);
3448
+ }
3449
+
3450
+ .dl-pagination-ellipsis svg {
3451
+ width: 1rem;
3452
+ height: 1rem;
3453
+ }
3454
+
3455
+ /* ── panel/panel.css ── */
3456
+ .dl-panel {
3457
+ border-radius: var(--radius-lg, 0.5rem);
3458
+ border: 1px solid var(--border);
3459
+ background-color: var(--card);
3460
+ padding: 1rem;
3461
+ }
3462
+ .dl-panel__header {
3463
+ margin-bottom: 0.75rem;
3464
+ display: flex;
3465
+ align-items: center;
3466
+ gap: 0.5rem;
3467
+ }
3468
+ .dl-panel__title {
3469
+ font-family: inherit;
3470
+ font-size: 0.875rem;
3471
+ font-weight: 600;
3472
+ margin: 0;
3473
+ }
3474
+ .dl-panel__meta {
3475
+ margin-left: auto;
3476
+ font-family: monospace;
3477
+ font-size: 0.625rem;
3478
+ color: var(--muted-foreground);
3479
+ }
3480
+
3481
+ /* ── password-input/password-input.css ── */
3482
+ .dl-password-toggle-btn {
3483
+ display: inline-flex;
3484
+ align-items: center;
3485
+ justify-content: center;
3486
+ background: transparent;
3487
+ border: none;
3488
+ cursor: pointer;
3489
+ padding: 0;
3490
+ color: var(--muted-foreground);
3491
+ transition: color 0.15s ease;
3492
+ }
3493
+
3494
+ .dl-password-toggle-btn:hover {
3495
+ color: var(--foreground);
3496
+ }
3497
+
3498
+ .dl-password-toggle-btn:focus-visible {
3499
+ outline: 2px solid var(--ring);
3500
+ outline-offset: 2px;
3501
+ border-radius: var(--radius-sm, 0.25rem);
3502
+ }
3503
+
3504
+ /* ── plan/plan.css ── */
3505
+ .dl-plan {
3506
+ display: flex;
3507
+ flex-direction: column;
3508
+ width: 100%;
3509
+ border-radius: var(--radius-md, 0.375rem);
3510
+ border: 1px solid var(--border);
3511
+ background-color: var(--card, var(--background));
3512
+ overflow: hidden;
2200
3513
  }
2201
3514
 
2202
- .dl-pagination-icon {
2203
- width: 1rem;
2204
- height: 1rem;
2205
- flex-shrink: 0;
3515
+ .dl-plan__header {
3516
+ display: flex;
3517
+ align-items: center;
3518
+ justify-content: space-between;
3519
+ padding: 0.625rem 0.875rem;
3520
+ border-bottom: 1px solid var(--border);
3521
+ background-color: var(--muted);
3522
+ font-size: 0.8125rem;
2206
3523
  }
2207
3524
 
2208
- .dl-pagination-ellipsis {
3525
+ .dl-plan__header-title {
2209
3526
  display: flex;
2210
3527
  align-items: center;
2211
- justify-content: center;
2212
- width: var(--control-height-md, 2.25rem);
2213
- height: var(--control-height-md, 2.25rem);
3528
+ gap: 0.5rem;
3529
+ font-weight: 600;
3530
+ color: var(--foreground);
2214
3531
  }
2215
3532
 
2216
- .dl-pagination-ellipsis svg {
2217
- width: 1rem;
2218
- height: 1rem;
3533
+ .dl-plan__header-meta {
3534
+ display: flex;
3535
+ align-items: center;
3536
+ gap: 0.5rem;
3537
+ font-size: 0.75rem;
3538
+ color: var(--muted-foreground);
2219
3539
  }
2220
3540
 
2221
- /* ── panel/panel.css ── */
2222
- .dl-panel {
2223
- border-radius: var(--radius-lg, 0.5rem);
2224
- border: 1px solid var(--border);
2225
- background-color: var(--card);
2226
- padding: 1rem;
3541
+ .dl-plan__tasks {
3542
+ display: flex;
3543
+ flex-direction: column;
3544
+ padding: 0.5rem 0;
2227
3545
  }
2228
- .dl-panel__header {
2229
- margin-bottom: 0.75rem;
3546
+
3547
+ .dl-plan__task {
3548
+ display: flex;
3549
+ flex-direction: column;
3550
+ padding: 0.5rem 0.875rem;
3551
+ transition: background-color 0.12s ease;
3552
+ }
3553
+
3554
+ .dl-plan__task:hover {
3555
+ background-color: var(--accent);
3556
+ }
3557
+
3558
+ .dl-plan__task-header {
3559
+ display: flex;
3560
+ align-items: flex-start;
3561
+ gap: 0.625rem;
3562
+ cursor: pointer;
3563
+ user-select: none;
3564
+ }
3565
+
3566
+ .dl-plan__task-icon {
3567
+ margin-top: 0.125rem;
2230
3568
  display: flex;
2231
3569
  align-items: center;
2232
- gap: 0.5rem;
3570
+ justify-content: center;
3571
+ shrink: 0;
2233
3572
  }
2234
- .dl-panel__title {
2235
- font-family: inherit;
2236
- font-size: 0.875rem;
2237
- font-weight: 600;
2238
- margin: 0;
3573
+
3574
+ .dl-plan__task-body {
3575
+ display: flex;
3576
+ flex-direction: column;
3577
+ flex: 1;
3578
+ min-width: 0;
2239
3579
  }
2240
- .dl-panel__meta {
2241
- margin-left: auto;
2242
- font-family: monospace;
2243
- font-size: 0.625rem;
3580
+
3581
+ .dl-plan__task-title {
3582
+ font-size: 0.8125rem;
3583
+ font-weight: 500;
3584
+ color: var(--foreground);
3585
+ }
3586
+
3587
+ .dl-plan__task--completed .dl-plan__task-title {
3588
+ color: var(--muted-foreground);
3589
+ }
3590
+
3591
+ .dl-plan__task-desc {
3592
+ font-size: 0.75rem;
2244
3593
  color: var(--muted-foreground);
3594
+ margin-top: 0.125rem;
3595
+ line-height: 1.4;
3596
+ }
3597
+
3598
+ .dl-plan__task-details {
3599
+ margin-top: 0.5rem;
3600
+ padding-left: 1.5rem;
3601
+ font-size: 0.75rem;
3602
+ color: var(--muted-foreground);
3603
+ }
3604
+
3605
+ .dl-plan__subtask-item {
3606
+ display: flex;
3607
+ align-items: center;
3608
+ gap: 0.375rem;
3609
+ padding: 0.125rem 0;
2245
3610
  }
2246
3611
 
2247
3612
  /* ── popover/popover.css ── */
@@ -2256,33 +3621,248 @@
2256
3621
  box-shadow: 0 4px 24px rgb(0 0 0/0.12);
2257
3622
  outline: none;
2258
3623
  }
2259
- .dl-popover[data-state="open"] {
2260
- animation: dl-fade-in 150ms ease;
3624
+ .dl-popover[data-state="open"] {
3625
+ animation: dl-fade-in 150ms ease;
3626
+ }
3627
+ .dl-popover[data-state="closed"] {
3628
+ animation: dl-fade-out 150ms ease;
3629
+ }
3630
+
3631
+ /* ── progress/progress.css ── */
3632
+ .dl-progress {
3633
+ position: relative;
3634
+ height: 0.5rem;
3635
+ width: 100%;
3636
+ overflow: hidden;
3637
+ border-radius: 9999px;
3638
+ background-color: var(--secondary);
3639
+ }
3640
+ .dl-progress__indicator {
3641
+ height: 100%;
3642
+ width: 100%;
3643
+ background-color: var(--primary);
3644
+ transition: transform 0.3s ease;
3645
+ transform-origin: left;
3646
+ }
3647
+
3648
+ /* ── prompt-input/prompt-input.css ── */
3649
+ .dl-prompt-input {
3650
+ display: flex;
3651
+ flex-direction: column;
3652
+ width: 100%;
3653
+ border-radius: var(--radius-lg, 0.5rem);
3654
+ border: 1px solid var(--border);
3655
+ background-color: var(--card, var(--background));
3656
+ box-shadow: 0 2px 8px rgb(0 0 0 / 0.05);
3657
+ transition:
3658
+ border-color 0.15s ease,
3659
+ box-shadow 0.15s ease;
3660
+ overflow: hidden;
3661
+ }
3662
+
3663
+ .dl-prompt-input:focus-within {
3664
+ border-color: var(--ring);
3665
+ box-shadow: 0 0 0 1px var(--ring);
3666
+ }
3667
+
3668
+ .dl-prompt-input--disabled {
3669
+ opacity: 0.5;
3670
+ cursor: not-allowed;
3671
+ }
3672
+
3673
+ .dl-prompt-input__attachments {
3674
+ display: flex;
3675
+ flex-wrap: wrap;
3676
+ gap: 0.375rem;
3677
+ padding: 0.5rem 0.75rem 0;
3678
+ }
3679
+
3680
+ .dl-prompt-input__chip {
3681
+ display: inline-flex;
3682
+ align-items: center;
3683
+ gap: 0.375rem;
3684
+ padding: 0.1875rem 0.5rem;
3685
+ border-radius: var(--radius-sm, 0.25rem);
3686
+ background-color: var(--secondary);
3687
+ color: var(--secondary-foreground);
3688
+ font-size: 0.75rem;
3689
+ border: 1px solid var(--border);
3690
+ }
3691
+
3692
+ .dl-prompt-input__chip-name {
3693
+ max-width: 10rem;
3694
+ overflow: hidden;
3695
+ text-overflow: ellipsis;
3696
+ white-space: nowrap;
3697
+ }
3698
+
3699
+ .dl-prompt-input__chip-remove {
3700
+ background: transparent;
3701
+ border: none;
3702
+ cursor: pointer;
3703
+ padding: 0;
3704
+ color: var(--muted-foreground);
3705
+ display: inline-flex;
3706
+ align-items: center;
3707
+ }
3708
+
3709
+ .dl-prompt-input__chip-remove:hover {
3710
+ color: var(--foreground);
3711
+ }
3712
+
3713
+ .dl-prompt-input__textarea {
3714
+ width: 100%;
3715
+ min-height: 3.5rem;
3716
+ max-height: 14rem;
3717
+ padding: 0.75rem 0.875rem;
3718
+ border: none;
3719
+ background: transparent;
3720
+ color: var(--foreground);
3721
+ font-family: inherit;
3722
+ font-size: 0.875rem;
3723
+ line-height: 1.4;
3724
+ resize: none;
3725
+ outline: none;
3726
+ box-sizing: border-box;
3727
+ }
3728
+
3729
+ .dl-prompt-input__textarea::placeholder {
3730
+ color: var(--muted-foreground);
3731
+ }
3732
+
3733
+ .dl-prompt-input__toolbar {
3734
+ display: flex;
3735
+ align-items: center;
3736
+ justify-content: space-between;
3737
+ padding: 0.375rem 0.75rem 0.625rem;
3738
+ gap: 0.5rem;
3739
+ }
3740
+
3741
+ .dl-prompt-input__left-actions,
3742
+ .dl-prompt-input__right-actions {
3743
+ display: flex;
3744
+ align-items: center;
3745
+ gap: 0.375rem;
3746
+ }
3747
+
3748
+ .dl-prompt-input__btn {
3749
+ display: inline-flex;
3750
+ align-items: center;
3751
+ justify-content: center;
3752
+ width: 1.875rem;
3753
+ height: 1.875rem;
3754
+ border-radius: 9999px;
3755
+ border: 1px solid var(--border);
3756
+ background-color: transparent;
3757
+ color: var(--muted-foreground);
3758
+ cursor: pointer;
3759
+ transition: all 0.15s ease;
3760
+ }
3761
+
3762
+ .dl-prompt-input__btn:hover:not(:disabled) {
3763
+ background-color: var(--accent);
3764
+ color: var(--foreground);
3765
+ }
3766
+
3767
+ .dl-prompt-input__btn:disabled {
3768
+ opacity: 0.4;
3769
+ cursor: not-allowed;
3770
+ }
3771
+
3772
+ .dl-prompt-input__btn--send {
3773
+ background-color: var(--primary);
3774
+ color: var(--primary-foreground);
3775
+ border-color: var(--primary);
3776
+ }
3777
+
3778
+ .dl-prompt-input__btn--send:hover:not(:disabled) {
3779
+ opacity: 0.9;
3780
+ background-color: var(--primary);
3781
+ color: var(--primary-foreground);
3782
+ }
3783
+
3784
+ .dl-prompt-input__btn--stop {
3785
+ background-color: var(--destructive);
3786
+ color: var(--destructive-foreground);
3787
+ border-color: var(--destructive);
3788
+ }
3789
+
3790
+ /* ── queue/queue.css ── */
3791
+ .dl-queue {
3792
+ display: flex;
3793
+ flex-direction: column;
3794
+ width: 100%;
3795
+ border-radius: var(--radius-md, 0.375rem);
3796
+ border: 1px solid var(--border);
3797
+ background-color: var(--card, var(--background));
3798
+ overflow: hidden;
3799
+ font-size: 0.8125rem;
3800
+ }
3801
+
3802
+ .dl-queue__header {
3803
+ display: flex;
3804
+ align-items: center;
3805
+ justify-content: space-between;
3806
+ padding: 0.5rem 0.75rem;
3807
+ background-color: var(--muted);
3808
+ border-bottom: 1px solid var(--border);
3809
+ font-weight: 600;
3810
+ color: var(--foreground);
3811
+ }
3812
+
3813
+ .dl-queue__list {
3814
+ display: flex;
3815
+ flex-direction: column;
3816
+ divide-y: 1px solid var(--border);
3817
+ }
3818
+
3819
+ .dl-queue-item {
3820
+ display: flex;
3821
+ align-items: center;
3822
+ justify-content: space-between;
3823
+ padding: 0.5rem 0.75rem;
3824
+ gap: 0.5rem;
3825
+ transition: background-color 0.12s ease;
3826
+ }
3827
+
3828
+ .dl-queue-item:hover {
3829
+ background-color: var(--accent);
2261
3830
  }
2262
- .dl-popover[data-state="closed"] {
2263
- animation: dl-fade-out 150ms ease;
3831
+
3832
+ .dl-queue-item__info {
3833
+ display: flex;
3834
+ align-items: center;
3835
+ gap: 0.5rem;
3836
+ min-width: 0;
2264
3837
  }
2265
3838
 
2266
- .dl-popover.dl-date-picker-content {
2267
- width: auto;
2268
- padding: 0;
3839
+ .dl-queue-item__index {
3840
+ display: inline-flex;
3841
+ align-items: center;
3842
+ justify-content: center;
3843
+ width: 1.25rem;
3844
+ height: 1.25rem;
3845
+ border-radius: 9999px;
3846
+ background-color: var(--muted);
3847
+ font-size: 0.6875rem;
3848
+ font-weight: 600;
3849
+ color: var(--muted-foreground);
3850
+ shrink: 0;
2269
3851
  }
2270
3852
 
2271
- /* ── progress/progress.css ── */
2272
- .dl-progress {
2273
- position: relative;
2274
- height: 0.5rem;
2275
- width: 100%;
3853
+ .dl-queue-item__title {
2276
3854
  overflow: hidden;
2277
- border-radius: 9999px;
2278
- background-color: var(--secondary);
3855
+ text-overflow: ellipsis;
3856
+ white-space: nowrap;
3857
+ font-weight: 500;
3858
+ color: var(--foreground);
2279
3859
  }
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;
3860
+
3861
+ .dl-queue-item__actions {
3862
+ display: flex;
3863
+ align-items: center;
3864
+ gap: 0.5rem;
3865
+ shrink: 0;
2286
3866
  }
2287
3867
 
2288
3868
  /* ── radio-group/radio-group.css ── */
@@ -2427,6 +4007,29 @@
2427
4007
  background-color: var(--border);
2428
4008
  }
2429
4009
 
4010
+ /* ── search-input/search-input.css ── */
4011
+ .dl-search-clear-btn {
4012
+ display: inline-flex;
4013
+ align-items: center;
4014
+ justify-content: center;
4015
+ background: transparent;
4016
+ border: none;
4017
+ cursor: pointer;
4018
+ padding: 0;
4019
+ color: var(--muted-foreground);
4020
+ transition: color 0.15s ease;
4021
+ }
4022
+
4023
+ .dl-search-clear-btn:hover {
4024
+ color: var(--foreground);
4025
+ }
4026
+
4027
+ .dl-search-clear-btn:focus-visible {
4028
+ outline: 2px solid var(--ring);
4029
+ outline-offset: 2px;
4030
+ border-radius: var(--radius-sm, 0.25rem);
4031
+ }
4032
+
2430
4033
  /* ── searchable-select/searchable-select.css ── */
2431
4034
  .dl-searchable-select-trigger {
2432
4035
  width: 100%;
@@ -2701,7 +4304,7 @@
2701
4304
  max-height: 24rem;
2702
4305
  min-width: var(--radix-select-trigger-width, 8rem);
2703
4306
  width: var(--radix-select-trigger-width, max-content);
2704
- max-width: var(--radix-select-content-available-width, 100vw);
4307
+ max-width: max-content;
2705
4308
  overflow: hidden;
2706
4309
  border-radius: var(--radius-md, 0.375rem);
2707
4310
  border: 1px solid var(--border);
@@ -3367,34 +4970,34 @@
3367
4970
  /* ── sonner/sonner.css ── */
3368
4971
  .dl-toaster {
3369
4972
  font-family: inherit;
3370
- --normal-bg: var(--card, var(--background));
3371
- --normal-text: var(--card-foreground, var(--foreground));
3372
- --normal-border: var(--border);
4973
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4974
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4975
+ --normal-border: var(--toast-border, var(--border));
3373
4976
  }
3374
4977
 
3375
4978
  [data-sonner-toaster][data-sonner-theme="dark"],
3376
4979
  .dark [data-sonner-toaster],
3377
4980
  [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);
4981
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4982
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4983
+ --normal-border: var(--toast-border, var(--border));
3381
4984
  }
3382
4985
 
3383
4986
  [data-sonner-toaster][data-sonner-theme="light"],
3384
4987
  .light [data-sonner-toaster],
3385
4988
  [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);
4989
+ --normal-bg: var(--toast-bg, var(--card, var(--background)));
4990
+ --normal-text: var(--toast-fg, var(--card-foreground, var(--foreground)));
4991
+ --normal-border: var(--toast-border, var(--border));
3389
4992
  }
3390
4993
 
3391
4994
  .dl-toaster .dl-toast,
3392
4995
  [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);
4996
+ border-radius: var(--toast-radius, var(--radius-md, 0.375rem));
4997
+ border: 1px solid var(--toast-border, var(--border));
4998
+ background-color: var(--toast-bg, var(--card, var(--background)));
4999
+ color: var(--toast-fg, var(--card-foreground, var(--foreground)));
5000
+ box-shadow: var(--toast-shadow, 0 8px 32px rgb(0 0 0 / 0.15));
3398
5001
  }
3399
5002
 
3400
5003
  .dl-toaster .dl-toast__desc,
@@ -3415,9 +5018,276 @@
3415
5018
  }
3416
5019
 
3417
5020
  [data-sonner-toaster] [data-sonner-toast] [data-close-button] {
5021
+ background-color: var(--toast-bg, var(--card, var(--background)));
5022
+ border-color: var(--toast-border, var(--border));
5023
+ color: var(--toast-fg, var(--card-foreground, var(--foreground)));
5024
+ }
5025
+
5026
+ /* ── FinAI Semantic Feedback (Text & Icon Colors, Subtle Borders via CSS Variables) ── */
5027
+ [data-sonner-toaster] [data-sonner-toast][data-type="success"] {
5028
+ border-color: color-mix(
5029
+ in oklch,
5030
+ var(--toast-success, var(--success)) 35%,
5031
+ transparent
5032
+ );
5033
+ }
5034
+
5035
+ [data-sonner-toaster] [data-sonner-toast][data-type="success"] [data-icon] {
5036
+ color: var(--toast-success, var(--success));
5037
+ }
5038
+
5039
+ [data-sonner-toaster] [data-sonner-toast][data-type="error"],
5040
+ [data-sonner-toaster] [data-sonner-toast][data-type="destructive"] {
5041
+ border-color: color-mix(
5042
+ in oklch,
5043
+ var(--toast-destructive, var(--destructive)) 35%,
5044
+ transparent
5045
+ );
5046
+ }
5047
+
5048
+ [data-sonner-toaster] [data-sonner-toast][data-type="error"] [data-icon],
5049
+ [data-sonner-toaster]
5050
+ [data-sonner-toast][data-type="destructive"]
5051
+ [data-icon] {
5052
+ color: var(--toast-destructive, var(--destructive));
5053
+ }
5054
+
5055
+ [data-sonner-toaster] [data-sonner-toast][data-type="warning"] {
5056
+ border-color: color-mix(
5057
+ in oklch,
5058
+ var(--toast-warning, var(--warning)) 35%,
5059
+ transparent
5060
+ );
5061
+ }
5062
+
5063
+ [data-sonner-toaster] [data-sonner-toast][data-type="warning"] [data-icon] {
5064
+ color: var(--toast-warning, var(--warning));
5065
+ }
5066
+
5067
+ [data-sonner-toaster] [data-sonner-toast][data-type="info"] {
5068
+ border-color: color-mix(
5069
+ in oklch,
5070
+ var(--toast-info, var(--info)) 35%,
5071
+ transparent
5072
+ );
5073
+ }
5074
+
5075
+ [data-sonner-toaster] [data-sonner-toast][data-type="info"] [data-icon] {
5076
+ color: var(--toast-info, var(--info));
5077
+ }
5078
+
5079
+ /* ── sources/sources.css ── */
5080
+ .dl-citation {
5081
+ display: inline-flex;
5082
+ align-items: center;
5083
+ justify-content: center;
5084
+ min-width: 1.125rem;
5085
+ height: 1.125rem;
5086
+ padding: 0 0.25rem;
5087
+ margin: 0 0.125rem;
5088
+ font-size: 0.6875rem;
5089
+ font-weight: 600;
5090
+ line-height: 1;
5091
+ border-radius: var(--radius-sm, 0.25rem);
5092
+ background-color: var(--muted);
5093
+ color: var(--primary);
5094
+ border: 1px solid var(--border);
5095
+ cursor: pointer;
5096
+ vertical-align: baseline;
5097
+ transition: all 0.12s ease;
5098
+ text-decoration: none;
5099
+ }
5100
+
5101
+ .dl-citation:hover {
5102
+ background-color: var(--accent);
5103
+ color: var(--accent-foreground);
5104
+ border-color: var(--ring);
5105
+ }
5106
+
5107
+ .dl-sources {
5108
+ display: flex;
5109
+ flex-direction: column;
5110
+ gap: 0.5rem;
5111
+ width: 100%;
5112
+ margin-top: 0.75rem;
5113
+ }
5114
+
5115
+ .dl-sources__header {
5116
+ display: flex;
5117
+ align-items: center;
5118
+ gap: 0.375rem;
5119
+ font-size: 0.75rem;
5120
+ font-weight: 600;
5121
+ text-transform: uppercase;
5122
+ letter-spacing: 0.05em;
5123
+ color: var(--muted-foreground);
5124
+ }
5125
+
5126
+ .dl-sources__grid {
5127
+ display: grid;
5128
+ grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
5129
+ gap: 0.5rem;
5130
+ }
5131
+
5132
+ .dl-source-card {
5133
+ display: flex;
5134
+ flex-direction: column;
5135
+ padding: 0.5rem 0.625rem;
5136
+ border-radius: var(--radius-md, 0.375rem);
5137
+ border: 1px solid var(--border);
3418
5138
  background-color: var(--card, var(--background));
3419
- border-color: var(--border);
3420
- color: var(--card-foreground, var(--foreground));
5139
+ text-decoration: none;
5140
+ color: var(--foreground);
5141
+ transition: all 0.15s ease;
5142
+ }
5143
+
5144
+ .dl-source-card:hover {
5145
+ border-color: var(--ring);
5146
+ background-color: var(--accent);
5147
+ }
5148
+
5149
+ .dl-source-card__meta {
5150
+ display: flex;
5151
+ align-items: center;
5152
+ gap: 0.375rem;
5153
+ font-size: 0.6875rem;
5154
+ color: var(--muted-foreground);
5155
+ }
5156
+
5157
+ .dl-source-card__index {
5158
+ display: inline-flex;
5159
+ align-items: center;
5160
+ justify-content: center;
5161
+ width: 0.875rem;
5162
+ height: 0.875rem;
5163
+ border-radius: 9999px;
5164
+ background-color: var(--muted);
5165
+ font-weight: 600;
5166
+ font-size: 0.625rem;
5167
+ }
5168
+
5169
+ .dl-source-card__domain {
5170
+ overflow: hidden;
5171
+ text-overflow: ellipsis;
5172
+ white-space: nowrap;
5173
+ }
5174
+
5175
+ .dl-source-card__title {
5176
+ margin-top: 0.25rem;
5177
+ font-size: 0.75rem;
5178
+ font-weight: 500;
5179
+ line-height: 1.3;
5180
+ display: -webkit-box;
5181
+ -webkit-line-clamp: 2;
5182
+ -webkit-box-orient: vertical;
5183
+ overflow: hidden;
5184
+ }
5185
+
5186
+ /* ── stack-trace/stack-trace.css ── */
5187
+ .dl-stack-trace {
5188
+ display: flex;
5189
+ flex-direction: column;
5190
+ width: 100%;
5191
+ border-radius: var(--radius-md, 0.375rem);
5192
+ border: 1px solid var(--border);
5193
+ background-color: var(--card, var(--background));
5194
+ overflow: hidden;
5195
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5196
+ font-size: 0.8125rem;
5197
+ }
5198
+
5199
+ .dl-stack-trace__header {
5200
+ display: flex;
5201
+ align-items: flex-start;
5202
+ justify-content: space-between;
5203
+ padding: 0.625rem 0.875rem;
5204
+ background-color: color-mix(
5205
+ in oklch,
5206
+ var(--destructive) 10%,
5207
+ var(--background)
5208
+ );
5209
+ border-bottom: 1px solid var(--border);
5210
+ gap: 0.75rem;
5211
+ }
5212
+
5213
+ .dl-stack-trace__title {
5214
+ display: flex;
5215
+ flex-direction: column;
5216
+ gap: 0.125rem;
5217
+ }
5218
+
5219
+ .dl-stack-trace__error-type {
5220
+ font-weight: 700;
5221
+ color: var(--destructive);
5222
+ font-size: 0.875rem;
5223
+ }
5224
+
5225
+ .dl-stack-trace__message {
5226
+ color: var(--foreground);
5227
+ font-size: 0.8125rem;
5228
+ line-height: 1.4;
5229
+ word-break: break-word;
5230
+ }
5231
+
5232
+ .dl-stack-trace__frames {
5233
+ display: flex;
5234
+ flex-direction: column;
5235
+ divide-y: 1px solid var(--border);
5236
+ max-height: 22rem;
5237
+ overflow-y: auto;
5238
+ }
5239
+
5240
+ .dl-stack-frame {
5241
+ display: flex;
5242
+ flex-direction: column;
5243
+ padding: 0.5rem 0.875rem;
5244
+ border-bottom: 1px solid var(--border);
5245
+ transition: background-color 0.12s ease;
5246
+ }
5247
+
5248
+ .dl-stack-frame:last-child {
5249
+ border-bottom: none;
5250
+ }
5251
+
5252
+ .dl-stack-frame:hover {
5253
+ background-color: var(--accent);
5254
+ }
5255
+
5256
+ .dl-stack-frame--internal {
5257
+ opacity: 0.65;
5258
+ }
5259
+
5260
+ .dl-stack-frame__header {
5261
+ display: flex;
5262
+ align-items: baseline;
5263
+ justify-content: space-between;
5264
+ gap: 0.5rem;
5265
+ cursor: pointer;
5266
+ user-select: none;
5267
+ }
5268
+
5269
+ .dl-stack-frame__fn {
5270
+ font-weight: 600;
5271
+ color: var(--primary);
5272
+ }
5273
+
5274
+ .dl-stack-frame__location {
5275
+ color: var(--muted-foreground);
5276
+ font-size: 0.75rem;
5277
+ overflow: hidden;
5278
+ text-overflow: ellipsis;
5279
+ white-space: nowrap;
5280
+ }
5281
+
5282
+ .dl-stack-frame__snippet {
5283
+ margin-top: 0.375rem;
5284
+ padding: 0.375rem 0.5rem;
5285
+ background-color: var(--muted);
5286
+ border-radius: var(--radius-sm, 0.25rem);
5287
+ font-size: 0.75rem;
5288
+ line-height: 1.4;
5289
+ white-space: pre-wrap;
5290
+ color: var(--foreground);
3421
5291
  }
3422
5292
 
3423
5293
  /* ── status-badge/status-badge.css ── */
@@ -3521,6 +5391,132 @@
3521
5391
  color: var(--muted-foreground);
3522
5392
  }
3523
5393
 
5394
+ /* ── subagent/subagent.css ── */
5395
+ .dl-subagent {
5396
+ display: flex;
5397
+ flex-direction: column;
5398
+ width: 100%;
5399
+ border-radius: var(--radius-md, 0.375rem);
5400
+ border: 1px solid var(--border);
5401
+ background-color: var(--card, var(--background));
5402
+ overflow: hidden;
5403
+ font-size: 0.8125rem;
5404
+ }
5405
+
5406
+ .dl-subagent__header {
5407
+ display: flex;
5408
+ align-items: center;
5409
+ justify-content: space-between;
5410
+ padding: 0.5rem 0.75rem;
5411
+ background-color: var(--muted);
5412
+ border-bottom: 1px solid var(--border);
5413
+ cursor: pointer;
5414
+ user-select: none;
5415
+ }
5416
+
5417
+ .dl-subagent__title-area {
5418
+ display: flex;
5419
+ align-items: center;
5420
+ gap: 0.5rem;
5421
+ }
5422
+
5423
+ .dl-subagent__avatar {
5424
+ display: flex;
5425
+ align-items: center;
5426
+ justify-content: center;
5427
+ width: 1.5rem;
5428
+ height: 1.5rem;
5429
+ border-radius: 9999px;
5430
+ background-color: var(--primary);
5431
+ color: var(--primary-foreground);
5432
+ font-size: 0.6875rem;
5433
+ font-weight: 700;
5434
+ }
5435
+
5436
+ .dl-subagent__meta {
5437
+ display: flex;
5438
+ flex-direction: column;
5439
+ }
5440
+
5441
+ .dl-subagent__name {
5442
+ font-weight: 600;
5443
+ color: var(--foreground);
5444
+ line-height: 1.2;
5445
+ }
5446
+
5447
+ .dl-subagent__role {
5448
+ font-size: 0.6875rem;
5449
+ color: var(--muted-foreground);
5450
+ }
5451
+
5452
+ .dl-subagent__badges {
5453
+ display: flex;
5454
+ align-items: center;
5455
+ gap: 0.375rem;
5456
+ }
5457
+
5458
+ .dl-subagent__content {
5459
+ padding: 0.75rem;
5460
+ background-color: var(--background);
5461
+ font-size: 0.75rem;
5462
+ line-height: 1.5;
5463
+ color: var(--foreground);
5464
+ }
5465
+
5466
+ /* ── suggestion/suggestion.css ── */
5467
+ .dl-suggestion-list {
5468
+ display: flex;
5469
+ gap: 0.5rem;
5470
+ width: 100%;
5471
+ }
5472
+
5473
+ .dl-suggestion-list--wrap {
5474
+ flex-wrap: wrap;
5475
+ }
5476
+
5477
+ .dl-suggestion-list--scroll {
5478
+ overflow-x: auto;
5479
+ padding-bottom: 0.25rem;
5480
+ }
5481
+
5482
+ .dl-suggestion {
5483
+ display: inline-flex;
5484
+ align-items: center;
5485
+ gap: 0.375rem;
5486
+ padding: 0.375rem 0.75rem;
5487
+ border-radius: 9999px;
5488
+ border: 1px solid var(--border);
5489
+ background-color: var(--secondary, var(--background));
5490
+ color: var(--foreground);
5491
+ font-size: 0.75rem;
5492
+ font-weight: 500;
5493
+ cursor: pointer;
5494
+ text-align: left;
5495
+ transition: all 0.15s ease;
5496
+ white-space: nowrap;
5497
+ }
5498
+
5499
+ .dl-suggestion:hover {
5500
+ background-color: var(--accent);
5501
+ border-color: color-mix(in oklch, var(--primary) 30%, var(--border));
5502
+ }
5503
+
5504
+ .dl-suggestion__icon {
5505
+ display: inline-flex;
5506
+ align-items: center;
5507
+ justify-content: center;
5508
+ color: var(--muted-foreground);
5509
+ }
5510
+
5511
+ .dl-suggestion:hover .dl-suggestion__icon {
5512
+ color: var(--primary);
5513
+ }
5514
+
5515
+ .dl-suggestion__description {
5516
+ color: var(--muted-foreground);
5517
+ font-weight: 400;
5518
+ }
5519
+
3524
5520
  /* ── switch/switch.css ── */
3525
5521
  .dl-switch {
3526
5522
  display: inline-flex;
@@ -3594,76 +5590,248 @@
3594
5590
  border-top: 1px solid var(--border);
3595
5591
  font-weight: 500;
3596
5592
  }
3597
- .dl-table__row {
3598
- border-bottom: 1px solid var(--border);
3599
- transition: background-color 0.1s;
5593
+ .dl-table__row {
5594
+ border-bottom: 1px solid var(--border);
5595
+ transition: background-color 0.1s;
5596
+ }
5597
+ .dl-table__head-cell {
5598
+ height: var(--control-height-md, 2.5rem);
5599
+ padding: var(--table-row-padding-y, 0.5rem)
5600
+ var(--table-row-padding-x, 0.75rem);
5601
+ text-align: left;
5602
+ font-weight: 500;
5603
+ color: var(--muted-foreground);
5604
+ white-space: nowrap;
5605
+ }
5606
+ .dl-table__cell {
5607
+ padding: var(--table-row-padding-y, 0.75rem)
5608
+ var(--table-row-padding-x, 0.75rem);
5609
+ vertical-align: middle;
5610
+ }
5611
+ .dl-table__caption {
5612
+ margin-top: 1rem;
5613
+ font-size: 0.875rem;
5614
+ color: var(--muted-foreground);
5615
+ }
5616
+
5617
+ /* ── tabs/tabs.css ── */
5618
+ .dl-tabs-list {
5619
+ display: inline-flex;
5620
+ height: var(--control-height-md, 2.25rem);
5621
+ align-items: center;
5622
+ justify-content: center;
5623
+ border-radius: var(--radius, 0.5rem);
5624
+ background-color: var(--muted);
5625
+ padding: 0.25rem;
5626
+ color: var(--muted-foreground);
5627
+ }
5628
+ .dl-tabs-trigger {
5629
+ display: inline-flex;
5630
+ align-items: center;
5631
+ justify-content: center;
5632
+ white-space: nowrap;
5633
+ border-radius: calc(var(--radius, 0.5rem) - 2px);
5634
+ padding: 0.25rem 0.75rem;
5635
+ font-size: 0.875rem;
5636
+ font-weight: 500;
5637
+ cursor: pointer;
5638
+ font-family: inherit;
5639
+ transition: all 0.15s ease;
5640
+ border: none;
5641
+ background: transparent;
5642
+ color: inherit;
5643
+ }
5644
+ .dl-tabs-trigger:focus-visible {
5645
+ outline: 2px solid var(--ring);
5646
+ outline-offset: 2px;
5647
+ }
5648
+ .dl-tabs-trigger:disabled {
5649
+ pointer-events: none;
5650
+ opacity: 0.5;
5651
+ }
5652
+ .dl-tabs-trigger[data-state="active"] {
5653
+ background-color: var(--background);
5654
+ color: var(--foreground);
5655
+ box-shadow: 0 1px 3px rgb(0 0 0/0.1);
5656
+ }
5657
+ .dl-tabs-content {
5658
+ margin-top: 0.5rem;
5659
+ }
5660
+ .dl-tabs-content:focus-visible {
5661
+ outline: 2px solid var(--ring);
5662
+ outline-offset: 2px;
5663
+ }
5664
+
5665
+ /* ── terminal/terminal.css ── */
5666
+ .dl-terminal {
5667
+ display: flex;
5668
+ flex-direction: column;
5669
+ width: 100%;
5670
+ border-radius: var(--radius-md, 0.375rem);
5671
+ border: 1px solid var(--border);
5672
+ background-color: var(--secondary, #0d1117);
5673
+ color: var(--foreground);
5674
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5675
+ font-size: 0.8125rem;
5676
+ overflow: hidden;
5677
+ }
5678
+
5679
+ .dl-terminal__header {
5680
+ display: flex;
5681
+ align-items: center;
5682
+ justify-content: space-between;
5683
+ padding: 0.375rem 0.75rem;
5684
+ border-bottom: 1px solid var(--border);
5685
+ background-color: var(--background);
5686
+ font-size: 0.75rem;
5687
+ }
5688
+
5689
+ .dl-terminal__dots {
5690
+ display: flex;
5691
+ align-items: center;
5692
+ gap: 0.375rem;
5693
+ }
5694
+
5695
+ .dl-terminal__dot {
5696
+ width: 0.625rem;
5697
+ height: 0.625rem;
5698
+ border-radius: 9999px;
5699
+ background-color: var(--muted-foreground);
5700
+ opacity: 0.4;
5701
+ }
5702
+
5703
+ .dl-terminal__title {
5704
+ display: flex;
5705
+ align-items: center;
5706
+ gap: 0.375rem;
5707
+ font-weight: 500;
5708
+ color: var(--muted-foreground);
5709
+ }
5710
+
5711
+ .dl-terminal__output {
5712
+ margin: 0;
5713
+ padding: 0.75rem 1rem;
5714
+ overflow-y: auto;
5715
+ line-height: 1.5;
5716
+ white-space: pre-wrap;
5717
+ word-break: break-all;
5718
+ color: var(--foreground);
5719
+ }
5720
+
5721
+ .dl-terminal__prompt-line {
5722
+ color: var(--primary);
5723
+ font-weight: 600;
5724
+ margin-bottom: 0.25rem;
5725
+ }
5726
+
5727
+ /* ── test-results/test-results.css ── */
5728
+ .dl-test-results {
5729
+ display: flex;
5730
+ flex-direction: column;
5731
+ width: 100%;
5732
+ border-radius: var(--radius-md, 0.375rem);
5733
+ border: 1px solid var(--border);
5734
+ background-color: var(--card, var(--background));
5735
+ overflow: hidden;
5736
+ font-size: 0.8125rem;
5737
+ }
5738
+
5739
+ .dl-test-results__header {
5740
+ display: flex;
5741
+ align-items: center;
5742
+ justify-content: space-between;
5743
+ padding: 0.625rem 0.875rem;
5744
+ background-color: var(--muted);
5745
+ border-bottom: 1px solid var(--border);
5746
+ }
5747
+
5748
+ .dl-test-results__summary {
5749
+ display: flex;
5750
+ align-items: center;
5751
+ gap: 0.75rem;
5752
+ }
5753
+
5754
+ .dl-test-results__badge {
5755
+ display: inline-flex;
5756
+ align-items: center;
5757
+ gap: 0.25rem;
5758
+ font-weight: 600;
5759
+ font-size: 0.75rem;
5760
+ }
5761
+
5762
+ .dl-test-results__badge--passed {
5763
+ color: var(--success);
3600
5764
  }
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;
5765
+
5766
+ .dl-test-results__badge--failed {
5767
+ color: var(--destructive);
5768
+ }
5769
+
5770
+ .dl-test-results__badge--skipped {
3607
5771
  color: var(--muted-foreground);
3608
- white-space: nowrap;
3609
5772
  }
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;
5773
+
5774
+ .dl-test-results__list {
5775
+ display: flex;
5776
+ flex-direction: column;
5777
+ divide-y: 1px solid var(--border);
5778
+ max-height: 20rem;
5779
+ overflow-y: auto;
3614
5780
  }
3615
- .dl-table__caption {
3616
- margin-top: 1rem;
3617
- font-size: 0.875rem;
3618
- color: var(--muted-foreground);
5781
+
5782
+ .dl-test-case {
5783
+ display: flex;
5784
+ flex-direction: column;
5785
+ padding: 0.5rem 0.875rem;
5786
+ transition: background-color 0.12s ease;
3619
5787
  }
3620
5788
 
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);
5789
+ .dl-test-case:hover {
5790
+ background-color: var(--accent);
3631
5791
  }
3632
- .dl-tabs-trigger {
3633
- display: inline-flex;
5792
+
5793
+ .dl-test-case__row {
5794
+ display: flex;
3634
5795
  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;
5796
+ justify-content: space-between;
5797
+ gap: 0.5rem;
3651
5798
  }
3652
- .dl-tabs-trigger:disabled {
3653
- pointer-events: none;
3654
- opacity: 0.5;
5799
+
5800
+ .dl-test-case__info {
5801
+ display: flex;
5802
+ align-items: center;
5803
+ gap: 0.5rem;
5804
+ min-width: 0;
3655
5805
  }
3656
- .dl-tabs-trigger[data-state="active"] {
3657
- background-color: var(--background);
5806
+
5807
+ .dl-test-case__name {
5808
+ font-weight: 500;
3658
5809
  color: var(--foreground);
3659
- box-shadow: 0 1px 3px rgb(0 0 0/0.1);
5810
+ overflow: hidden;
5811
+ text-overflow: ellipsis;
5812
+ white-space: nowrap;
3660
5813
  }
3661
- .dl-tabs-content {
3662
- margin-top: 0.5rem;
5814
+
5815
+ .dl-test-case__duration {
5816
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5817
+ font-size: 0.6875rem;
5818
+ color: var(--muted-foreground);
5819
+ shrink: 0;
3663
5820
  }
3664
- .dl-tabs-content:focus-visible {
3665
- outline: 2px solid var(--ring);
3666
- outline-offset: 2px;
5821
+
5822
+ .dl-test-case__error {
5823
+ margin-top: 0.375rem;
5824
+ padding: 0.375rem 0.5rem;
5825
+ background-color: color-mix(
5826
+ in oklch,
5827
+ var(--destructive) 10%,
5828
+ var(--background)
5829
+ );
5830
+ border-radius: var(--radius-sm, 0.25rem);
5831
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
5832
+ font-size: 0.75rem;
5833
+ color: var(--destructive);
5834
+ white-space: pre-wrap;
3667
5835
  }
3668
5836
 
3669
5837
  /* ── textarea/textarea.css ── */
@@ -3791,6 +5959,119 @@
3791
5959
  gap: 0.25rem;
3792
5960
  }
3793
5961
 
5962
+ /* ── tool-call/tool-call.css ── */
5963
+ .dl-tool-call {
5964
+ display: flex;
5965
+ flex-direction: column;
5966
+ width: 100%;
5967
+ border-radius: var(--radius-md, 0.375rem);
5968
+ border: 1px solid var(--border);
5969
+ background-color: var(--card, var(--background));
5970
+ font-size: 0.8125rem;
5971
+ overflow: hidden;
5972
+ }
5973
+
5974
+ .dl-tool-call__header {
5975
+ display: flex;
5976
+ align-items: center;
5977
+ justify-content: space-between;
5978
+ width: 100%;
5979
+ padding: 0.5rem 0.75rem;
5980
+ background: transparent;
5981
+ border: none;
5982
+ cursor: pointer;
5983
+ text-align: left;
5984
+ font: inherit;
5985
+ color: var(--foreground);
5986
+ }
5987
+
5988
+ .dl-tool-call__title-wrap {
5989
+ display: flex;
5990
+ align-items: center;
5991
+ gap: 0.5rem;
5992
+ }
5993
+
5994
+ .dl-tool-call__icon {
5995
+ display: inline-flex;
5996
+ align-items: center;
5997
+ justify-content: center;
5998
+ width: 1.25rem;
5999
+ height: 1.25rem;
6000
+ color: var(--muted-foreground);
6001
+ }
6002
+
6003
+ .dl-tool-call__name {
6004
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
6005
+ font-weight: 600;
6006
+ font-size: 0.75rem;
6007
+ }
6008
+
6009
+ .dl-tool-call__actions {
6010
+ display: flex;
6011
+ align-items: center;
6012
+ gap: 0.5rem;
6013
+ }
6014
+
6015
+ .dl-tool-call__status-badge {
6016
+ display: inline-flex;
6017
+ align-items: center;
6018
+ gap: 0.25rem;
6019
+ font-size: 0.6875rem;
6020
+ font-weight: 500;
6021
+ padding: 0.125rem 0.375rem;
6022
+ border-radius: var(--radius-sm, 0.25rem);
6023
+ }
6024
+
6025
+ .dl-tool-call__status-badge--running {
6026
+ background-color: color-mix(in oklch, var(--primary) 12%, transparent);
6027
+ color: var(--primary);
6028
+ }
6029
+
6030
+ .dl-tool-call__status-badge--success {
6031
+ background-color: color-mix(in oklch, var(--success) 12%, transparent);
6032
+ color: var(--success);
6033
+ }
6034
+
6035
+ .dl-tool-call__status-badge--error {
6036
+ background-color: color-mix(in oklch, var(--destructive) 12%, transparent);
6037
+ color: var(--destructive);
6038
+ }
6039
+
6040
+ .dl-tool-call__chevron {
6041
+ width: 0.875rem;
6042
+ height: 0.875rem;
6043
+ color: var(--muted-foreground);
6044
+ transition: transform 0.2s ease;
6045
+ }
6046
+
6047
+ .dl-tool-call[data-state="open"] .dl-tool-call__chevron {
6048
+ transform: rotate(180deg);
6049
+ }
6050
+
6051
+ .dl-tool-call__body {
6052
+ display: flex;
6053
+ flex-direction: column;
6054
+ gap: 0.5rem;
6055
+ padding: 0.5rem 0.75rem 0.75rem;
6056
+ border-top: 1px solid var(--border);
6057
+ background-color: var(--secondary, var(--background));
6058
+ }
6059
+
6060
+ .dl-tool-call__args {
6061
+ display: flex;
6062
+ flex-wrap: wrap;
6063
+ gap: 0.375rem;
6064
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, monospace);
6065
+ font-size: 0.6875rem;
6066
+ }
6067
+
6068
+ .dl-tool-call__arg-pill {
6069
+ padding: 0.125rem 0.375rem;
6070
+ border-radius: var(--radius-sm, 0.25rem);
6071
+ background-color: var(--background);
6072
+ border: 1px solid var(--border);
6073
+ }
6074
+
3794
6075
  /* ── tooltip/tooltip.css ── */
3795
6076
  .dl-tooltip {
3796
6077
  z-index: 50;
@@ -3810,6 +6091,108 @@
3810
6091
  animation: dl-fade-out 100ms ease;
3811
6092
  }
3812
6093
 
6094
+ /* ── trace/trace.css ── */
6095
+ .dl-trace {
6096
+ position: relative;
6097
+ display: flex;
6098
+ flex-direction: column;
6099
+ width: 100%;
6100
+ font-size: 0.8125rem;
6101
+ }
6102
+
6103
+ .dl-trace-line {
6104
+ position: relative;
6105
+ display: flex;
6106
+ align-items: center;
6107
+ gap: 0.625rem;
6108
+ padding: 0.375rem 0;
6109
+ color: var(--foreground);
6110
+ }
6111
+
6112
+ .dl-trace-icon {
6113
+ display: inline-flex;
6114
+ align-items: center;
6115
+ justify-content: center;
6116
+ width: 1.25rem;
6117
+ height: 1.25rem;
6118
+ border-radius: 9999px;
6119
+ background-color: var(--muted);
6120
+ color: var(--muted-foreground);
6121
+ flex-shrink: 0;
6122
+ }
6123
+
6124
+ .dl-trace-icon--running {
6125
+ background-color: transparent;
6126
+ color: var(--primary);
6127
+ animation: dl-spin 1s linear infinite;
6128
+ }
6129
+
6130
+ .dl-trace-icon--success {
6131
+ background-color: color-mix(in oklch, var(--success) 15%, transparent);
6132
+ color: var(--success);
6133
+ }
6134
+
6135
+ .dl-trace-icon--error {
6136
+ background-color: color-mix(in oklch, var(--destructive) 15%, transparent);
6137
+ color: var(--destructive);
6138
+ }
6139
+
6140
+ .dl-trace-title {
6141
+ display: flex;
6142
+ align-items: center;
6143
+ gap: 0.5rem;
6144
+ font-weight: 500;
6145
+ line-height: 1.25rem;
6146
+ color: var(--foreground);
6147
+ }
6148
+
6149
+ .dl-trace-content {
6150
+ margin-left: 1.875rem;
6151
+ padding: 0.25rem 0 0.5rem;
6152
+ color: var(--muted-foreground);
6153
+ }
6154
+
6155
+ .dl-trace-collapsible-trigger {
6156
+ display: flex;
6157
+ align-items: center;
6158
+ width: 100%;
6159
+ background: transparent;
6160
+ border: none;
6161
+ padding: 0;
6162
+ cursor: pointer;
6163
+ text-align: left;
6164
+ font: inherit;
6165
+ color: inherit;
6166
+ }
6167
+
6168
+ .dl-trace-collapsible-trigger:hover .dl-trace-title {
6169
+ color: var(--primary);
6170
+ }
6171
+
6172
+ /* ── Shimmer Animation Utility for AI Streaming ── */
6173
+ @keyframes dl-shimmer-sweep {
6174
+ 0% {
6175
+ background-position: -200% 0;
6176
+ }
6177
+ 100% {
6178
+ background-position: 200% 0;
6179
+ }
6180
+ }
6181
+
6182
+ .dl-shimmer {
6183
+ background: linear-gradient(
6184
+ 90deg,
6185
+ var(--muted-foreground) 0%,
6186
+ var(--foreground) 50%,
6187
+ var(--muted-foreground) 100%
6188
+ );
6189
+ background-size: 200% 100%;
6190
+ -webkit-background-clip: text;
6191
+ background-clip: text;
6192
+ -webkit-text-fill-color: transparent;
6193
+ animation: dl-shimmer-sweep 2.2s infinite linear;
6194
+ }
6195
+
3813
6196
  /* ── typography/typography.css ── */
3814
6197
  /**
3815
6198
  * @file typography.css