@workerdeck/ui 2.15.0 → 3.0.1

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 (45) hide show
  1. package/README.md +6 -5
  2. package/build/{SessionPanel-BVKqPs_3.d.mts → SessionPanel-C1bU4yTM.d.mts} +11 -11
  3. package/build/index.d.mts +46 -9
  4. package/build/index.mjs +70 -43
  5. package/build/index.mjs.map +1 -1
  6. package/build/scoped.css +156 -16
  7. package/build/{use-path-links-BgWXmfAS.mjs → use-path-links-BEWxt0ZM.mjs} +1566 -852
  8. package/build/use-path-links-BEWxt0ZM.mjs.map +1 -0
  9. package/build/workspace.d.mts +3 -3
  10. package/build/workspace.mjs +3 -3
  11. package/build/workspace.mjs.map +1 -1
  12. package/package.json +4 -4
  13. package/src/components/agent/PermissionPrompt.tsx +16 -2
  14. package/src/components/agent/Response.tsx +8 -1
  15. package/src/components/agent/SessionBrowser.tsx +6 -0
  16. package/src/components/agent/SessionItem.tsx +3 -0
  17. package/src/components/agent/SessionPanel.tsx +28 -33
  18. package/src/components/agent/SessionSteps.tsx +46 -5
  19. package/src/components/agent/SessionWorkspace.tsx +3 -3
  20. package/src/components/agent/ShellStrip.tsx +27 -4
  21. package/src/components/agent/ShellTerminal.tsx +1 -1
  22. package/src/components/agent/ToolCallCard.tsx +18 -41
  23. package/src/components/agent/Transcript.tsx +98 -93
  24. package/src/components/agent/TranscriptItemView.tsx +102 -59
  25. package/src/components/agent/TranscriptRows.tsx +4 -2
  26. package/src/components/agent/image-viewer.tsx +326 -0
  27. package/src/components/agent/markdown-image.tsx +91 -0
  28. package/src/components/agent/shell-actions.tsx +2 -0
  29. package/src/components/agent/tool-result-image.tsx +40 -0
  30. package/src/components/agent/transcript-variant.tsx +3 -21
  31. package/src/components/prompt-area/use-prompt-area-keydown.ts +4 -2
  32. package/src/components/terminal/PermissionPrompt.tsx +20 -4
  33. package/src/components/terminal/TerminalTranscript.tsx +38 -21
  34. package/src/components/terminal/affordances.tsx +100 -74
  35. package/src/components/terminal/height.ts +48 -32
  36. package/src/components/terminal/image-box.ts +31 -0
  37. package/src/components/terminal/items.tsx +92 -14
  38. package/src/components/terminal/markdown.tsx +4 -1
  39. package/src/components/terminal/shell-row.ts +17 -3
  40. package/src/index.ts +19 -4
  41. package/src/lib/shell-request.ts +115 -0
  42. package/src/lib/tool-icon.ts +13 -1
  43. package/src/styles/terminal.css +129 -22
  44. package/src/styles/theme.css +4 -0
  45. package/build/use-path-links-BgWXmfAS.mjs.map +0 -1
package/build/scoped.css CHANGED
@@ -635,6 +635,9 @@
635
635
  .wd-root .min-h-\[200px\] {
636
636
  min-height: 200px;
637
637
  }
638
+ .wd-root .min-h-full {
639
+ min-height: 100%;
640
+ }
638
641
  .wd-root .w-0\.5 {
639
642
  width: calc(var(--spacing) * 0.5);
640
643
  }
@@ -653,6 +656,9 @@
653
656
  .wd-root .w-9 {
654
657
  width: calc(var(--spacing) * 9);
655
658
  }
659
+ .wd-root .w-12 {
660
+ width: calc(var(--spacing) * 12);
661
+ }
656
662
  .wd-root .w-14 {
657
663
  width: calc(var(--spacing) * 14);
658
664
  }
@@ -686,6 +692,9 @@
686
692
  .wd-root .w-full {
687
693
  width: 100%;
688
694
  }
695
+ .wd-root .w-max {
696
+ width: max-content;
697
+ }
689
698
  .wd-root .w-px {
690
699
  width: 1px;
691
700
  }
@@ -716,6 +725,9 @@
716
725
  .wd-root .max-w-md {
717
726
  max-width: var(--container-md);
718
727
  }
728
+ .wd-root .max-w-none {
729
+ max-width: none;
730
+ }
719
731
  .wd-root .max-w-sm {
720
732
  max-width: var(--container-sm);
721
733
  }
@@ -749,6 +761,9 @@
749
761
  .wd-root .min-w-\[var\(--anchor-width\)\] {
750
762
  min-width: var(--anchor-width);
751
763
  }
764
+ .wd-root .min-w-full {
765
+ min-width: 100%;
766
+ }
752
767
  .wd-root .flex-1 {
753
768
  flex: 1;
754
769
  }
@@ -802,6 +817,9 @@
802
817
  .wd-root .cursor-default {
803
818
  cursor: default;
804
819
  }
