@vibes.diy/base 14.3.35 → 14.3.37

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.
@@ -16,5 +16,6 @@ export interface ImgGenProps {
16
16
  imgGen?: (prompt: string, opts?: ImgGenRequestOptions) => Promise<Result<ImgGenResult>>;
17
17
  useFireproof?: UseFireproofHook;
18
18
  confirmedMediaProbe?: ConfirmedMediaProbe | null;
19
+ imgGenPlaygroundAvailability?: (() => Promise<boolean>) | null;
19
20
  }
20
- export declare function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls, model, imgGen, useFireproof, confirmedMediaProbe, }: ImgGenProps): React.JSX.Element;
21
+ export declare function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls, model, imgGen, useFireproof, confirmedMediaProbe, imgGenPlaygroundAvailability, }: ImgGenProps): React.JSX.Element;
@@ -8,7 +8,7 @@ function promptToId(prompt) {
8
8
  }
9
9
  return `img-${(hash >>> 0).toString(36)}`;
10
10
  }
11
- export function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls = true, model, imgGen, useFireproof, confirmedMediaProbe, }) {
11
+ export function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls = true, model, imgGen, useFireproof, confirmedMediaProbe, imgGenPlaygroundAvailability, }) {
12
12
  const inputImage = images?.[0];
13
13
  const imageKey = inputImage
14
14
  ? `${inputImage.name ?? ""}-${inputImage.size ?? ""}-${inputImage.lastModified ?? ""}`
@@ -16,7 +16,9 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
16
16
  const stableId = useMemo(() => propId ?? (prompt ? promptToId(prompt + imageKey + (model ?? "")) : undefined), [propId, prompt, imageKey, model]);
17
17
  const [generationId, setGenerationId] = useState(undefined);
18
18
  const [versionIndex, setVersionIndex] = useState(null);
19
- const { loading, progress, error, document, pending } = useImgGen({
19
+ const [source, setSource] = useState(undefined);
20
+ const [playgroundSourceImage, setPlaygroundSourceImage] = useState(undefined);
21
+ const { loading, progress, error, document, pending, playgroundAvailable } = useImgGen({
20
22
  prompt,
21
23
  _id: stableId,
22
24
  database: database,
@@ -27,6 +29,9 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
27
29
  imgGen,
28
30
  useFireproof,
29
31
  confirmedMediaProbe,
32
+ source,
33
+ playgroundSourceImage,
34
+ imgGenPlaygroundAvailability,
30
35
  });
31
36
  const versions = document?.versions ?? [];
32
37
  const currentVersion = versionIndex ?? document?.currentVersion ?? 0;
@@ -36,9 +41,18 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
36
41
  const hasMultipleVersions = versions.length > 1;
37
42
  const hasExistingImage = versions.length > 0 && !!displayUrl;
38
43
  const handleRegen = useCallback(() => {
44
+ setSource(undefined);
45
+ setPlaygroundSourceImage(undefined);
39
46
  setGenerationId(crypto.randomUUID());
40
47
  setVersionIndex(null);
41
48
  }, []);
49
+ const handlePlayground = useCallback(() => {
50
+ const accessor = activeFile?.file;
51
+ setSource("playground");
52
+ setPlaygroundSourceImage(accessor === undefined ? undefined : { type: activeFile?.type, size: activeFile?.size, file: accessor });
53
+ setGenerationId(crypto.randomUUID());
54
+ setVersionIndex(null);
55
+ }, [activeFile]);
42
56
  const handlePrev = useCallback(() => {
43
57
  setVersionIndex((prev) => {
44
58
  const cur = prev ?? document?.currentVersion ?? 0;
@@ -114,6 +128,7 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
114
128
  "/",
115
129
  versions.length),
116
130
  React.createElement("button", { onClick: handleNext, disabled: currentVersion >= versions.length - 1, style: btnStyle, title: "Next version" }, "\u203A"))),
131
+ playgroundAvailable === true && (React.createElement("button", { onClick: handlePlayground, disabled: loading, style: btnStyle, title: "Image Playground" }, "\u270E Image Playground")),
117
132
  React.createElement("button", { onClick: handleRegen, disabled: loading, style: btnStyle, title: "Regenerate" }, "\u21BB")))));
118
133
  }
