@vibes.diy/base 14.3.205 → 14.3.207
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/HomeBuildChips.d.ts +2 -1
- package/components/HomeBuildChips.js +2 -2
- package/components/HomeBuildChips.js.map +1 -1
- package/components/vibe-menu/VibeMenu.js +5 -1
- package/components/vibe-menu/VibeMenu.js.map +1 -1
- package/components/vibe-menu/index.d.ts +1 -0
- package/components/vibe-menu/index.js +1 -0
- package/components/vibe-menu/index.js.map +1 -1
- package/components/vibe-menu/parts/Composer.d.ts +13 -0
- package/components/vibe-menu/parts/Composer.js +38 -1
- package/components/vibe-menu/parts/Composer.js.map +1 -1
- package/components/vibe-menu/parts/refused-send.d.ts +21 -0
- package/components/vibe-menu/parts/refused-send.js +33 -0
- package/components/vibe-menu/parts/refused-send.js.map +1 -0
- package/components/vibe-menu/parts/use-composer-draft.d.ts +1 -0
- package/components/vibe-menu/parts/use-composer-draft.js +55 -0
- package/components/vibe-menu/parts/use-composer-draft.js.map +1 -1
- package/components/vibe-menu/vibe-menu.styles.d.ts +1 -1
- package/components/vibe-menu/vibe-menu.styles.js +6 -0
- package/components/vibe-menu/vibe-menu.styles.js.map +1 -1
- package/package.json +5 -5
|
@@ -26,7 +26,8 @@ export declare function homeBuildChipStatus(phase: BuildPhase, opts?: {
|
|
|
26
26
|
export declare function HomeBuildChips(props: {
|
|
27
27
|
readonly items: readonly HomeBuildChip[];
|
|
28
28
|
readonly onOpen: (id: string) => void;
|
|
29
|
-
readonly onAnotherIdea
|
|
29
|
+
readonly onAnotherIdea?: () => void;
|
|
30
|
+
readonly header?: string;
|
|
30
31
|
readonly onDismiss?: (id: string) => void;
|
|
31
32
|
readonly returning?: boolean;
|
|
32
33
|
readonly arrival?: HomeBuildChipArrival;
|
|
@@ -140,7 +140,7 @@ export function HomeBuildChips(props) {
|
|
|
140
140
|
const visible = props.items.slice(-4);
|
|
141
141
|
return (React.createElement("section", { className: "home-build-chips", "aria-label": "Your builds" },
|
|
142
142
|
React.createElement("style", null, css),
|
|
143
|
-
React.createElement("p", { className: "home-build-intro", "data-testid": "home-build-header" }, homeBuildDockHeaderText(homeBuildDockHeader(props.items, { returning: props.returning }))),
|
|
143
|
+
props.header !== "" && (React.createElement("p", { className: "home-build-intro", "data-testid": "home-build-header" }, props.header ?? homeBuildDockHeaderText(homeBuildDockHeader(props.items, { returning: props.returning })))),
|
|
144
144
|
React.createElement("div", { className: "home-build-chip-row" },
|
|
145
145
|
visible.map((item, index) => {
|
|
146
146
|
const identity = paint[index % paint.length];
|
|
@@ -163,7 +163,7 @@ export function HomeBuildChips(props) {
|
|
|
163
163
|
item.status === "ready" ? (React.createElement("span", { className: "home-build-chip-cue", "data-testid": "home-build-chip-cue" }, HOME_BUILD_DOCK_COPY.readyCue)) : (label)))),
|
|
164
164
|
props.onDismiss !== undefined && item.dismissible !== false && (React.createElement("button", { type: "button", className: "home-build-chip-dismiss", "aria-label": HOME_BUILD_DOCK_COPY.hideChipName(item.titleIsPrompt === true ? undefined : item.title), onClick: () => props.onDismiss?.(item.id) }, "\u00D7"))));
|
|
165
165
|
}),
|
|
166
|
-
props.items.length < 4 && (React.createElement("div", { className: "home-build-chip-slot" },
|
|
166
|
+
props.items.length < 4 && props.onAnotherIdea !== undefined && (React.createElement("div", { className: "home-build-chip-slot" },
|
|
167
167
|
React.createElement("button", { type: "button", className: "home-build-chip home-build-chip-new", onClick: props.onAnotherIdea },
|
|
168
168
|
React.createElement("span", { "aria-hidden": "true" }, "\uFF0B"),
|
|
169
169
|
" Another idea")))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomeBuildChips.js","sourceRoot":"","sources":["../../jsr/components/HomeBuildChips.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HomeBuildChips.js","sourceRoot":"","sources":["../../jsr/components/HomeBuildChips.tsx"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,11 @@ export function VibeMenu(props) {
|
|
|
49
49
|
const pending = viewer.identityPending === true;
|
|
50
50
|
const ownerTap = viewer.role === "owner" && pending === false;
|
|
51
51
|
const shellDispatch = ownerTap ? (event) => dispatch(ownerSwitchEvent(state, event)) : dispatch;
|
|
52
|
-
const baseDraft = useComposerDraft({
|
|
52
|
+
const baseDraft = useComposerDraft({
|
|
53
|
+
composer: code.composer,
|
|
54
|
+
resetKey: viewer.appSlug,
|
|
55
|
+
persistKey: viewer.appSlug === null || viewer.ownerHandle === null ? null : `${viewer.ownerHandle}/${viewer.appSlug}`,
|
|
56
|
+
});
|
|
53
57
|
const ownLines = draftYouLines(baseDraft, code.log).length;
|
|
54
58
|
const codeOpen = state.phase === "card" && state.section === "vibe";
|
|
55
59
|
const remixHint = useRemixHint({ hints: code.remixHints, codeOpen });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeMenu.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/VibeMenu.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VibeMenu.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/VibeMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,SAAS,YAAY,CAAC,GAAY;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACnD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACjD,CAAC;AASD,MAAM,UAAU,cAAc,CAAC,CAW9B;IACC,MAAM,KAAK,GAA8D;QACvE,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK;QACnB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS;QACvB,CAAC,CAAC,KAAK,CAAC,MAAM;QACd,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI;QACrB,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI;QACnB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM;QACtB,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG;QACrB,CAAC,CAAC,KAAK,EAAE,YAAY;QACrB,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;QACvB,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ;QACxB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;QACxB,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI;QAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;QACxB,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK;QACvB,CAAC,CAAC,MAAM;KACT,CAAC;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,CAAC;AAMD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;IAIhD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC;IAC9D,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3G,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,MAAM,CAAC,OAAO;QAExB,UAAU,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;KACtH,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;IACpE,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;IAIrE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAU,QAAQ,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,CAAC;IAIhC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,WAAW,CAAC;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACpF,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,KAAK,KAAK,CAAC,UAAU,CAAC;QAC3F,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,IAAI,OAAO,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;IAIlG,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,QAAQ,IAAI,UAAU,IAAI,eAAe,KAAK,KAAK;QAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,gBAAgB,GAAG,eAAe,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;IACjG,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAC;IAKjC,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,KAAK,IAAI;QAClB,CAAC,CAAC,WAAW,CAAC;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;YAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK;SACpD,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,SAAS,GACb,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QACvC,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;QAC9G,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,gBAAgB,GACpB,KAAK,CAAC,KAAK,KAAK,MAAM;QACtB,KAAK,CAAC,OAAO,KAAK,MAAM;QACxB,UAAU;QACV,OAAO,KAAK,SAAS;QACrB,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAI1C,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;IAGlE,MAAM,MAAM,GAAkB,MAAM;QAClC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;YAC3B,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC;YACtC,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACJ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;IAS3E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,UAAU,CAAC;IACvE,MAAM,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;IAC/F,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtB,IAAI,QAAQ,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAMD,MAAM,QAAQ,GAAG,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IACpF,MAAM,KAAK,GAAkB;QAC3B,GAAG,SAAS;QACZ,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ;gBAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;IAKF,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC;IACxH,MAAM,UAAU,GACd,QAAQ;QACR,IAAI,CAAC,aAAa,KAAK,SAAS;QAChC,UAAU,KAAK,KAAK;QACpB,OAAO;QACP,WAAW;QACX,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAC;IAKrC,SAAS,MAAM,CAAC,KAAgB;QAC9B,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACpD,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IAMD,MAAM,cAAc,GAAsB;QACxC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QACvF,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI;QAChD,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;KAChC,CAAC;IAEF,SAAS,OAAO,CAAC,OAAgB;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM;gBACT,OAAO,CACL,oBAAC,QAAQ,IACP,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAC5C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAE5C,aAAa,EAAE,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAC5E,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,MAAM,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,GACjC,CACH,CAAC;YACJ,KAAK,UAAU;gBACb,OAAO,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAI,CAAC;YACrE,KAAK,MAAM;gBACT,OAAO,CAEL,oBAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc;oBACtD,oBAAC,QAAQ,IACP,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,IAAI,KAAK,MAAM,EACxB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EACtD,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ,GACd,CACgC,CACrC,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO,oBAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAI,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,OAAgB;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,SAAS;QAChB,QAAQ,CACN,YAAY,CACV,cAAc,CACZ,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAC3B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CACpG,CACF,CACF,CAAC;IACJ,CAAC;IAKD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE;QACzC,SAAS;QACT,SAAS,EAAE,GAAG,EAAE,CACd,QAAQ,CACN,YAAY,CACV,cAAc,CACZ,EAAE,IAAI,EAAE,cAAc,EAAE,EACxB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CACpG,CACF,CACF;KACJ,CAAC,CAAC;IACH,MAAM,OAAO,GACX,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtD;QACG,KAAK,CAAC,UAAU,IAAI,IAAI;QACxB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,QAAQ,GAAG,CAC1E,CACJ,CAAC;IAMJ,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CACpC,oBAAC,iBAAiB,IAChB,GAAG,EAAC,WAAW,EACf,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,EAC3B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,IAE7B,IAAI,CAAC,KAAK,CAAC,SAAS,CACH,CACrB,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,oBAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,UAAU,EAItB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EACzC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,CAAC;YACzB,KAAK;YACL,UAAU;YACV,OAAO,EAAE,SAAS;YAClB,UAAU;YACV,IAAI;YACJ,MAAM;YACN,KAAK;YACL,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;SAC5B,CAAC,EACF,QAAQ,EAAE,QAAQ,IAAI,UAAU,EAChC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EACjC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,aAAa,EAAE,KAAK,CAAC,aAAa,EAClC,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAChC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAC/B,WAAW,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,GACzD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -14,6 +14,7 @@ export * from "./parts/Chip.js";
|
|
|
14
14
|
export * from "./parts/Composer.js";
|
|
15
15
|
export * from "./parts/SendCap.js";
|
|
16
16
|
export * from "./parts/use-composer-draft.js";
|
|
17
|
+
export * from "./parts/refused-send.js";
|
|
17
18
|
export * from "./parts/MomentLine.js";
|
|
18
19
|
export * from "./parts/agent-log-frame.js";
|
|
19
20
|
export * from "./parts/ScrollTabRow.js";
|
|
@@ -14,6 +14,7 @@ export * from "./parts/Chip.js";
|
|
|
14
14
|
export * from "./parts/Composer.js";
|
|
15
15
|
export * from "./parts/SendCap.js";
|
|
16
16
|
export * from "./parts/use-composer-draft.js";
|
|
17
|
+
export * from "./parts/refused-send.js";
|
|
17
18
|
export * from "./parts/MomentLine.js";
|
|
18
19
|
export * from "./parts/agent-log-frame.js";
|
|
19
20
|
export * from "./parts/ScrollTabRow.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC"}
|
|
@@ -11,6 +11,12 @@ export interface ComposerRestore extends ComposerEdge {
|
|
|
11
11
|
}
|
|
12
12
|
export type ComposerSubmitAnswer = boolean | undefined | Promise<boolean | undefined>;
|
|
13
13
|
export type ComposerSendBlockedReason = "busy" | "attachments_processing" | "empty" | "credits" | "other";
|
|
14
|
+
export type ComposerQueueDropCause = "gave_up" | "stopped" | "reset" | "unmount";
|
|
15
|
+
export interface ComposerQueueDrop {
|
|
16
|
+
readonly cause: ComposerQueueDropCause;
|
|
17
|
+
readonly messages: number;
|
|
18
|
+
readonly kept: "field" | "saved" | "lost";
|
|
19
|
+
}
|
|
14
20
|
export interface ComposerHold {
|
|
15
21
|
readonly reason: "credits";
|
|
16
22
|
readonly note: string;
|
|
@@ -27,9 +33,16 @@ export interface ComposerSlice {
|
|
|
27
33
|
readonly seed: ComposerEdge | null;
|
|
28
34
|
readonly restore: ComposerRestore | null;
|
|
29
35
|
readonly onSendBlocked?: (reason: ComposerSendBlockedReason) => void;
|
|
36
|
+
readonly onSendQueued?: (queued: number) => void;
|
|
37
|
+
readonly onQueueDropped?: (drop: ComposerQueueDrop) => void;
|
|
38
|
+
readonly onQueueFlushed?: (messages: number) => void;
|
|
30
39
|
readonly hold?: ComposerHold;
|
|
31
40
|
readonly rewrite?: ComposerRewrite;
|
|
32
41
|
readonly newAppDoor?: ComposerNewAppDoor;
|
|
42
|
+
readonly refusedSend?: ComposerRefusedSend;
|
|
43
|
+
}
|
|
44
|
+
export interface ComposerRefusedSend {
|
|
45
|
+
readonly ideas: readonly string[];
|
|
33
46
|
}
|
|
34
47
|
export interface ComposerNewAppDoor {
|
|
35
48
|
readonly onStartNewApp: (text: string) => void;
|
|
@@ -6,6 +6,19 @@ import { Glyph } from "./Glyph.js";
|
|
|
6
6
|
import { SendCap } from "./SendCap.js";
|
|
7
7
|
import { foldKeyboardAfterSend } from "./fold-keyboard.js";
|
|
8
8
|
import { FacesGlyph } from "./ThinkingLine.js";
|
|
9
|
+
import { REFUSED_SEND_COPY, REFUSED_SEND_IDEAS, changeRefusedSendLine, refusedSendKind, } from "./refused-send.js";
|
|
10
|
+
function RefusedSendLine(props) {
|
|
11
|
+
const { refused, refusedSend } = props;
|
|
12
|
+
const ideas = refusedSend.ideas.slice(0, REFUSED_SEND_IDEAS);
|
|
13
|
+
if (refused === "empty" && ideas.length > 0) {
|
|
14
|
+
return (React.createElement("p", { className: "vm-door-line", "data-refused-send": "", "data-refused-send-idea": "", "aria-live": "polite" },
|
|
15
|
+
React.createElement("span", null, REFUSED_SEND_COPY.ideasLead),
|
|
16
|
+
ideas.map((idea, n) => (React.createElement(React.Fragment, { key: idea },
|
|
17
|
+
n > 0 ? React.createElement("span", { "aria-hidden": "true" }, " \u00B7 ") : " ",
|
|
18
|
+
React.createElement("button", { type: "button", className: "vm-door", title: idea, onClick: () => props.onIdea(idea) }, idea))))));
|
|
19
|
+
}
|
|
20
|
+
return (React.createElement("p", { className: "vm-door-line", "data-refused-send": "", "aria-live": "polite" }, changeRefusedSendLine(refused)));
|
|
21
|
+
}
|
|
9
22
|
export const CHANGE_BOX_HINT_COPY = Object.freeze({
|
|
10
23
|
lead: "Changes this app",
|
|
11
24
|
door: "New idea? Start a new app",
|
|
@@ -98,6 +111,11 @@ export function Composer(props) {
|
|
|
98
111
|
const wasBuilding = React.useRef(building);
|
|
99
112
|
const [stopping, setStopping] = React.useState(false);
|
|
100
113
|
const box = React.useRef(null);
|
|
114
|
+
const [refused, setRefused] = React.useState(null);
|
|
115
|
+
const stagedCount = attachments.attachments.length;
|
|
116
|
+
React.useEffect(() => {
|
|
117
|
+
setRefused(null);
|
|
118
|
+
}, [draft.text, stagedCount, building]);
|
|
101
119
|
React.useEffect(() => {
|
|
102
120
|
if (building === true && wasBuilding.current === false)
|
|
103
121
|
stopArmedAt.current = Date.now();
|
|
@@ -113,10 +131,29 @@ export function Composer(props) {
|
|
|
113
131
|
composer.onSendBlocked?.("other");
|
|
114
132
|
return;
|
|
115
133
|
}
|
|
134
|
+
const kind = refusedSendKind({
|
|
135
|
+
text: draft.text,
|
|
136
|
+
readyCount: attachments.readyAttachments.length,
|
|
137
|
+
attachmentsBusy: attachments.busy,
|
|
138
|
+
waitsForBuild: building === true || draft.queued.length > 0,
|
|
139
|
+
});
|
|
116
140
|
if (draft.submit() === true) {
|
|
117
141
|
stopArmedAt.current = Date.now();
|
|
118
142
|
foldKeyboardAfterSend({ boxes: [box.current], coarsePointer: props.coarsePointer });
|
|
143
|
+
return;
|
|
119
144
|
}
|
|
145
|
+
if (composer.refusedSend === undefined || composer.cap === "Remix this")
|
|
146
|
+
return;
|
|
147
|
+
setRefused(kind);
|
|
148
|
+
if (kind === "empty")
|
|
149
|
+
focusField();
|
|
150
|
+
}
|
|
151
|
+
function focusField() {
|
|
152
|
+
box.current?.querySelector("textarea")?.focus();
|
|
153
|
+
}
|
|
154
|
+
function pickIdea(idea) {
|
|
155
|
+
draft.selectSuggestion(idea);
|
|
156
|
+
focusField();
|
|
120
157
|
}
|
|
121
158
|
function stop() {
|
|
122
159
|
if (stopping === true || stopGuardHolds(Date.now(), stopArmedAt.current))
|
|
@@ -150,6 +187,6 @@ export function Composer(props) {
|
|
|
150
187
|
React.createElement("button", { className: "vm-cap", type: "button", "data-stop": "", "data-stopping": stopping === true ? "" : undefined, "aria-busy": stopping === true ? true : undefined, disabled: composer.stopDisabled === true || stopping === true, onClick: stop }, stopping === true ? "Stopping…" : "Stop"),
|
|
151
188
|
sendCap)) : (sendCap)),
|
|
152
189
|
composer.hold !== undefined ? (React.createElement(HoldNote, { hold: composer.hold })) : composer.queuedNote ? (React.createElement("p", { className: "vm-queue-note" }, "Sends when this finishes.")) : null,
|
|
153
|
-
composer.newAppDoor !== undefined && composer.cap !== "Remix this" ? (React.createElement(ChangeBoxHintLine, { door: composer.newAppDoor, draft: draft })) : null));
|
|
190
|
+
refused !== null && composer.refusedSend !== undefined && composer.cap !== "Remix this" ? (React.createElement(RefusedSendLine, { refused: refused, refusedSend: composer.refusedSend, onIdea: pickIdea })) : composer.newAppDoor !== undefined && composer.cap !== "Remix this" ? (React.createElement(ChangeBoxHintLine, { door: composer.newAppDoor, draft: draft })) : null));
|
|
154
191
|
}
|
|
155
192
|
//# sourceMappingURL=Composer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/Composer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAA4C,MAAM,yCAAyC,CAAC;AACpH,OAAO,EAAE,iBAAiB,EAAyB,MAAM,0CAA0C,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAiG3B,SAAS,eAAe,CAAC,KAIxB;IACC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CACL,2BAAG,SAAS,EAAC,cAAc,uBAAmB,EAAE,4BAAwB,EAAE,eAAW,QAAQ;YAC3F,kCAAO,iBAAiB,CAAC,SAAS,CAAQ;YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,IAAI;gBACtB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,6CAAkB,MAAM,eAAW,CAAC,CAAC,CAAC,GAAG;gBAClD,gCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IACrF,IAAI,CACE,CACM,CAClB,CAAC,CACA,CACL,CAAC;IACJ,CAAC;IACD,OAAO,CACL,2BAAG,SAAS,EAAC,cAAc,uBAAmB,EAAE,eAAW,QAAQ,IAChE,qBAAqB,CAAC,OAAO,CAAC,CAC7B,CACL,CAAC;AACJ,CAAC;AASD,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,2BAA2B;CACzB,CAAC,CAAC;AAKZ,SAAS,iBAAiB,CAAC,KAA2E;IACpG,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,SAAS,KAAK;QACZ,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CACL,2BAAG,SAAS,EAAC,cAAc,0BAAsB,EAAE;QACjD,kCAAO,oBAAoB,CAAC,IAAI,CAAQ;QACxC,6CAAkB,MAAM,eAAW;QACnC,gCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,KAAK,IACrD,oBAAoB,CAAC,IAAI,CACnB,CACP,CACL,CAAC;AACJ,CAAC;AAwDD,SAAS,iBAAiB,CAAC,KAG1B;IACC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,CACL,6BAAK,SAAS,EAAC,yBAAyB,eAAW,QAAQ,IACxD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,gCACE,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,SAAS,EAAC,0BAA0B,EACpC,IAAI,EAAC,QAAQ,iBACA,IAAI,CAAC,MAAM,EACxB,KAAK,EAAE,IAAI,CAAC,KAAK,gBACL,UAAU,IAAI,CAAC,IAAI,EAAE,EACjC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI;QAC7E,kCAAO,IAAI,CAAC,IAAI,CAAQ,CACjB,CACV,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AAYD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAGlC,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,OAA2B;IACrE,OAAO,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,GAAG,aAAa,CAAC;AAChE,CAAC;AAID,MAAM,UAAU,aAAa,CAAC,GAAG,OAAwC;IACvE,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1F,SAAS,CACV,CAAC;AACJ,CAAC;AAMD,SAAS,QAAQ,CAAC,KAAsC;IACtD,OAAO,CACL,2BAAG,SAAS,EAAC,eAAe,eAAY,KAAK,CAAC,IAAI,CAAC,MAAM,IACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CACd,CACL,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KASxB;IACC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;IACrG,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEjD,SAAS,MAAM;QACb,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,IAAI,cAAc,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAEjD,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACvD,IAAI,EAAE,KAAK,KAAK;gBAAE,OAAO;YACzB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClB,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,MAAM;QAEb,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU;YAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,QAAQ,EAAE,CAAC;IACrB,CAAC;IAED,SAAS,SAAS,CAAC,KAA+C;QAChE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;YACxG,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO;YAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO;QAC7D,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO;QACxF,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CACL;QACE,+BAAO,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,wBAAwB;YACjD,kCACE,GAAG,EAAE,KAAK,CAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,WAAW,EAAE,OAAO,CAAC,WAAW,gBACrB,qBAAqB,eACrB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,SAAS,EAAE,SAAS,GACpB;YACD,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CACtC,8BAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,iBAAa,2BAA2B,GAAG,CACnG,CAAC,CAAC,CAAC,IAAI;YACR,oBAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,GAAI;YAC7C,oBAAC,OAAO,IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAI,CACtE;QACP,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,QAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,CAChE,CACJ,CAAC;AACJ,CAAC;AAMD,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC;IAGzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAqB,SAAS,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAG3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAmB,IAAI,CAAC,CAAC;IAGjD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC;IACnD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ,KAAK,IAAI,IAAI,WAAW,CAAC,OAAO,KAAK,KAAK;YAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzF,IAAI,QAAQ,KAAK,KAAK;YAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CACL,oBAAC,eAAe,IACd,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KACvB,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAC5D,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,EAC3F,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,aAAa,EAAE,KAAK,CAAC,aAAa,GAClC,CACH,CAAC;IACJ,CAAC;IAED,SAAS,MAAM;QACb,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC/B,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAKD,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,WAAW,CAAC,gBAAgB,CAAC,MAAM;YAC/C,eAAe,EAAE,WAAW,CAAC,IAAI;YACjC,aAAa,EAAE,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;SAC5D,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5B,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY;YAAE,OAAO;QAChF,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjB,IAAI,IAAI,KAAK,OAAO;YAAE,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,UAAU;QACjB,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,SAAS,QAAQ,CAAC,IAAY;QAC5B,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7B,UAAU,EAAE,CAAC;IACf,CAAC;IAED,SAAS,IAAI;QACX,IAAI,QAAQ,KAAK,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC;YAAE,OAAO;QACjF,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAED,SAAS,SAAS,CAAC,KAA+C;QAChE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO;QAE7D,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO;QACxF,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC;IACX,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,CACd,oBAAC,OAAO,IAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAI,CACxH,CAAC;IAEF,OAAO,CACL;QACE,+BACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,MAAM,QACN,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC7D,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YACjC,CAAC,GACD;QACF,oBAAC,iBAAiB,IAAC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,GAAI;QAClF,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAE3B,2BAAG,SAAS,EAAC,gBAAgB,eAAW,QAAQ,iBAAa,qBAAqB,IAC/E,WAAW,CACV,CACL,CAAC,CAAC,CAAC,IAAI;QACR,+BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,aAAa,EAC/D,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YAEnB,kCACE,GAAG,EAAE,KAAK,CAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,CAAC,IAAI,EACjB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,gBAC1C,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,EACvF,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,SAAS,EAAE,SAAS,GACpB;YACF,gCACE,SAAS,EAAC,WAAW,EACrB,IAAI,EAAC,QAAQ,gBACF,0BAA0B,EACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;gBAEzC,oBAAC,KAAK,IAAC,IAAI,EAAC,WAAW,GAAG,CACnB;YACR,QAAQ,CAAC,CAAC,CAAC,CACV;gBAEE,gCACE,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,QAAQ,eACH,EAAE,mBACG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,eACtC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC/C,QAAQ,EAAE,QAAQ,CAAC,YAAY,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAC7D,OAAO,EAAE,IAAI,IAEZ,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAClC;gBACR,OAAO,CACP,CACJ,CAAC,CAAC,CAAC,CACF,OAAO,CACR,CACK;QACP,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC7B,oBAAC,QAAQ,IAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAI,CAClC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACxB,2BAAG,SAAS,EAAC,eAAe,gCAA8B,CAC3D,CAAC,CAAC,CAAC,IAAI;QACP,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CACzF,oBAAC,eAAe,IAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAI,CAC3F,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,CACvE,oBAAC,iBAAiB,IAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAI,CAC/D,CAAC,CAAC,CAAC,IAAI,CACP,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type RefusedSendKind = "empty" | "files_wait" | "files_processing";
|
|
2
|
+
export declare const REFUSED_SEND_COPY: Readonly<{
|
|
3
|
+
readonly changeEmpty: "Type a change first, like “make it pink”.";
|
|
4
|
+
readonly ideasLead: "Try:";
|
|
5
|
+
readonly filesWait: "Send your pictures when this build finishes.";
|
|
6
|
+
readonly filesProcessing: "Your files are almost ready to send.";
|
|
7
|
+
readonly homeEmpty: "Describe your app in a few words, then Send.";
|
|
8
|
+
readonly homeStarter: "Finish the sentence with your idea, then Send.";
|
|
9
|
+
}>;
|
|
10
|
+
export declare const REFUSED_SEND_IDEAS = 1;
|
|
11
|
+
export declare function refusedSendKind(i: {
|
|
12
|
+
readonly text: string;
|
|
13
|
+
readonly readyCount: number;
|
|
14
|
+
readonly attachmentsBusy: boolean;
|
|
15
|
+
readonly waitsForBuild: boolean;
|
|
16
|
+
}): RefusedSendKind | null;
|
|
17
|
+
export declare function changeRefusedSendLine(kind: RefusedSendKind): string;
|
|
18
|
+
export declare function homeRefusedSendLine(i: {
|
|
19
|
+
readonly text: string;
|
|
20
|
+
readonly chipStarter: string | null;
|
|
21
|
+
}): string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const REFUSED_SEND_COPY = Object.freeze({
|
|
2
|
+
changeEmpty: "Type a change first, like “make it pink”.",
|
|
3
|
+
ideasLead: "Try:",
|
|
4
|
+
filesWait: "Send your pictures when this build finishes.",
|
|
5
|
+
filesProcessing: "Your files are almost ready to send.",
|
|
6
|
+
homeEmpty: "Describe your app in a few words, then Send.",
|
|
7
|
+
homeStarter: "Finish the sentence with your idea, then Send.",
|
|
8
|
+
});
|
|
9
|
+
export const REFUSED_SEND_IDEAS = 1;
|
|
10
|
+
export function refusedSendKind(i) {
|
|
11
|
+
if (i.attachmentsBusy === true)
|
|
12
|
+
return "files_processing";
|
|
13
|
+
if (i.text.trim() === "" && i.readyCount === 0)
|
|
14
|
+
return "empty";
|
|
15
|
+
if (i.waitsForBuild === true && i.readyCount > 0)
|
|
16
|
+
return "files_wait";
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
export function changeRefusedSendLine(kind) {
|
|
20
|
+
switch (kind) {
|
|
21
|
+
case "files_processing":
|
|
22
|
+
return REFUSED_SEND_COPY.filesProcessing;
|
|
23
|
+
case "files_wait":
|
|
24
|
+
return REFUSED_SEND_COPY.filesWait;
|
|
25
|
+
case "empty":
|
|
26
|
+
return REFUSED_SEND_COPY.changeEmpty;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function homeRefusedSendLine(i) {
|
|
30
|
+
const untouchedStarter = i.chipStarter !== null && i.text.trim() !== "" && i.text === i.chipStarter;
|
|
31
|
+
return untouchedStarter ? REFUSED_SEND_COPY.homeStarter : REFUSED_SEND_COPY.homeEmpty;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=refused-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refused-send.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/refused-send.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,2CAA2C;IACxD,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,8CAA8C;IACzD,eAAe,EAAE,sCAAsC;IACvD,SAAS,EAAE,8CAA8C;IACzD,WAAW,EAAE,gDAAgD;CACrD,CAAC,CAAC;AAKZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAKpC,MAAM,UAAU,eAAe,CAAC,CAM/B;IACC,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/D,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAGD,MAAM,UAAU,qBAAqB,CAAC,IAAqB;IACzD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,iBAAiB,CAAC,eAAe,CAAC;QAC3C,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,SAAS,CAAC;QACrC,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,WAAW,CAAC;IACzC,CAAC;AACH,CAAC;AAID,MAAM,UAAU,mBAAmB,CAAC,CAAiE;IACnG,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,CAAC;IACpG,OAAO,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACxF,CAAC"}
|
|
@@ -5,6 +5,7 @@ export declare const QUEUE_FLUSH_MAX_ATTEMPTS = 25;
|
|
|
5
5
|
export interface UseComposerDraftInput {
|
|
6
6
|
readonly composer: ComposerSlice;
|
|
7
7
|
readonly resetKey: string | null;
|
|
8
|
+
readonly persistKey?: string | null;
|
|
8
9
|
}
|
|
9
10
|
export declare function draftYouLines(draft: Pick<ComposerDraft, "queued" | "handingOff">, log: readonly {
|
|
10
11
|
readonly who: string;
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { exception2Result } from "@adviser/cement";
|
|
2
3
|
import { useAttachments } from "../../../attachments/use-attachments.js";
|
|
3
4
|
export const QUEUE_FLUSH_RETRY_MS = 400;
|
|
4
5
|
export const QUEUE_FLUSH_MAX_ATTEMPTS = 25;
|
|
6
|
+
const QUEUED_CHANGE_KEY = "vibes.queuedChange.";
|
|
7
|
+
function saveQueuedChange(appKey, text) {
|
|
8
|
+
if (typeof sessionStorage === "undefined")
|
|
9
|
+
return false;
|
|
10
|
+
return exception2Result(() => sessionStorage.setItem(QUEUED_CHANGE_KEY + appKey, text)).isOk();
|
|
11
|
+
}
|
|
12
|
+
function takeQueuedChange(appKey) {
|
|
13
|
+
if (typeof sessionStorage === "undefined")
|
|
14
|
+
return undefined;
|
|
15
|
+
const r = exception2Result(() => {
|
|
16
|
+
const text = sessionStorage.getItem(QUEUED_CHANGE_KEY + appKey);
|
|
17
|
+
sessionStorage.removeItem(QUEUED_CHANGE_KEY + appKey);
|
|
18
|
+
return text;
|
|
19
|
+
});
|
|
20
|
+
const text = r.isOk() ? r.Ok() : null;
|
|
21
|
+
return text === null || text === "" ? undefined : text;
|
|
22
|
+
}
|
|
5
23
|
const ONE_FILE_TEXT = "Use the attached file.";
|
|
6
24
|
const MANY_FILES_TEXT = "Use the attached files.";
|
|
7
25
|
export function draftYouLines(draft, log) {
|
|
@@ -14,6 +32,7 @@ export function draftYouLines(draft, log) {
|
|
|
14
32
|
}
|
|
15
33
|
export function useComposerDraft(input) {
|
|
16
34
|
const { composer, resetKey } = input;
|
|
35
|
+
const persistKey = input.persistKey ?? null;
|
|
17
36
|
const [text, setText] = React.useState("");
|
|
18
37
|
const [rewriteText, setRewriteText] = React.useState("");
|
|
19
38
|
const draftEpoch = React.useRef(0);
|
|
@@ -44,6 +63,36 @@ export function useComposerDraft(input) {
|
|
|
44
63
|
setHandingOff(undefined);
|
|
45
64
|
attachments.clear();
|
|
46
65
|
}
|
|
66
|
+
const queuedRef = React.useRef([]);
|
|
67
|
+
const persistKeyRef = React.useRef(persistKey);
|
|
68
|
+
const onQueueDroppedRef = React.useRef(composer.onQueueDropped);
|
|
69
|
+
React.useLayoutEffect(() => {
|
|
70
|
+
onQueueDroppedRef.current = composer.onQueueDropped;
|
|
71
|
+
});
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
const appKey = resetKey;
|
|
74
|
+
return () => {
|
|
75
|
+
const pending = queuedRef.current;
|
|
76
|
+
if (pending.length === 0)
|
|
77
|
+
return;
|
|
78
|
+
queuedRef.current = [];
|
|
79
|
+
const saveKey = persistKeyRef.current;
|
|
80
|
+
const kept = saveKey !== null && saveQueuedChange(saveKey, pending.join("\n")) ? "saved" : "lost";
|
|
81
|
+
const cause = prevResetKey.current === appKey ? "unmount" : "reset";
|
|
82
|
+
onQueueDroppedRef.current?.({ cause, messages: pending.length, kept });
|
|
83
|
+
};
|
|
84
|
+
}, [resetKey]);
|
|
85
|
+
React.useEffect(() => {
|
|
86
|
+
const saved = persistKey === null ? undefined : takeQueuedChange(persistKey);
|
|
87
|
+
if (saved !== undefined)
|
|
88
|
+
setText((d) => (d === "" ? saved : `${d}\n${saved}`));
|
|
89
|
+
}, [persistKey]);
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
queuedRef.current = queued;
|
|
92
|
+
}, [queued]);
|
|
93
|
+
React.useEffect(() => {
|
|
94
|
+
persistKeyRef.current = persistKey;
|
|
95
|
+
}, [persistKey]);
|
|
47
96
|
const restore = composer.restore;
|
|
48
97
|
const stage = attachments.stage;
|
|
49
98
|
const restoreSeq = React.useRef(undefined);
|
|
@@ -74,8 +123,10 @@ export function useComposerDraft(input) {
|
|
|
74
123
|
const { sendsNow } = composer;
|
|
75
124
|
const held = composer.hold !== undefined;
|
|
76
125
|
const onSubmitRef = React.useRef(composer.onSubmit);
|
|
126
|
+
const onQueueFlushedRef = React.useRef(composer.onQueueFlushed);
|
|
77
127
|
React.useLayoutEffect(() => {
|
|
78
128
|
onSubmitRef.current = composer.onSubmit;
|
|
129
|
+
onQueueFlushedRef.current = composer.onQueueFlushed;
|
|
79
130
|
});
|
|
80
131
|
React.useEffect(() => {
|
|
81
132
|
const flushable = held === false && (sendsNow === true || building === false);
|
|
@@ -84,12 +135,14 @@ export function useComposerDraft(input) {
|
|
|
84
135
|
const batch = queued.join("\n\n");
|
|
85
136
|
const answer = queuedSuggestion.current ? onSubmitRef.current(batch, [], "suggestion") : onSubmitRef.current(batch, []);
|
|
86
137
|
if (answer !== false) {
|
|
138
|
+
onQueueFlushedRef.current?.(queued.length);
|
|
87
139
|
queuedSuggestion.current = false;
|
|
88
140
|
setQueued([]);
|
|
89
141
|
setFlushAttempt(0);
|
|
90
142
|
return;
|
|
91
143
|
}
|
|
92
144
|
if (flushAttempt >= QUEUE_FLUSH_MAX_ATTEMPTS) {
|
|
145
|
+
onQueueDroppedRef.current?.({ cause: "gave_up", messages: queued.length, kept: "field" });
|
|
93
146
|
setSuggestion(queuedSuggestion.current ? batch : undefined);
|
|
94
147
|
queuedSuggestion.current = false;
|
|
95
148
|
setQueued([]);
|
|
@@ -130,6 +183,7 @@ export function useComposerDraft(input) {
|
|
|
130
183
|
setSuggestion(undefined);
|
|
131
184
|
setQueued([...queued, trimmed]);
|
|
132
185
|
setText("");
|
|
186
|
+
composer.onSendQueued?.(queued.length + 1);
|
|
133
187
|
return true;
|
|
134
188
|
}
|
|
135
189
|
const fileText = ready.length === 1 ? ONE_FILE_TEXT : MANY_FILES_TEXT;
|
|
@@ -159,6 +213,7 @@ export function useComposerDraft(input) {
|
|
|
159
213
|
}
|
|
160
214
|
function stop() {
|
|
161
215
|
if (queued.length > 0) {
|
|
216
|
+
composer.onQueueDropped?.({ cause: "stopped", messages: queued.length, kept: "field" });
|
|
162
217
|
const batch = queued.join("\n");
|
|
163
218
|
setSuggestion(queuedSuggestion.current ? batch : undefined);
|
|
164
219
|
queuedSuggestion.current = false;
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
export declare const VIBE_MENU_LIGHT_VARS = "\n color-scheme: light;\n --section-home: oklch(76.02% 0.1832 146.61);\n --section-account: oklch(57.46% 0.2126 29.55);\n --section-code: oklch(89.78% 0.1857 98.22);\n --section-share: oklch(64.39% 0.1304 231.41);\n --vibes-black: #000000;\n --vibes-cream: #fffff0;\n --menu-ink: #1a1a1a;\n --card-bg: var(--vibes-cream);\n --ink: #111111;\n --muted: #555555;\n --line: #111111;\n --line-card: #111111;\n --line-hairline: #1111112e;\n --placeholder: var(--muted);\n --suggest-border: #11111173;\n --share-tint: #009ace1f;\n --share-tint-strong: #009ace40;\n --on-home: var(--menu-ink);\n --on-account: var(--vibes-cream);\n --on-code: var(--menu-ink);\n --on-share: var(--menu-ink);\n --badge: var(--section-account);\n --on-badge: var(--vibes-cream);\n --cancel-cap: #f3d6d2;\n --on-cancel-cap: #9c2318;\n --obsidian-fill: rgba(6, 9, 10, 0.94);\n --obsidian-edge: rgba(255, 255, 255, 0.17);\n --obsidian-highlight: rgba(255, 255, 255, 0.32);\n --obsidian-rim: rgba(255, 255, 255, 0.1);\n --font-display: \"Alte Haas Grotesk\", Inter, sans-serif;\n --font-tab: Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n --space-9: 9px;\n --space-2: 2px;\n --space-4: 4px;\n --space-6: 6px;\n --space-8: 8px;\n --space-10: 10px;\n --space-12: 12px;\n --space-14: 14px;\n --space-16: 16px;\n --space-18: 18px;\n --space-24: 24px;\n --radius-card: 16px;\n --radius-full: 999px;\n --radius-bar-end: 25px;\n --radius-access-line: 24px;\n --radius-input: 22px;\n --radius-done: 21px;\n --radius-copy: 18px;\n --radius-chip: 14px;\n --radius-moment: 12px;\n --radius-switch: 10px;\n --radius-meter: 7px;\n --obsidian-shadow: 0 2px 5px rgba(0, 0, 0, 0.3), inset 0 0 0 1px rgba(255, 255, 255, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.16), inset 0 -1px 0 rgba(255, 255, 255, 0.05), inset 0 0 12px rgba(255, 255, 255, 0.02);\n --swatch-selected: 0 0 0 2px #fffff0, 0 0 0 4px #111111;\n --stroke-rule: 2px;\n --stroke-hairline: 1px;\n --stroke-mini: 1.5px;\n --stroke-focus: 3px;\n --stroke-glyph: 2.4px;\n --size-icon-circle: 28px;\n --size-icon-circle-phone: 22px;\n --size-glyph: 14px;\n --size-glyph-cta: 20px;\n --size-bar: 50px;\n --size-tab: 176px;\n --size-home-extra: 14px;\n --size-bar-end: 63px;\n --size-pill-w: 120px;\n --size-pill-h: 44px;\n --size-ring: 3px;\n --size-edge: 24px;\n --size-edge-phone: 16px;\n --size-pill-flat-inset: 19px;\n --size-band: 8px;\n --size-row: 46px;\n --size-row-compact: 42px;\n --size-chip: 28px;\n --size-copy: 36px;\n --size-input: 44px;\n --size-composer: 48px;\n --size-access-line: 48px;\n --size-segment: 32px;\n --size-segment-mini: 24px;\n --size-switch-w: 36px;\n --size-meter: 14px;\n --size-card-max: 480px;\n --size-card-max-phone: 560px;\n --size-log-max: 160px;\n --size-log-peek: 120px;\n --size-code-mode-max-w: 1200px;\n --opacity-tab-inactive: 0.73;\n --opacity-row-disabled: 0.35;";
|
|
3
3
|
export declare const VIBE_MENU_DARK_VARS = "\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line-card: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\n --cancel-cap: #4a2420;\n --on-cancel-cap: #f1b5ad;\n --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;";
|
|
4
|
-
export declare const VIBE_MENU_CSS = "\n/* ---------- tokens (tokens.json), light, then both dark arms ----------\n Detached layers (portalled out of the menu root) carry\n data-vibe-menu-detached, so every token block lists them too. */\n[data-vibe-menu],\n[data-vibe-menu-detached] {\n color-scheme: light;\n --section-home: oklch(76.02% 0.1832 146.61);\n --section-account: oklch(57.46% 0.2126 29.55);\n --section-code: oklch(89.78% 0.1857 98.22);\n --section-share: oklch(64.39% 0.1304 231.41);\n --vibes-black: #000000;\n --vibes-cream: #fffff0;\n --menu-ink: #1a1a1a;\n --card-bg: var(--vibes-cream);\n --ink: #111111;\n --muted: #555555;\n --line: #111111;\n --line-card: #111111;\n --line-hairline: #1111112e;\n --placeholder: var(--muted);\n --suggest-border: #11111173;\n --share-tint: #009ace1f;\n --share-tint-strong: #009ace40;\n --on-home: var(--menu-ink);\n --on-account: var(--vibes-cream);\n --on-code: var(--menu-ink);\n --on-share: var(--menu-ink);\n --badge: var(--section-account);\n --on-badge: var(--vibes-cream);\n --cancel-cap: #f3d6d2;\n --on-cancel-cap: #9c2318;\n --obsidian-fill: rgba(6, 9, 10, 0.94);\n --obsidian-edge: rgba(255, 255, 255, 0.17);\n --obsidian-highlight: rgba(255, 255, 255, 0.32);\n --obsidian-rim: rgba(255, 255, 255, 0.1);\n --font-display: \"Alte Haas Grotesk\", Inter, sans-serif;\n --font-tab: Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n --space-9: 9px;\n --space-2: 2px;\n --space-4: 4px;\n --space-6: 6px;\n --space-8: 8px;\n --space-10: 10px;\n --space-12: 12px;\n --space-14: 14px;\n --space-16: 16px;\n --space-18: 18px;\n --space-24: 24px;\n --radius-card: 16px;\n --radius-full: 999px;\n --radius-bar-end: 25px;\n --radius-access-line: 24px;\n --radius-input: 22px;\n --radius-done: 21px;\n --radius-copy: 18px;\n --radius-chip: 14px;\n --radius-moment: 12px;\n --radius-switch: 10px;\n --radius-meter: 7px;\n --obsidian-shadow: 0 2px 5px rgba(0, 0, 0, 0.3), inset 0 0 0 1px rgba(255, 255, 255, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.16), inset 0 -1px 0 rgba(255, 255, 255, 0.05), inset 0 0 12px rgba(255, 255, 255, 0.02);\n --swatch-selected: 0 0 0 2px #fffff0, 0 0 0 4px #111111;\n --stroke-rule: 2px;\n --stroke-hairline: 1px;\n --stroke-mini: 1.5px;\n --stroke-focus: 3px;\n --stroke-glyph: 2.4px;\n --size-icon-circle: 28px;\n --size-icon-circle-phone: 22px;\n --size-glyph: 14px;\n --size-glyph-cta: 20px;\n --size-bar: 50px;\n --size-tab: 176px;\n --size-home-extra: 14px;\n --size-bar-end: 63px;\n --size-pill-w: 120px;\n --size-pill-h: 44px;\n --size-ring: 3px;\n --size-edge: 24px;\n --size-edge-phone: 16px;\n --size-pill-flat-inset: 19px;\n --size-band: 8px;\n --size-row: 46px;\n --size-row-compact: 42px;\n --size-chip: 28px;\n --size-copy: 36px;\n --size-input: 44px;\n --size-composer: 48px;\n --size-access-line: 48px;\n --size-segment: 32px;\n --size-segment-mini: 24px;\n --size-switch-w: 36px;\n --size-meter: 14px;\n --size-card-max: 480px;\n --size-card-max-phone: 560px;\n --size-log-max: 160px;\n --size-log-peek: 120px;\n --size-code-mode-max-w: 1200px;\n --opacity-tab-inactive: 0.73;\n --opacity-row-disabled: 0.35;\n}\n@media (prefers-color-scheme: dark) {\n [data-vibe-menu],\n [data-vibe-menu-detached] {\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line-card: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\n --cancel-cap: #4a2420;\n --on-cancel-cap: #f1b5ad;\n --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;\n }\n}\n.dark [data-vibe-menu],\n.dark [data-vibe-menu-detached] {\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line-card: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\n --cancel-cap: #4a2420;\n --on-cancel-cap: #f1b5ad;\n --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;\n}\n\n/* ---------- the root: the phone container ---------- */\n[data-vibe-menu] {\n container-name: vibe-menu;\n container-type: inline-size;\n color: var(--ink);\n font-family: var(--font-display);\n}\n\n/* Scrollbars (smoke F15): thin, in the menu's hairline, both themes, never the\n native dark bar inside the cream card. The colour is set on the root AND\n every descendant, for every scroller the menu hosts (drills, the Embed box,\n injected panels): the app's global sheet sets scrollbar-color on *, which\n beats a colour only inherited from the root. The width rule has zero\n specificity so a part that hides its bar (the Code mode tab strip) still\n wins. The webkit arm is for engines without the standard properties; Chrome\n ignores it once they are set. */\n[data-vibe-menu],\n[data-vibe-menu] *,\n[data-vibe-menu-detached],\n[data-vibe-menu-detached] * {\n scrollbar-color: var(--line-hairline) transparent;\n}\n:where([data-vibe-menu]),\n:where([data-vibe-menu]) :where(*) {\n scrollbar-width: thin;\n}\n:where([data-vibe-menu]) ::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n background: transparent;\n}\n:where([data-vibe-menu]) ::-webkit-scrollbar-thumb {\n border-radius: var(--radius-full);\n background: var(--line-hairline);\n}\n\n/* A section is set by data-section on any ancestor (or the root), using the\n code keys: home | settings (Account) | vibe (Code) | share. It sets --accent\n (the section colour) and --on-accent (its label colour). */\n[data-vibe-menu][data-section=\"home\"],\n[data-vibe-menu] [data-section=\"home\"] {\n --accent: var(--section-home);\n --on-accent: var(--on-home);\n}\n[data-vibe-menu][data-section=\"settings\"],\n[data-vibe-menu] [data-section=\"settings\"] {\n --accent: var(--section-account);\n --on-accent: var(--on-account);\n}\n[data-vibe-menu][data-section=\"vibe\"],\n[data-vibe-menu] [data-section=\"vibe\"] {\n --accent: var(--section-code);\n --on-accent: var(--on-code);\n}\n[data-vibe-menu][data-section=\"share\"],\n[data-vibe-menu] [data-section=\"share\"] {\n --accent: var(--section-share);\n --on-accent: var(--on-share);\n}\n\n[data-vibe-menu],\n[data-vibe-menu] * {\n box-sizing: border-box;\n}\n/* the card's surface and side padding, so rows can bleed edge to edge */\n[data-vibe-menu] .vm-card-body {\n position: relative;\n padding: var(--space-14) var(--space-16) var(--space-16);\n background: var(--card-bg);\n color: var(--ink);\n font: 400 14px/20px var(--font-display);\n}\n[data-vibe-menu] .vm-card-body.is-framed {\n border: var(--stroke-rule) solid var(--line);\n border-radius: var(--radius-card) var(--radius-card) 0 0;\n overflow: hidden;\n}\n\n/* ---------- shared ---------- */\n/* Zero specificity: every vm-* rule wins over it, and so does any utility\n class on content a host injects into the card (slots). */\n:where([data-vibe-menu]) :where(button) {\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n padding: 0;\n cursor: pointer;\n text-align: left;\n touch-action: manipulation;\n}\n[data-vibe-menu] .vm-glyph {\n width: var(--size-glyph);\n height: var(--size-glyph);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--stroke-glyph);\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n[data-vibe-menu] .vm-label,\n[data-vibe-menu] .vm-seg button,\n[data-vibe-menu] .vm-chip {\n font: 700 14px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n[data-vibe-menu] .vm-label.is-plain {\n font: 700 16px/1.1 var(--font-display);\n letter-spacing: 0;\n text-transform: none;\n}\n[data-vibe-menu] .vm-kicker,\n[data-vibe-menu] .vm-subhead {\n margin: 0 0 var(--space-8);\n font: 700 10.5px/1.3 var(--font-tab);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-subhead {\n margin: var(--space-16) 0 0;\n padding-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-sub {\n margin: var(--space-8) 0 var(--space-14);\n font-size: 13px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-app-name {\n white-space: nowrap;\n}\n/* ---------- SectionStrip: the bar ---------- */\n[data-vibe-menu] .vm-menu {\n position: relative;\n}\n[data-vibe-menu] .vm-strip {\n position: relative;\n width: calc(var(--size-tab) * 4 + var(--size-home-extra) + var(--size-bar-end) + 2px);\n height: var(--size-bar);\n}\n[data-vibe-menu] .vm-strip-slide {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: flex-end;\n border: var(--stroke-rule) solid var(--line);\n border-right: 0;\n border-radius: var(--bar-tl, var(--radius-bar-end)) 0 0 var(--radius-bar-end);\n overflow: hidden;\n background: var(--card-bg);\n /* #7329: the bar under the switch belongs to no tab's box. */\n padding-right: var(--size-bar-end);\n}\n[data-vibe-menu] .vm-tab {\n position: relative;\n width: var(--size-tab);\n flex: none;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n border: 0;\n padding: 0 0 0 var(--space-9);\n cursor: pointer;\n background: var(--accent);\n}\n[data-vibe-menu] .vm-tab-circle {\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border-radius: 50%;\n background: var(--menu-ink);\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n}\n[data-vibe-menu] .vm-tab svg {\n width: calc(var(--size-icon-circle) / 2);\n height: calc(var(--size-icon-circle) / 2);\n fill: none;\n stroke: var(--vibes-cream);\n stroke-width: 2.5;\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n[data-vibe-menu] .vm-tab-label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0 0 1.9px;\n font-family: var(--font-tab);\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 1.9px;\n text-transform: uppercase;\n white-space: nowrap;\n pointer-events: none;\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-tab[data-section=\"home\"] {\n width: calc(var(--size-tab) + var(--size-home-extra));\n padding-left: calc(var(--space-9) + var(--size-home-extra) / 2);\n}\n[data-vibe-menu] .vm-tab[data-section=\"home\"] .vm-tab-label {\n left: calc(var(--size-home-extra) / 2);\n}\n/* #7329: Share's box ends where the switch begins; its colour runs on under\n the pill as a child painted beyond the box. */\n[data-vibe-menu] .vm-tab-run {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 100%;\n width: var(--size-bar-end);\n background: inherit;\n}\n[data-vibe-menu] .vm-tab:focus-visible {\n outline: var(--stroke-focus) solid var(--line);\n outline-offset: -3px;\n}\n/* Port change (smoke F5): the DS inset line ring vanished on the black pill\n and drew square corners. The pill's ring is cream, sits in the obsidian\n glass's 3px rim (offset 0), and follows the stadium (the pill's radius). */\n[data-vibe-menu] .vm-pill:focus-visible {\n outline: var(--stroke-focus) solid var(--vibes-cream);\n outline-offset: 0;\n}\n[data-vibe-menu] .vm-menu.has-card .vm-tab:not(.is-active) {\n opacity: var(--opacity-tab-inactive);\n}\n[data-vibe-menu] .vm-badge {\n position: absolute;\n top: -4px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: var(--radius-full);\n background: var(--badge);\n color: var(--on-badge);\n font: 700 11px/18px var(--font-display);\n text-align: center;\n}\n/* the bar sits against the pill: it runs half the glass under it */\n[data-vibe-menu] .vm-bar-anchor {\n position: relative;\n height: var(--size-bar);\n}\n[data-vibe-menu] .vm-bar-anchor .vm-strip {\n position: absolute;\n left: 0;\n bottom: 0;\n}\n[data-vibe-menu] .vm-bar-anchor .vm-glass {\n position: absolute;\n right: 0;\n bottom: 0;\n}\n/* phones: the bar spans the width; tabs sized to their content, icon above label */\n[data-vibe-menu] .vm-strip.is-phone {\n width: 100%;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab {\n width: auto;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n min-width: 0;\n padding: 4px 2px;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab-circle {\n width: var(--size-icon-circle-phone);\n height: var(--size-icon-circle-phone);\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab svg {\n width: 12px;\n height: 12px;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab[data-section=\"home\"] {\n padding: 4px 2px 4px calc(2px + var(--size-home-extra) * 0.7);\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab[data-section=\"share\"] {\n flex-grow: 1;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab-label {\n position: static;\n display: block;\n font-size: 9.6px;\n letter-spacing: 1px;\n padding: 0 0 0 1px;\n}\n\n/* ---------- VibesSwitch: the pill in its obsidian glass ---------- */\n[data-vibe-menu] .vm-glass {\n position: relative;\n width: calc(var(--size-pill-w) + 2 * var(--size-ring));\n height: calc(var(--size-pill-h) + 2 * var(--size-ring));\n border-radius: var(--radius-full);\n flex: none;\n background:\n linear-gradient(to right, transparent, var(--obsidian-highlight), transparent) top / 100% 1px no-repeat,\n linear-gradient(to bottom, var(--obsidian-highlight), transparent, var(--obsidian-edge)) left / 1px 100% no-repeat,\n var(--obsidian-fill);\n box-shadow: var(--obsidian-shadow);\n}\n[data-vibe-menu] .vm-pill {\n position: absolute;\n left: var(--size-ring);\n top: var(--size-ring);\n width: var(--size-pill-w);\n height: var(--size-pill-h);\n padding: 0;\n border: 0;\n border-radius: var(--radius-full);\n background: none;\n cursor: pointer;\n}\n/* Touching, holding or dragging on the switch never selects text, raises the\n iOS callout and magnifier, or drags an image (owner 2026-10-16). The letters\n are paths drawn twice, the second copy clipped to the knob: both sit under\n .vm-pill, so the descendant rule covers them. */\n[data-vibe-menu] .vm-glass,\n[data-vibe-menu] .vm-pill,\n[data-vibe-menu] .vm-pill * {\n -webkit-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n/* A held press slides the knob 3/4 of the way and waits (owner 2026-10-16).\n An overshooting spring would carry it past 3/4, so the held leg eases out\n with no overshoot; the release finishes on the host's own curve. */\n[data-vibe-menu] .vm-pill[data-progress=\"0.75\"] {\n --vibes-switch-slide: 0.4s cubic-bezier(0.22, 1, 0.36, 1);\n}\n/* Reduced motion: the switch jumps between poses. Its paths carry inline\n transitions (the knob's d and 3px nudge, the letters' fills and on-knob clip), so\n only an !important rule here stops every leg, not just the d slide. */\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-pill {\n --vibes-switch-slide: 0s;\n }\n [data-vibe-menu] .vm-pill svg path {\n transition: none !important;\n }\n}\n[data-vibe-menu] .vm-switch-art {\n width: 100%;\n height: 100%;\n display: block;\n}\n[data-vibe-menu] .vm-pill .vm-badge {\n top: -6px;\n right: 4px;\n}\n/* #7079: the guest maker's save-time ask: a dot, not a count. */\n[data-vibe-menu] .vm-badge.is-dot {\n min-width: 10px;\n width: 10px;\n height: 10px;\n padding: 0;\n}\n[data-vibe-menu] .vm-chiclet {\n display: inline-block;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n background: var(--section-code);\n /* Port change: bundle.css writes #111111 (ink); text on a section colour is\n menu-ink (Global Constraints), which --on-code resolves to in both themes. */\n color: var(--on-code);\n font: 700 11px/18px var(--font-display);\n letter-spacing: 0.06em;\n}\n/* #4291. The chiclet's shape, so the two read as one row \u2014 but in the badge\n colour (the identity lane) so elevation never looks like a publish state. */\n[data-vibe-menu] .vm-admin-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n background: var(--badge);\n color: var(--on-badge);\n font: 700 11px/18px var(--font-display);\n letter-spacing: 0.06em;\n}\n\n/* ---------- MenuCard: the card, its band and the folder-tab join, drawn once ---------- */\n[data-vibe-menu] .vm-frame {\n position: relative;\n}\n[data-vibe-menu] .vm-frame .vm-card {\n position: absolute;\n left: 0;\n top: 0;\n background: var(--card-bg);\n color: var(--ink);\n overflow: hidden;\n border-radius: var(--radius-card) var(--radius-card) 0 0;\n}\n[data-vibe-menu] .vm-frame .vm-card .vm-card-body {\n padding-bottom: calc(var(--space-16) + var(--size-band));\n}\n[data-vibe-menu] .vm-outline {\n position: absolute;\n left: 0;\n top: 0;\n overflow: visible;\n pointer-events: none;\n}\n[data-vibe-menu] .vm-outline .vm-band,\n[data-vibe-menu] .vm-outline .vm-cover {\n fill: var(--accent);\n}\n[data-vibe-menu] .vm-outline .vm-edge {\n fill: none;\n stroke: var(--line);\n stroke-width: 2;\n stroke-linejoin: miter;\n}\n\n/* ---------- ActionPill: the card's one main action ---------- */\n[data-vibe-menu] .vm-ask {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-12);\n width: 100%;\n padding: var(--space-14) var(--space-18);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n background: var(--accent);\n color: var(--on-accent);\n font: 700 21px/1 var(--font-display);\n letter-spacing: -0.02em;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-ask.is-solo {\n margin-bottom: var(--space-14);\n}\n[data-vibe-menu] .vm-ask .vm-glyph {\n width: var(--size-glyph-cta);\n height: var(--size-glyph-cta);\n transition: transform 160ms cubic-bezier(0.22, 1, 0.36, 1);\n}\n[data-vibe-menu] .vm-ask:hover .vm-glyph {\n transform: translateX(4px);\n}\n[data-vibe-menu] .vm-ask.is-phone {\n font-size: 18px;\n}\n[data-vibe-menu] .vm-sub:has(.vm-copy) {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-sub:has(.vm-copy) > span {\n flex: 1;\n}\n\n/* ---------- Chip ---------- */\n[data-vibe-menu] .vm-chip {\n height: var(--size-chip);\n padding: 0 var(--space-12);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-chip);\n background: var(--accent);\n color: var(--on-accent);\n font-size: 11px;\n flex: none;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-chip.is-ghost {\n background: transparent;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-chip.is-name {\n font: 700 14px/1 var(--font-display);\n letter-spacing: 0;\n text-transform: none;\n}\n[data-vibe-menu] .vm-chip.vm-copy {\n height: var(--size-copy);\n padding: 0 var(--space-14);\n border-radius: var(--radius-copy);\n flex-shrink: 0;\n align-self: center;\n white-space: nowrap;\n}\n[data-vibe-menu] .vm-suggestions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-6);\n}\n/* Port change (smoke F9): codegen writes long chips, so a chip wraps inside\n the card (DS \"text that can outgrow its track wraps\") instead of running\n past its edge; a one-line chip keeps the 28px chip height. */\n[data-vibe-menu] .vm-suggest {\n min-height: var(--size-chip);\n max-width: 100%;\n min-width: 0;\n padding: var(--space-2) var(--space-12);\n text-align: left;\n overflow-wrap: anywhere;\n border: var(--stroke-mini) solid var(--suggest-border);\n border-radius: var(--radius-chip);\n background: none;\n color: var(--ink);\n font: 400 13px/20px var(--font-display);\n cursor: pointer;\n}\n[data-vibe-menu] .vm-suggest:hover,\n[data-vibe-menu] .vm-suggest.is-hover,\n[data-vibe-menu] .vm-suggest[aria-busy=\"true\"] {\n border-color: var(--line-card);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\n}\n/* A pressed chip holds the row while its answer is on the way (a lookup, a\n fork): it stays lit, and the row takes no second press. */\n[data-vibe-menu] .vm-suggest:disabled {\n cursor: default;\n}\n[data-vibe-menu] .vm-suggest:disabled:not([aria-busy=\"true\"]) {\n opacity: 0.5;\n}\n/* The pressed one is disabled too (the row takes no second press), so it\n must outrank the app's global button:disabled dim (theme/global-styles.ts). */\n[data-vibe-menu] .vm-suggest[aria-busy=\"true\"] {\n opacity: 1;\n}\n/* The same hold on the inline links at the end of the chat: the pressed link\n keeps its lit underline, the others read as disabled (dimmed above). */\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest[aria-busy=\"true\"] {\n text-decoration-color: currentColor;\n}\n/* The gold option (#6768): the one capability the agent offered, a chip in the\n same row and the same order as the others. It wears the lit state the others\n take on hover, a full-ink outline and a filled star before the label, so it\n reads as the offer without a second colour on the card. */\n[data-vibe-menu] .vm-suggest.is-gold {\n display: inline-flex;\n align-items: center;\n gap: var(--space-6);\n border-color: var(--line-card);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\n}\n[data-vibe-menu] .vm-suggest.is-gold .vm-glyph {\n flex: none;\n fill: currentColor;\n}\n[data-vibe-menu] .vm-picks {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6);\n}\n\n/* ---------- Composer: the logo pill's shape, 48px tall (owner pick B, 2026-10-26:\n near the switch's 44px curve with a full 44px cap) ---------- */\n[data-vibe-menu] .vm-composer {\n display: flex;\n align-items: stretch;\n min-height: var(--size-composer);\n margin-bottom: var(--space-16);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n background: var(--card-bg);\n}\n[data-vibe-menu] .vm-composer:focus-within,\n[data-vibe-menu] .vm-composer.is-focus {\n box-shadow: 0 0 0 3px var(--accent);\n}\n[data-vibe-menu] .vm-composer textarea {\n flex: 1;\n min-width: 0;\n align-self: center;\n margin: 0 var(--space-12) 0 2px;\n padding: 0;\n resize: none;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--ink);\n font: 700 16px/1.2 var(--font-display);\n letter-spacing: -0.02em;\n field-sizing: content;\n max-height: 2.4em;\n}\n[data-vibe-menu] .vm-composer textarea::placeholder {\n color: var(--placeholder);\n}\n[data-vibe-menu] .vm-composer .vm-attach {\n order: -1;\n width: var(--size-copy);\n height: var(--size-copy);\n margin-left: var(--space-10);\n align-self: center;\n border-radius: 50%;\n display: grid;\n place-items: center;\n flex: none;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-composer .vm-attach:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-composer .vm-glyph {\n width: 16px;\n height: 16px;\n}\n[data-vibe-menu] .vm-cap {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--space-24) 0 20px;\n border-left: var(--stroke-rule) solid var(--line-card);\n background: var(--section-code);\n color: var(--on-code);\n font: 700 13px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n white-space: nowrap;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-cap:hover {\n background: color-mix(in oklch, var(--section-code), var(--menu-ink) 10%);\n}\n[data-vibe-menu] .vm-composer.is-building .vm-cap[data-send],\n[data-vibe-menu] .vm-composer.is-building:has(textarea:not(:placeholder-shown)) .vm-cap[data-stop] {\n display: none;\n}\n[data-vibe-menu] .vm-composer.is-building:has(textarea:not(:placeholder-shown)) .vm-cap[data-send] {\n display: flex;\n}\n/* Rewrite mode (the settings tab's sharing rewrite): no attach button, so the\n field takes the attach's inset; a dim red X cap sits left of the action cap. */\n[data-vibe-menu] .vm-composer.is-rewrite {\n position: relative;\n}\n[data-vibe-menu] .vm-composer.is-rewrite textarea {\n margin-left: var(--space-24);\n}\n[data-vibe-menu] .vm-cap[data-cancel] {\n padding: 0 var(--space-16);\n background: var(--cancel-cap);\n color: var(--on-cancel-cap);\n}\n[data-vibe-menu] .vm-cap[data-cancel]:hover {\n background: color-mix(in oklch, var(--cancel-cap), var(--on-cancel-cap) 12%);\n}\n[data-vibe-menu] .vm-rewrite-shimmer {\n position: absolute;\n left: var(--space-24);\n top: 50%;\n width: 28%;\n height: var(--space-12);\n margin-top: calc(var(--space-12) / -2);\n border-radius: var(--radius-full);\n background: var(--placeholder);\n opacity: 0.3;\n pointer-events: none;\n animation: vm-rewrite-shimmer 1.4s ease-in-out infinite;\n}\n@keyframes vm-rewrite-shimmer {\n 50% {\n opacity: 0.12;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-rewrite-shimmer {\n animation: none;\n }\n}\n[data-vibe-menu] .vm-queue-note {\n display: none;\n margin: -10px 0 12px 18px;\n font-size: 12px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-composer:has(textarea:not(:placeholder-shown)) + .vm-queue-note {\n display: block;\n}\n/* The change box's hint (#7803 #7878): one quiet line under the box while the\n person types, in the queue note's muted voice, whose button is the second door. */\n[data-vibe-menu] .vm-door-line {\n margin: -10px 0 12px 18px;\n font-size: 12px;\n line-height: 18px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-door-line .vm-door {\n all: unset;\n cursor: pointer;\n color: var(--ink);\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-color: var(--muted);\n}\n[data-vibe-menu] .vm-door-line .vm-door:focus-visible {\n outline: 2px solid var(--ink);\n outline-offset: 2px;\n border-radius: 2px;\n}\n[data-vibe-menu] .vm-composer.is-phone textarea {\n margin-right: var(--space-6);\n font-size: 16px;\n}\n[data-vibe-menu] .vm-composer.is-phone .vm-attach {\n margin-left: 4px;\n width: 28px;\n}\n[data-vibe-menu] .vm-composer.is-phone .vm-cap {\n padding: 0 var(--space-18) 0 var(--space-14);\n}\n\n/* ---------- Row: the bar's tab grammar inside the card ---------- */\n[data-vibe-menu] .vm-group {\n border-top: var(--stroke-rule) solid var(--line-card);\n margin: 0 calc(-1 * var(--space-16));\n}\n[data-vibe-menu] .vm-group.is-flush {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-row {\n display: flex;\n align-items: center;\n gap: var(--space-12);\n width: 100%;\n height: var(--size-row);\n padding: 0 var(--space-16);\n}\n[data-vibe-menu] .vm-row.is-compact {\n height: var(--size-row-compact);\n}\n[data-vibe-menu] .vm-row + .vm-row {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-row .vm-label {\n flex: 1;\n}\n[data-vibe-menu] .vm-dot {\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border-radius: 50%;\n background: var(--ink);\n color: var(--card-bg);\n display: grid;\n place-items: center;\n flex: none;\n}\n[data-vibe-menu] button.vm-row:hover .vm-dot:not(.vm-app),\n[data-vibe-menu] .vm-row.is-hover .vm-dot:not(.vm-app) {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-row.is-quiet .vm-dot {\n background: transparent;\n color: var(--ink);\n box-shadow: inset 0 0 0 2px var(--line-card);\n}\n[data-vibe-menu] .vm-row[aria-disabled=\"true\"] {\n opacity: 0.35;\n cursor: default;\n}\n[data-vibe-menu] .vm-row[aria-disabled=\"true\"] .vm-dot {\n background: var(--ink) !important;\n color: var(--card-bg) !important;\n}\n[data-vibe-menu] .vm-app,\n[data-vibe-menu] .vm-initial {\n font: 700 12px/1 var(--font-tab);\n box-shadow: inset 0 0 0 2px var(--line-card);\n}\n[data-vibe-menu] .vm-app {\n background: var(--app);\n color: var(--menu-ink);\n}\n[data-vibe-menu] .vm-initial {\n background: transparent;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-chev {\n display: grid;\n color: var(--muted);\n transition: transform 160ms cubic-bezier(0.22, 1, 0.36, 1);\n}\n[data-vibe-menu] .vm-chev.is-open {\n transform: rotate(90deg);\n}\n[data-vibe-menu] .vm-count {\n font: 700 12px/1 var(--font-tab);\n letter-spacing: 0.08em;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-count.is-handle {\n max-width: 45%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.02em;\n}\n[data-vibe-menu] .vm-switch {\n position: relative;\n width: var(--size-switch-w);\n height: 20px;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-switch);\n flex: none;\n}\n[data-vibe-menu] .vm-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--ink);\n}\n[data-vibe-menu] .vm-switch.is-on {\n background: var(--accent);\n}\n[data-vibe-menu] .vm-switch.is-on::after {\n left: 18px;\n}\n\n/* ---------- BackRow and DoneButton: a drill-in's frame ---------- */\n[data-vibe-menu] .vm-back {\n display: flex;\n align-items: center;\n gap: var(--space-12);\n width: calc(100% + 2 * var(--space-16));\n height: var(--size-row-compact);\n margin: 0 calc(-1 * var(--space-16));\n padding: 0 var(--space-16);\n border-top: var(--stroke-rule) solid var(--line-card);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n}\n/* A drill that replaces the whole card body (Share, Account) sits on the card's\n top edge, which the outline already draws: no rule, and it takes the body's\n top padding so no empty band shows above it (cards-hero.css .card-title + .h-back). */\n[data-vibe-menu] .vm-back.is-top {\n margin-top: calc(-1 * var(--space-14));\n border-top: 0;\n}\n[data-vibe-menu] .vm-back .vm-label {\n flex: none;\n}\n[data-vibe-menu] .vm-back-name {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: 400 16px/1.1 var(--font-display);\n color: var(--muted);\n}\n[data-vibe-menu] .vm-back:hover .vm-dot,\n[data-vibe-menu] .vm-back.is-hover .vm-dot {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-drill {\n padding-top: var(--space-14);\n}\n[data-vibe-menu] .vm-drill-sec + .vm-drill-sec {\n margin-top: var(--space-14);\n}\n[data-vibe-menu] .vm-drill-line {\n margin: 0 0 var(--space-14);\n font: 700 18px/1.25 var(--font-display);\n letter-spacing: -0.01em;\n}\n[data-vibe-menu] .vm-done {\n display: block;\n width: 100%;\n height: var(--size-row-compact);\n margin-top: var(--space-16);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-done);\n background: var(--accent);\n color: var(--on-accent);\n text-align: center;\n font: 700 14px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-textbtn {\n display: block;\n width: 100%;\n height: 40px;\n margin-top: var(--space-4);\n text-align: center;\n font: 700 12px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-textbtn:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-faq {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-12);\n width: 100%;\n padding: var(--space-12) 0;\n font: 400 16px/1.3 var(--font-display);\n}\n[data-vibe-menu] .vm-faq + .vm-faq {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n\n/* ---------- MomentLine: the current moment ---------- */\n[data-vibe-menu] .vm-moments {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-moment {\n margin: 0;\n font: 400 16px/1.3 var(--font-display);\n color: var(--ink);\n}\n[data-vibe-menu] .vm-moment.is-pinned {\n padding: var(--space-10) var(--space-12) var(--space-12) var(--space-14);\n border: var(--stroke-rule) solid var(--line-card);\n border-left: var(--size-band) solid var(--accent);\n border-radius: var(--radius-moment);\n}\n/* A primary pinned item's main action (#7782): the full-width pill, then its quiet second ways. */\n[data-vibe-menu] .vm-moment.is-pinned > .vm-ask + .vm-moment-actions {\n margin-top: var(--space-10);\n}\n[data-vibe-menu] .vm-moment-actions:empty {\n display: none;\n}\n[data-vibe-menu] .vm-moment-text {\n margin: 0 0 var(--space-10);\n text-wrap: pretty;\n}\n/* A pinned heads-up (#6816): the summary line's muted voice, its action a text link. */\n[data-vibe-menu] .vm-moment.is-quiet {\n padding: 0 var(--space-2);\n font-size: 14px;\n color: var(--muted);\n text-wrap: pretty;\n}\n[data-vibe-menu] button.vm-moment-link {\n margin: 0;\n padding: 0;\n border: 0;\n background: none;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-moment-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6);\n}\n[data-vibe-menu] .vm-moment-hint {\n font-size: 12px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-moment.is-progress,\n[data-vibe-menu] .vm-moment.is-summary {\n display: flex;\n align-items: center;\n gap: var(--space-10);\n padding: 0 var(--space-2);\n}\n[data-vibe-menu] .vm-moment.is-summary {\n color: var(--muted);\n}\n[data-vibe-menu] .vm-moment.is-expander {\n width: 100%;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-moment.is-expander:hover {\n color: var(--ink);\n}\n/* The live line's link (the first build's real address, #6451 S9c): pointer\n events back on, since the layer takes no hits of its own. */\n[data-vibe-menu] .vm-moment-link {\n display: inline-block;\n margin: 0 var(--space-2);\n font: 400 14px/1.3 var(--font-display);\n color: var(--ink);\n text-decoration: underline;\n text-underline-offset: 3px;\n overflow-wrap: anywhere;\n pointer-events: auto;\n}\n[data-vibe-menu] .vm-live .vm-chev {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-log-clip {\n overflow: hidden;\n}\n/* Port addition (RULINGS R1): the log clip is always rendered (RECONCILE \u00A75c),\n so the base stylesheet owns its shut and open states. The shell's per-frame\n tween (T11) writes an inline height, which overrides these during motion.\n C's VIBE_MENU_SHELL_CSS does not repeat them. */\n[data-vibe-menu] .vm-log-clip[data-open=\"false\"] {\n height: 0;\n overflow: hidden;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"] {\n height: auto;\n /* Known adjustment (plan header): room for .vm-log's own 160px cap plus its\n 8px margin-top and two hairline borders, so the clip never scrolls on top\n of the log. */\n max-height: calc(var(--size-log-max, 160px) + var(--space-8) + 2 * var(--stroke-hairline));\n overflow: auto;\n /* Smoke F15: the shell's height tween makes the clip overflow for a moment;\n .vm-log scrolls itself, so the clip never shows a bar. */\n scrollbar-width: none;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"]::-webkit-scrollbar {\n display: none;\n}\n/* The peek (owner 2026-10-16): a send opens the fold about two lines high, the\n person's own words its last visible line, before the composer has cleared.\n The triangle stays folded; the peek is an invite (a tap, a wheel or a swipe in\n it opens the full log, MomentLine). Its column is bottom-aligned so the\n overflow falls off the top, and its inner scrollers cap at the same height\n so their bottom pin shows the newest line. Never part of the open\n [data-history] flex chain below. */\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] {\n height: auto;\n max-height: var(--size-log-peek);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n cursor: pointer;\n -webkit-mask-image: linear-gradient(to bottom, transparent, var(--ink) 14px);\n mask-image: linear-gradient(to bottom, transparent, var(--ink) 14px);\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] > * {\n flex: none;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-log,\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-agent-history {\n max-height: var(--size-log-peek);\n overflow-y: hidden;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-suggestions {\n display: none;\n}\n/* The fold over the full chat (slots.agentLog): the history caps and scrolls\n itself (AgentLogHistory's compact box), so the clip drops the flat log's cap. */\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"][data-history] {\n max-height: none;\n overflow: hidden;\n}\n[data-vibe-menu] .vm-log-history {\n margin-top: var(--space-8);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n}\n/* One scroller: the tab-row card with the full chat open. The history's own\n cap (AgentLogHistory's compact box) knows nothing of what else the card\n holds, and the first build's request headline can take a third of it: the\n card then overflowed and scrolled too, the composer slid under the row, and\n the chat's end was out of reach. Here the card is a column whose fold gives\n up exactly what the card lacks, so the history scrolls and the card never\n does. Everything else in the card keeps its own height. */\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history]) {\n display: flex;\n flex-direction: column;\n}\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history])::before {\n flex: none;\n}\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history]) .vm-card-body,\n[data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-moments:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history],\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history] .vm-log-history {\n display: flex;\n flex-direction: column;\n flex: 0 1 auto;\n min-height: 0;\n}\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history] .vm-log-history > * {\n min-height: 0;\n}\n[data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open=\"true\"][data-history]) > :not(.vm-moments),\n[data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open=\"true\"][data-history]) > :not(.vm-log-clip) {\n flex-shrink: 0;\n}\n[data-vibe-menu] .vm-agent-history-tail {\n padding: var(--space-10) 4px var(--space-14) var(--space-24);\n}\n/* Suggestions at the end of the chat: wrapped inline links, not chips. */\n[data-vibe-menu] .vm-suggestions.is-inline {\n gap: var(--space-6) var(--space-14);\n margin-bottom: 0;\n}\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest {\n min-height: 0;\n padding: 0;\n border: none;\n border-radius: 0;\n background: none;\n text-decoration: underline;\n text-decoration-color: var(--suggest-border);\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n}\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest:hover,\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-hover,\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-gold {\n background: none;\n text-decoration-color: currentColor;\n}\n[data-vibe-menu] .vm-log {\n max-height: var(--size-log-max);\n overflow-y: auto;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n margin-top: var(--space-8);\n padding: var(--space-10) 4px var(--space-10) var(--space-24);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n font-size: 13.5px;\n line-height: 1.35;\n}\n[data-vibe-menu] .vm-log-line {\n margin: 0;\n}\n[data-vibe-menu] .vm-log-line:first-child {\n margin-top: auto;\n}\n[data-vibe-menu] .vm-log-line b {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--muted);\n margin-right: 4px;\n}\n\n/* ---------- AccessToggle: Restricted | Public and its line ---------- */\n[data-vibe-menu] .vm-access {\n display: flex;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n[data-vibe-menu] .vm-access button {\n flex: 1;\n height: var(--size-bar);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-10);\n text-align: center;\n font: 700 24px/1 var(--font-display);\n letter-spacing: -0.02em;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-access button + button {\n border-left: var(--stroke-rule) solid var(--line-card);\n}\n[data-vibe-menu] .vm-access button.is-active {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-access button:not(.is-active):hover {\n background: color-mix(in srgb, var(--accent) 20%, transparent);\n}\n/* Settings still loading (preflight ruling P14): dimmed and inert. */\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] {\n opacity: var(--opacity-row-disabled);\n}\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] button {\n cursor: default;\n}\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] button:not(.is-active):hover {\n background: transparent;\n}\n[data-vibe-menu] .vm-access-line {\n display: flex;\n align-items: center;\n gap: var(--space-10);\n min-height: var(--size-access-line);\n margin: var(--space-10) 0 var(--space-12);\n padding: var(--space-6) var(--space-6) var(--space-6) var(--space-14);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-access-line);\n background: var(--share-tint);\n font-size: 16.5px;\n line-height: 1.25;\n}\n[data-vibe-menu] .vm-access-line > span {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-access-line .vm-glyph {\n width: 16px;\n height: 16px;\n}\n[data-vibe-menu] .vm-publish {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n padding: 5px 5px 5px var(--space-10);\n border: var(--stroke-rule) solid var(--line-card);\n border-left: var(--size-band) solid var(--accent);\n border-radius: var(--radius-moment);\n}\n[data-vibe-menu] .vm-publish b {\n font: 700 11px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n[data-vibe-menu] .vm-publish span {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n line-height: 1.25;\n color: var(--muted);\n}\n\n/* ---------- GrantControls ---------- */\n[data-vibe-menu] .vm-seg {\n display: flex;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n[data-vibe-menu] .vm-seg button {\n flex: 1;\n height: var(--size-segment);\n text-align: center;\n font-size: 11px;\n}\n[data-vibe-menu] .vm-seg button + button {\n border-left: var(--stroke-rule) solid var(--line-card);\n}\n[data-vibe-menu] .vm-seg button.is-active {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-seg.is-mini {\n margin: 0;\n border-width: var(--stroke-mini);\n}\n[data-vibe-menu] .vm-seg.is-mini button {\n flex: none;\n height: var(--size-segment-mini);\n padding: 0 var(--space-8);\n font-size: 10px;\n}\n[data-vibe-menu] .vm-seg.is-mini button + button {\n border-left-width: var(--stroke-mini);\n}\n[data-vibe-menu] .vm-grants {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6) var(--space-12);\n}\n[data-vibe-menu] .vm-grant-ctl {\n display: flex;\n align-items: center;\n gap: 5px;\n}\n[data-vibe-menu] .vm-grant-name {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-grant-fixed {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--ink);\n}\n\n/* ---------- MemberRow ---------- */\n[data-vibe-menu] .vm-input {\n width: 100%;\n height: var(--size-input);\n margin-bottom: var(--space-14);\n padding: 0 var(--space-18);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-input);\n background: transparent;\n color: var(--ink);\n font: inherit;\n}\n[data-vibe-menu] .vm-members-head {\n margin-top: 0;\n padding: 2px 0 var(--space-8);\n}\n[data-vibe-menu] .vm-members-head + .vm-input {\n height: 40px;\n margin-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-person {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-8) var(--space-12);\n padding: var(--space-6) 0;\n}\n[data-vibe-menu] .vm-person + .vm-person {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-person .vm-label {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-request {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-8) var(--space-12);\n margin-bottom: 2px;\n padding: var(--space-10) var(--space-12);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-card);\n background: var(--share-tint-strong);\n}\n[data-vibe-menu] .vm-request-top {\n flex: 1 0 auto;\n}\n[data-vibe-menu] .vm-request-actions {\n display: flex;\n gap: var(--space-6);\n margin-left: auto;\n}\n[data-vibe-menu] .vm-who-block > .vm-row {\n width: calc(100% + 2 * var(--space-16));\n margin: 2px calc(-1 * var(--space-16)) 0;\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-narrow .vm-person .vm-grants,\n[data-vibe-menu] .vm-narrow .vm-request-top {\n flex-basis: 100%;\n}\n[data-vibe-menu] .vm-narrow .vm-person .vm-grants,\n[data-vibe-menu] .vm-narrow .vm-request .vm-grants {\n column-gap: var(--space-10);\n}\n/* stacking, as the prototype: card < bar < outline < glass and pill */\n[data-vibe-menu] .vm-frame .vm-card {\n z-index: 1;\n}\n[data-vibe-menu] .vm-frame .vm-strip {\n z-index: 2;\n}\n[data-vibe-menu] .vm-frame .vm-outline {\n z-index: 3;\n}\n[data-vibe-menu] .vm-frame .vm-glass {\n z-index: 4;\n}\n[data-vibe-menu] .vm-refresh {\n display: grid;\n place-items: center;\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: 50%;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-refresh:hover {\n background: var(--accent);\n color: var(--on-accent);\n}\n\n/* ---------- port additions: not in bundle.css ---------- */\n/* Rows and the action pill can be links (Home's rows, the credits action). */\n[data-vibe-menu] :where(a.vm-row, a.vm-ask) {\n color: inherit;\n text-decoration: none;\n}\n[data-vibe-menu] a.vm-row:hover .vm-dot:not(.vm-app) {\n background: var(--accent);\n color: var(--on-accent);\n}\n/* A member's name drills into that member (spec \u00A78). */\n[data-vibe-menu] .vm-person button.vm-label {\n text-align: left;\n}\n[data-vibe-menu] .vm-chip[aria-disabled=\"true\"],\n[data-vibe-menu] .vm-cap:disabled,\n[data-vibe-menu] .vm-composer .vm-attach:disabled {\n opacity: var(--opacity-row-disabled);\n cursor: default;\n}\n/* Staged attachments above the composer: name chips, no emoji. */\n[data-vibe-menu] .vm-attachments {\n margin-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-attachments .vm-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--space-6);\n max-width: 220px;\n}\n[data-vibe-menu] .vm-attachments .vm-chip > span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-vibe-menu] .vm-attachments .vm-chip[data-status=\"error\"] {\n border-color: var(--section-account);\n}\n/* The one left-out sentence after a pick past the cap (#7622): the queue\n note's voice, tucked under the chips it talks about. */\n[data-vibe-menu] .vm-attach-note {\n margin: -2px 0 10px 4px;\n font-size: 12px;\n line-height: 1.4;\n color: var(--muted);\n}\n/* A suggestion's fast-path marks (RULINGS O4, production #2917 decorateChip).\n Siblings of .vm-suggest, since a button can't nest a button. The owner's\n toggle (FastPathToggle) is outline when not blessed, filled when blessed\n (aria-pressed); the badges are the marks every viewer sees. */\n[data-vibe-menu] .vm-suggest-item {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n max-width: 100%;\n min-width: 0;\n}\n[data-vibe-menu] .vm-suggest-item > * {\n flex: none;\n}\n[data-vibe-menu] .vm-suggest-item > .vm-suggest {\n flex: 0 1 auto;\n}\n[data-vibe-menu] .vm-suggest-shield {\n width: var(--size-chip);\n height: var(--size-chip);\n display: inline-grid;\n place-items: center;\n border-radius: var(--radius-full);\n background: none;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-suggest-shield:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-shield[aria-pressed=\"true\"] {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-shield[aria-pressed=\"true\"] .vm-glyph {\n fill: currentColor;\n}\n/* The non-interactive marks every viewer sees (production ChipShieldBadge,\n ChipJumpBadge): a filled shield (\"stays in this app\", server-authoritative)\n or an arrow (\"opens another app\"). Never both on one chip. */\n[data-vibe-menu] .vm-suggest-badge {\n width: var(--size-chip);\n height: var(--size-chip);\n display: inline-grid;\n place-items: center;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-badge.is-shield .vm-glyph {\n fill: currentColor;\n}\n[data-vibe-menu] .vm-suggest-badge.is-jump {\n color: var(--muted);\n}\n\n/* ---------- phones (cards-hero.css): the menu's width, not the viewport ---------- */\n@container vibe-menu (max-width: 480px) {\n [data-vibe-menu] .vm-ask {\n font-size: 18px;\n }\n /* the field keeps 16px (iOS zooms smaller fields); attach slims instead */\n [data-vibe-menu] .vm-composer textarea {\n margin-right: var(--space-6);\n font-size: 16px;\n }\n [data-vibe-menu] .vm-composer .vm-attach {\n margin-left: 4px;\n width: 28px;\n }\n [data-vibe-menu] .vm-cap {\n padding: 0 var(--space-18) 0 var(--space-14);\n }\n [data-vibe-menu] .vm-access button {\n font-size: 21px;\n }\n /* the access line keeps its sentence to two lines beside the chip */\n [data-vibe-menu] .vm-access-line {\n padding-left: 12px;\n gap: 8px;\n font-size: 15.5px;\n }\n [data-vibe-menu] .vm-access-line .vm-chip.vm-copy {\n padding: 0 10px;\n }\n /* Data and Code drop under the handle on one line (two on the narrowest) */\n [data-vibe-menu] .vm-person .vm-grants {\n flex-basis: 100%;\n column-gap: var(--space-10);\n }\n [data-vibe-menu] .vm-request .vm-grants {\n column-gap: var(--space-10);\n }\n [data-vibe-menu] .vm-request-top {\n flex-basis: 100%;\n }\n [data-vibe-menu] .vm-input {\n font-size: 16px;\n }\n}\n@container vibe-menu (max-width: 359px) {\n [data-vibe-menu] .vm-access button {\n font-size: 19px;\n }\n /* the line drops its icon here: the enclosure already marks it */\n [data-vibe-menu] .vm-access-line > .vm-glyph {\n display: none;\n }\n [data-vibe-menu] .vm-access-line {\n margin: 8px 0 10px;\n font-size: 14.5px;\n }\n [data-vibe-menu] .vm-access-line .vm-chip.vm-copy {\n padding: 0 8px;\n }\n /* the cap and attach slim so the field keeps room (REMIX THIS stays one line) */\n [data-vibe-menu] .vm-cap {\n padding: 0 13px 0 10px;\n letter-spacing: 0.05em;\n }\n [data-vibe-menu] .vm-composer .vm-attach {\n margin-left: 3px;\n width: 24px;\n }\n /* 16px, not the prototype's 14px: no text field under 16px on phones (spec \u00A74.5) */\n [data-vibe-menu] .vm-composer textarea {\n margin: 0 4px 0 0;\n font-size: 16px;\n }\n [data-vibe-menu] .vm-chip.vm-copy {\n padding: 0 10px;\n letter-spacing: 0.06em;\n }\n}\n";
|
|
4
|
+
export declare const VIBE_MENU_CSS = "\n/* ---------- tokens (tokens.json), light, then both dark arms ----------\n Detached layers (portalled out of the menu root) carry\n data-vibe-menu-detached, so every token block lists them too. */\n[data-vibe-menu],\n[data-vibe-menu-detached] {\n color-scheme: light;\n --section-home: oklch(76.02% 0.1832 146.61);\n --section-account: oklch(57.46% 0.2126 29.55);\n --section-code: oklch(89.78% 0.1857 98.22);\n --section-share: oklch(64.39% 0.1304 231.41);\n --vibes-black: #000000;\n --vibes-cream: #fffff0;\n --menu-ink: #1a1a1a;\n --card-bg: var(--vibes-cream);\n --ink: #111111;\n --muted: #555555;\n --line: #111111;\n --line-card: #111111;\n --line-hairline: #1111112e;\n --placeholder: var(--muted);\n --suggest-border: #11111173;\n --share-tint: #009ace1f;\n --share-tint-strong: #009ace40;\n --on-home: var(--menu-ink);\n --on-account: var(--vibes-cream);\n --on-code: var(--menu-ink);\n --on-share: var(--menu-ink);\n --badge: var(--section-account);\n --on-badge: var(--vibes-cream);\n --cancel-cap: #f3d6d2;\n --on-cancel-cap: #9c2318;\n --obsidian-fill: rgba(6, 9, 10, 0.94);\n --obsidian-edge: rgba(255, 255, 255, 0.17);\n --obsidian-highlight: rgba(255, 255, 255, 0.32);\n --obsidian-rim: rgba(255, 255, 255, 0.1);\n --font-display: \"Alte Haas Grotesk\", Inter, sans-serif;\n --font-tab: Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n --space-9: 9px;\n --space-2: 2px;\n --space-4: 4px;\n --space-6: 6px;\n --space-8: 8px;\n --space-10: 10px;\n --space-12: 12px;\n --space-14: 14px;\n --space-16: 16px;\n --space-18: 18px;\n --space-24: 24px;\n --radius-card: 16px;\n --radius-full: 999px;\n --radius-bar-end: 25px;\n --radius-access-line: 24px;\n --radius-input: 22px;\n --radius-done: 21px;\n --radius-copy: 18px;\n --radius-chip: 14px;\n --radius-moment: 12px;\n --radius-switch: 10px;\n --radius-meter: 7px;\n --obsidian-shadow: 0 2px 5px rgba(0, 0, 0, 0.3), inset 0 0 0 1px rgba(255, 255, 255, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.16), inset 0 -1px 0 rgba(255, 255, 255, 0.05), inset 0 0 12px rgba(255, 255, 255, 0.02);\n --swatch-selected: 0 0 0 2px #fffff0, 0 0 0 4px #111111;\n --stroke-rule: 2px;\n --stroke-hairline: 1px;\n --stroke-mini: 1.5px;\n --stroke-focus: 3px;\n --stroke-glyph: 2.4px;\n --size-icon-circle: 28px;\n --size-icon-circle-phone: 22px;\n --size-glyph: 14px;\n --size-glyph-cta: 20px;\n --size-bar: 50px;\n --size-tab: 176px;\n --size-home-extra: 14px;\n --size-bar-end: 63px;\n --size-pill-w: 120px;\n --size-pill-h: 44px;\n --size-ring: 3px;\n --size-edge: 24px;\n --size-edge-phone: 16px;\n --size-pill-flat-inset: 19px;\n --size-band: 8px;\n --size-row: 46px;\n --size-row-compact: 42px;\n --size-chip: 28px;\n --size-copy: 36px;\n --size-input: 44px;\n --size-composer: 48px;\n --size-access-line: 48px;\n --size-segment: 32px;\n --size-segment-mini: 24px;\n --size-switch-w: 36px;\n --size-meter: 14px;\n --size-card-max: 480px;\n --size-card-max-phone: 560px;\n --size-log-max: 160px;\n --size-log-peek: 120px;\n --size-code-mode-max-w: 1200px;\n --opacity-tab-inactive: 0.73;\n --opacity-row-disabled: 0.35;\n}\n@media (prefers-color-scheme: dark) {\n [data-vibe-menu],\n [data-vibe-menu-detached] {\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line-card: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\n --cancel-cap: #4a2420;\n --on-cancel-cap: #f1b5ad;\n --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;\n }\n}\n.dark [data-vibe-menu],\n.dark [data-vibe-menu-detached] {\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line-card: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\n --cancel-cap: #4a2420;\n --on-cancel-cap: #f1b5ad;\n --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;\n}\n\n/* ---------- the root: the phone container ---------- */\n[data-vibe-menu] {\n container-name: vibe-menu;\n container-type: inline-size;\n color: var(--ink);\n font-family: var(--font-display);\n}\n\n/* Scrollbars (smoke F15): thin, in the menu's hairline, both themes, never the\n native dark bar inside the cream card. The colour is set on the root AND\n every descendant, for every scroller the menu hosts (drills, the Embed box,\n injected panels): the app's global sheet sets scrollbar-color on *, which\n beats a colour only inherited from the root. The width rule has zero\n specificity so a part that hides its bar (the Code mode tab strip) still\n wins. The webkit arm is for engines without the standard properties; Chrome\n ignores it once they are set. */\n[data-vibe-menu],\n[data-vibe-menu] *,\n[data-vibe-menu-detached],\n[data-vibe-menu-detached] * {\n scrollbar-color: var(--line-hairline) transparent;\n}\n:where([data-vibe-menu]),\n:where([data-vibe-menu]) :where(*) {\n scrollbar-width: thin;\n}\n:where([data-vibe-menu]) ::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n background: transparent;\n}\n:where([data-vibe-menu]) ::-webkit-scrollbar-thumb {\n border-radius: var(--radius-full);\n background: var(--line-hairline);\n}\n\n/* A section is set by data-section on any ancestor (or the root), using the\n code keys: home | settings (Account) | vibe (Code) | share. It sets --accent\n (the section colour) and --on-accent (its label colour). */\n[data-vibe-menu][data-section=\"home\"],\n[data-vibe-menu] [data-section=\"home\"] {\n --accent: var(--section-home);\n --on-accent: var(--on-home);\n}\n[data-vibe-menu][data-section=\"settings\"],\n[data-vibe-menu] [data-section=\"settings\"] {\n --accent: var(--section-account);\n --on-accent: var(--on-account);\n}\n[data-vibe-menu][data-section=\"vibe\"],\n[data-vibe-menu] [data-section=\"vibe\"] {\n --accent: var(--section-code);\n --on-accent: var(--on-code);\n}\n[data-vibe-menu][data-section=\"share\"],\n[data-vibe-menu] [data-section=\"share\"] {\n --accent: var(--section-share);\n --on-accent: var(--on-share);\n}\n\n[data-vibe-menu],\n[data-vibe-menu] * {\n box-sizing: border-box;\n}\n/* the card's surface and side padding, so rows can bleed edge to edge */\n[data-vibe-menu] .vm-card-body {\n position: relative;\n padding: var(--space-14) var(--space-16) var(--space-16);\n background: var(--card-bg);\n color: var(--ink);\n font: 400 14px/20px var(--font-display);\n}\n[data-vibe-menu] .vm-card-body.is-framed {\n border: var(--stroke-rule) solid var(--line);\n border-radius: var(--radius-card) var(--radius-card) 0 0;\n overflow: hidden;\n}\n\n/* ---------- shared ---------- */\n/* Zero specificity: every vm-* rule wins over it, and so does any utility\n class on content a host injects into the card (slots). */\n:where([data-vibe-menu]) :where(button) {\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n padding: 0;\n cursor: pointer;\n text-align: left;\n touch-action: manipulation;\n}\n[data-vibe-menu] .vm-glyph {\n width: var(--size-glyph);\n height: var(--size-glyph);\n fill: none;\n stroke: currentColor;\n stroke-width: var(--stroke-glyph);\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n[data-vibe-menu] .vm-label,\n[data-vibe-menu] .vm-seg button,\n[data-vibe-menu] .vm-chip {\n font: 700 14px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n}\n[data-vibe-menu] .vm-label.is-plain {\n font: 700 16px/1.1 var(--font-display);\n letter-spacing: 0;\n text-transform: none;\n}\n[data-vibe-menu] .vm-kicker,\n[data-vibe-menu] .vm-subhead {\n margin: 0 0 var(--space-8);\n font: 700 10.5px/1.3 var(--font-tab);\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-subhead {\n margin: var(--space-16) 0 0;\n padding-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-sub {\n margin: var(--space-8) 0 var(--space-14);\n font-size: 13px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-app-name {\n white-space: nowrap;\n}\n/* ---------- SectionStrip: the bar ---------- */\n[data-vibe-menu] .vm-menu {\n position: relative;\n}\n[data-vibe-menu] .vm-strip {\n position: relative;\n width: calc(var(--size-tab) * 4 + var(--size-home-extra) + var(--size-bar-end) + 2px);\n height: var(--size-bar);\n}\n[data-vibe-menu] .vm-strip-slide {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: flex-end;\n border: var(--stroke-rule) solid var(--line);\n border-right: 0;\n border-radius: var(--bar-tl, var(--radius-bar-end)) 0 0 var(--radius-bar-end);\n overflow: hidden;\n background: var(--card-bg);\n /* #7329: the bar under the switch belongs to no tab's box. */\n padding-right: var(--size-bar-end);\n}\n[data-vibe-menu] .vm-tab {\n position: relative;\n width: var(--size-tab);\n flex: none;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n border: 0;\n padding: 0 0 0 var(--space-9);\n cursor: pointer;\n background: var(--accent);\n}\n[data-vibe-menu] .vm-tab-circle {\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border-radius: 50%;\n background: var(--menu-ink);\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n}\n[data-vibe-menu] .vm-tab svg {\n width: calc(var(--size-icon-circle) / 2);\n height: calc(var(--size-icon-circle) / 2);\n fill: none;\n stroke: var(--vibes-cream);\n stroke-width: 2.5;\n stroke-linecap: round;\n stroke-linejoin: round;\n flex: none;\n}\n[data-vibe-menu] .vm-tab-label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0 0 1.9px;\n font-family: var(--font-tab);\n font-size: 14px;\n font-weight: 700;\n letter-spacing: 1.9px;\n text-transform: uppercase;\n white-space: nowrap;\n pointer-events: none;\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-tab[data-section=\"home\"] {\n width: calc(var(--size-tab) + var(--size-home-extra));\n padding-left: calc(var(--space-9) + var(--size-home-extra) / 2);\n}\n[data-vibe-menu] .vm-tab[data-section=\"home\"] .vm-tab-label {\n left: calc(var(--size-home-extra) / 2);\n}\n/* #7329: Share's box ends where the switch begins; its colour runs on under\n the pill as a child painted beyond the box. */\n[data-vibe-menu] .vm-tab-run {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 100%;\n width: var(--size-bar-end);\n background: inherit;\n}\n[data-vibe-menu] .vm-tab:focus-visible {\n outline: var(--stroke-focus) solid var(--line);\n outline-offset: -3px;\n}\n/* Port change (smoke F5): the DS inset line ring vanished on the black pill\n and drew square corners. The pill's ring is cream, sits in the obsidian\n glass's 3px rim (offset 0), and follows the stadium (the pill's radius). */\n[data-vibe-menu] .vm-pill:focus-visible {\n outline: var(--stroke-focus) solid var(--vibes-cream);\n outline-offset: 0;\n}\n[data-vibe-menu] .vm-menu.has-card .vm-tab:not(.is-active) {\n opacity: var(--opacity-tab-inactive);\n}\n[data-vibe-menu] .vm-badge {\n position: absolute;\n top: -4px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: var(--radius-full);\n background: var(--badge);\n color: var(--on-badge);\n font: 700 11px/18px var(--font-display);\n text-align: center;\n}\n/* the bar sits against the pill: it runs half the glass under it */\n[data-vibe-menu] .vm-bar-anchor {\n position: relative;\n height: var(--size-bar);\n}\n[data-vibe-menu] .vm-bar-anchor .vm-strip {\n position: absolute;\n left: 0;\n bottom: 0;\n}\n[data-vibe-menu] .vm-bar-anchor .vm-glass {\n position: absolute;\n right: 0;\n bottom: 0;\n}\n/* phones: the bar spans the width; tabs sized to their content, icon above label */\n[data-vibe-menu] .vm-strip.is-phone {\n width: 100%;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab {\n width: auto;\n flex: 1 1 auto;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n min-width: 0;\n padding: 4px 2px;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab-circle {\n width: var(--size-icon-circle-phone);\n height: var(--size-icon-circle-phone);\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab svg {\n width: 12px;\n height: 12px;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab[data-section=\"home\"] {\n padding: 4px 2px 4px calc(2px + var(--size-home-extra) * 0.7);\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab[data-section=\"share\"] {\n flex-grow: 1;\n}\n[data-vibe-menu] .vm-strip.is-phone .vm-tab-label {\n position: static;\n display: block;\n font-size: 9.6px;\n letter-spacing: 1px;\n padding: 0 0 0 1px;\n}\n\n/* ---------- VibesSwitch: the pill in its obsidian glass ---------- */\n[data-vibe-menu] .vm-glass {\n position: relative;\n width: calc(var(--size-pill-w) + 2 * var(--size-ring));\n height: calc(var(--size-pill-h) + 2 * var(--size-ring));\n border-radius: var(--radius-full);\n flex: none;\n background:\n linear-gradient(to right, transparent, var(--obsidian-highlight), transparent) top / 100% 1px no-repeat,\n linear-gradient(to bottom, var(--obsidian-highlight), transparent, var(--obsidian-edge)) left / 1px 100% no-repeat,\n var(--obsidian-fill);\n box-shadow: var(--obsidian-shadow);\n}\n[data-vibe-menu] .vm-pill {\n position: absolute;\n left: var(--size-ring);\n top: var(--size-ring);\n width: var(--size-pill-w);\n height: var(--size-pill-h);\n padding: 0;\n border: 0;\n border-radius: var(--radius-full);\n background: none;\n cursor: pointer;\n}\n/* Touching, holding or dragging on the switch never selects text, raises the\n iOS callout and magnifier, or drags an image (owner 2026-10-16). The letters\n are paths drawn twice, the second copy clipped to the knob: both sit under\n .vm-pill, so the descendant rule covers them. */\n[data-vibe-menu] .vm-glass,\n[data-vibe-menu] .vm-pill,\n[data-vibe-menu] .vm-pill * {\n -webkit-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n/* A held press slides the knob 3/4 of the way and waits (owner 2026-10-16).\n An overshooting spring would carry it past 3/4, so the held leg eases out\n with no overshoot; the release finishes on the host's own curve. */\n[data-vibe-menu] .vm-pill[data-progress=\"0.75\"] {\n --vibes-switch-slide: 0.4s cubic-bezier(0.22, 1, 0.36, 1);\n}\n/* Reduced motion: the switch jumps between poses. Its paths carry inline\n transitions (the knob's d and 3px nudge, the letters' fills and on-knob clip), so\n only an !important rule here stops every leg, not just the d slide. */\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-pill {\n --vibes-switch-slide: 0s;\n }\n [data-vibe-menu] .vm-pill svg path {\n transition: none !important;\n }\n}\n[data-vibe-menu] .vm-switch-art {\n width: 100%;\n height: 100%;\n display: block;\n}\n[data-vibe-menu] .vm-pill .vm-badge {\n top: -6px;\n right: 4px;\n}\n/* #7079: the guest maker's save-time ask: a dot, not a count. */\n[data-vibe-menu] .vm-badge.is-dot {\n min-width: 10px;\n width: 10px;\n height: 10px;\n padding: 0;\n}\n[data-vibe-menu] .vm-chiclet {\n display: inline-block;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n background: var(--section-code);\n /* Port change: bundle.css writes #111111 (ink); text on a section colour is\n menu-ink (Global Constraints), which --on-code resolves to in both themes. */\n color: var(--on-code);\n font: 700 11px/18px var(--font-display);\n letter-spacing: 0.06em;\n}\n/* #4291. The chiclet's shape, so the two read as one row \u2014 but in the badge\n colour (the identity lane) so elevation never looks like a publish state. */\n[data-vibe-menu] .vm-admin-badge {\n display: inline-block;\n padding: 2px 8px;\n border-radius: var(--radius-full);\n background: var(--badge);\n color: var(--on-badge);\n font: 700 11px/18px var(--font-display);\n letter-spacing: 0.06em;\n}\n\n/* ---------- MenuCard: the card, its band and the folder-tab join, drawn once ---------- */\n[data-vibe-menu] .vm-frame {\n position: relative;\n}\n[data-vibe-menu] .vm-frame .vm-card {\n position: absolute;\n left: 0;\n top: 0;\n background: var(--card-bg);\n color: var(--ink);\n overflow: hidden;\n border-radius: var(--radius-card) var(--radius-card) 0 0;\n}\n[data-vibe-menu] .vm-frame .vm-card .vm-card-body {\n padding-bottom: calc(var(--space-16) + var(--size-band));\n}\n[data-vibe-menu] .vm-outline {\n position: absolute;\n left: 0;\n top: 0;\n overflow: visible;\n pointer-events: none;\n}\n[data-vibe-menu] .vm-outline .vm-band,\n[data-vibe-menu] .vm-outline .vm-cover {\n fill: var(--accent);\n}\n[data-vibe-menu] .vm-outline .vm-edge {\n fill: none;\n stroke: var(--line);\n stroke-width: 2;\n stroke-linejoin: miter;\n}\n\n/* ---------- ActionPill: the card's one main action ---------- */\n[data-vibe-menu] .vm-ask {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-12);\n width: 100%;\n padding: var(--space-14) var(--space-18);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n background: var(--accent);\n color: var(--on-accent);\n font: 700 21px/1 var(--font-display);\n letter-spacing: -0.02em;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-ask.is-solo {\n margin-bottom: var(--space-14);\n}\n[data-vibe-menu] .vm-ask .vm-glyph {\n width: var(--size-glyph-cta);\n height: var(--size-glyph-cta);\n transition: transform 160ms cubic-bezier(0.22, 1, 0.36, 1);\n}\n[data-vibe-menu] .vm-ask:hover .vm-glyph {\n transform: translateX(4px);\n}\n[data-vibe-menu] .vm-ask.is-phone {\n font-size: 18px;\n}\n[data-vibe-menu] .vm-sub:has(.vm-copy) {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-sub:has(.vm-copy) > span {\n flex: 1;\n}\n\n/* ---------- Chip ---------- */\n[data-vibe-menu] .vm-chip {\n height: var(--size-chip);\n padding: 0 var(--space-12);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-chip);\n background: var(--accent);\n color: var(--on-accent);\n font-size: 11px;\n flex: none;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-chip.is-ghost {\n background: transparent;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-chip.is-name {\n font: 700 14px/1 var(--font-display);\n letter-spacing: 0;\n text-transform: none;\n}\n[data-vibe-menu] .vm-chip.vm-copy {\n height: var(--size-copy);\n padding: 0 var(--space-14);\n border-radius: var(--radius-copy);\n flex-shrink: 0;\n align-self: center;\n white-space: nowrap;\n}\n[data-vibe-menu] .vm-suggestions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--space-6);\n}\n/* Port change (smoke F9): codegen writes long chips, so a chip wraps inside\n the card (DS \"text that can outgrow its track wraps\") instead of running\n past its edge; a one-line chip keeps the 28px chip height. */\n[data-vibe-menu] .vm-suggest {\n min-height: var(--size-chip);\n max-width: 100%;\n min-width: 0;\n padding: var(--space-2) var(--space-12);\n text-align: left;\n overflow-wrap: anywhere;\n border: var(--stroke-mini) solid var(--suggest-border);\n border-radius: var(--radius-chip);\n background: none;\n color: var(--ink);\n font: 400 13px/20px var(--font-display);\n cursor: pointer;\n}\n[data-vibe-menu] .vm-suggest:hover,\n[data-vibe-menu] .vm-suggest.is-hover,\n[data-vibe-menu] .vm-suggest[aria-busy=\"true\"] {\n border-color: var(--line-card);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\n}\n/* A pressed chip holds the row while its answer is on the way (a lookup, a\n fork): it stays lit, and the row takes no second press. */\n[data-vibe-menu] .vm-suggest:disabled {\n cursor: default;\n}\n[data-vibe-menu] .vm-suggest:disabled:not([aria-busy=\"true\"]) {\n opacity: 0.5;\n}\n/* The pressed one is disabled too (the row takes no second press), so it\n must outrank the app's global button:disabled dim (theme/global-styles.ts). */\n[data-vibe-menu] .vm-suggest[aria-busy=\"true\"] {\n opacity: 1;\n}\n/* The same hold on the inline links at the end of the chat: the pressed link\n keeps its lit underline, the others read as disabled (dimmed above). */\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest[aria-busy=\"true\"] {\n text-decoration-color: currentColor;\n}\n/* The gold option (#6768): the one capability the agent offered, a chip in the\n same row and the same order as the others. It wears the lit state the others\n take on hover, a full-ink outline and a filled star before the label, so it\n reads as the offer without a second colour on the card. */\n[data-vibe-menu] .vm-suggest.is-gold {\n display: inline-flex;\n align-items: center;\n gap: var(--space-6);\n border-color: var(--line-card);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\n}\n[data-vibe-menu] .vm-suggest.is-gold .vm-glyph {\n flex: none;\n fill: currentColor;\n}\n[data-vibe-menu] .vm-picks {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6);\n}\n\n/* ---------- Composer: the logo pill's shape, 48px tall (owner pick B, 2026-10-26:\n near the switch's 44px curve with a full 44px cap) ---------- */\n[data-vibe-menu] .vm-composer {\n display: flex;\n align-items: stretch;\n min-height: var(--size-composer);\n margin-bottom: var(--space-16);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n background: var(--card-bg);\n}\n[data-vibe-menu] .vm-composer:focus-within,\n[data-vibe-menu] .vm-composer.is-focus {\n box-shadow: 0 0 0 3px var(--accent);\n}\n[data-vibe-menu] .vm-composer textarea {\n flex: 1;\n min-width: 0;\n align-self: center;\n margin: 0 var(--space-12) 0 2px;\n padding: 0;\n resize: none;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--ink);\n font: 700 16px/1.2 var(--font-display);\n letter-spacing: -0.02em;\n field-sizing: content;\n max-height: 2.4em;\n}\n[data-vibe-menu] .vm-composer textarea::placeholder {\n color: var(--placeholder);\n}\n[data-vibe-menu] .vm-composer .vm-attach {\n order: -1;\n width: var(--size-copy);\n height: var(--size-copy);\n margin-left: var(--space-10);\n align-self: center;\n border-radius: 50%;\n display: grid;\n place-items: center;\n flex: none;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-composer .vm-attach:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-composer .vm-glyph {\n width: 16px;\n height: 16px;\n}\n[data-vibe-menu] .vm-cap {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--space-24) 0 20px;\n border-left: var(--stroke-rule) solid var(--line-card);\n background: var(--section-code);\n color: var(--on-code);\n font: 700 13px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n white-space: nowrap;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-cap:hover {\n background: color-mix(in oklch, var(--section-code), var(--menu-ink) 10%);\n}\n[data-vibe-menu] .vm-composer.is-building .vm-cap[data-send],\n[data-vibe-menu] .vm-composer.is-building:has(textarea:not(:placeholder-shown)) .vm-cap[data-stop] {\n display: none;\n}\n[data-vibe-menu] .vm-composer.is-building:has(textarea:not(:placeholder-shown)) .vm-cap[data-send] {\n display: flex;\n}\n/* Rewrite mode (the settings tab's sharing rewrite): no attach button, so the\n field takes the attach's inset; a dim red X cap sits left of the action cap. */\n[data-vibe-menu] .vm-composer.is-rewrite {\n position: relative;\n}\n[data-vibe-menu] .vm-composer.is-rewrite textarea {\n margin-left: var(--space-24);\n}\n[data-vibe-menu] .vm-cap[data-cancel] {\n padding: 0 var(--space-16);\n background: var(--cancel-cap);\n color: var(--on-cancel-cap);\n}\n[data-vibe-menu] .vm-cap[data-cancel]:hover {\n background: color-mix(in oklch, var(--cancel-cap), var(--on-cancel-cap) 12%);\n}\n[data-vibe-menu] .vm-rewrite-shimmer {\n position: absolute;\n left: var(--space-24);\n top: 50%;\n width: 28%;\n height: var(--space-12);\n margin-top: calc(var(--space-12) / -2);\n border-radius: var(--radius-full);\n background: var(--placeholder);\n opacity: 0.3;\n pointer-events: none;\n animation: vm-rewrite-shimmer 1.4s ease-in-out infinite;\n}\n@keyframes vm-rewrite-shimmer {\n 50% {\n opacity: 0.12;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-rewrite-shimmer {\n animation: none;\n }\n}\n[data-vibe-menu] .vm-queue-note {\n display: none;\n margin: -10px 0 12px 18px;\n font-size: 12px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-composer:has(textarea:not(:placeholder-shown)) + .vm-queue-note {\n display: block;\n}\n/* The change box's hint (#7803 #7878): one quiet line under the box while the\n person types, in the queue note's muted voice, whose button is the second door. */\n[data-vibe-menu] .vm-door-line {\n margin: -10px 0 12px 18px;\n font-size: 12px;\n line-height: 18px;\n color: var(--muted);\n}\n/* A refused empty Send's idea (#7916): one idea, one row, ellipsized. */\n[data-vibe-menu] .vm-door-line[data-refused-send-idea] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n[data-vibe-menu] .vm-door-line .vm-door {\n all: unset;\n cursor: pointer;\n color: var(--ink);\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-color: var(--muted);\n}\n[data-vibe-menu] .vm-door-line .vm-door:focus-visible {\n outline: 2px solid var(--ink);\n outline-offset: 2px;\n border-radius: 2px;\n}\n[data-vibe-menu] .vm-composer.is-phone textarea {\n margin-right: var(--space-6);\n font-size: 16px;\n}\n[data-vibe-menu] .vm-composer.is-phone .vm-attach {\n margin-left: 4px;\n width: 28px;\n}\n[data-vibe-menu] .vm-composer.is-phone .vm-cap {\n padding: 0 var(--space-18) 0 var(--space-14);\n}\n\n/* ---------- Row: the bar's tab grammar inside the card ---------- */\n[data-vibe-menu] .vm-group {\n border-top: var(--stroke-rule) solid var(--line-card);\n margin: 0 calc(-1 * var(--space-16));\n}\n[data-vibe-menu] .vm-group.is-flush {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-row {\n display: flex;\n align-items: center;\n gap: var(--space-12);\n width: 100%;\n height: var(--size-row);\n padding: 0 var(--space-16);\n}\n[data-vibe-menu] .vm-row.is-compact {\n height: var(--size-row-compact);\n}\n[data-vibe-menu] .vm-row + .vm-row {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-row .vm-label {\n flex: 1;\n}\n[data-vibe-menu] .vm-dot {\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border-radius: 50%;\n background: var(--ink);\n color: var(--card-bg);\n display: grid;\n place-items: center;\n flex: none;\n}\n[data-vibe-menu] button.vm-row:hover .vm-dot:not(.vm-app),\n[data-vibe-menu] .vm-row.is-hover .vm-dot:not(.vm-app) {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-row.is-quiet .vm-dot {\n background: transparent;\n color: var(--ink);\n box-shadow: inset 0 0 0 2px var(--line-card);\n}\n[data-vibe-menu] .vm-row[aria-disabled=\"true\"] {\n opacity: 0.35;\n cursor: default;\n}\n[data-vibe-menu] .vm-row[aria-disabled=\"true\"] .vm-dot {\n background: var(--ink) !important;\n color: var(--card-bg) !important;\n}\n[data-vibe-menu] .vm-app,\n[data-vibe-menu] .vm-initial {\n font: 700 12px/1 var(--font-tab);\n box-shadow: inset 0 0 0 2px var(--line-card);\n}\n[data-vibe-menu] .vm-app {\n background: var(--app);\n color: var(--menu-ink);\n}\n[data-vibe-menu] .vm-initial {\n background: transparent;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-chev {\n display: grid;\n color: var(--muted);\n transition: transform 160ms cubic-bezier(0.22, 1, 0.36, 1);\n}\n[data-vibe-menu] .vm-chev.is-open {\n transform: rotate(90deg);\n}\n[data-vibe-menu] .vm-count {\n font: 700 12px/1 var(--font-tab);\n letter-spacing: 0.08em;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-count.is-handle {\n max-width: 45%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.02em;\n}\n[data-vibe-menu] .vm-switch {\n position: relative;\n width: var(--size-switch-w);\n height: 20px;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-switch);\n flex: none;\n}\n[data-vibe-menu] .vm-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: var(--ink);\n}\n[data-vibe-menu] .vm-switch.is-on {\n background: var(--accent);\n}\n[data-vibe-menu] .vm-switch.is-on::after {\n left: 18px;\n}\n\n/* ---------- BackRow and DoneButton: a drill-in's frame ---------- */\n[data-vibe-menu] .vm-back {\n display: flex;\n align-items: center;\n gap: var(--space-12);\n width: calc(100% + 2 * var(--space-16));\n height: var(--size-row-compact);\n margin: 0 calc(-1 * var(--space-16));\n padding: 0 var(--space-16);\n border-top: var(--stroke-rule) solid var(--line-card);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n}\n/* A drill that replaces the whole card body (Share, Account) sits on the card's\n top edge, which the outline already draws: no rule, and it takes the body's\n top padding so no empty band shows above it (cards-hero.css .card-title + .h-back). */\n[data-vibe-menu] .vm-back.is-top {\n margin-top: calc(-1 * var(--space-14));\n border-top: 0;\n}\n[data-vibe-menu] .vm-back .vm-label {\n flex: none;\n}\n[data-vibe-menu] .vm-back-name {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: 400 16px/1.1 var(--font-display);\n color: var(--muted);\n}\n[data-vibe-menu] .vm-back:hover .vm-dot,\n[data-vibe-menu] .vm-back.is-hover .vm-dot {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-drill {\n padding-top: var(--space-14);\n}\n[data-vibe-menu] .vm-drill-sec + .vm-drill-sec {\n margin-top: var(--space-14);\n}\n[data-vibe-menu] .vm-drill-line {\n margin: 0 0 var(--space-14);\n font: 700 18px/1.25 var(--font-display);\n letter-spacing: -0.01em;\n}\n[data-vibe-menu] .vm-done {\n display: block;\n width: 100%;\n height: var(--size-row-compact);\n margin-top: var(--space-16);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-done);\n background: var(--accent);\n color: var(--on-accent);\n text-align: center;\n font: 700 14px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-textbtn {\n display: block;\n width: 100%;\n height: 40px;\n margin-top: var(--space-4);\n text-align: center;\n font: 700 12px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-textbtn:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-faq {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-12);\n width: 100%;\n padding: var(--space-12) 0;\n font: 400 16px/1.3 var(--font-display);\n}\n[data-vibe-menu] .vm-faq + .vm-faq {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n\n/* ---------- MomentLine: the current moment ---------- */\n[data-vibe-menu] .vm-moments {\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-moment {\n margin: 0;\n font: 400 16px/1.3 var(--font-display);\n color: var(--ink);\n}\n[data-vibe-menu] .vm-moment.is-pinned {\n padding: var(--space-10) var(--space-12) var(--space-12) var(--space-14);\n border: var(--stroke-rule) solid var(--line-card);\n border-left: var(--size-band) solid var(--accent);\n border-radius: var(--radius-moment);\n}\n/* A primary pinned item's main action (#7782): the full-width pill, then its quiet second ways. */\n[data-vibe-menu] .vm-moment.is-pinned > .vm-ask + .vm-moment-actions {\n margin-top: var(--space-10);\n}\n[data-vibe-menu] .vm-moment-actions:empty {\n display: none;\n}\n[data-vibe-menu] .vm-moment-text {\n margin: 0 0 var(--space-10);\n text-wrap: pretty;\n}\n/* A pinned heads-up (#6816): the summary line's muted voice, its action a text link. */\n[data-vibe-menu] .vm-moment.is-quiet {\n padding: 0 var(--space-2);\n font-size: 14px;\n color: var(--muted);\n text-wrap: pretty;\n}\n[data-vibe-menu] button.vm-moment-link {\n margin: 0;\n padding: 0;\n border: 0;\n background: none;\n cursor: pointer;\n}\n[data-vibe-menu] .vm-moment-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6);\n}\n[data-vibe-menu] .vm-moment-hint {\n font-size: 12px;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-moment.is-progress,\n[data-vibe-menu] .vm-moment.is-summary {\n display: flex;\n align-items: center;\n gap: var(--space-10);\n padding: 0 var(--space-2);\n}\n[data-vibe-menu] .vm-moment.is-summary {\n color: var(--muted);\n}\n[data-vibe-menu] .vm-moment.is-expander {\n width: 100%;\n gap: var(--space-8);\n}\n[data-vibe-menu] .vm-moment.is-expander:hover {\n color: var(--ink);\n}\n/* The live line's link (the first build's real address, #6451 S9c): pointer\n events back on, since the layer takes no hits of its own. */\n[data-vibe-menu] .vm-moment-link {\n display: inline-block;\n margin: 0 var(--space-2);\n font: 400 14px/1.3 var(--font-display);\n color: var(--ink);\n text-decoration: underline;\n text-underline-offset: 3px;\n overflow-wrap: anywhere;\n pointer-events: auto;\n}\n[data-vibe-menu] .vm-live .vm-chev {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-log-clip {\n overflow: hidden;\n}\n/* Port addition (RULINGS R1): the log clip is always rendered (RECONCILE \u00A75c),\n so the base stylesheet owns its shut and open states. The shell's per-frame\n tween (T11) writes an inline height, which overrides these during motion.\n C's VIBE_MENU_SHELL_CSS does not repeat them. */\n[data-vibe-menu] .vm-log-clip[data-open=\"false\"] {\n height: 0;\n overflow: hidden;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"] {\n height: auto;\n /* Known adjustment (plan header): room for .vm-log's own 160px cap plus its\n 8px margin-top and two hairline borders, so the clip never scrolls on top\n of the log. */\n max-height: calc(var(--size-log-max, 160px) + var(--space-8) + 2 * var(--stroke-hairline));\n overflow: auto;\n /* Smoke F15: the shell's height tween makes the clip overflow for a moment;\n .vm-log scrolls itself, so the clip never shows a bar. */\n scrollbar-width: none;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"]::-webkit-scrollbar {\n display: none;\n}\n/* The peek (owner 2026-10-16): a send opens the fold about two lines high, the\n person's own words its last visible line, before the composer has cleared.\n The triangle stays folded; the peek is an invite (a tap, a wheel or a swipe in\n it opens the full log, MomentLine). Its column is bottom-aligned so the\n overflow falls off the top, and its inner scrollers cap at the same height\n so their bottom pin shows the newest line. Never part of the open\n [data-history] flex chain below. */\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] {\n height: auto;\n max-height: var(--size-log-peek);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n cursor: pointer;\n -webkit-mask-image: linear-gradient(to bottom, transparent, var(--ink) 14px);\n mask-image: linear-gradient(to bottom, transparent, var(--ink) 14px);\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] > * {\n flex: none;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-log,\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-agent-history {\n max-height: var(--size-log-peek);\n overflow-y: hidden;\n}\n[data-vibe-menu] .vm-log-clip[data-open=\"peek\"] .vm-suggestions {\n display: none;\n}\n/* The fold over the full chat (slots.agentLog): the history caps and scrolls\n itself (AgentLogHistory's compact box), so the clip drops the flat log's cap. */\n[data-vibe-menu] .vm-log-clip[data-open=\"true\"][data-history] {\n max-height: none;\n overflow: hidden;\n}\n[data-vibe-menu] .vm-log-history {\n margin-top: var(--space-8);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n}\n/* One scroller: the tab-row card with the full chat open. The history's own\n cap (AgentLogHistory's compact box) knows nothing of what else the card\n holds, and the first build's request headline can take a third of it: the\n card then overflowed and scrolled too, the composer slid under the row, and\n the chat's end was out of reach. Here the card is a column whose fold gives\n up exactly what the card lacks, so the history scrolls and the card never\n does. Everything else in the card keeps its own height. */\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history]) {\n display: flex;\n flex-direction: column;\n}\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history])::before {\n flex: none;\n}\n[data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open=\"true\"][data-history]) .vm-card-body,\n[data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-moments:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open=\"true\"][data-history]),\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history],\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history] .vm-log-history {\n display: flex;\n flex-direction: column;\n flex: 0 1 auto;\n min-height: 0;\n}\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"][data-history] .vm-log-history > * {\n min-height: 0;\n}\n[data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open=\"true\"][data-history]) > :not(.vm-moments),\n[data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open=\"true\"][data-history]) > :not(.vm-log-clip) {\n flex-shrink: 0;\n}\n[data-vibe-menu] .vm-agent-history-tail {\n padding: var(--space-10) 4px var(--space-14) var(--space-24);\n}\n/* Suggestions at the end of the chat: wrapped inline links, not chips. */\n[data-vibe-menu] .vm-suggestions.is-inline {\n gap: var(--space-6) var(--space-14);\n margin-bottom: 0;\n}\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest {\n min-height: 0;\n padding: 0;\n border: none;\n border-radius: 0;\n background: none;\n text-decoration: underline;\n text-decoration-color: var(--suggest-border);\n text-decoration-thickness: 1px;\n text-underline-offset: 3px;\n}\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest:hover,\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-hover,\n[data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-gold {\n background: none;\n text-decoration-color: currentColor;\n}\n[data-vibe-menu] .vm-log {\n max-height: var(--size-log-max);\n overflow-y: auto;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n gap: var(--space-6);\n margin-top: var(--space-8);\n padding: var(--space-10) 4px var(--space-10) var(--space-24);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n border-bottom: var(--stroke-hairline) solid var(--line-hairline);\n font-size: 13.5px;\n line-height: 1.35;\n}\n[data-vibe-menu] .vm-log-line {\n margin: 0;\n}\n[data-vibe-menu] .vm-log-line:first-child {\n margin-top: auto;\n}\n[data-vibe-menu] .vm-log-line b {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--muted);\n margin-right: 4px;\n}\n\n/* ---------- AccessToggle: Restricted | Public and its line ---------- */\n[data-vibe-menu] .vm-access {\n display: flex;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n[data-vibe-menu] .vm-access button {\n flex: 1;\n height: var(--size-bar);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-10);\n text-align: center;\n font: 700 24px/1 var(--font-display);\n letter-spacing: -0.02em;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-access button + button {\n border-left: var(--stroke-rule) solid var(--line-card);\n}\n[data-vibe-menu] .vm-access button.is-active {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-access button:not(.is-active):hover {\n background: color-mix(in srgb, var(--accent) 20%, transparent);\n}\n/* Settings still loading (preflight ruling P14): dimmed and inert. */\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] {\n opacity: var(--opacity-row-disabled);\n}\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] button {\n cursor: default;\n}\n[data-vibe-menu] .vm-access[aria-disabled=\"true\"] button:not(.is-active):hover {\n background: transparent;\n}\n[data-vibe-menu] .vm-access-line {\n display: flex;\n align-items: center;\n gap: var(--space-10);\n min-height: var(--size-access-line);\n margin: var(--space-10) 0 var(--space-12);\n padding: var(--space-6) var(--space-6) var(--space-6) var(--space-14);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-access-line);\n background: var(--share-tint);\n font-size: 16.5px;\n line-height: 1.25;\n}\n[data-vibe-menu] .vm-access-line > span {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-access-line .vm-glyph {\n width: 16px;\n height: 16px;\n}\n[data-vibe-menu] .vm-publish {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n padding: 5px 5px 5px var(--space-10);\n border: var(--stroke-rule) solid var(--line-card);\n border-left: var(--size-band) solid var(--accent);\n border-radius: var(--radius-moment);\n}\n[data-vibe-menu] .vm-publish b {\n font: 700 11px/1 var(--font-tab);\n letter-spacing: 0.1em;\n text-transform: uppercase;\n}\n[data-vibe-menu] .vm-publish span {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n line-height: 1.25;\n color: var(--muted);\n}\n\n/* ---------- GrantControls ---------- */\n[data-vibe-menu] .vm-seg {\n display: flex;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-full);\n overflow: hidden;\n}\n[data-vibe-menu] .vm-seg button {\n flex: 1;\n height: var(--size-segment);\n text-align: center;\n font-size: 11px;\n}\n[data-vibe-menu] .vm-seg button + button {\n border-left: var(--stroke-rule) solid var(--line-card);\n}\n[data-vibe-menu] .vm-seg button.is-active {\n background: var(--accent);\n color: var(--on-accent);\n}\n[data-vibe-menu] .vm-seg.is-mini {\n margin: 0;\n border-width: var(--stroke-mini);\n}\n[data-vibe-menu] .vm-seg.is-mini button {\n flex: none;\n height: var(--size-segment-mini);\n padding: 0 var(--space-8);\n font-size: 10px;\n}\n[data-vibe-menu] .vm-seg.is-mini button + button {\n border-left-width: var(--stroke-mini);\n}\n[data-vibe-menu] .vm-grants {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-6) var(--space-12);\n}\n[data-vibe-menu] .vm-grant-ctl {\n display: flex;\n align-items: center;\n gap: 5px;\n}\n[data-vibe-menu] .vm-grant-name {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-grant-fixed {\n font: 700 10px/1 var(--font-tab);\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: var(--ink);\n}\n\n/* ---------- MemberRow ---------- */\n[data-vibe-menu] .vm-input {\n width: 100%;\n height: var(--size-input);\n margin-bottom: var(--space-14);\n padding: 0 var(--space-18);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-input);\n background: transparent;\n color: var(--ink);\n font: inherit;\n}\n[data-vibe-menu] .vm-members-head {\n margin-top: 0;\n padding: 2px 0 var(--space-8);\n}\n[data-vibe-menu] .vm-members-head + .vm-input {\n height: 40px;\n margin-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-person {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-8) var(--space-12);\n padding: var(--space-6) 0;\n}\n[data-vibe-menu] .vm-person + .vm-person {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-person .vm-label {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-request {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--space-8) var(--space-12);\n margin-bottom: 2px;\n padding: var(--space-10) var(--space-12);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-card);\n background: var(--share-tint-strong);\n}\n[data-vibe-menu] .vm-request-top {\n flex: 1 0 auto;\n}\n[data-vibe-menu] .vm-request-actions {\n display: flex;\n gap: var(--space-6);\n margin-left: auto;\n}\n[data-vibe-menu] .vm-who-block > .vm-row {\n width: calc(100% + 2 * var(--space-16));\n margin: 2px calc(-1 * var(--space-16)) 0;\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-narrow .vm-person .vm-grants,\n[data-vibe-menu] .vm-narrow .vm-request-top {\n flex-basis: 100%;\n}\n[data-vibe-menu] .vm-narrow .vm-person .vm-grants,\n[data-vibe-menu] .vm-narrow .vm-request .vm-grants {\n column-gap: var(--space-10);\n}\n/* stacking, as the prototype: card < bar < outline < glass and pill */\n[data-vibe-menu] .vm-frame .vm-card {\n z-index: 1;\n}\n[data-vibe-menu] .vm-frame .vm-strip {\n z-index: 2;\n}\n[data-vibe-menu] .vm-frame .vm-outline {\n z-index: 3;\n}\n[data-vibe-menu] .vm-frame .vm-glass {\n z-index: 4;\n}\n[data-vibe-menu] .vm-refresh {\n display: grid;\n place-items: center;\n width: var(--size-icon-circle);\n height: var(--size-icon-circle);\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: 50%;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-refresh:hover {\n background: var(--accent);\n color: var(--on-accent);\n}\n\n/* ---------- port additions: not in bundle.css ---------- */\n/* Rows and the action pill can be links (Home's rows, the credits action). */\n[data-vibe-menu] :where(a.vm-row, a.vm-ask) {\n color: inherit;\n text-decoration: none;\n}\n[data-vibe-menu] a.vm-row:hover .vm-dot:not(.vm-app) {\n background: var(--accent);\n color: var(--on-accent);\n}\n/* A member's name drills into that member (spec \u00A78). */\n[data-vibe-menu] .vm-person button.vm-label {\n text-align: left;\n}\n[data-vibe-menu] .vm-chip[aria-disabled=\"true\"],\n[data-vibe-menu] .vm-cap:disabled,\n[data-vibe-menu] .vm-composer .vm-attach:disabled {\n opacity: var(--opacity-row-disabled);\n cursor: default;\n}\n/* Staged attachments above the composer: name chips, no emoji. */\n[data-vibe-menu] .vm-attachments {\n margin-bottom: var(--space-8);\n}\n[data-vibe-menu] .vm-attachments .vm-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--space-6);\n max-width: 220px;\n}\n[data-vibe-menu] .vm-attachments .vm-chip > span:last-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-vibe-menu] .vm-attachments .vm-chip[data-status=\"error\"] {\n border-color: var(--section-account);\n}\n/* The one left-out sentence after a pick past the cap (#7622): the queue\n note's voice, tucked under the chips it talks about. */\n[data-vibe-menu] .vm-attach-note {\n margin: -2px 0 10px 4px;\n font-size: 12px;\n line-height: 1.4;\n color: var(--muted);\n}\n/* A suggestion's fast-path marks (RULINGS O4, production #2917 decorateChip).\n Siblings of .vm-suggest, since a button can't nest a button. The owner's\n toggle (FastPathToggle) is outline when not blessed, filled when blessed\n (aria-pressed); the badges are the marks every viewer sees. */\n[data-vibe-menu] .vm-suggest-item {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n max-width: 100%;\n min-width: 0;\n}\n[data-vibe-menu] .vm-suggest-item > * {\n flex: none;\n}\n[data-vibe-menu] .vm-suggest-item > .vm-suggest {\n flex: 0 1 auto;\n}\n[data-vibe-menu] .vm-suggest-shield {\n width: var(--size-chip);\n height: var(--size-chip);\n display: inline-grid;\n place-items: center;\n border-radius: var(--radius-full);\n background: none;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-suggest-shield:hover {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-shield[aria-pressed=\"true\"] {\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-shield[aria-pressed=\"true\"] .vm-glyph {\n fill: currentColor;\n}\n/* The non-interactive marks every viewer sees (production ChipShieldBadge,\n ChipJumpBadge): a filled shield (\"stays in this app\", server-authoritative)\n or an arrow (\"opens another app\"). Never both on one chip. */\n[data-vibe-menu] .vm-suggest-badge {\n width: var(--size-chip);\n height: var(--size-chip);\n display: inline-grid;\n place-items: center;\n color: var(--ink);\n}\n[data-vibe-menu] .vm-suggest-badge.is-shield .vm-glyph {\n fill: currentColor;\n}\n[data-vibe-menu] .vm-suggest-badge.is-jump {\n color: var(--muted);\n}\n\n/* ---------- phones (cards-hero.css): the menu's width, not the viewport ---------- */\n@container vibe-menu (max-width: 480px) {\n [data-vibe-menu] .vm-ask {\n font-size: 18px;\n }\n /* the field keeps 16px (iOS zooms smaller fields); attach slims instead */\n [data-vibe-menu] .vm-composer textarea {\n margin-right: var(--space-6);\n font-size: 16px;\n }\n [data-vibe-menu] .vm-composer .vm-attach {\n margin-left: 4px;\n width: 28px;\n }\n [data-vibe-menu] .vm-cap {\n padding: 0 var(--space-18) 0 var(--space-14);\n }\n [data-vibe-menu] .vm-access button {\n font-size: 21px;\n }\n /* the access line keeps its sentence to two lines beside the chip */\n [data-vibe-menu] .vm-access-line {\n padding-left: 12px;\n gap: 8px;\n font-size: 15.5px;\n }\n [data-vibe-menu] .vm-access-line .vm-chip.vm-copy {\n padding: 0 10px;\n }\n /* Data and Code drop under the handle on one line (two on the narrowest) */\n [data-vibe-menu] .vm-person .vm-grants {\n flex-basis: 100%;\n column-gap: var(--space-10);\n }\n [data-vibe-menu] .vm-request .vm-grants {\n column-gap: var(--space-10);\n }\n [data-vibe-menu] .vm-request-top {\n flex-basis: 100%;\n }\n [data-vibe-menu] .vm-input {\n font-size: 16px;\n }\n}\n@container vibe-menu (max-width: 359px) {\n [data-vibe-menu] .vm-access button {\n font-size: 19px;\n }\n /* the line drops its icon here: the enclosure already marks it */\n [data-vibe-menu] .vm-access-line > .vm-glyph {\n display: none;\n }\n [data-vibe-menu] .vm-access-line {\n margin: 8px 0 10px;\n font-size: 14.5px;\n }\n [data-vibe-menu] .vm-access-line .vm-chip.vm-copy {\n padding: 0 8px;\n }\n /* the cap and attach slim so the field keeps room (REMIX THIS stays one line) */\n [data-vibe-menu] .vm-cap {\n padding: 0 13px 0 10px;\n letter-spacing: 0.05em;\n }\n [data-vibe-menu] .vm-composer .vm-attach {\n margin-left: 3px;\n width: 24px;\n }\n /* 16px, not the prototype's 14px: no text field under 16px on phones (spec \u00A74.5) */\n [data-vibe-menu] .vm-composer textarea {\n margin: 0 4px 0 0;\n font-size: 16px;\n }\n [data-vibe-menu] .vm-chip.vm-copy {\n padding: 0 10px;\n letter-spacing: 0.06em;\n }\n}\n";
|
|
5
5
|
export declare function VibeMenuStyles(): React.ReactElement;
|
|
@@ -818,6 +818,12 @@ export const VIBE_MENU_CSS = `
|
|
|
818
818
|
line-height: 18px;
|
|
819
819
|
color: var(--muted);
|
|
820
820
|
}
|
|
821
|
+
/* A refused empty Send's idea (#7916): one idea, one row, ellipsized. */
|
|
822
|
+
[data-vibe-menu] .vm-door-line[data-refused-send-idea] {
|
|
823
|
+
white-space: nowrap;
|
|
824
|
+
overflow: hidden;
|
|
825
|
+
text-overflow: ellipsis;
|
|
826
|
+
}
|
|
821
827
|
[data-vibe-menu] .vm-door-line .vm-door {
|
|
822
828
|
all: unset;
|
|
823
829
|
cursor: pointer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA2Ff,WAAW;;;gCAGA,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;2DAUwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB
|
|
1
|
+
{"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/base",
|
|
3
|
-
"version": "14.3.
|
|
3
|
+
"version": "14.3.207",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@adviser/cement": "~0.5.34",
|
|
12
12
|
"@emotion/css": "~11.13.5",
|
|
13
|
-
"@vibes.diy/api-types": "14.3.
|
|
14
|
-
"@vibes.diy/use-vibes-types": "14.3.
|
|
15
|
-
"@vibes.diy/vibe-runtime": "14.3.
|
|
16
|
-
"@vibes.diy/vibe-types": "14.3.
|
|
13
|
+
"@vibes.diy/api-types": "14.3.207",
|
|
14
|
+
"@vibes.diy/use-vibes-types": "14.3.207",
|
|
15
|
+
"@vibes.diy/vibe-runtime": "14.3.207",
|
|
16
|
+
"@vibes.diy/vibe-types": "14.3.207",
|
|
17
17
|
"arktype": "~2.2.8",
|
|
18
18
|
"officeparser": "~8.1.1",
|
|
19
19
|
"qrcode-generator": "~2.0.4",
|