820
+ .wd-root .cursor-grab {
821
+ cursor: grab;
822
+ }
805
823
  .wd-root .cursor-not-allowed {
806
824
  cursor: not-allowed;
807
825
  }
@@ -811,6 +829,9 @@
811
829
  .wd-root .cursor-row-resize {
812
830
  cursor: row-resize;
813
831
  }
832
+ .wd-root .cursor-zoom-in {
833
+ cursor: zoom-in;
834
+ }
814
835
  .wd-root .touch-none {
815
836
  touch-action: none;
816
837
  }
@@ -1239,6 +1260,12 @@
1239
1260
  .wd-root .bg-surface-hover {
1240
1261
  background-color: var(--bg-surface-hover);
1241
1262
  }
1263
+ .wd-root .bg-surface-hover\/40 {
1264
+ background-color: var(--bg-surface-hover);
1265
+ @supports (color: color-mix(in lab, red, red)) {
1266
+ background-color: color-mix(in oklab, var(--bg-surface-hover) 40%, transparent);
1267
+ }
1268
+ }
1242
1269
  .wd-root .bg-transparent {
1243
1270
  background-color: transparent;
1244
1271
  }
@@ -1371,6 +1398,9 @@
1371
1398
  .wd-root .pt-4 {
1372
1399
  padding-top: calc(var(--spacing) * 4);
1373
1400
  }
1401
+ .wd-root .pt-5 {
1402
+ padding-top: calc(var(--spacing) * 5);
1403
+ }
1374
1404
  .wd-root .pr-0\.5 {
1375
1405
  padding-right: calc(var(--spacing) * 0.5);
1376
1406
  }
@@ -2046,6 +2076,9 @@
2046
2076
  .wd-root .focus-visible\:ring-inset:focus-visible {
2047
2077
  --tw-ring-inset: inset;
2048
2078
  }
2079
+ .wd-root .active\:cursor-grabbing:active {
2080
+ cursor: grabbing;
2081
+ }
2049
2082
  .wd-root .disabled\:pointer-events-none:disabled {
2050
2083
  pointer-events: none;
2051
2084
  }
@@ -2443,40 +2476,135 @@
2443
2476
  .wd-root .term-hoverable {
2444
2477
  position: relative;
2445
2478
  }
2446
- .wd-root [data-terminal] .term-actions {
2479
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) .term-actions {
2447
2480
  position: absolute;
2448
- top: 0;
2449
- right: 0;
2450
- height: var(--term-line);
2481
+ z-index: 1;
2451
2482
  display: flex;
2483
+ align-items: center;
2484
+ opacity: 0;
2485
+ transition: opacity var(--motion-fast, 120ms);
2486
+ }
2487
+ .wd-root [data-terminal] .term-actions {
2488
+ height: var(--term-line);
2452
2489
  gap: 1ch;
2490
+ }
2491
+ .wd-root [data-cards] .term-actions {
2492
+ height: 20px;
2493
+ gap: 6px;
2494
+ }
2495
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-placement='below']>.term-actions {
2496
+ top: 100%;
2497
+ }
2498
+ .wd-root [data-terminal] [data-placement='below']>.term-actions {
2499
+ left: var(--term-cell);
2500
+ }
2501
+ .wd-root [data-cards] [data-placement='below']>.term-actions {
2502
+ left: 0;
2503
+ }
2504
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-placement='inline']>.term-actions {
2505
+ top: 0;
2506
+ right: 0;
2453
2507
  padding-inline: 1ch;
2454
2508
  background: var(--bg, transparent);
2455
- opacity: 0;
2456
- transition: opacity var(--motion-fast, 120ms);
2457
2509
  }
2458
- .wd-root [data-terminal] .term-hoverable:hover .term-actions, .wd-root [data-terminal] .term-hoverable:focus-within .term-actions {
2510
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-placement='below']:is(:hover,:focus-within):not(:has([data-placement='below']:is(:hover,:focus-within)))>.term-actions, :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-placement='inline']:is(:hover,:focus-within)>.term-actions {
2459
2511
  opacity: 1;
2460
2512
  }