119
134
  const btnStyle = {
@@ -1 +1 @@
1
- {"version":3,"file":"ImgGen.js","sourceRoot":"","sources":["../../jsr/components/ImgGen.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImgGen.js","sourceRoot":"","sources":["../../jsr/components/ImgGen.tsx"],"names":[],"mappings":"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"}
@@ -75,7 +75,7 @@ export function VibeMenu(props) {
75
75
  const nav = navFor(state);
76
76
  switch (section) {
77
77
  case "home":
78
- return (React.createElement(HomeCard, { viewer: viewer, homeHref: props.homeHref, onHome: props.onHome, myVibesHref: props.myVibesHref, newAppHref: props.newAppHref, recommended: props.recommended, onMakeYourOwn: state.banner === "madeHere" ? props.onMadeHereAsk : undefined }));
78
+ return (React.createElement(HomeCard, { viewer: viewer, homeHref: props.homeHref, onHome: props.onHome, myVibesHref: props.myVibesHref, newAppHref: props.newAppHref, recommended: props.recommended, recommendedLoading: props.recommendedLoading, onMakeYourOwn: state.banner === "madeHere" ? props.onMadeHereAsk : undefined }));
79
79
  case "settings":
80
80
  return React.createElement(AccountCard, { viewer: viewer, account: account, nav: nav });
81
81
  case "vibe":
@@ -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":"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"}
@@ -29,7 +29,7 @@ export declare const ACCOUNT_COPY: Readonly<{
29
29
  notNow: "Not now";
30
30
  claimFailed: "Couldn't claim that handle. Try another.";
31
31
  }>;
32
- export declare const ACCOUNT_CARD_CSS = "\n[data-vibe-menu] .vm-hero { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; padding: 4px 0 14px; }\n[data-vibe-menu] .vm-big { font: 700 42px/0.8 var(--font-display); letter-spacing: -0.04em; white-space: nowrap; }\n[data-vibe-menu] .vm-caption { flex: 1; white-space: nowrap; font-size: 12px; line-height: 14px; color: var(--muted); }\n[data-vibe-menu] .vm-who { display: flex; align-items: center; gap: 10px; padding: 0 0 14px; }\n[data-vibe-menu] .vm-avatar { width: 28px; height: 28px; border-radius: 50%; border: var(--stroke-rule) solid var(--line); background: var(--section-account); color: var(--on-account); display: grid; place-items: center; font: 700 12px/1 var(--font-tab); }\n[data-vibe-menu] .vm-handle { font: 700 16px/1 var(--font-display); }\n[data-vibe-menu] .vm-no-handle { font: 400 16px/1 var(--font-display); color: var(--muted); }\n[data-vibe-menu] .vm-meter { height: var(--size-meter); margin-bottom: var(--space-16); border: var(--stroke-rule) solid var(--line); border-radius: var(--radius-meter); overflow: hidden; }\n[data-vibe-menu] .vm-meter span { display: block; height: 100%; background: var(--section-account); border-right: var(--stroke-rule) solid var(--line); }\n[data-vibe-menu] .vm-account .vm-group + .vm-group { margin-top: var(--space-14); }\n[data-vibe-menu] .vm-handle-line { margin: 0 0 12px; font-size: 14px; line-height: 1.35; }\n[data-vibe-menu] .vm-drill .vm-input + .vm-drill-sec { margin-top: 14px; }\n[data-vibe-menu] .vm-handle-add { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 6px; }\n[data-vibe-menu] .vm-handle-add .vm-input { flex: 1 1 180px; height: 40px; margin: 0; }\n[data-vibe-menu] .vm-acting-head { margin-top: 16px; padding-bottom: 2px; }\n[data-vibe-menu] .vm-acting-line { margin: 0 0 6px; font-size: 13px; color: var(--muted); }\n[data-vibe-menu] .vm-handle-row { display: flex; align-items: center; gap: 12px; width: 100%; height: 42px; }\n[data-vibe-menu] .vm-handle-row + .vm-handle-row { border-top: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-handle-row .vm-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; }\n[data-vibe-menu] .vm-handle-row.is-active .vm-label { font-weight: 700; }\n[data-vibe-menu] .vm-handle-row.is-active .vm-initial { background: var(--accent); color: var(--on-accent); }\n[data-vibe-menu] .vm-check { display: grid; color: var(--ink); }\n[data-vibe-menu] .vm-check .vm-glyph { width: 18px; height: 18px; stroke-width: 3; }\n[data-vibe-menu] .vm-picture { display: flex; padding: 2px 0 8px 40px; }\n[data-vibe-menu] .vm-form-note { margin: 8px 0 0; font-size: 13px; color: var(--ink); }\n[data-vibe-menu] .vm-claim { margin-top: 18px; }\n@container (max-width: 480px) {\n [data-vibe-menu] .vm-big { font-size: 36px; }\n [data-vibe-menu] .vm-handle-add .vm-input { flex-basis: 100%; }\n}\n";
32
+ export declare const ACCOUNT_CARD_CSS = "\n[data-vibe-menu] .vm-hero { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; padding: 4px 0 14px; }\n[data-vibe-menu] .vm-big { font: 700 42px/0.8 var(--font-display); letter-spacing: -0.04em; white-space: nowrap; }\n[data-vibe-menu] .vm-caption { flex: 1; white-space: nowrap; font-size: 12px; line-height: 14px; color: var(--muted); }\n[data-vibe-menu] .vm-who { display: flex; align-items: center; gap: 10px; padding: 0 0 14px; }\n[data-vibe-menu] .vm-avatar { width: 28px; height: 28px; border-radius: 50%; border: var(--stroke-rule) solid var(--line-card); background: var(--section-account); color: var(--on-account); display: grid; place-items: center; font: 700 12px/1 var(--font-tab); }\n[data-vibe-menu] .vm-handle { font: 700 16px/1 var(--font-display); }\n[data-vibe-menu] .vm-no-handle { font: 400 16px/1 var(--font-display); color: var(--muted); }\n[data-vibe-menu] .vm-meter { height: var(--size-meter); margin-bottom: var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-meter); overflow: hidden; }\n[data-vibe-menu] .vm-meter span { display: block; height: 100%; background: var(--section-account); border-right: var(--stroke-rule) solid var(--line-card); }\n[data-vibe-menu] .vm-account .vm-group + .vm-group { margin-top: var(--space-14); }\n[data-vibe-menu] .vm-handle-line { margin: 0 0 12px; font-size: 14px; line-height: 1.35; }\n[data-vibe-menu] .vm-drill .vm-input + .vm-drill-sec { margin-top: 14px; }\n[data-vibe-menu] .vm-handle-add { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 6px; }\n[data-vibe-menu] .vm-handle-add .vm-input { flex: 1 1 180px; height: 40px; margin: 0; }\n[data-vibe-menu] .vm-acting-head { margin-top: 16px; padding-bottom: 2px; }\n[data-vibe-menu] .vm-acting-line { margin: 0 0 6px; font-size: 13px; color: var(--muted); }\n[data-vibe-menu] .vm-handle-row { display: flex; align-items: center; gap: 12px; width: 100%; height: 42px; }\n[data-vibe-menu] .vm-handle-row + .vm-handle-row { border-top: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-handle-row .vm-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 400; }\n[data-vibe-menu] .vm-handle-row.is-active .vm-label { font-weight: 700; }\n[data-vibe-menu] .vm-handle-row.is-active .vm-initial { background: var(--accent); color: var(--on-accent); }\n[data-vibe-menu] .vm-check { display: grid; color: var(--ink); }\n[data-vibe-menu] .vm-check .vm-glyph { width: 18px; height: 18px; stroke-width: 3; }\n[data-vibe-menu] .vm-picture { display: flex; padding: 2px 0 8px 40px; }\n[data-vibe-menu] .vm-form-note { margin: 8px 0 0; font-size: 13px; color: var(--ink); }\n[data-vibe-menu] .vm-claim { margin-top: 18px; }\n@container (max-width: 480px) {\n [data-vibe-menu] .vm-big { font-size: 36px; }\n [data-vibe-menu] .vm-handle-add .vm-input { flex-basis: 100%; }\n}\n";
33
33
  export interface AccountCardProps {
34
34
  readonly viewer: ViewerSlice;
35
35
  readonly account: AccountSlice;
@@ -43,11 +43,11 @@ export const ACCOUNT_CARD_CSS = `
43
43
  [data-vibe-menu] .vm-big { font: 700 42px/0.8 var(--font-display); letter-spacing: -0.04em; white-space: nowrap; }
44
44
  [data-vibe-menu] .vm-caption { flex: 1; white-space: nowrap; font-size: 12px; line-height: 14px; color: var(--muted); }
45
45
  [data-vibe-menu] .vm-who { display: flex; align-items: center; gap: 10px; padding: 0 0 14px; }
46
- [data-vibe-menu] .vm-avatar { width: 28px; height: 28px; border-radius: 50%; border: var(--stroke-rule) solid var(--line); background: var(--section-account); color: var(--on-account); display: grid; place-items: center; font: 700 12px/1 var(--font-tab); }
46
+ [data-vibe-menu] .vm-avatar { width: 28px; height: 28px; border-radius: 50%; border: var(--stroke-rule) solid var(--line-card); background: var(--section-account); color: var(--on-account); display: grid; place-items: center; font: 700 12px/1 var(--font-tab); }
47
47
  [data-vibe-menu] .vm-handle { font: 700 16px/1 var(--font-display); }
48
48
  [data-vibe-menu] .vm-no-handle { font: 400 16px/1 var(--font-display); color: var(--muted); }
49
- [data-vibe-menu] .vm-meter { height: var(--size-meter); margin-bottom: var(--space-16); border: var(--stroke-rule) solid var(--line); border-radius: var(--radius-meter); overflow: hidden; }
50
- [data-vibe-menu] .vm-meter span { display: block; height: 100%; background: var(--section-account); border-right: var(--stroke-rule) solid var(--line); }
49
+ [data-vibe-menu] .vm-meter { height: var(--size-meter); margin-bottom: var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-meter); overflow: hidden; }
50
+ [data-vibe-menu] .vm-meter span { display: block; height: 100%; background: var(--section-account); border-right: var(--stroke-rule) solid var(--line-card); }
51
51
  [data-vibe-menu] .vm-account .vm-group + .vm-group { margin-top: var(--space-14); }
52
52
  [data-vibe-menu] .vm-handle-line { margin: 0 0 12px; font-size: 14px; line-height: 1.35; }
53
53
  [data-vibe-menu] .vm-drill .vm-input + .vm-drill-sec { margin-top: 14px; }
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import type { CodeTab } from "../code-tabs.js";
3
3
  import type { LogLine } from "../slices.js";
4
4
  export declare const WORKSPACE_CODE_TABS: readonly CodeTab[];
5
- export declare const CODE_MODE_CSS = "\n[data-vibe-menu] .vm-cm { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }\n[data-vibe-menu] .vm-cm-tabs { display: flex; align-items: center; gap: 4px; flex: none; margin: 12px 0; padding: 3px; border: var(--stroke-rule) solid var(--line); border-radius: var(--radius-full); background: var(--card-bg); overflow-x: auto; scrollbar-width: none; }\n[data-vibe-menu] .vm-cm-tabs::-webkit-scrollbar { display: none; }\n[data-vibe-menu] .vm-cm-tab,\n[data-vibe-menu] .vm-cm-switch { display: flex; align-items: center; gap: 6px; flex: none; height: 30px; padding: 0 12px; border: 0; border-radius: var(--radius-full); background: none; color: var(--ink); font: 700 11px/1 var(--font-tab); letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; cursor: pointer; }\n[data-vibe-menu] .vm-cm-tab.is-active { background: var(--section-code); color: var(--on-code); }\n[data-vibe-menu] .vm-cm-tab[aria-disabled=\"true\"] { opacity: 0.35; cursor: default; }\n[data-vibe-menu] .vm-cm-switch { margin-left: auto; border: var(--stroke-rule) solid var(--line); background: var(--section-code); color: var(--on-code); }\n[data-vibe-menu] .vm-cm-tab-dot { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--ink); color: var(--card-bg); flex: none; }\n[data-vibe-menu] .vm-cm-tab.is-active .vm-cm-tab-dot { background: var(--menu-ink); color: var(--section-code); }\n[data-vibe-menu] .vm-cm-tab .vm-glyph { width: 12px; height: 12px; }\n[data-vibe-menu] .vm-cm-switch .vm-glyph { width: 14px; height: 14px; }\n[data-vibe-menu] .vm-cm-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding-top: 4px; border-top: var(--stroke-rule) solid var(--line); }\n[data-vibe-menu] .vm-cm-body[data-history] { display: flex; flex-direction: column; overflow: hidden; }\n[data-vibe-menu] .vm-cm-history { flex: 1 1 0%; min-height: 0; }\n[data-vibe-menu] .vm-cm-queued { flex: none; max-height: 40%; overflow: auto; }\n[data-vibe-menu] .vm-workspace > * { flex: 1 1 auto; min-height: 0; }\n@container (max-width: 480px) {\n [data-vibe-menu] .vm-cm-tabs { justify-content: flex-start; }\n [data-vibe-menu] .vm-cm-tab-label { font-size: 10px; }\n}\n";
5
+ export declare const CODE_MODE_CSS = "\n[data-vibe-menu] .vm-cm { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }\n[data-vibe-menu] .vm-cm-tabs { display: flex; align-items: center; gap: 4px; flex: none; margin: 12px 0; padding: 3px; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--card-bg); overflow-x: auto; scrollbar-width: none; }\n[data-vibe-menu] .vm-cm-tabs::-webkit-scrollbar { display: none; }\n[data-vibe-menu] .vm-cm-tab,\n[data-vibe-menu] .vm-cm-switch { display: flex; align-items: center; gap: 6px; flex: none; height: 30px; padding: 0 12px; border: 0; border-radius: var(--radius-full); background: none; color: var(--ink); font: 700 11px/1 var(--font-tab); letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; cursor: pointer; }\n[data-vibe-menu] .vm-cm-tab.is-active { background: var(--section-code); color: var(--on-code); }\n[data-vibe-menu] .vm-cm-tab[aria-disabled=\"true\"] { opacity: 0.35; cursor: default; }\n[data-vibe-menu] .vm-cm-switch { margin-left: auto; border: var(--stroke-rule) solid var(--line-card); background: var(--section-code); color: var(--on-code); }\n[data-vibe-menu] .vm-cm-tab-dot { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--ink); color: var(--card-bg); flex: none; }\n[data-vibe-menu] .vm-cm-tab.is-active .vm-cm-tab-dot { background: var(--menu-ink); color: var(--section-code); }\n[data-vibe-menu] .vm-cm-tab .vm-glyph { width: 12px; height: 12px; }\n[data-vibe-menu] .vm-cm-switch .vm-glyph { width: 14px; height: 14px; }\n[data-vibe-menu] .vm-cm-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding-top: 4px; border-top: var(--stroke-rule) solid var(--line-card); }\n[data-vibe-menu] .vm-cm-body[data-history] { display: flex; flex-direction: column; overflow: hidden; }\n[data-vibe-menu] .vm-cm-history { flex: 1 1 0%; min-height: 0; }\n[data-vibe-menu] .vm-cm-queued { flex: none; max-height: 40%; overflow: auto; }\n[data-vibe-menu] .vm-workspace > * { flex: 1 1 auto; min-height: 0; }\n@container (max-width: 480px) {\n [data-vibe-menu] .vm-cm-tabs { justify-content: flex-start; }\n [data-vibe-menu] .vm-cm-tab-label { font-size: 10px; }\n}\n";
6
6
  export declare function resolveActiveCodeTab(input: {
7
7
  readonly tab: CodeTab;
8
8
  readonly disabled: readonly CodeTab[];
@@ -16,18 +16,18 @@ const TAB_GLYPHS = {
16
16
  };
17
17
  export const CODE_MODE_CSS = `
18
18
  [data-vibe-menu] .vm-cm { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
19
- [data-vibe-menu] .vm-cm-tabs { display: flex; align-items: center; gap: 4px; flex: none; margin: 12px 0; padding: 3px; border: var(--stroke-rule) solid var(--line); border-radius: var(--radius-full); background: var(--card-bg); overflow-x: auto; scrollbar-width: none; }
19
+ [data-vibe-menu] .vm-cm-tabs { display: flex; align-items: center; gap: 4px; flex: none; margin: 12px 0; padding: 3px; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--card-bg); overflow-x: auto; scrollbar-width: none; }
20
20
  [data-vibe-menu] .vm-cm-tabs::-webkit-scrollbar { display: none; }
21
21
  [data-vibe-menu] .vm-cm-tab,
22
22
  [data-vibe-menu] .vm-cm-switch { display: flex; align-items: center; gap: 6px; flex: none; height: 30px; padding: 0 12px; border: 0; border-radius: var(--radius-full); background: none; color: var(--ink); font: 700 11px/1 var(--font-tab); letter-spacing: 0.08em; text-transform: uppercase; white-space: nowrap; cursor: pointer; }
23
23
  [data-vibe-menu] .vm-cm-tab.is-active { background: var(--section-code); color: var(--on-code); }
24
24
  [data-vibe-menu] .vm-cm-tab[aria-disabled="true"] { opacity: 0.35; cursor: default; }
25
- [data-vibe-menu] .vm-cm-switch { margin-left: auto; border: var(--stroke-rule) solid var(--line); background: var(--section-code); color: var(--on-code); }
25
+ [data-vibe-menu] .vm-cm-switch { margin-left: auto; border: var(--stroke-rule) solid var(--line-card); background: var(--section-code); color: var(--on-code); }
26
26
  [data-vibe-menu] .vm-cm-tab-dot { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--ink); color: var(--card-bg); flex: none; }
27
27
  [data-vibe-menu] .vm-cm-tab.is-active .vm-cm-tab-dot { background: var(--menu-ink); color: var(--section-code); }
28
28
  [data-vibe-menu] .vm-cm-tab .vm-glyph { width: 12px; height: 12px; }
29
29
  [data-vibe-menu] .vm-cm-switch .vm-glyph { width: 14px; height: 14px; }
30
- [data-vibe-menu] .vm-cm-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding-top: 4px; border-top: var(--stroke-rule) solid var(--line); }
30
+ [data-vibe-menu] .vm-cm-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding-top: 4px; border-top: var(--stroke-rule) solid var(--line-card); }
31
31
  [data-vibe-menu] .vm-cm-body[data-history] { display: flex; flex-direction: column; overflow: hidden; }
32
32
  [data-vibe-menu] .vm-cm-history { flex: 1 1 0%; min-height: 0; }
33
33
  [data-vibe-menu] .vm-cm-queued { flex: none; max-height: 40%; overflow: auto; }
@@ -9,7 +9,7 @@ export declare const HOME_COPY: Readonly<{
9
9
  myVibes: "My Vibes";
10
10
  recommended: "Recommended";
11
11
  }>;
12
- export declare const HOME_CARD_CSS = "\n[data-vibe-menu] .vm-app-name { white-space: nowrap; }\n";
12
+ export declare const HOME_CARD_CSS = "\n[data-vibe-menu] .vm-app-name { white-space: nowrap; }\n[data-vibe-menu] .vm-row.is-placeholder .vm-dot,\n[data-vibe-menu] .vm-row.is-placeholder .vm-bar {\n background: var(--line-hairline);\n animation: vm-placeholder-pulse 1.2s ease-in-out infinite;\n}\n[data-vibe-menu] .vm-row.is-placeholder .vm-bar {\n height: 16px;\n width: 55%;\n border-radius: var(--radius-full);\n}\n[data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder .vm-dot,\n[data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder .vm-bar { animation-delay: 0.15s; }\n[data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder + .vm-row.is-placeholder .vm-dot,\n[data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder + .vm-row.is-placeholder .vm-bar { animation-delay: 0.3s; }\n@keyframes vm-placeholder-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.4; }\n}\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-row.is-placeholder .vm-dot,\n [data-vibe-menu] .vm-row.is-placeholder .vm-bar { animation: none; }\n}\n";
13
13
  export interface HomeCardProps {
14
14
  readonly viewer: ViewerSlice;
15
15
  readonly homeHref: string;
@@ -17,6 +17,7 @@ export interface HomeCardProps {
17
17
  readonly myVibesHref: string;
18
18
  readonly newAppHref: string;
19
19
  readonly recommended: VibeMenuProps["recommended"];
20
+ readonly recommendedLoading?: boolean;
20
21
  readonly onMakeYourOwn?: () => void;
21
22
  }
22
23
  export declare function HomeCard(props: HomeCardProps): React.ReactElement;
@@ -13,6 +13,28 @@ export const HOME_COPY = Object.freeze({
13
13
  });
14
14
  export const HOME_CARD_CSS = `
15
15
  [data-vibe-menu] .vm-app-name { white-space: nowrap; }
16
+ [data-vibe-menu] .vm-row.is-placeholder .vm-dot,
17
+ [data-vibe-menu] .vm-row.is-placeholder .vm-bar {
18
+ background: var(--line-hairline);
19
+ animation: vm-placeholder-pulse 1.2s ease-in-out infinite;
20
+ }
21
+ [data-vibe-menu] .vm-row.is-placeholder .vm-bar {
22
+ height: 16px;
23
+ width: 55%;
24
+ border-radius: var(--radius-full);
25
+ }
26
+ [data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder .vm-dot,
27
+ [data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder .vm-bar { animation-delay: 0.15s; }
28
+ [data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder + .vm-row.is-placeholder .vm-dot,
29
+ [data-vibe-menu] .vm-row.is-placeholder + .vm-row.is-placeholder + .vm-row.is-placeholder .vm-bar { animation-delay: 0.3s; }
30
+ @keyframes vm-placeholder-pulse {
31
+ 0%, 100% { opacity: 1; }
32
+ 50% { opacity: 0.4; }
33
+ }
34
+ @media (prefers-reduced-motion: reduce) {
35
+ [data-vibe-menu] .vm-row.is-placeholder .vm-dot,
36
+ [data-vibe-menu] .vm-row.is-placeholder .vm-bar { animation: none; }
37
+ }
16
38
  `;
17
39
  const APP_COLORS = [
18
40
  "var(--section-home)",
@@ -45,6 +67,7 @@ export function HomeCard(props) {
45
67
  const owner = props.viewer.role === "owner" && pending === false;
46
68
  const signedIn = props.viewer.role !== "signedOut" && pending === false;
47
69
  const recs = props.recommended.slice(0, 3);
70
+ const recsPending = recs.length === 0 && props.recommendedLoading === true;
48
71
  const makeYourOwnHref = props.onMakeYourOwn === undefined ? props.newAppHref : undefined;
49
72
  return (React.createElement("div", { className: "vm-home", "data-card": "home" },
50
73
  React.createElement("style", null, HOME_CARD_CSS),
@@ -59,6 +82,10 @@ export function HomeCard(props) {
59
82
  signedIn ? React.createElement(Row, { lead: "layout-grid", label: HOME_COPY.myVibes, href: props.myVibesHref }) : null),
60
83
  recs.length > 0 ? (React.createElement(React.Fragment, null,
61
84
  React.createElement("h3", { className: "vm-subhead" }, HOME_COPY.recommended),
62
- React.createElement("div", { className: "vm-group is-flush" }, recs.map((rec, i) => (React.createElement(Row, { key: rec.href, lead: { letter: initialOf(rec.title), kind: "app", color: APP_COLORS[i % APP_COLORS.length] }, label: rec.title, plain: true, href: rec.href })))))) : null));
85
+ React.createElement("div", { className: "vm-group is-flush" }, recs.map((rec, i) => (React.createElement(Row, { key: rec.href, lead: { letter: initialOf(rec.title), kind: "app", color: APP_COLORS[i % APP_COLORS.length] }, label: rec.title, plain: true, href: rec.href })))))) : recsPending ? (React.createElement(React.Fragment, null,
86
+ React.createElement("h3", { className: "vm-subhead" }, HOME_COPY.recommended),
87
+ React.createElement("div", { className: "vm-group is-flush", "aria-busy": "true", "data-testid": "recommended-loading" }, [0, 1, 2].map((i) => (React.createElement("div", { key: i, className: "vm-row is-placeholder", "aria-hidden": "true" },
88
+ React.createElement("span", { className: "vm-dot" }),
89
+ React.createElement("span", { className: "vm-bar" }))))))) : null));
63
90
  }
