@agent-native/core 0.175.2-nightly-20260826150235 → 0.175.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +1 -1
- package/corpus/templates/clips/app/components/player/comments-panel.tsx +1 -1
- package/corpus/templates/clips/app/components/player/video-player.tsx +5 -3
- package/corpus/templates/clips/desktop/src/app.tsx +171 -51
- package/corpus/templates/clips/desktop/src/lib/pill-completion.ts +111 -0
- package/corpus/templates/clips/desktop/src/lib/pill-session.ts +34 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +181 -79
- package/corpus/templates/clips/desktop/src/lib/rewind-recording-start.ts +28 -4
- package/corpus/templates/clips/desktop/src/main.tsx +4 -4
- package/corpus/templates/clips/desktop/src/overlays/record-pill.tsx +1320 -0
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +1 -1
- package/corpus/templates/clips/desktop/src/styles.css +20 -308
- package/corpus/templates/clips/desktop/src/tailwind.css +85 -0
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +153 -70
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +15 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +25 -7
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +3 -3
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +375 -24
- package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +22 -30
- package/corpus/templates/clips/desktop/src-tauri/src/rewind_clip.rs +5 -0
- package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +134 -14
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +233 -4
- package/corpus/templates/clips/desktop/src-tauri/src/util.rs +8 -5
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +1 -1
- package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +3 -2
- package/corpus/templates/design/.generated/bridge/zoom.generated.ts +8 -2
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +46 -10
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +89 -63
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +3 -1
- package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +8 -2
- package/corpus/templates/design/app/components/design/bridge/zoom.bridge.ts +11 -2
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +3 -4
- package/corpus/templates/design/app/components/design/multi-screen/zoom-gesture.ts +19 -63
- package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +2 -1
- package/corpus/templates/design/shared/canvas-math.ts +11 -1
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +44 -18
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +88 -23
- package/corpus/templates/slides/app/context/DeckContext.tsx +155 -86
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +7 -5
- package/corpus/templates/slides/changelog/2026-08-26-thumbnail-arrow-keys-now-navigate-slides-after-selection.md +6 -0
- package/dist/client/hooks/index.d.ts +1 -0
- package/dist/client/hooks/index.js +1 -0
- package/dist/client/use-pinch-zoom.js +17 -4
- package/dist/client/zoom-gesture.d.ts +74 -0
- package/dist/client/zoom-gesture.js +100 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +13 -13
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/builder-browser.d.ts +13 -13
- package/dist/server/builder-browser.js +46 -15
- package/dist/server/builder-oauth.d.ts +12 -0
- package/dist/server/builder-oauth.js +13 -2
- package/dist/server/core-routes-plugin.js +54 -19
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/vite/client.js +2 -0
- package/docs/content/template-chat-developers.mdx +100 -13
- package/docs/content/template-chat-first-edits.mdx +5 -5
- package/docs/content/template-chat.mdx +84 -36
- package/package.json +4 -3
- package/corpus/templates/clips/desktop/src/overlays/toolbar.tsx +0 -458
|
@@ -40,7 +40,7 @@ interface PillContext {
|
|
|
40
40
|
* and capture-excluded — see `recording_indicator.rs`. We only deal with
|
|
41
41
|
* sizing the window when the user toggles the chevron.
|
|
42
42
|
*/
|
|
43
|
-
export function
|
|
43
|
+
export function MeetingPill() {
|
|
44
44
|
const [expanded, setExpanded] = useState(false);
|
|
45
45
|
const [paused, setPaused] = useState(false);
|
|
46
46
|
const [elapsed, setElapsed] = useState(0);
|
|
@@ -25,11 +25,10 @@
|
|
|
25
25
|
--radius: 12px;
|
|
26
26
|
--radius-sm: 8px;
|
|
27
27
|
--radius-pill: 999px;
|
|
28
|
-
/*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--popover-shadow-gutter-top: 6px;
|
|
28
|
+
/* Transparent apron reserved for CSS-painted shadows on the overlays that
|
|
29
|
+
still use them (bubble, countdown). The popover and other converted
|
|
30
|
+
windows are sized to their content exactly and use the native NSWindow
|
|
31
|
+
shadow instead. */
|
|
33
32
|
--overlay-shadow-gutter: 18px;
|
|
34
33
|
|
|
35
34
|
--shadow-sm: 0 1px 2px rgba(23, 23, 23, 0.06);
|
|
@@ -67,9 +66,9 @@
|
|
|
67
66
|
}
|
|
68
67
|
|
|
69
68
|
/* Tauri window is `transparent: true` + `decorations: false`, so the HTML
|
|
70
|
-
paints the visible shape.
|
|
71
|
-
|
|
72
|
-
round-cornered chromeless popover. */
|
|
69
|
+
paints the visible shape. The popover window is sized to the rounded panel
|
|
70
|
+
exactly; macOS derives a native shadow from the panel's alpha, giving us
|
|
71
|
+
the round-cornered chromeless popover with no transparent apron. */
|
|
73
72
|
html,
|
|
74
73
|
body {
|
|
75
74
|
margin: 0;
|
|
@@ -116,10 +115,6 @@ body[data-clips-route]:not([data-clips-route="popover"]) #root {
|
|
|
116
115
|
overflow: hidden;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
body[data-clips-route="recording-pill"] #root {
|
|
120
|
-
padding: var(--overlay-shadow-gutter);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
118
|
/* ------------------------------------------------------------------------- */
|
|
124
119
|
/* App shell */
|
|
125
120
|
/* ------------------------------------------------------------------------- */
|
|
@@ -132,14 +127,12 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
132
127
|
gap: 14px;
|
|
133
128
|
background: var(--bg);
|
|
134
129
|
border: 1px solid var(--border);
|
|
130
|
+
/* The rounded corners shape the native NSWindow shadow — the window is
|
|
131
|
+
sized to this panel exactly, so a CSS box-shadow would just clip. */
|
|
135
132
|
border-radius: 14px;
|
|
136
|
-
/* Subtle drop shadow so the popover visually detaches from the menu bar. */
|
|
137
|
-
box-shadow: var(--shadow-md);
|
|
138
133
|
/* No fixed height — the Tauri window is resized to match the rendered
|
|
139
134
|
content via resize_popover, so the shell just flows naturally. */
|
|
140
|
-
max-height:
|
|
141
|
-
100vh - var(--popover-shadow-gutter) - var(--popover-shadow-gutter)
|
|
142
|
-
);
|
|
135
|
+
max-height: 100vh;
|
|
143
136
|
overflow-y: auto;
|
|
144
137
|
overflow-x: hidden;
|
|
145
138
|
overscroll-behavior: contain;
|
|
@@ -3418,291 +3411,6 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
3418
3411
|
border-color: rgba(245, 158, 11, 0.35);
|
|
3419
3412
|
}
|
|
3420
3413
|
|
|
3421
|
-
/* ------------------------------------------------------------------------- */
|
|
3422
|
-
/* Vertical Loom-style recording pill */
|
|
3423
|
-
/* ------------------------------------------------------------------------- */
|
|
3424
|
-
|
|
3425
|
-
.toolbar-v {
|
|
3426
|
-
position: fixed;
|
|
3427
|
-
left: var(--overlay-shadow-gutter);
|
|
3428
|
-
top: var(--overlay-shadow-gutter);
|
|
3429
|
-
width: 72px;
|
|
3430
|
-
height: 150px;
|
|
3431
|
-
display: flex;
|
|
3432
|
-
flex-direction: column;
|
|
3433
|
-
align-items: center;
|
|
3434
|
-
/* Pin content to the top in BOTH states. The primary controls are
|
|
3435
|
-
centered inside their own fixed-height zone (.toolbar-v-primary), so
|
|
3436
|
-
the collapsed→expanded growth only adds room BELOW them. Without this,
|
|
3437
|
-
flipping justify-content center→flex-start on hover yanked the Stop
|
|
3438
|
-
button up toward the bar's top edge. */
|
|
3439
|
-
justify-content: flex-start;
|
|
3440
|
-
/* Equal inset on all four sides from the pill edge to the buttons. */
|
|
3441
|
-
padding: 10px;
|
|
3442
|
-
overflow: hidden;
|
|
3443
|
-
border-radius: 24px;
|
|
3444
|
-
background: rgba(20, 22, 28, 0.94);
|
|
3445
|
-
backdrop-filter: blur(20px);
|
|
3446
|
-
-webkit-backdrop-filter: blur(20px);
|
|
3447
|
-
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
3448
|
-
user-select: none;
|
|
3449
|
-
-webkit-user-select: none;
|
|
3450
|
-
cursor: grab;
|
|
3451
|
-
transition: border-radius 170ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
3452
|
-
}
|
|
3453
|
-
|
|
3454
|
-
.toolbar-v:hover,
|
|
3455
|
-
.toolbar-v:focus-within {
|
|
3456
|
-
/* Matches TOOLBAR_EXPANDED_HEIGHT in toolbar.tsx — the fixed 130px primary
|
|
3457
|
-
zone + 88px hover actions (+2 margin) + 20px vertical padding. */
|
|
3458
|
-
height: 240px;
|
|
3459
|
-
border-radius: 26px;
|
|
3460
|
-
}
|
|
3461
|
-
|
|
3462
|
-
.toolbar-v:active {
|
|
3463
|
-
cursor: grabbing;
|
|
3464
|
-
}
|
|
3465
|
-
|
|
3466
|
-
/* Fixed-height home for Stop / time / Pause. Its height equals the collapsed
|
|
3467
|
-
pill's content box (150px − 20px vertical padding = 130px), so the trio is
|
|
3468
|
-
centered exactly as before when collapsed and never shifts when the pill
|
|
3469
|
-
grows on hover — the extra height flows into .toolbar-v-hover-actions below. */
|
|
3470
|
-
.toolbar-v-primary {
|
|
3471
|
-
flex: 0 0 130px;
|
|
3472
|
-
display: flex;
|
|
3473
|
-
flex-direction: column;
|
|
3474
|
-
align-items: center;
|
|
3475
|
-
justify-content: center;
|
|
3476
|
-
gap: 10px;
|
|
3477
|
-
}
|
|
3478
|
-
|
|
3479
|
-
.toolbar-v-stop {
|
|
3480
|
-
width: 30px;
|
|
3481
|
-
height: 30px;
|
|
3482
|
-
min-width: 30px;
|
|
3483
|
-
min-height: 30px;
|
|
3484
|
-
flex: 0 0 30px;
|
|
3485
|
-
aspect-ratio: 1 / 1;
|
|
3486
|
-
border-radius: 50%;
|
|
3487
|
-
border: none;
|
|
3488
|
-
/* orange-500 — a touch softer than the red-orange we had before. */
|
|
3489
|
-
background: #f97316;
|
|
3490
|
-
color: white;
|
|
3491
|
-
cursor: pointer;
|
|
3492
|
-
display: inline-flex;
|
|
3493
|
-
align-items: center;
|
|
3494
|
-
justify-content: center;
|
|
3495
|
-
padding: 0;
|
|
3496
|
-
}
|
|
3497
|
-
|
|
3498
|
-
.toolbar-v-stop:hover {
|
|
3499
|
-
background: #ea580c;
|
|
3500
|
-
}
|
|
3501
|
-
|
|
3502
|
-
.toolbar-v-stop:active {
|
|
3503
|
-
transform: scale(0.94);
|
|
3504
|
-
}
|
|
3505
|
-
|
|
3506
|
-
.toolbar-v-stop-square {
|
|
3507
|
-
width: 14px;
|
|
3508
|
-
height: 14px;
|
|
3509
|
-
background: currentColor;
|
|
3510
|
-
border-radius: 2px;
|
|
3511
|
-
display: inline-block;
|
|
3512
|
-
}
|
|
3513
|
-
|
|
3514
|
-
.toolbar-v-spinner {
|
|
3515
|
-
animation: toolbar-v-spin 0.8s linear infinite;
|
|
3516
|
-
}
|
|
3517
|
-
|
|
3518
|
-
@keyframes toolbar-v-spin {
|
|
3519
|
-
to {
|
|
3520
|
-
transform: rotate(360deg);
|
|
3521
|
-
}
|
|
3522
|
-
}
|
|
3523
|
-
|
|
3524
|
-
.toolbar-v-time {
|
|
3525
|
-
flex: 0 0 auto;
|
|
3526
|
-
appearance: none;
|
|
3527
|
-
padding: 2px 4px;
|
|
3528
|
-
border: 0;
|
|
3529
|
-
border-radius: 6px;
|
|
3530
|
-
background: transparent;
|
|
3531
|
-
font-variant-numeric: tabular-nums;
|
|
3532
|
-
font-size: 14px;
|
|
3533
|
-
font-weight: 600;
|
|
3534
|
-
color: white;
|
|
3535
|
-
letter-spacing: 0.3px;
|
|
3536
|
-
cursor: pointer;
|
|
3537
|
-
}
|
|
3538
|
-
|
|
3539
|
-
.toolbar-v-time:hover,
|
|
3540
|
-
.toolbar-v-time:focus-visible {
|
|
3541
|
-
background: rgba(255, 255, 255, 0.1);
|
|
3542
|
-
outline: none;
|
|
3543
|
-
}
|
|
3544
|
-
|
|
3545
|
-
.toolbar-v-time-preparing {
|
|
3546
|
-
font-size: 9px;
|
|
3547
|
-
letter-spacing: 0;
|
|
3548
|
-
}
|
|
3549
|
-
|
|
3550
|
-
.toolbar-v-pause {
|
|
3551
|
-
width: 30px;
|
|
3552
|
-
height: 30px;
|
|
3553
|
-
min-width: 30px;
|
|
3554
|
-
min-height: 30px;
|
|
3555
|
-
flex: 0 0 30px;
|
|
3556
|
-
aspect-ratio: 1 / 1;
|
|
3557
|
-
border-radius: 50%;
|
|
3558
|
-
background: rgba(255, 255, 255, 0.08);
|
|
3559
|
-
color: rgba(255, 255, 255, 0.9);
|
|
3560
|
-
border: none;
|
|
3561
|
-
cursor: pointer;
|
|
3562
|
-
display: inline-flex;
|
|
3563
|
-
align-items: center;
|
|
3564
|
-
justify-content: center;
|
|
3565
|
-
padding: 0;
|
|
3566
|
-
}
|
|
3567
|
-
|
|
3568
|
-
.toolbar-v-pause:hover {
|
|
3569
|
-
background: rgba(255, 255, 255, 0.1);
|
|
3570
|
-
color: white;
|
|
3571
|
-
}
|
|
3572
|
-
|
|
3573
|
-
.toolbar-v-hover-actions {
|
|
3574
|
-
display: flex;
|
|
3575
|
-
flex-direction: column;
|
|
3576
|
-
align-items: center;
|
|
3577
|
-
gap: 8px;
|
|
3578
|
-
height: 0;
|
|
3579
|
-
margin-top: 0;
|
|
3580
|
-
overflow: hidden;
|
|
3581
|
-
opacity: 0;
|
|
3582
|
-
transform: translateY(-6px);
|
|
3583
|
-
pointer-events: none;
|
|
3584
|
-
visibility: hidden;
|
|
3585
|
-
transition:
|
|
3586
|
-
opacity 130ms ease-out,
|
|
3587
|
-
transform 170ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
3588
|
-
}
|
|
3589
|
-
|
|
3590
|
-
.toolbar-v:hover .toolbar-v-hover-actions,
|
|
3591
|
-
.toolbar-v:focus-within .toolbar-v-hover-actions {
|
|
3592
|
-
height: 88px;
|
|
3593
|
-
margin-top: 2px;
|
|
3594
|
-
opacity: 1;
|
|
3595
|
-
transform: translateY(0);
|
|
3596
|
-
pointer-events: auto;
|
|
3597
|
-
visibility: visible;
|
|
3598
|
-
}
|
|
3599
|
-
|
|
3600
|
-
.toolbar-v-action {
|
|
3601
|
-
width: 40px;
|
|
3602
|
-
height: 40px;
|
|
3603
|
-
min-width: 40px;
|
|
3604
|
-
min-height: 40px;
|
|
3605
|
-
flex: 0 0 40px;
|
|
3606
|
-
aspect-ratio: 1 / 1;
|
|
3607
|
-
border-radius: 999px;
|
|
3608
|
-
border: none;
|
|
3609
|
-
background: transparent;
|
|
3610
|
-
color: rgba(255, 255, 255, 0.95);
|
|
3611
|
-
cursor: pointer;
|
|
3612
|
-
display: inline-flex;
|
|
3613
|
-
align-items: center;
|
|
3614
|
-
justify-content: center;
|
|
3615
|
-
padding: 0;
|
|
3616
|
-
transition:
|
|
3617
|
-
background-color 120ms ease-out,
|
|
3618
|
-
color 120ms ease-out,
|
|
3619
|
-
transform 120ms ease-out;
|
|
3620
|
-
}
|
|
3621
|
-
|
|
3622
|
-
.toolbar-v-action:hover {
|
|
3623
|
-
background: rgba(255, 255, 255, 0.12);
|
|
3624
|
-
color: white;
|
|
3625
|
-
}
|
|
3626
|
-
|
|
3627
|
-
.toolbar-v-action:active {
|
|
3628
|
-
transform: scale(0.94);
|
|
3629
|
-
}
|
|
3630
|
-
|
|
3631
|
-
.toolbar-v-action-danger:hover {
|
|
3632
|
-
background: rgba(255, 255, 255, 0.14);
|
|
3633
|
-
}
|
|
3634
|
-
|
|
3635
|
-
.toolbar-v-paused {
|
|
3636
|
-
border-color: rgba(245, 158, 11, 0.35);
|
|
3637
|
-
}
|
|
3638
|
-
|
|
3639
|
-
/* Pre-record state: the toolbar is visible during the bubble session so the
|
|
3640
|
-
user can drag + position it before hitting Start. Buttons are disabled
|
|
3641
|
-
(no recorder to drive yet). Greyed out + not-allowed cursor makes the
|
|
3642
|
-
"not yet" affordance obvious. */
|
|
3643
|
-
.toolbar-v-disabled .toolbar-v-stop,
|
|
3644
|
-
.toolbar-v-disabled .toolbar-v-pause,
|
|
3645
|
-
.toolbar-v-disabled .toolbar-v-action {
|
|
3646
|
-
background: rgba(255, 255, 255, 0.06);
|
|
3647
|
-
color: rgba(255, 255, 255, 0.35);
|
|
3648
|
-
cursor: not-allowed;
|
|
3649
|
-
pointer-events: auto;
|
|
3650
|
-
}
|
|
3651
|
-
.toolbar-v-disabled .toolbar-v-stop:hover,
|
|
3652
|
-
.toolbar-v-disabled .toolbar-v-pause:hover,
|
|
3653
|
-
.toolbar-v-disabled .toolbar-v-action:hover {
|
|
3654
|
-
background: rgba(255, 255, 255, 0.06);
|
|
3655
|
-
color: rgba(255, 255, 255, 0.35);
|
|
3656
|
-
}
|
|
3657
|
-
.toolbar-v-stop:disabled,
|
|
3658
|
-
.toolbar-v-pause:disabled,
|
|
3659
|
-
.toolbar-v-action:disabled {
|
|
3660
|
-
cursor: not-allowed;
|
|
3661
|
-
}
|
|
3662
|
-
|
|
3663
|
-
.toolbar-v-disk-indicator {
|
|
3664
|
-
display: flex;
|
|
3665
|
-
align-items: center;
|
|
3666
|
-
justify-content: center;
|
|
3667
|
-
color: #f59e0b;
|
|
3668
|
-
opacity: 0.9;
|
|
3669
|
-
flex-shrink: 0;
|
|
3670
|
-
}
|
|
3671
|
-
|
|
3672
|
-
.toolbar-v-disk-indicator-critical {
|
|
3673
|
-
color: #ef4444;
|
|
3674
|
-
animation: toolbar-v-disk-pulse 1.4s ease-in-out infinite;
|
|
3675
|
-
}
|
|
3676
|
-
|
|
3677
|
-
@keyframes toolbar-v-disk-pulse {
|
|
3678
|
-
0%,
|
|
3679
|
-
100% {
|
|
3680
|
-
opacity: 0.7;
|
|
3681
|
-
}
|
|
3682
|
-
50% {
|
|
3683
|
-
opacity: 1;
|
|
3684
|
-
}
|
|
3685
|
-
}
|
|
3686
|
-
|
|
3687
|
-
.toolbar-v-disk-warning {
|
|
3688
|
-
border-color: rgba(245, 158, 11, 0.45);
|
|
3689
|
-
}
|
|
3690
|
-
|
|
3691
|
-
.toolbar-v-disk-critical {
|
|
3692
|
-
border-color: rgba(239, 68, 68, 0.5);
|
|
3693
|
-
}
|
|
3694
|
-
|
|
3695
|
-
@media (prefers-reduced-motion: reduce) {
|
|
3696
|
-
.toolbar-v,
|
|
3697
|
-
.toolbar-v-hover-actions,
|
|
3698
|
-
.toolbar-v-action {
|
|
3699
|
-
transition: none;
|
|
3700
|
-
}
|
|
3701
|
-
.toolbar-v-disk-indicator-critical {
|
|
3702
|
-
animation: none;
|
|
3703
|
-
}
|
|
3704
|
-
}
|
|
3705
|
-
|
|
3706
3414
|
/* ------------------------------------------------------------------------- */
|
|
3707
3415
|
/* Overlay: camera bubble */
|
|
3708
3416
|
/* ------------------------------------------------------------------------- */
|
|
@@ -4498,10 +4206,12 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
4498
4206
|
|
|
4499
4207
|
/* Wispr Flow-style dictation pill: small capsule anchored to the bottom
|
|
4500
4208
|
of its (transparent) overlay window. The window itself is positioned
|
|
4501
|
-
bottom-center on the primary display by show_flow_bar in Rust
|
|
4209
|
+
bottom-center on the primary display by show_flow_bar in Rust, sized to
|
|
4210
|
+
the content exactly — elevation is the native NSWindow shadow, so there
|
|
4211
|
+
is no transparent shadow-gutter apron here. */
|
|
4502
4212
|
.flow-bar-root {
|
|
4503
4213
|
position: fixed;
|
|
4504
|
-
inset:
|
|
4214
|
+
inset: 0;
|
|
4505
4215
|
display: flex;
|
|
4506
4216
|
flex-direction: column;
|
|
4507
4217
|
align-items: center;
|
|
@@ -4930,10 +4640,12 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
4930
4640
|
/* Overlay: recording pill */
|
|
4931
4641
|
/* ------------------------------------------------------------------------- */
|
|
4932
4642
|
|
|
4933
|
-
/* Fills the window
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4643
|
+
/* Fills the window, which Rust sizes to the visible capsule exactly —
|
|
4644
|
+
elevation is the native NSWindow shadow (see recording_indicator.rs), so
|
|
4645
|
+
there is no transparent shadow-gutter apron here. The collapsed capsule
|
|
4646
|
+
centers rather than hugging a corner: hover is polled against the window
|
|
4647
|
+
frame, so slack between frame and capsule would light the pill up while
|
|
4648
|
+
the cursor is nowhere near it. */
|
|
4937
4649
|
.pill-outer {
|
|
4938
4650
|
display: flex;
|
|
4939
4651
|
height: 100%;
|
|
@@ -280,3 +280,88 @@
|
|
|
280
280
|
--radius-md: calc(var(--radius) - 2px);
|
|
281
281
|
--radius-sm: calc(var(--radius) - 4px);
|
|
282
282
|
}
|
|
283
|
+
|
|
284
|
+
/* Recording pill (overlays/record-pill.tsx). The pill is floating capture
|
|
285
|
+
chrome that renders over arbitrary screen content, so its palette is
|
|
286
|
+
theme-invariant by design — these values are contractual from the tray
|
|
287
|
+
redesign spec, not theme tokens. */
|
|
288
|
+
.record-pill-scope {
|
|
289
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
290
|
+
--pill-chrome: #1e1e1e;
|
|
291
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
292
|
+
--pill-control: rgba(255, 255, 255, 0.1);
|
|
293
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
294
|
+
--pill-rec: #e0473f;
|
|
295
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
296
|
+
--pill-meter: #97c459;
|
|
297
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
298
|
+
--pill-card-surface: rgba(252, 252, 252, 0.98);
|
|
299
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
300
|
+
--pill-card-ink: #1c1c1e;
|
|
301
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
302
|
+
--pill-card-ink-2: #6b6b70;
|
|
303
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
304
|
+
--pill-card-ink-3: #a3a3a8;
|
|
305
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
306
|
+
--pill-card-badge: #3e9b4f;
|
|
307
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
308
|
+
--pill-card-badge-bg: #e9f4ea;
|
|
309
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
310
|
+
--pill-card-badge-warn: #a9701a;
|
|
311
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
312
|
+
--pill-card-badge-warn-bg: #f8efdd;
|
|
313
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
314
|
+
--pill-on-chrome: #ffffff;
|
|
315
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
316
|
+
--pill-soft: rgba(255, 255, 255, 0.15);
|
|
317
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
318
|
+
--pill-q-ink: rgba(255, 255, 255, 0.82);
|
|
319
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
320
|
+
--pill-ghost-ink: rgba(255, 255, 255, 0.72);
|
|
321
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
322
|
+
--pill-card-border: rgba(0, 0, 0, 0.15);
|
|
323
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
324
|
+
--pill-card-border-strong: rgba(0, 0, 0, 0.2);
|
|
325
|
+
/* guard:allow-raw-color — theme-invariant capture chrome, spec-contractual palette */
|
|
326
|
+
--pill-card-well: rgba(0, 0, 0, 0.05);
|
|
327
|
+
--pill-ease: cubic-bezier(0.3, 0, 0, 1);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.record-pill-mono {
|
|
331
|
+
font-family: ui-monospace, "SF Mono", Menlo, monospace;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Collapsible pill segment: measured at natural width and animated between 0
|
|
335
|
+
and exact pixels (never max-width — a guessed value wastes the easing tail
|
|
336
|
+
and lands segments out of sync). Content is right-anchored so it slides as
|
|
337
|
+
a solid block instead of being wiped by the clip edge. */
|
|
338
|
+
.record-pill-seg {
|
|
339
|
+
display: flex;
|
|
340
|
+
align-items: center;
|
|
341
|
+
justify-content: flex-end;
|
|
342
|
+
overflow: hidden;
|
|
343
|
+
flex: none;
|
|
344
|
+
width: 0;
|
|
345
|
+
opacity: 0;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.record-pill-card-in {
|
|
349
|
+
animation: record-pill-card-in 220ms var(--pill-ease);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@keyframes record-pill-card-in {
|
|
353
|
+
from {
|
|
354
|
+
opacity: 0;
|
|
355
|
+
transform: translateY(6px) scale(0.98);
|
|
356
|
+
}
|
|
357
|
+
to {
|
|
358
|
+
opacity: 1;
|
|
359
|
+
transform: none;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
@media (prefers-reduced-motion: reduce) {
|
|
364
|
+
.record-pill-card-in {
|
|
365
|
+
animation: none;
|
|
366
|
+
}
|
|
367
|
+
}
|