2513
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-slot='transcript-rows'] [data-index]:not(.absolute) {
2514
+ position: relative;
2515
+ }
2516
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) [data-slot='transcript-rows'] [data-index]:is(:hover,:focus-within) {
2517
+ z-index: 1;
2518
+ }
2461
2519
  @media (hover: none) {
2462
- .wd-root [data-terminal] .term-actions {
2520
+ :is(.wd-root, .wd-root *):is([data-terminal],[data-cards]) .term-actions {
2463
2521
  opacity: 1;
2464
2522
  }
2465
2523
  }
2524
+ .wd-root [data-cards] .term-action {
2525
+ font: inherit;
2526
+ font-size: 12px;
2527
+ font-weight: 500;
2528
+ line-height: 1;
2529
+ height: 18px;
2530
+ min-width: 22px;
2531
+ display: inline-flex;
2532
+ align-items: center;
2533
+ justify-content: center;
2534
+ gap: 4px;
2535
+ padding-inline: 5px;
2536
+ color: var(--fg-3);
2537
+ background: var(--surface);
2538
+ border: 1px solid var(--border);
2539
+ border-radius: 4px;
2540
+ white-space: nowrap;
2541
+ cursor: pointer;
2542
+ }
2543
+ .wd-root [data-cards] .term-action-icon {
2544
+ width: 14px;
2545
+ height: 14px;
2546
+ stroke-width: 2.25;
2547
+ flex: none;
2548
+ }
2549
+ .wd-root [data-cards] .term-action-word {
2550
+ padding-right: 2px;
2551
+ }
2552
+ .wd-root [data-cards] .term-action:hover, .wd-root [data-cards] .term-action:focus-visible {
2553
+ color: var(--fg-1);
2554
+ background: var(--row-hover);
2555
+ }
2556
+ .wd-root [data-cards] .term-action[data-tone='magenta'] {
2557
+ color: var(--wd-shell-accent);
2558
+ }
2559
+ .wd-root [data-cards] .term-action[data-tone='yellow'] {
2560
+ color: var(--warning);
2561
+ }
2562
+ .wd-root [data-cards] .term-action[data-tone='danger']:hover {
2563
+ color: var(--danger);
2564
+ }
2466
2565
  .wd-root [data-terminal] .term-action {
2467
2566
  font: inherit;
2468
- line-height: var(--term-line);
2567
+ font-weight: 500;
2568
+ line-height: 1;
2569
+ height: calc(var(--term-line) - 2px);
2570
+ min-width: 3ch;
2571
+ display: inline-flex;
2572
+ align-items: center;
2573
+ justify-content: center;
2574
+ gap: 0.6ch;
2575
+ padding-inline: 0.6ch;
2469
2576
  color: var(--term-dim);
2470
- background: none;
2471
- border: 0;
2472
- padding: 0;
2577
+ background: var(--term-band-bg);
2578
+ border: 1px solid var(--term-faint);
2579
+ @supports (color: color-mix(in lab, red, red)) {
2580
+ border: 1px solid color-mix(in srgb, var(--term-faint) 55%, transparent);
2581
+ }
2582
+ border-radius: 3px;
2583
+ white-space: pre;
2473
2584
  cursor: pointer;
2474
2585
  }
2586
+ .wd-root [data-terminal] .term-action-icon {
2587
+ width: calc(var(--term-font-size) + 1px);
2588
+ height: calc(var(--term-font-size) + 1px);
2589
+ stroke-width: 2.25;
2590
+ flex: none;
2591
+ }
2592
+ .wd-root [data-terminal] .term-action-word {
2593
+ padding-right: 0.2ch;
2594
+ }
2595
+ .wd-root [data-terminal] .term-action:hover, .wd-root [data-terminal] .term-action:focus-visible {
2596
+ color: var(--term-bright);
2597
+ border-color: var(--term-dim);
2598
+ background: var(--term-row-hover);
2599
+ }
2475
2600
  .wd-root [data-terminal] .term-action[data-tone='magenta'] {
2476
2601
  color: var(--term-magenta);
2477
2602
  }
2478
- .wd-root [data-terminal] .term-action:hover {
2479
- color: var(--term-fg);
2603
+ .wd-root [data-terminal] .term-action[data-tone='yellow'] {
2604
+ color: var(--term-yellow);
2605
+ }
2606
+ .wd-root [data-terminal] .term-action[data-tone='danger']:hover {
2607
+ color: var(--term-red);
2480
2608
  }
2481
2609
  .wd-root [data-terminal] .term-user {
2482
2610
  background: var(--term-user-bg);
@@ -2592,7 +2720,7 @@
2592
2720
  .wd-root [data-terminal] [data-sticky-lane]>[data-sticky-headlane] {
2593
2721
  position: absolute;
2594
2722
  inset: 0;
2595
- z-index: 1;
2723
+ z-index: 2;
2596
2724
  pointer-events: none;
2597
2725
  }
2598
2726
  .wd-root [data-terminal] [data-sticky-headlane]>[data-sticky-head] {
@@ -2929,7 +3057,16 @@
2929
3057
  display: block;
2930
3058
  overflow: hidden;
2931
3059
  }
2932
- .wd-root .term-image>img {
3060
+ .wd-root .term-image>[data-slot='viewable-image'] {
3061
+ display: block;
3062
+ height: 100%;
3063
+ max-width: 100%;
3064
+ padding: 0;
3065
+ border: 0;
3066
+ background: none;
3067
+ }
3068
+ .wd-root .term-image img {
3069
+ display: block;
2933
3070
  max-width: 100%;
2934
3071
  height: 100%;
2935
3072
  object-fit: contain;
@@ -3354,6 +3491,9 @@
3354
3491
  left: 0;
3355
3492
  width: 12px;
3356
3493
  }
3494
+ .wd-root .wd-shell-term .xterm .xterm-viewport {
3495
+ background-color: transparent;
3496
+ }
3357
3497
  .wd-root .wd-scrubber .wd-scrub-mark[data-kind='user'] {
3358
3498
  background: var(--accent);
3359
3499
  }