64
91
  //# sourceMappingURL=HomeCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomeCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/HomeCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HomeCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/HomeCard.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const SHARE_CARD_CSS = "\n[data-vibe-menu] .vm-sr {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n[data-vibe-menu] .vm-access-note {\n margin: calc(-1 * var(--space-4)) 0 var(--space-12);\n font-size: 13px;\n line-height: 1.3;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-who-block > .vm-textbtn {\n margin: calc(-1 * var(--space-6)) 0 var(--space-8);\n height: 32px;\n text-align: left;\n}\n[data-vibe-menu] .vm-publish {\n margin-bottom: var(--space-12);\n}\n[data-vibe-menu] .vm-fail {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n margin: var(--space-6) 0;\n font-size: 13px;\n line-height: 1.3;\n}\n[data-vibe-menu] .vm-fail > span {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-share-empty {\n margin: 0;\n padding: var(--space-8) 0 var(--space-14);\n font: 400 16px/1.3 var(--font-display);\n}\n[data-vibe-menu] .vm-reveal {\n padding: var(--space-12) var(--space-16) var(--space-14);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-reveal + .vm-row,\n[data-vibe-menu] .vm-reveal + a.vm-row {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] a.vm-row {\n color: var(--ink);\n text-decoration: none;\n}\n[data-vibe-menu] .vm-qr {\n display: inline-block;\n padding: var(--space-8);\n background: #ffffff;\n border: var(--stroke-rule) solid var(--line);\n border-radius: var(--radius-input);\n line-height: 0;\n}\n[data-vibe-menu] .vm-embed {\n display: block;\n width: 100%;\n height: calc(4.5em + 10px);\n margin-bottom: var(--space-8);\n padding: 8px 10px 0;\n resize: none;\n border: var(--stroke-rule) solid var(--line);\n border-radius: var(--radius-input);\n background: transparent;\n color: var(--ink);\n font: 400 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n/* Phone sizing is the named container query (T5 note 5). The @media arm keeps\n the iOS no-zoom-on-focus guarantee keyed on the device as well. */\n@container vibe-menu (max-width: 480px) {\n [data-vibe-menu] .vm-embed {\n font-size: 16px;\n }\n}\n@media (max-width: 480px) {\n [data-vibe-menu] .vm-embed {\n font-size: 16px;\n }\n}\n";
