@vibes.diy/base 14.3.113 → 14.3.115
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/components/vibe-menu/VibeMenu.js +9 -3
- package/components/vibe-menu/VibeMenu.js.map +1 -1
- package/components/vibe-menu/cards/AccountCard.d.ts +4 -1
- package/components/vibe-menu/cards/AccountCard.js +25 -9
- package/components/vibe-menu/cards/AccountCard.js.map +1 -1
- package/components/vibe-menu/cards/CodeCard.d.ts +2 -1
- package/components/vibe-menu/cards/CodeCard.js +17 -6
- package/components/vibe-menu/cards/CodeCard.js.map +1 -1
- package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +2 -1
- package/components/vibe-menu/cards/CodeModeWorkspace.js +8 -6
- package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -1
- package/components/vibe-menu/geometry.d.ts +1 -0
- package/components/vibe-menu/geometry.js +5 -0
- package/components/vibe-menu/geometry.js.map +1 -1
- package/components/vibe-menu/index.d.ts +5 -0
- package/components/vibe-menu/index.js +5 -0
- package/components/vibe-menu/index.js.map +1 -1
- package/components/vibe-menu/parts/Chip.d.ts +2 -1
- package/components/vibe-menu/parts/Chip.js +26 -2
- package/components/vibe-menu/parts/Chip.js.map +1 -1
- package/components/vibe-menu/parts/Composer.d.ts +11 -0
- package/components/vibe-menu/parts/Composer.js +44 -1
- package/components/vibe-menu/parts/Composer.js.map +1 -1
- package/components/vibe-menu/parts/LookRestyleSection.d.ts +51 -0
- package/components/vibe-menu/parts/LookRestyleSection.js +290 -0
- package/components/vibe-menu/parts/LookRestyleSection.js.map +1 -0
- package/components/vibe-menu/parts/MomentLine.d.ts +1 -0
- package/components/vibe-menu/parts/MomentLine.js +4 -2
- package/components/vibe-menu/parts/MomentLine.js.map +1 -1
- package/components/vibe-menu/parts/SendCap.d.ts +8 -0
- package/components/vibe-menu/parts/SendCap.js +10 -0
- package/components/vibe-menu/parts/SendCap.js.map +1 -0
- package/components/vibe-menu/parts/StatusChipRow.d.ts +58 -0
- package/components/vibe-menu/parts/StatusChipRow.js +121 -0
- package/components/vibe-menu/parts/StatusChipRow.js.map +1 -0
- package/components/vibe-menu/parts/StatusLine.d.ts +21 -0
- package/components/vibe-menu/parts/StatusLine.js +25 -0
- package/components/vibe-menu/parts/StatusLine.js.map +1 -0
- package/components/vibe-menu/parts/SurveyStrip.d.ts +3 -1
- package/components/vibe-menu/parts/SurveyStrip.js +9 -1
- package/components/vibe-menu/parts/SurveyStrip.js.map +1 -1
- package/components/vibe-menu/parts/VibesSwitchGlass.d.ts +0 -9
- package/components/vibe-menu/parts/VibesSwitchGlass.js +2 -17
- package/components/vibe-menu/parts/VibesSwitchGlass.js.map +1 -1
- package/components/vibe-menu/parts/agent-log-frame.d.ts +9 -0
- package/components/vibe-menu/parts/agent-log-frame.js +10 -0
- package/components/vibe-menu/parts/agent-log-frame.js.map +1 -0
- package/components/vibe-menu/parts/use-composer-draft.js +30 -0
- package/components/vibe-menu/parts/use-composer-draft.js.map +1 -1
- package/components/vibe-menu/shell/VibeMenuShell.d.ts +5 -0
- package/components/vibe-menu/shell/VibeMenuShell.js +5 -1
- package/components/vibe-menu/shell/VibeMenuShell.js.map +1 -1
- package/components/vibe-menu/shell/shell.styles.js +270 -38
- package/components/vibe-menu/shell/shell.styles.js.map +1 -1
- package/components/vibe-menu/slices.d.ts +8 -2
- package/components/vibe-menu/slices.js.map +1 -1
- package/components/vibe-menu/vibe-menu.styles.d.ts +3 -3
- package/components/vibe-menu/vibe-menu.styles.js +99 -1
- package/components/vibe-menu/vibe-menu.styles.js.map +1 -1
- package/hooks/img-gen/use-img-gen.d.ts +1 -0
- package/hooks/img-gen/use-img-gen.js +374 -304
- package/hooks/img-gen/use-img-gen.js.map +1 -1
- package/package.json +5 -5
|
@@ -10,9 +10,16 @@ export function useComposerDraft(input) {
|
|
|
10
10
|
const [queued, setQueued] = React.useState([]);
|
|
11
11
|
const [flushAttempt, setFlushAttempt] = React.useState(0);
|
|
12
12
|
const attachments = useAttachments();
|
|
13
|
+
const submittedRender = React.useRef(false);
|
|
14
|
+
const pendingSubmit = React.useRef(undefined);
|
|
15
|
+
React.useLayoutEffect(() => {
|
|
16
|
+
submittedRender.current = false;
|
|
17
|
+
});
|
|
13
18
|
const prevResetKey = React.useRef(resetKey);
|
|
14
19
|
if (prevResetKey.current !== resetKey) {
|
|
15
20
|
prevResetKey.current = resetKey;
|
|
21
|
+
submittedRender.current = false;
|
|
22
|
+
pendingSubmit.current = undefined;
|
|
16
23
|
setText("");
|
|
17
24
|
setQueued([]);
|
|
18
25
|
setFlushAttempt(0);
|
|
@@ -36,6 +43,14 @@ export function useComposerDraft(input) {
|
|
|
36
43
|
seedSeq.current = seed.seq;
|
|
37
44
|
setText((d) => (d === "" ? seed.text : d));
|
|
38
45
|
}, [seed]);
|
|
46
|
+
const refill = composer.rewrite?.refill;
|
|
47
|
+
const refillSeq = React.useRef(undefined);
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
if (refill === undefined || refill.seq === refillSeq.current)
|
|
50
|
+
return;
|
|
51
|
+
refillSeq.current = refill.seq;
|
|
52
|
+
setText((d) => (d === "" ? refill.text : d));
|
|
53
|
+
}, [refill]);
|
|
39
54
|
const building = composer.cap === "Stop";
|
|
40
55
|
const { sendsNow } = composer;
|
|
41
56
|
const onSubmitRef = React.useRef(composer.onSubmit);
|
|
@@ -62,6 +77,10 @@ export function useComposerDraft(input) {
|
|
|
62
77
|
return () => clearTimeout(timer);
|
|
63
78
|
}, [building, sendsNow, queued, flushAttempt]);
|
|
64
79
|
function submit() {
|
|
80
|
+
if (submittedRender.current === true || pendingSubmit.current !== undefined) {
|
|
81
|
+
composer.onSendBlocked?.("busy");
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
65
84
|
const trimmed = text.trim();
|
|
66
85
|
const ready = attachments.readyAttachments;
|
|
67
86
|
if (attachments.busy === true) {
|
|
@@ -78,17 +97,28 @@ export function useComposerDraft(input) {
|
|
|
78
97
|
composer.onSendBlocked?.("busy");
|
|
79
98
|
return false;
|
|
80
99
|
}
|
|
100
|
+
submittedRender.current = true;
|
|
81
101
|
setQueued([...queued, trimmed]);
|
|
82
102
|
setText("");
|
|
83
103
|
return true;
|
|
84
104
|
}
|
|
85
105
|
const fileText = ready.length === 1 ? ONE_FILE_TEXT : MANY_FILES_TEXT;
|
|
86
106
|
const message = trimmed === "" ? fileText : trimmed;
|
|
107
|
+
submittedRender.current = true;
|
|
87
108
|
const answer = composer.onSubmit(message, ready);
|
|
88
109
|
if (answer === false) {
|
|
110
|
+
submittedRender.current = false;
|
|
89
111
|
composer.onSendBlocked?.("other");
|
|
90
112
|
return false;
|
|
91
113
|
}
|
|
114
|
+
if (answer !== undefined && typeof answer !== "boolean") {
|
|
115
|
+
pendingSubmit.current = answer;
|
|
116
|
+
function release() {
|
|
117
|
+
if (pendingSubmit.current === answer)
|
|
118
|
+
pendingSubmit.current = undefined;
|
|
119
|
+
}
|
|
120
|
+
void answer.then(release, release);
|
|
121
|
+
}
|
|
92
122
|
attachments.clear();
|
|
93
123
|
setText("");
|
|
94
124
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-composer-draft.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/use-composer-draft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAQzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAWlD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAoB,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"use-composer-draft.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/use-composer-draft.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
import type { MenuEvent, MenuState, Section } from "../menu-state.js";
|
|
4
|
+
import type { StatusChip, StatusChipId } from "../parts/StatusChipRow.js";
|
|
4
5
|
import type { SequencerStep } from "./useMenuSequencer.js";
|
|
5
6
|
export interface VibeMenuShellBadges {
|
|
6
7
|
readonly pendingRequests: number;
|
|
@@ -32,5 +33,9 @@ export interface VibeMenuShellProps {
|
|
|
32
33
|
readonly onStep?: (step: SequencerStep) => void;
|
|
33
34
|
readonly frame?: "viewport" | "contained";
|
|
34
35
|
readonly settledAtMount?: boolean;
|
|
36
|
+
readonly chips?: readonly StatusChip[];
|
|
37
|
+
readonly hiddenChips?: readonly StatusChipId[];
|
|
38
|
+
readonly onHideChip?: (id: StatusChipId) => void;
|
|
39
|
+
readonly chipsInside?: boolean;
|
|
35
40
|
}
|
|
36
41
|
export declare function VibeMenuShell(props: VibeMenuShellProps): React.ReactElement;
|
|
@@ -4,6 +4,7 @@ import { VibeMenuStyles } from "../vibe-menu.styles.js";
|
|
|
4
4
|
import { MenuCard } from "../parts/MenuCard.js";
|
|
5
5
|
import { SectionStrip } from "../parts/SectionStrip.js";
|
|
6
6
|
import { VibesSwitchGlass } from "../parts/VibesSwitchGlass.js";
|
|
7
|
+
import { StatusChipRow } from "../parts/StatusChipRow.js";
|
|
7
8
|
import { VIBE_MENU_SHELL_CSS } from "./shell.styles.js";
|
|
8
9
|
import { useMenuSequencer } from "./useMenuSequencer.js";
|
|
9
10
|
import { shownKey, wantFor } from "./menu-sequence.js";
|
|
@@ -110,6 +111,8 @@ export function VibeMenuShell(props) {
|
|
|
110
111
|
const collapsed = state.phase === "collapsed";
|
|
111
112
|
const codeModeOn = props.codeMode && shown.section === "vibe";
|
|
112
113
|
const logOpenOn = props.logOpen && shown.section === "vibe";
|
|
114
|
+
const hidden = props.hiddenChips ?? [];
|
|
115
|
+
const floatingChips = (props.chips ?? []).filter((chip) => hidden.includes(chip.id) === false && (collapsed || (props.chipsInside !== true && chip.id === "admin")));
|
|
113
116
|
return (React.createElement("div", { className: "vm-layer", "data-vibe-menu": "", "data-frame": props.frame ?? "viewport", "data-frame-cap": props.frameCap === true ? "" : undefined, "data-reduced-motion": props.reducedMotion === true ? "true" : undefined },
|
|
114
117
|
React.createElement(VibeMenuStyles, null),
|
|
115
118
|
React.createElement("style", null, VIBE_MENU_SHELL_CSS),
|
|
@@ -121,7 +124,8 @@ export function VibeMenuShell(props) {
|
|
|
121
124
|
React.createElement("rect", { ref: refs.band, className: "vm-band" }),
|
|
122
125
|
React.createElement("rect", { ref: refs.cover, className: "vm-cover" }),
|
|
123
126
|
React.createElement("path", { ref: refs.edge, className: "vm-edge" })),
|
|
124
|
-
React.createElement(VibesSwitchGlass, { open: collapsed === false, barOpen: shown.bar, onToggle: () => dispatch({ type: "PILL_TAP" }), pendingRequests: props.badges.pendingRequests,
|
|
127
|
+
React.createElement(VibesSwitchGlass, { open: collapsed === false, barOpen: shown.bar, onToggle: () => dispatch({ type: "PILL_TAP" }), pendingRequests: props.badges.pendingRequests, saveAskDot: props.badges.saveAsk === true, closedStatus: collapsed ? props.closedStatus : null, twinkling: props.switchActivity.twinkling, pillRef: pillRef }),
|
|
128
|
+
React.createElement(StatusChipRow, { chips: floatingChips, place: "floating", onHide: collapsed ? props.onHideChip : undefined }),
|
|
125
129
|
React.createElement(SectionStrip, { activeSection: shown.section, pressedSection: state.phase === "card" ? state.section : null, tabbable: collapsed === false, pendingRequests: props.badges.pendingRequests, saveAskDot: props.badges.saveAsk === true, onTab: (section) => dispatch({ type: "ITEM_TAP", section }), stripRef: stripRef, slideRef: refs.slide, registerTab: (section, el) => {
|
|
126
130
|
refs.tabs.current[section] = el;
|
|
127
131
|
} }))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeMenuShell.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/VibeMenuShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"VibeMenuShell.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/VibeMenuShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MENU_GEOMETRY, MENU_TOP_RESERVE_VAR } from "../geometry.js";
|
|
1
|
+
import { MENU_FULL_TABS_MIN_WIDTH, MENU_GEOMETRY, MENU_TOP_RESERVE_VAR } from "../geometry.js";
|
|
2
2
|
import { MOTION } from "../motion.js";
|
|
3
3
|
const G = MENU_GEOMETRY;
|
|
4
4
|
export const VIBE_MENU_SHELL_CSS = `
|
|
@@ -29,7 +29,11 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
29
29
|
--vm-pill-w: ${G.pillW}px;
|
|
30
30
|
--vm-pill-h: ${G.pillH}px;
|
|
31
31
|
--vm-bar-h: ${G.barH}px;
|
|
32
|
-
|
|
32
|
+
/* Fluid between the phone breakpoint and wide desktop: the tabs give up width
|
|
33
|
+
until the whole bar (and the card, which is the bar's width) fits between
|
|
34
|
+
the frame's edges, so neither ever runs off the left of the screen. At
|
|
35
|
+
full size it is exactly ${G.tabW}px; phones override the bar entirely. */
|
|
36
|
+
--vm-tab-w: min(${G.tabW}px, calc((100cqw - 2 * var(--vm-edge) - var(--vm-home-extra) - 2 * var(--vm-bar-end) - 2px) / 4));
|
|
33
37
|
--vm-tab-inset: 9px; /* space-9: the bar's rhythm */
|
|
34
38
|
--vm-home-extra: ${G.homeExtra}px;
|
|
35
39
|
--vm-band: ${G.band}px;
|
|
@@ -93,40 +97,233 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
93
97
|
z-index: 3;
|
|
94
98
|
pointer-events: none;
|
|
95
99
|
}
|
|
96
|
-
/* Beside the collapsed switch: the
|
|
100
|
+
/* Beside the collapsed switch: the status line (#7153), and nothing else. The
|
|
101
|
+
chips ride their own row above the switch (.vm-chip-row). One line, today's
|
|
102
|
+
height; the row is the switch's own 44px row and takes no hits itself. */
|
|
97
103
|
.vm-layer .vm-beside {
|
|
98
104
|
position: absolute;
|
|
99
105
|
right: calc(var(--vm-pill-w) + var(--vm-ring) + 6px);
|
|
100
106
|
bottom: 0;
|
|
101
107
|
height: var(--vm-pill-h);
|
|
108
|
+
/* Desktop: .vm-menu has no width, so size the row to its content. */
|
|
109
|
+
width: max-content;
|
|
102
110
|
display: flex;
|
|
103
111
|
flex-direction: row-reverse;
|
|
104
112
|
align-items: center;
|
|
105
|
-
gap: 6px;
|
|
106
113
|
pointer-events: none;
|
|
107
114
|
}
|
|
108
|
-
/* #4291: the admin badge survives the menu opening — elevation must read in
|
|
109
|
-
* every state, not just while collapsed. The container stays laid out when
|
|
110
|
-
* open (an all-hidden container paints nothing), the chiclet and the closed
|
|
111
|
-
* build line stay hidden (existing behavior); only the badge remains, lifted
|
|
112
|
-
* above the bar so it never covers the tabs. It keeps pointer-events:none
|
|
113
|
-
* from .vm-beside, so it cannot intercept controls, and paints above the
|
|
114
|
-
* card. */
|
|
115
115
|
.vm-layer .vm-menu[data-bar="open"] .vm-beside {
|
|
116
|
+
display: none;
|
|
117
|
+
}
|
|
118
|
+
.vm-layer .vm-closed-status {
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
min-width: 0;
|
|
121
|
+
max-width: 420px;
|
|
122
|
+
flex: 0 1 auto;
|
|
123
|
+
}
|
|
124
|
+
.vm-layer .vm-closed-status-line {
|
|
116
125
|
display: flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
min-width: 0;
|
|
128
|
+
transform: translateX(calc(100% + 6px));
|
|
129
|
+
transition: transform var(--vm-close-ms) var(--vm-open-ease);
|
|
117
130
|
}
|
|
118
|
-
.vm-layer .vm-
|
|
119
|
-
|
|
131
|
+
.vm-layer .vm-closed-status-line[data-revealed="true"] {
|
|
132
|
+
transform: translateX(0);
|
|
133
|
+
}
|
|
134
|
+
/* The line is a real button: the 24px line in a 44px-tall hit box. */
|
|
135
|
+
.vm-layer .vm-status-tap {
|
|
136
|
+
display: flex;
|
|
137
|
+
align-items: center;
|
|
138
|
+
flex: 0 1 auto;
|
|
139
|
+
min-width: 0;
|
|
140
|
+
min-height: var(--vm-pill-h);
|
|
141
|
+
margin: 0;
|
|
142
|
+
padding: 0;
|
|
143
|
+
border: 0;
|
|
144
|
+
background: none;
|
|
145
|
+
color: inherit;
|
|
146
|
+
font: inherit;
|
|
147
|
+
text-align: left;
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
pointer-events: auto;
|
|
150
|
+
touch-action: manipulation;
|
|
151
|
+
-webkit-tap-highlight-color: transparent;
|
|
152
|
+
}
|
|
153
|
+
.vm-layer .vm-status-chip {
|
|
154
|
+
display: flex;
|
|
155
|
+
align-items: center;
|
|
156
|
+
min-width: 0;
|
|
157
|
+
height: 24px;
|
|
158
|
+
padding: 3px 6px;
|
|
159
|
+
border-radius: 3px;
|
|
160
|
+
background: var(--card-bg);
|
|
161
|
+
color: var(--ink);
|
|
162
|
+
font: 12px/18px var(--font-tab);
|
|
163
|
+
white-space: nowrap;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
transition: transform 90ms ease-out, background-color 90ms ease-out;
|
|
166
|
+
}
|
|
167
|
+
.vm-layer .vm-status-chip .vm-glyph {
|
|
168
|
+
flex: none;
|
|
169
|
+
width: 13px;
|
|
170
|
+
height: 13px;
|
|
171
|
+
margin-right: 5px;
|
|
172
|
+
fill: none;
|
|
173
|
+
stroke: currentColor;
|
|
174
|
+
stroke-width: 2;
|
|
175
|
+
stroke-linecap: round;
|
|
176
|
+
stroke-linejoin: round;
|
|
177
|
+
}
|
|
178
|
+
.vm-layer .vm-status-fixed {
|
|
179
|
+
flex: none;
|
|
180
|
+
white-space: pre;
|
|
181
|
+
}
|
|
182
|
+
.vm-layer .vm-status-elastic {
|
|
183
|
+
flex: 0 1 auto;
|
|
184
|
+
min-width: 0;
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
text-overflow: ellipsis;
|
|
187
|
+
white-space: pre;
|
|
188
|
+
}
|
|
189
|
+
.vm-layer .vm-status-clock {
|
|
190
|
+
flex: none;
|
|
191
|
+
white-space: pre;
|
|
192
|
+
font-variant-numeric: tabular-nums;
|
|
193
|
+
color: var(--muted);
|
|
194
|
+
}
|
|
195
|
+
.vm-layer .vm-status-tap:active .vm-status-chip {
|
|
196
|
+
transform: scale(0.97);
|
|
197
|
+
background: color-mix(in oklch, var(--card-bg), var(--ink) 12%);
|
|
198
|
+
}
|
|
199
|
+
.vm-layer .vm-status-tap:focus-visible {
|
|
200
|
+
outline: none;
|
|
120
201
|
}
|
|
121
|
-
.vm-layer .vm-
|
|
202
|
+
.vm-layer .vm-status-tap:focus-visible .vm-status-chip {
|
|
203
|
+
outline: var(--stroke-focus, 2px) solid var(--section-share);
|
|
204
|
+
outline-offset: 1px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* ---------- the chip row (#7153): floating above the shut switch ---------- */
|
|
208
|
+
/* Right-aligned over the switch, 6px above its glass, never wider than the
|
|
209
|
+
frame less its edges (StatusChipRow collapses it to "+N" when it would be). */
|
|
210
|
+
.vm-layer .vm-chip-row[data-place="floating"] {
|
|
122
211
|
position: absolute;
|
|
123
|
-
right:
|
|
124
|
-
bottom: calc(var(--vm-pill-h) +
|
|
212
|
+
right: calc(-1 * var(--vm-ring));
|
|
213
|
+
bottom: calc(var(--vm-pill-h) + var(--vm-ring) + 6px);
|
|
125
214
|
z-index: 5;
|
|
215
|
+
width: max-content;
|
|
216
|
+
max-width: calc(100cqw - 2 * var(--vm-edge));
|
|
217
|
+
display: flex;
|
|
218
|
+
align-items: center;
|
|
219
|
+
gap: 6px;
|
|
220
|
+
white-space: nowrap;
|
|
221
|
+
pointer-events: none;
|
|
222
|
+
}
|
|
223
|
+
.vm-layer .vm-chip-row[data-place="floating"][data-expanded] {
|
|
224
|
+
flex-wrap: wrap;
|
|
225
|
+
justify-content: flex-end;
|
|
226
|
+
row-gap: 4px;
|
|
227
|
+
}
|
|
228
|
+
.vm-layer .vm-chip-row[data-place="floating"] > * {
|
|
229
|
+
pointer-events: auto;
|
|
230
|
+
}
|
|
231
|
+
/* Admin is a status, never a control (#4291): taps fall through it. */
|
|
232
|
+
.vm-layer .vm-chip-row .vm-admin-badge {
|
|
233
|
+
pointer-events: none;
|
|
234
|
+
}
|
|
235
|
+
/* Inside the open switch: the same chips, directly above the now-line. */
|
|
236
|
+
.vm-layer .vm-chip-row[data-place="inside"] {
|
|
237
|
+
display: flex;
|
|
238
|
+
flex-wrap: wrap;
|
|
239
|
+
align-items: center;
|
|
240
|
+
gap: 6px;
|
|
241
|
+
padding: 6px 0 8px;
|
|
242
|
+
margin-bottom: 6px;
|
|
243
|
+
border-bottom: var(--stroke-mini, 1px) solid var(--line);
|
|
244
|
+
}
|
|
245
|
+
/* One height for every pill in a row: the production pills are 22px and 28px tall. */
|
|
246
|
+
.vm-layer .vm-chip-row .vm-row-chip {
|
|
247
|
+
display: inline-flex;
|
|
248
|
+
align-items: center;
|
|
249
|
+
height: 24px;
|
|
250
|
+
padding: 0 9px;
|
|
251
|
+
border: 0;
|
|
252
|
+
white-space: nowrap;
|
|
253
|
+
font: 700 11px/18px var(--font-display);
|
|
254
|
+
letter-spacing: 0.06em;
|
|
255
|
+
}
|
|
256
|
+
.vm-layer .vm-chip-row button.vm-row-chip {
|
|
257
|
+
cursor: pointer;
|
|
258
|
+
touch-action: manipulation;
|
|
126
259
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
260
|
+
.vm-layer .vm-chip-pill {
|
|
261
|
+
border-radius: var(--radius-full);
|
|
262
|
+
background: var(--card-bg);
|
|
263
|
+
color: var(--ink);
|
|
264
|
+
box-shadow: inset 0 0 0 var(--stroke-mini, 1px) var(--line);
|
|
265
|
+
}
|
|
266
|
+
.vm-layer .vm-chip-pill[data-chip="pending"] {
|
|
267
|
+
background: var(--badge);
|
|
268
|
+
color: var(--on-badge);
|
|
269
|
+
box-shadow: none;
|
|
270
|
+
}
|
|
271
|
+
/* The one-shot reads as a sentence, not a status tag. */
|
|
272
|
+
.vm-layer .vm-chip-row .vm-chip-pill[data-chip="examplesCleared"] {
|
|
273
|
+
box-shadow: inset 0 0 0 var(--stroke-mini, 1px) var(--section-home);
|
|
274
|
+
font: 600 11px/18px var(--font-tab);
|
|
275
|
+
letter-spacing: 0;
|
|
276
|
+
}
|
|
277
|
+
/* Importing: the same pill, working, its tap waiting on the data. */
|
|
278
|
+
.vm-layer .vm-chip-row .vm-chip-pill[data-chip="examplesCleared"][data-busy] {
|
|
279
|
+
cursor: progress;
|
|
280
|
+
animation: vm-chip-busy 1.6s ease-in-out infinite;
|
|
281
|
+
}
|
|
282
|
+
@keyframes vm-chip-busy {
|
|
283
|
+
50% {
|
|
284
|
+
opacity: 0.6;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
.vm-layer .vm-chip-row .vm-chip-more {
|
|
288
|
+
background: var(--ink);
|
|
289
|
+
color: var(--card-bg);
|
|
290
|
+
box-shadow: none;
|
|
291
|
+
}
|
|
292
|
+
/* The dismiss ×: a 24px hit box overlapping the pill's end by 6px. */
|
|
293
|
+
.vm-layer .vm-chip-wrap {
|
|
294
|
+
display: inline-flex;
|
|
295
|
+
align-items: center;
|
|
296
|
+
}
|
|
297
|
+
.vm-layer .vm-chip-x {
|
|
298
|
+
display: inline-grid;
|
|
299
|
+
place-items: center;
|
|
300
|
+
width: 24px;
|
|
301
|
+
height: 24px;
|
|
302
|
+
margin-left: -6px;
|
|
303
|
+
padding: 0;
|
|
304
|
+
border: 0;
|
|
305
|
+
border-radius: var(--radius-full);
|
|
306
|
+
background: none;
|
|
307
|
+
color: var(--ink);
|
|
308
|
+
cursor: pointer;
|
|
309
|
+
touch-action: manipulation;
|
|
310
|
+
}
|
|
311
|
+
.vm-layer .vm-chip-x span {
|
|
312
|
+
display: grid;
|
|
313
|
+
place-items: center;
|
|
314
|
+
width: 16px;
|
|
315
|
+
height: 16px;
|
|
316
|
+
border-radius: var(--radius-full);
|
|
317
|
+
background: var(--card-bg);
|
|
318
|
+
box-shadow: inset 0 0 0 var(--stroke-mini, 1px) var(--line);
|
|
319
|
+
font: 700 11px/1 var(--font-tab);
|
|
320
|
+
}
|
|
321
|
+
.vm-layer .vm-chip-x:active span {
|
|
322
|
+
background: var(--ink);
|
|
323
|
+
color: var(--card-bg);
|
|
324
|
+
}
|
|
325
|
+
/* #7066: Edit text's Editing / Using app pill. Code yellow while editing; the
|
|
326
|
+
* card colour while the app has the taps. */
|
|
130
327
|
.vm-layer .vm-edit-pill {
|
|
131
328
|
border: 0;
|
|
132
329
|
cursor: pointer;
|
|
@@ -150,25 +347,6 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
150
347
|
pointer-events: auto;
|
|
151
348
|
white-space: nowrap;
|
|
152
349
|
}
|
|
153
|
-
.vm-layer .vm-closed-status {
|
|
154
|
-
overflow: hidden;
|
|
155
|
-
max-width: min(260px, calc(100cqw - 2 * var(--vm-edge) - var(--vm-pill-w) - 80px));
|
|
156
|
-
}
|
|
157
|
-
.vm-layer .vm-closed-status-line {
|
|
158
|
-
padding: 3px 5px;
|
|
159
|
-
border-radius: 3px;
|
|
160
|
-
background: var(--card-bg);
|
|
161
|
-
color: var(--muted);
|
|
162
|
-
font: 12px/18px var(--font-tab);
|
|
163
|
-
white-space: nowrap;
|
|
164
|
-
overflow: hidden;
|
|
165
|
-
text-overflow: ellipsis;
|
|
166
|
-
transform: translateX(calc(100% + 6px));
|
|
167
|
-
transition: transform var(--vm-close-ms) var(--vm-open-ease);
|
|
168
|
-
}
|
|
169
|
-
.vm-layer .vm-closed-status-line[data-revealed="true"] {
|
|
170
|
-
transform: translateX(0);
|
|
171
|
-
}
|
|
172
350
|
|
|
173
351
|
/* ---------- the bar: window / sliding bar / counter-sliding tabs ---------- */
|
|
174
352
|
.vm-layer .vm-strip {
|
|
@@ -371,6 +549,14 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
371
549
|
--vm-edge: ${G.edgePhone}px;
|
|
372
550
|
left: var(--vm-edge);
|
|
373
551
|
}
|
|
552
|
+
/* #7153: the status line has the whole width beside the switch, and by
|
|
553
|
+
construction never more: it can't run off the frame's left edge. */
|
|
554
|
+
.vm-layer .vm-beside {
|
|
555
|
+
width: calc(100cqw - 2 * var(--vm-edge) - 2 * var(--vm-ring) - var(--vm-pill-w) - 6px);
|
|
556
|
+
}
|
|
557
|
+
.vm-layer .vm-closed-status {
|
|
558
|
+
max-width: 100%;
|
|
559
|
+
}
|
|
374
560
|
.vm-layer .vm-strip {
|
|
375
561
|
--vm-strip-w: calc(100cqw - 2 * var(--vm-edge) - var(--vm-bar-end));
|
|
376
562
|
}
|
|
@@ -418,6 +604,43 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
418
604
|
max-height: min(560px, 70cqh, var(--vm-frame-limit));
|
|
419
605
|
}
|
|
420
606
|
}
|
|
607
|
+
/* ---------- between the phone and full desktop: the tabs give up width ----------
|
|
608
|
+
Past the phone breakpoint the bar keeps its desktop shape but its tabs are
|
|
609
|
+
fluid (--vm-tab-w), so below the width where they reach ${G.tabW}px a 14px
|
|
610
|
+
label would run into its icon: they stack the icon over the phone's small
|
|
611
|
+
label instead. The phone block above still owns everything at or below
|
|
612
|
+
${G.phoneMaxWidth}px; this band starts one pixel past it. */
|
|
613
|
+
@container (min-width: ${G.phoneMaxWidth + 1}px) and (max-width: ${MENU_FULL_TABS_MIN_WIDTH - 0.02}px) {
|
|
614
|
+
.vm-layer .vm-tab {
|
|
615
|
+
flex-direction: column;
|
|
616
|
+
align-items: center;
|
|
617
|
+
justify-content: center;
|
|
618
|
+
gap: 2px;
|
|
619
|
+
padding: 4px 2px;
|
|
620
|
+
}
|
|
621
|
+
.vm-layer .vm-tab-circle {
|
|
622
|
+
width: 22px;
|
|
623
|
+
height: 22px;
|
|
624
|
+
}
|
|
625
|
+
.vm-layer .vm-tab[data-section="home"] {
|
|
626
|
+
padding: 4px 2px 4px calc(2px + var(--vm-home-extra));
|
|
627
|
+
}
|
|
628
|
+
.vm-layer .vm-tab[data-section="share"] {
|
|
629
|
+
padding-right: var(--vm-bar-end);
|
|
630
|
+
}
|
|
631
|
+
.vm-layer .vm-tab-label {
|
|
632
|
+
position: static;
|
|
633
|
+
display: block;
|
|
634
|
+
font-size: 9.6px;
|
|
635
|
+
letter-spacing: 1px;
|
|
636
|
+
white-space: nowrap;
|
|
637
|
+
padding: 0 0 0 1px;
|
|
638
|
+
}
|
|
639
|
+
.vm-layer .vm-tab svg {
|
|
640
|
+
width: 12px;
|
|
641
|
+
height: 12px;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
421
644
|
@container (max-width: ${G.narrowMaxWidth}px) {
|
|
422
645
|
.vm-layer .vm-tab-label {
|
|
423
646
|
position: absolute;
|
|
@@ -439,5 +662,14 @@ export const VIBE_MENU_SHELL_CSS = `
|
|
|
439
662
|
.vm-layer[data-reduced-motion="true"] .vm-menu *::before {
|
|
440
663
|
transition: none !important;
|
|
441
664
|
}
|
|
665
|
+
/* The importing chip holds still; its words say it is working. */
|
|
666
|
+
@media (prefers-reduced-motion: reduce) {
|
|
667
|
+
.vm-layer .vm-chip-row .vm-chip-pill[data-busy] {
|
|
668
|
+
animation: none;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
.vm-layer[data-reduced-motion="true"] .vm-chip-row .vm-chip-pill[data-busy] {
|
|
672
|
+
animation: none;
|
|
673
|
+
}
|
|
442
674
|
`;
|
|
443
675
|
//# sourceMappingURL=shell.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.styles.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/shell.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.styles.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/shell.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAYtC,MAAM,CAAC,GAAG,aAAa,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;eAuBpB,CAAC,CAAC,WAAW;eACb,CAAC,CAAC,IAAI;iBACJ,CAAC,CAAC,KAAK;iBACP,CAAC,CAAC,KAAK;gBACR,CAAC,CAAC,IAAI;;;;+BAIS,CAAC,CAAC,IAAI;oBACjB,CAAC,CAAC,IAAI;;qBAEL,CAAC,CAAC,SAAS;eACjB,CAAC,CAAC,IAAI;0BACK,CAAC,CAAC,aAAa;;;;;;;;;;;;;qGAa4D,oBAAoB;;kBAEvG,MAAM,CAAC,MAAM;mBACZ,MAAM,CAAC,OAAO;oBACb,MAAM,CAAC,QAAQ;qBACd,MAAM,CAAC,SAAS;qBAChB,MAAM,CAAC,cAAc;oBACtB,MAAM,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAueV,CAAC,CAAC,aAAa;;iBAEvB,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DA4DiC,CAAC,CAAC,IAAI;;;KAG9D,CAAC,CAAC,aAAa;yBACK,CAAC,CAAC,aAAa,GAAG,CAAC,uBAAuB,wBAAwB,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA+BzE,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BxC,CAAC"}
|
|
@@ -11,6 +11,7 @@ import type { AgentLogLine } from "./parts/MomentLine.js";
|
|
|
11
11
|
import type { ComposerSlice } from "./parts/Composer.js";
|
|
12
12
|
import type { SuggestionFastPath } from "./parts/Chip.js";
|
|
13
13
|
import type { CodeSurvey } from "./parts/SurveyStrip.js";
|
|
14
|
+
import type { ExamplesChipPhase, StatusChipId } from "./parts/StatusChipRow.js";
|
|
14
15
|
export type Posture = AccessPosture;
|
|
15
16
|
export type DataGrant = GrantData;
|
|
16
17
|
export type RosterMember = MemberRowMember;
|
|
@@ -71,7 +72,7 @@ export interface CodeSlice {
|
|
|
71
72
|
log: readonly AgentLogLine[];
|
|
72
73
|
suggestions: readonly string[];
|
|
73
74
|
goldSuggestion: string | null;
|
|
74
|
-
onSuggestion(text: string):
|
|
75
|
+
onSuggestion(text: string): unknown;
|
|
75
76
|
suggestionFastPaths: readonly SuggestionFastPath[] | null;
|
|
76
77
|
onToggleFastPath: ((text: string) => void) | null;
|
|
77
78
|
kicker: string;
|
|
@@ -218,6 +219,12 @@ export interface VibeMenuProps {
|
|
|
218
219
|
onPaused(paused: boolean): void;
|
|
219
220
|
} | null;
|
|
220
221
|
saveAsk?: boolean;
|
|
222
|
+
examplesCleared?: {
|
|
223
|
+
onTap(): void;
|
|
224
|
+
readonly phase?: ExamplesChipPhase;
|
|
225
|
+
} | null;
|
|
226
|
+
hidden?: readonly StatusChipId[];
|
|
227
|
+
onHide?(id: StatusChipId): void;
|
|
221
228
|
};
|
|
222
229
|
closedStatus: ReactNode;
|
|
223
230
|
onHome(): void;
|
|
@@ -240,7 +247,6 @@ export interface VibeMenuProps {
|
|
|
240
247
|
frame?: "viewport" | "contained";
|
|
241
248
|
reducedMotion?: boolean;
|
|
242
249
|
homeTabRow?: boolean;
|
|
243
|
-
firstBuild?: boolean;
|
|
244
250
|
settledAtMount?: boolean;
|
|
245
251
|
}
|
|
246
252
|
export interface CardNav {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AAsVA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}
|