1
+ export declare const SHARE_CARD_CSS = "\n[data-vibe-menu] .vm-sr {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n[data-vibe-menu] .vm-access-note {\n margin: calc(-1 * var(--space-4)) 0 var(--space-12);\n font-size: 13px;\n line-height: 1.3;\n color: var(--muted);\n}\n[data-vibe-menu] .vm-who-block > .vm-textbtn {\n margin: calc(-1 * var(--space-6)) 0 var(--space-8);\n height: 32px;\n text-align: left;\n}\n[data-vibe-menu] .vm-publish {\n margin-bottom: var(--space-12);\n}\n[data-vibe-menu] .vm-fail {\n display: flex;\n align-items: center;\n gap: var(--space-8);\n margin: var(--space-6) 0;\n font-size: 13px;\n line-height: 1.3;\n}\n[data-vibe-menu] .vm-fail > span {\n flex: 1;\n min-width: 0;\n}\n[data-vibe-menu] .vm-share-empty {\n margin: 0;\n padding: var(--space-8) 0 var(--space-14);\n font: 400 16px/1.3 var(--font-display);\n}\n[data-vibe-menu] .vm-reveal {\n padding: var(--space-12) var(--space-16) var(--space-14);\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-reveal + .vm-row,\n[data-vibe-menu] .vm-reveal + a.vm-row {\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] a.vm-row {\n color: var(--ink);\n text-decoration: none;\n}\n[data-vibe-menu] .vm-qr {\n display: inline-block;\n padding: var(--space-8);\n background: #ffffff;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-input);\n line-height: 0;\n}\n[data-vibe-menu] .vm-embed {\n display: block;\n width: 100%;\n height: calc(4.5em + 10px);\n margin-bottom: var(--space-8);\n padding: 8px 10px 0;\n resize: none;\n border: var(--stroke-rule) solid var(--line-card);\n border-radius: var(--radius-input);\n background: transparent;\n color: var(--ink);\n font: 400 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n/* Phone sizing is the named container query (T5 note 5). The @media arm keeps\n the iOS no-zoom-on-focus guarantee keyed on the device as well. */\n@container vibe-menu (max-width: 480px) {\n [data-vibe-menu] .vm-embed {\n font-size: 16px;\n }\n}\n@media (max-width: 480px) {\n [data-vibe-menu] .vm-embed {\n font-size: 16px;\n }\n}\n";
@@ -57,7 +57,7 @@ export const SHARE_CARD_CSS = `
57
57
  display: inline-block;
58
58
  padding: var(--space-8);
59
59
  background: #ffffff;
60
- border: var(--stroke-rule) solid var(--line);
60
+ border: var(--stroke-rule) solid var(--line-card);
61
61
  border-radius: var(--radius-input);
62
62
  line-height: 0;
63
63
  }
@@ -68,7 +68,7 @@ export const SHARE_CARD_CSS = `
68
68
  margin-bottom: var(--space-8);
69
69
  padding: 8px 10px 0;
70
70
  resize: none;
71
- border: var(--stroke-rule) solid var(--line);
71
+ border: var(--stroke-rule) solid var(--line-card);
72
72
  border-radius: var(--radius-input);
73
73
  background: transparent;
74
74
  color: var(--ink);
@@ -161,6 +161,7 @@ export interface VibeMenuProps {
161
161
  href: string;
162
162
  iconUrl?: string;
163
163
  }[];
164
+ recommendedLoading?: boolean;
164
165
  switchActivity: {
165
166
  twinkling: boolean;
166
167
  };
@@ -1 +1 @@
1
- {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AA8KA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}
1
+ {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AAgLA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
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-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 --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: 58px;\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-code-mode-max-w: 1200px;\n --opacity-tab-inactive: 0.73;\n --opacity-row-disabled: 0.35;";
3
- export declare const VIBE_MENU_DARK_VARS = "\n color-scheme: dark;\n --card-bg: #1a1a1a;\n --ink: #e0e0e0;\n --muted: #a3a3a3;\n --line: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\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-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 --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: 58px;\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-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: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\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: #e0e0e0;\n --line-hairline: #e0e0e02e;\n --suggest-border: #e0e0e073;\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[data-vibe-menu] .vm-busy {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n border: var(--stroke-rule) solid var(--line);\n border-top-color: transparent;\n flex: none;\n animation: vm-spin 0.9s linear infinite;\n}\n@keyframes vm-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-busy {\n animation: none;\n border-top-color: var(--line);\n }\n}\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}\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[data-vibe-menu] .vm-tab[data-section=\"share\"] {\n width: calc(var(--size-tab) + var(--size-bar-end));\n}\n[data-vibe-menu] .vm-tab[data-section=\"share\"] .vm-tab-label {\n right: var(--size-bar-end);\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 padding-right: var(--size-bar-end);\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[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[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\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);\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);\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 border-color: var(--line);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\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 ---------- */\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);\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 18px/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);\n background: var(--section-code);\n color: var(--on-code);\n font: 700 14px/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[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[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);\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);\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);\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);\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);\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);\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);\n border-left: var(--size-band) solid var(--accent);\n border-radius: var(--radius-moment);\n}\n[data-vibe-menu] .vm-moment-text {\n margin: 0 0 var(--space-10);\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[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);\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);\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 button .vm-busy {\n width: 16px;\n height: 16px;\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);\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);\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);\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);\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);\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);\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);\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/* 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";
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 --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: 58px;\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-code-mode-max-w: 1200px;\n --opacity-tab-inactive: 0.73;\n --opacity-row-disabled: 0.35;";
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 --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 --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: 58px;\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-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 --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 --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[data-vibe-menu] .vm-busy {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n border: var(--stroke-rule) solid var(--line-card);\n border-top-color: transparent;\n flex: none;\n animation: vm-spin 0.9s linear infinite;\n}\n@keyframes vm-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n [data-vibe-menu] .vm-busy {\n animation: none;\n border-top-color: var(--line-card);\n }\n}\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}\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[data-vibe-menu] .vm-tab[data-section=\"share\"] {\n width: calc(var(--size-tab) + var(--size-bar-end));\n}\n[data-vibe-menu] .vm-tab[data-section=\"share\"] .vm-tab-label {\n right: var(--size-bar-end);\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 padding-right: var(--size-bar-end);\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[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[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\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 border-color: var(--line-card);\n background: color-mix(in srgb, var(--accent) 35%, transparent);\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 ---------- */\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 18px/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 14px/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[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[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[data-vibe-menu] .vm-moment-text {\n margin: 0 0 var(--space-10);\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[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 button .vm-busy {\n width: 16px;\n height: 16px;\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/* 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;
@@ -12,6 +12,7 @@ export const VIBE_MENU_LIGHT_VARS = `
12
12
  --ink: #111111;
13
13
  --muted: #555555;
14
14
  --line: #111111;
15
+ --line-card: #111111;
15
16
  --line-hairline: #1111112e;
16
17
  --placeholder: var(--muted);
17
18
  --suggest-border: #11111173;
@@ -95,7 +96,7 @@ export const VIBE_MENU_DARK_VARS = `
95
96
  --card-bg: #1a1a1a;
96
97
  --ink: #e0e0e0;
97
98
  --muted: #a3a3a3;
98
- --line: #e0e0e0;
99
+ --line-card: #e0e0e0;
99
100
  --line-hairline: #e0e0e02e;
100
101
  --suggest-border: #e0e0e073;
101
102
  --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;`;
@@ -252,7 +253,7 @@ export const VIBE_MENU_CSS = `
252
253
  width: 12px;
253
254
  height: 12px;
254
255
  border-radius: 50%;
255
- border: var(--stroke-rule) solid var(--line);
256
+ border: var(--stroke-rule) solid var(--line-card);
256
257
  border-top-color: transparent;
257
258
  flex: none;
258
259
  animation: vm-spin 0.9s linear infinite;
@@ -265,7 +266,7 @@ export const VIBE_MENU_CSS = `
265
266
  @media (prefers-reduced-motion: reduce) {
266
267
  [data-vibe-menu] .vm-busy {
267
268
  animation: none;
268
- border-top-color: var(--line);
269
+ border-top-color: var(--line-card);
269
270
  }
270
271
  }
271
272
 
@@ -518,7 +519,7 @@ export const VIBE_MENU_CSS = `
518
519
  gap: var(--space-12);
519
520
  width: 100%;
520
521
  padding: var(--space-14) var(--space-18);
521
- border: var(--stroke-rule) solid var(--line);
522
+ border: var(--stroke-rule) solid var(--line-card);
522
523
  border-radius: var(--radius-full);
523
524
  background: var(--accent);
524
525
  color: var(--on-accent);
@@ -553,7 +554,7 @@ export const VIBE_MENU_CSS = `
553
554
  [data-vibe-menu] .vm-chip {
554
555
  height: var(--size-chip);
555
556
  padding: 0 var(--space-12);
556
- border: var(--stroke-rule) solid var(--line);
557
+ border: var(--stroke-rule) solid var(--line-card);
557
558
  border-radius: var(--radius-chip);
558
559
  background: var(--accent);
559
560
  color: var(--on-accent);
@@ -602,7 +603,7 @@ export const VIBE_MENU_CSS = `
602
603
  }
603
604
  [data-vibe-menu] .vm-suggest:hover,
604
605
  [data-vibe-menu] .vm-suggest.is-hover {
605
- border-color: var(--line);
606
+ border-color: var(--line-card);
606
607
  background: color-mix(in srgb, var(--accent) 35%, transparent);
607
608
  }
608
609
  [data-vibe-menu] .vm-picks {
@@ -618,7 +619,7 @@ export const VIBE_MENU_CSS = `
618
619
  align-items: stretch;
619
620
  min-height: var(--size-composer);
620
621
  margin-bottom: var(--space-16);
621
- border: var(--stroke-rule) solid var(--line);
622
+ border: var(--stroke-rule) solid var(--line-card);
622
623
  border-radius: var(--radius-full);
623
624
  overflow: hidden;
624
625
  background: var(--card-bg);
@@ -671,7 +672,7 @@ export const VIBE_MENU_CSS = `
671
672
  align-items: center;
672
673
  justify-content: center;
673
674
  padding: 0 var(--space-24) 0 20px;
674
- border-left: var(--stroke-rule) solid var(--line);
675
+ border-left: var(--stroke-rule) solid var(--line-card);
675
676
  background: var(--section-code);
676
677
  color: var(--on-code);
677
678
  font: 700 14px/1 var(--font-tab);
@@ -713,7 +714,7 @@ export const VIBE_MENU_CSS = `
713
714
 
714
715
  /* ---------- Row: the bar's tab grammar inside the card ---------- */
715
716
  [data-vibe-menu] .vm-group {
716
- border-top: var(--stroke-rule) solid var(--line);
717
+ border-top: var(--stroke-rule) solid var(--line-card);
717
718
  margin: 0 calc(-1 * var(--space-16));
718
719
  }
719
720
  [data-vibe-menu] .vm-group.is-flush {
@@ -754,7 +755,7 @@ export const VIBE_MENU_CSS = `
754
755
  [data-vibe-menu] .vm-row.is-quiet .vm-dot {
755
756
  background: transparent;
756
757
  color: var(--ink);
757
- box-shadow: inset 0 0 0 2px var(--line);
758
+ box-shadow: inset 0 0 0 2px var(--line-card);
758
759
  }
759
760
  [data-vibe-menu] .vm-row[aria-disabled="true"] {
760
761
  opacity: 0.35;
@@ -767,7 +768,7 @@ export const VIBE_MENU_CSS = `
767
768
  [data-vibe-menu] .vm-app,
768
769
  [data-vibe-menu] .vm-initial {
769
770
  font: 700 12px/1 var(--font-tab);
770
- box-shadow: inset 0 0 0 2px var(--line);
771
+ box-shadow: inset 0 0 0 2px var(--line-card);
771
772
  }
772
773
  [data-vibe-menu] .vm-app {
773
774
  background: var(--app);
@@ -801,7 +802,7 @@ export const VIBE_MENU_CSS = `
801
802
  position: relative;
802
803
  width: var(--size-switch-w);
803
804
  height: 20px;
804
- border: var(--stroke-rule) solid var(--line);
805
+ border: var(--stroke-rule) solid var(--line-card);
805
806
  border-radius: var(--radius-switch);
806
807
  flex: none;
807
808
  }
@@ -831,7 +832,7 @@ export const VIBE_MENU_CSS = `
831
832
  height: var(--size-row-compact);
832
833
  margin: 0 calc(-1 * var(--space-16));
833
834
  padding: 0 var(--space-16);
834
- border-top: var(--stroke-rule) solid var(--line);
835
+ border-top: var(--stroke-rule) solid var(--line-card);
835
836
  border-bottom: var(--stroke-hairline) solid var(--line-hairline);
836
837
  }
837
838
  /* A drill that replaces the whole card body (Share, Account) sits on the card's
@@ -873,7 +874,7 @@ export const VIBE_MENU_CSS = `
873
874
  width: 100%;
874
875
  height: var(--size-row-compact);
875
876
  margin-top: var(--space-16);
876
- border: var(--stroke-rule) solid var(--line);
877
+ border: var(--stroke-rule) solid var(--line-card);
877
878
  border-radius: var(--radius-done);
878
879
  background: var(--accent);
879
880
  color: var(--on-accent);
@@ -923,7 +924,7 @@ export const VIBE_MENU_CSS = `
923
924
  }
924
925
  [data-vibe-menu] .vm-moment.is-pinned {
925
926
  padding: var(--space-10) var(--space-12) var(--space-12) var(--space-14);
926
- border: var(--stroke-rule) solid var(--line);
927
+ border: var(--stroke-rule) solid var(--line-card);
927
928
  border-left: var(--size-band) solid var(--accent);
928
929
  border-radius: var(--radius-moment);
929
930
  }
@@ -1028,7 +1029,7 @@ export const VIBE_MENU_CSS = `
1028
1029
  /* ---------- AccessToggle: Restricted | Public and its line ---------- */
1029
1030
  [data-vibe-menu] .vm-access {
1030
1031
  display: flex;
1031
- border: var(--stroke-rule) solid var(--line);
1032
+ border: var(--stroke-rule) solid var(--line-card);
1032
1033
  border-radius: var(--radius-full);
1033
1034
  overflow: hidden;
1034
1035
  }
@@ -1045,7 +1046,7 @@ export const VIBE_MENU_CSS = `
1045
1046
  color: var(--ink);
1046
1047
  }
1047
1048
  [data-vibe-menu] .vm-access button + button {
1048
- border-left: var(--stroke-rule) solid var(--line);
1049
+ border-left: var(--stroke-rule) solid var(--line-card);
1049
1050
  }
1050
1051
  [data-vibe-menu] .vm-access button.is-active {
1051
1052
  background: var(--accent);
@@ -1075,7 +1076,7 @@ export const VIBE_MENU_CSS = `
1075
1076
  min-height: var(--size-access-line);
1076
1077
  margin: var(--space-10) 0 var(--space-12);
1077
1078
  padding: var(--space-6) var(--space-6) var(--space-6) var(--space-14);
1078
- border: var(--stroke-rule) solid var(--line);
1079
+ border: var(--stroke-rule) solid var(--line-card);
1079
1080
  border-radius: var(--radius-access-line);
1080
1081
  background: var(--share-tint);
1081
1082
  font-size: 16.5px;
@@ -1094,7 +1095,7 @@ export const VIBE_MENU_CSS = `
1094
1095
  align-items: center;
1095
1096
  gap: var(--space-8);
1096
1097
  padding: 5px 5px 5px var(--space-10);
1097
- border: var(--stroke-rule) solid var(--line);
1098
+ border: var(--stroke-rule) solid var(--line-card);
1098
1099
  border-left: var(--size-band) solid var(--accent);
1099
1100
  border-radius: var(--radius-moment);
1100
1101
  }
@@ -1114,7 +1115,7 @@ export const VIBE_MENU_CSS = `
1114
1115
  /* ---------- GrantControls ---------- */
1115
1116
  [data-vibe-menu] .vm-seg {
1116
1117
  display: flex;
1117
- border: var(--stroke-rule) solid var(--line);
1118
+ border: var(--stroke-rule) solid var(--line-card);
1118
1119
  border-radius: var(--radius-full);
1119
1120
  overflow: hidden;
1120
1121
  }
@@ -1125,7 +1126,7 @@ export const VIBE_MENU_CSS = `
1125
1126
  font-size: 11px;
1126
1127
  }
1127
1128
  [data-vibe-menu] .vm-seg button + button {
1128
- border-left: var(--stroke-rule) solid var(--line);
1129
+ border-left: var(--stroke-rule) solid var(--line-card);
1129
1130
  }
1130
1131
  [data-vibe-menu] .vm-seg button.is-active {
1131
1132
  background: var(--accent);
@@ -1174,7 +1175,7 @@ export const VIBE_MENU_CSS = `
1174
1175
  height: var(--size-input);
1175
1176
  margin-bottom: var(--space-14);
1176
1177
  padding: 0 var(--space-18);
1177
- border: var(--stroke-rule) solid var(--line);
1178
+ border: var(--stroke-rule) solid var(--line-card);
1178
1179
  border-radius: var(--radius-input);
1179
1180
  background: transparent;
1180
1181
  color: var(--ink);
@@ -1209,7 +1210,7 @@ export const VIBE_MENU_CSS = `
1209
1210
  gap: var(--space-8) var(--space-12);
1210
1211
  margin-bottom: 2px;
1211
1212
  padding: var(--space-10) var(--space-12);
1212
- border: var(--stroke-rule) solid var(--line);
1213
+ border: var(--stroke-rule) solid var(--line-card);
1213
1214
  border-radius: var(--radius-card);
1214
1215
  background: var(--share-tint-strong);
1215
1216
  }
@@ -1252,7 +1253,7 @@ export const VIBE_MENU_CSS = `
1252
1253
  place-items: center;
1253
1254
  width: var(--size-icon-circle);
1254
1255
  height: var(--size-icon-circle);
1255
- border: var(--stroke-rule) solid var(--line);
1256
+ border: var(--stroke-rule) solid var(--line-card);
1256
1257
  border-radius: 50%;
1257
1258
  color: var(--ink);
1258
1259
  }
@@ -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;AA8B/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA0FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;2DAQwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqyCrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
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;AAiC/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;2DAQwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqyCrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
@@ -10,6 +10,7 @@ interface InjectedDeps {
10
10
  confirmedMediaProbe?: ConfirmedMediaProbe | null;
11
11
  useFireproof?: UseFireproofHook;
12
12
  useVibeContext?: UseVibeContextHook;
13
+ imgGenPlaygroundAvailability?: (() => Promise<boolean>) | null;
13
14
  }
14
15
  export declare function useImgGen(opts: Partial<UseImgGenOptions> & InjectedDeps): UseImgGenResult;
15
16
  export {};
@@ -1,6 +1,6 @@
1
1
  import { useState, useEffect, useRef } from "react";
2
- import { useFireproof, imgGen as defaultImgGen, confirmedMediaProbe as defaultConfirmedMediaProbe, useVibeContext, getRegisteredVibeApi, vibe, decorateFiles, IMG_GEN_SOURCE_UNUSABLE, } from "@vibes.diy/vibe-runtime";
3
- import { buildMediaPointerDoc, buildMediaVersionDoc, mediaDbName, mediaPointerDocId, mediaVersionDocId, } from "@vibes.diy/vibe-types";
2
+ import { useFireproof, imgGen as defaultImgGen, confirmedMediaProbe as defaultConfirmedMediaProbe, imgGenPlaygroundAvailability as defaultImgGenPlaygroundAvailability, useVibeContext, getRegisteredVibeApi, vibe, decorateFiles, IMG_GEN_SOURCE_UNUSABLE, } from "@vibes.diy/vibe-runtime";
3
+ import { IMG_GEN_CANCELLED, buildMediaPointerDoc, buildMediaVersionDoc, mediaDbName, mediaPointerDocId, mediaVersionDocId, } from "@vibes.diy/vibe-types";
4
4
  import { exception2Result, Result } from "@adviser/cement";
5
5
  const PROMPT_KEY = "p1";
6
6
  function isValidVersionDoc(d) {
@@ -105,7 +105,7 @@ async function probeWithDeadline(probe, hostDbName, hostDocId) {
105
105
  return res;
106
106
  }
107
107
  export function useImgGen(opts) {
108
- const { prompt, _id, database = "ImgGen", skip = false, generationId, inputImage, model, imgGen = defaultImgGen, temporaryDraft = getRegisteredVibeApi()?.temporaryData === true, confirmedMediaProbe = defaultConfirmedMediaProbe, useFireproof: useFireproofImpl = useFireproof, useVibeContext: useVibeContextImpl = useVibeContext, } = opts;
108
+ const { prompt, _id, database = "ImgGen", skip = false, generationId, inputImage, model, imgGen = defaultImgGen, temporaryDraft = getRegisteredVibeApi()?.temporaryData === true, confirmedMediaProbe = defaultConfirmedMediaProbe, useFireproof: useFireproofImpl = useFireproof, useVibeContext: useVibeContextImpl = useVibeContext, source, playgroundSourceImage, imgGenPlaygroundAvailability = defaultImgGenPlaygroundAvailability, } = opts;
109
109
  const [loading, setLoading] = useState(false);
110
110
  const [progress, setProgress] = useState(0);
111
111
  const [error, setError] = useState(null);
@@ -125,6 +125,23 @@ export function useImgGen(opts) {
125
125
  const readPending = () => (mediaStale.getFromCache?.() ?? mediaFromCache) === true || (hostStale.getFromCache?.() ?? hostFromCache) === true;
126
126
  const { mountParams } = useVibeContextImpl();
127
127
  const myHandle = mountParams.viewerEnv?.viewer?.userHandle ?? (temporaryDraft ? "draft" : undefined);
128
+ const playgroundEligible = myHandle !== undefined && temporaryDraft === false && typeof imgGenPlaygroundAvailability === "function";
129
+ const [playgroundAnswer, setPlaygroundAnswer] = useState(false);
130
+ useEffect(() => {
131
+ if (playgroundEligible === false || typeof imgGenPlaygroundAvailability !== "function")
132
+ return;
133
+ let current = true;
134
+ void exception2Result(() => imgGenPlaygroundAvailability()).then((r) => {
135
+ if (current)
136
+ setPlaygroundAnswer(r.isOk() && r.Ok() === true);
137
+ });
138
+ return () => {
139
+ current = false;
140
+ };
141
+ }, [playgroundEligible, imgGenPlaygroundAvailability]);
142
+ const playgroundAvailable = playgroundEligible && playgroundAnswer;
143
+ const playgroundRunRef = useRef(undefined);
144
+ const playgroundSpentKeyRef = useRef(undefined);
128
145
  const currentGenRef = useRef(null);
129
146
  const probeInFlightRef = useRef(null);
130
147
  const commitProbeInFlightRef = useRef(null);
@@ -180,6 +197,10 @@ export function useImgGen(opts) {
180
197
  if (rMediaDocs.isErr()) {
181
198
  setError(rMediaDocs.Err());
182
199
  currentGenRef.current = null;
200
+ if (source === "playground" && generationId !== undefined && playgroundRunRef.current !== generationId) {
201
+ playgroundRunRef.current = generationId;
202
+ playgroundSpentKeyRef.current = genKey;
203
+ }
183
204
  return;
184
205
  }
185
206
  await decide(rMediaDocs.Ok(), rLegacy.isOk() ? rLegacy.Ok() : null, false);
@@ -289,6 +310,11 @@ export function useImgGen(opts) {
289
310
  setError(new Error("imgGen not available — vibe-runtime not initialized"));
290
311
  return;
291
312
  }
313
+ if (playgroundSpentKeyRef.current === genKey) {
314
+ if (existingDoc)
315
+ setDocument(existingDoc);
316
+ return;
317
+ }
292
318
  setLoading(true);
293
319
  setProgress(10);
294
320
  setError(null);
@@ -298,14 +324,30 @@ export function useImgGen(opts) {
298
324
  regen: isRegen,
299
325
  ...(incomingSourceKey !== undefined ? { sourceKey: incomingSourceKey } : {}),
300
326
  };
301
- const rFiles = await exception2Result(() => imgGen(promptText, { inputImage, model, target }));
327
+ const isPlaygroundRun = source === "playground" && generationId !== undefined && playgroundRunRef.current !== generationId;
328
+ if (isPlaygroundRun) {
329
+ playgroundRunRef.current = generationId;
330
+ playgroundSpentKeyRef.current = genKey;
331
+ }
332
+ const requestInput = isPlaygroundRun ? playgroundSourceImage : inputImage;
333
+ const rFiles = await exception2Result(() => imgGen(promptText, {
334
+ inputImage: requestInput,
335
+ model,
336
+ target,
337
+ ...(isPlaygroundRun ? { source: "playground" } : {}),
338
+ }));
302
339
  if (rFiles.isErr()) {
340
+ if (rFiles.Err().message === IMG_GEN_CANCELLED) {
341
+ setLoading(false);
342
+ return;
343
+ }
303
344
  if (rFiles.Err().message === IMG_GEN_SOURCE_UNUSABLE) {
304
345
  vibe.log("warn", IMG_GEN_SOURCE_UNUSABLE, { docId: hostDocId, dbName });
305
346
  }
306
347
  setError(rFiles.Err());
307
348
  setLoading(false);
308
- currentGenRef.current = null;
349
+ if (isPlaygroundRun === false)
350
+ currentGenRef.current = null;
309
351
  return;
310
352
  }
311
353
  const { files, docWritten } = rFiles.Ok();
@@ -457,6 +499,8 @@ export function useImgGen(opts) {
457
499
  myHandle,
458
500
  temporaryDraft,
459
501
  inputImage,
502
+ source,
503
+ playgroundSourceImage,
460
504
  model,
461
505
  imgGen,
462
506
  confirmedMediaProbe,
@@ -465,6 +509,6 @@ export function useImgGen(opts) {
465
509
  deferTick,
466
510
  arrivalTick,
467
511
  ]);
468
- return { loading, progress, error, document, pending };
512
+ return { loading, progress, error, document, pending, playgroundAvailable };
469
513
  }
470
514
  //# sourceMappingURL=use-img-gen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-img-gen.js","sourceRoot":"","sources":["../../../jsr/hooks/img-gen/use-img-gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-img-gen.js","sourceRoot":"","sources":["../../../jsr/hooks/img-gen/use-img-gen.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.35",
3
+ "version": "14.3.37",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -10,9 +10,9 @@
10
10
  "dependencies": {
11
11
  "@adviser/cement": "~0.5.34",
12
12
  "@emotion/css": "~11.13.5",
13
- "@vibes.diy/use-vibes-types": "14.3.35",
14
- "@vibes.diy/vibe-runtime": "14.3.35",
15
- "@vibes.diy/vibe-types": "14.3.35",
13
+ "@vibes.diy/use-vibes-types": "14.3.37",
14
+ "@vibes.diy/vibe-runtime": "14.3.37",
15
+ "@vibes.diy/vibe-types": "14.3.37",
16
16
  "officeparser": "~8.0.0",
17
17
  "qrcode-generator": "~2.0.4",
18
18
  "react": "~19.2.8"