@vibes.diy/base 14.3.78 → 14.3.80

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.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { ConfirmedMediaProbe, Database } from "@vibes.diy/vibe-runtime";
2
+ import { type ConfirmedMediaProbe, type Database } from "@vibes.diy/vibe-runtime";
3
3
  import type { ImgGenInputImage, ImgGenRequestOptions, ImgGenResult } from "@vibes.diy/vibe-types";
4
4
  import type { Result } from "@adviser/cement";
5
5
  import { type UseFireproofHook } from "../hooks/img-gen/use-img-gen.js";
@@ -20,5 +20,6 @@ export interface ImgGenProps {
20
20
  confirmedMediaProbe?: ConfirmedMediaProbe | null;
21
21
  pictures?: PictureStore | null;
22
22
  localFileUrl?: LocalFileUrl | null;
23
+ captureRender?: boolean;
23
24
  }
24
- export declare function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls, model, imgGen, useFireproof, confirmedMediaProbe, pictures: picturesProp, localFileUrl, }: ImgGenProps): React.JSX.Element;
25
+ export declare function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls, model, imgGen, useFireproof, confirmedMediaProbe, pictures: picturesProp, localFileUrl, captureRender: captureRenderProp, }: ImgGenProps): React.JSX.Element;
@@ -1,4 +1,6 @@
1
1
  import React, { useState, useCallback, useMemo } from "react";
2
+ import { getRegisteredVibeApi } from "@vibes.diy/vibe-runtime";
3
+ import { isCaptureRefused } from "@vibes.diy/vibe-types";
2
4
  import { useImgGen } from "../hooks/img-gen/use-img-gen.js";
3
5
  import { usePictureSrc } from "../hooks/img-gen/use-picture-src.js";
4
6
  import { registeredPictureStore } from "../hooks/img-gen/local-pictures.js";
@@ -10,7 +12,7 @@ function promptToId(prompt) {
10
12
  }
11
13
  return `img-${(hash >>> 0).toString(36)}`;
12
14
  }
13
- export function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls = true, model, imgGen, useFireproof, confirmedMediaProbe, pictures: picturesProp, localFileUrl, }) {
15
+ export function ImgGen({ prompt, _id: propId, images, database, className, alt, style, showControls = true, model, imgGen, useFireproof, confirmedMediaProbe, pictures: picturesProp, localFileUrl, captureRender: captureRenderProp, }) {
14
16
  const pictures = picturesProp === undefined ? registeredPictureStore() : (picturesProp ?? undefined);
15
17
  const inputImage = images?.[0];
16
18
  const imageKey = inputImage
@@ -78,6 +80,12 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
78
80
  if (!prompt && !stableId) {
79
81
  return (React.createElement("div", { className: className, style: { padding: 20, textAlign: "center", color: "#888" } }, "No prompt provided"));
80
82
  }
83
+ const captureRefused = isCaptureRefused(error);
84
+ const inCapture = captureRefused || (captureRenderProp ?? getRegisteredVibeApi()?.svc.vibeApp.captureRender === true);
85
+ if (captureRefused && !hasExistingImage) {
86
+ return (React.createElement("div", { className: className, "data-imggen-capture-placeholder": true, role: "img", "aria-label": alt ?? prompt ?? "", style: capturePlaceholderStyle },
87
+ React.createElement("div", { style: { fontSize: 14 } }, prompt)));
88
+ }
81
89
  if (error && !hasExistingImage) {
82
90
  return (React.createElement("div", { className: className, style: { padding: 20, textAlign: "center", color: "#e53e3e" } },
83
91
  React.createElement("strong", null, "Error"),
@@ -123,7 +131,7 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
123
131
  backgroundColor: "#0074d9",
124
132
  transition: "width 0.5s ease-out",
125
133
  } }))),
126
- error && (React.createElement("div", { title: error.message, style: {
134
+ error && !captureRefused && (React.createElement("div", { title: error.message, style: {
127
135
  position: "absolute",
128
136
  top: 10,
129
137
  right: 10,
@@ -156,7 +164,7 @@ export function ImgGen({ prompt, _id: propId, images, database, className, alt,
156
164
  "/",
157
165
  versions.length),
158
166
  React.createElement("button", { onClick: handleNext, disabled: currentVersion >= versions.length - 1, style: btnStyle, title: "Next version" }, "\u203A"))),
159
- React.createElement("button", { onClick: handleTapGeneration, disabled: loading, style: btnStyle, title: "Regenerate" }, "\u21BB")))));
167
+ inCapture === false && (React.createElement("button", { onClick: handleTapGeneration, disabled: loading, style: btnStyle, title: "Regenerate" }, "\u21BB"))))));
160
168
  }
161
169
  const btnStyle = {
162
170
  background: "rgba(0,0,0,0.6)",
@@ -168,6 +176,13 @@ const btnStyle = {
168
176
  cursor: "pointer",
169
177
  lineHeight: 1,
170
178
  };
179
+ const capturePlaceholderStyle = {
180
+ padding: 20,
181
+ textAlign: "center",
182
+ color: "#888",
183
+ background: "rgba(128, 128, 128, 0.08)",
184
+ borderRadius: 8,
185
+ };
171
186
  const playgroundBtnStyle = {
172
187
  ...btnStyle,
173
188
  background: "#111",
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- declare const ALL_STEPS: readonly ["handle", "avatar", "sharing"];
2
+ declare const ALL_STEPS: readonly ["handle", "avatar"];
3
3
  export type OnboardingStep = (typeof ALL_STEPS)[number];
4
- export declare function onboardingSteps(includeHandleStep: boolean): readonly OnboardingStep[];
4
+ export declare function onboardingSteps(includeHandleStep: boolean, includeAvatarStep?: boolean): readonly OnboardingStep[];
5
5
  export interface OnboardingOverlayProps {
6
6
  readonly placeholder: string;
7
7
  readonly wordSlugCandidates: readonly string[];
@@ -11,13 +11,13 @@ export interface OnboardingOverlayProps {
11
11
  readonly busy?: boolean;
12
12
  readonly onConfirmHandle: (handle: string) => Promise<boolean>;
13
13
  readonly avatarSlot?: React.ReactNode;
14
- readonly onSetSharingIntent: (intent: "private") => Promise<boolean>;
15
14
  readonly appState?: "building" | "revealed" | "ready";
16
15
  readonly onViewApp?: () => void;
17
16
  readonly onFinish: () => void;
18
17
  readonly onSkip: () => void;
19
18
  readonly onStepShown?: (step: OnboardingStep) => void;
20
19
  readonly includeHandleStep?: boolean;
20
+ readonly includeAvatarStep?: boolean;
21
21
  }
22
- export declare function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSuggestions, onRefreshCandidates, refreshing, busy, onConfirmHandle, avatarSlot, onSetSharingIntent, appState, onViewApp, onFinish, onSkip, onStepShown, includeHandleStep, }: OnboardingOverlayProps): React.ReactElement;
22
+ export declare function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSuggestions, onRefreshCandidates, refreshing, busy, onConfirmHandle, avatarSlot, appState, onViewApp, onFinish, onSkip, onStepShown, includeHandleStep, includeAvatarStep, }: OnboardingOverlayProps): React.ReactElement;
23
23
  export {};
@@ -1,12 +1,12 @@
1
1
  import React, { useEffect, useState } from "react";
2
2
  import { HandleChooserPanel, OverlayCardShell, PanelButtons } from "./HandleChooser.js";
3
- const ALL_STEPS = ["handle", "avatar", "sharing"];
4
- export function onboardingSteps(includeHandleStep) {
5
- return includeHandleStep ? ALL_STEPS : ALL_STEPS.filter((s) => s !== "handle");
3
+ const ALL_STEPS = ["handle", "avatar"];
4
+ export function onboardingSteps(includeHandleStep, includeAvatarStep = true) {
5
+ return ALL_STEPS.filter((s) => (s !== "handle" || includeHandleStep) && (s !== "avatar" || includeAvatarStep));
6
6
  }
7
- export function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSuggestions, onRefreshCandidates, refreshing, busy, onConfirmHandle, avatarSlot, onSetSharingIntent, appState, onViewApp, onFinish, onSkip, onStepShown, includeHandleStep = true, }) {
7
+ export function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSuggestions, onRefreshCandidates, refreshing, busy, onConfirmHandle, avatarSlot, appState, onViewApp, onFinish, onSkip, onStepShown, includeHandleStep = true, includeAvatarStep = true, }) {
8
8
  const [stepIndex, setStepIndex] = useState(0);
9
- const [steps] = useState(() => onboardingSteps(includeHandleStep));
9
+ const [steps, setSteps] = useState(() => onboardingSteps(includeHandleStep, includeAvatarStep));
10
10
  const step = steps[stepIndex];
11
11
  const advance = () => setStepIndex((i) => Math.min(i + 1, steps.length));
12
12
  useEffect(() => {
@@ -23,11 +23,13 @@ export function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSugges
23
23
  return;
24
24
  }
25
25
  return onConfirmHandle(sanitized).then((ok) => {
26
- if (ok)
27
- advance();
26
+ if (!ok)
27
+ return;
28
+ setSteps(onboardingSteps(includeHandleStep, true));
29
+ advance();
28
30
  });
29
31
  };
30
- return (React.createElement(OverlayCardShell, { ariaLabel: "Set up your handle, avatar, and sharing", headerLeft: `Step ${Math.min(stepIndex + 1, steps.length)} of ${steps.length} · while your app builds`, dismissLabel: "Skip onboarding", onDismiss: onSkip },
32
+ return (React.createElement(OverlayCardShell, { ariaLabel: "Set up your handle and avatar", headerLeft: `Step ${Math.min(stepIndex + 1, steps.length)} of ${steps.length} · while your app builds`, dismissLabel: "Skip onboarding", onDismiss: onSkip },
31
33
  (appState === "revealed" || appState === "ready") && (React.createElement("button", { type: "button", onClick: onViewApp ?? onFinish, style: {
32
34
  width: "100%",
33
35
  marginBottom: 12,
@@ -41,8 +43,7 @@ export function OnboardingOverlay({ placeholder, wordSlugCandidates, clerkSugges
41
43
  fontSize: 13,
42
44
  } }, appState === "ready" ? "Your app is ready — take a look →" : "Your app is taking shape — take a look →")),
43
45
  step === "handle" && (React.createElement(HandleChooserPanel, { draftInitial: placeholder, inputPlaceholder: placeholder, subtitle: "This is the publisher name your apps are credited to \u2014 the jchris in jchris/todo-live. You can keep the one we picked, and add more handles later.", wordSlugCandidates: wordSlugCandidates, clerkSuggestions: clerkSuggestions, onRefreshCandidates: onRefreshCandidates, refreshing: refreshing, busy: busy, onConfirm: confirmHandle, onSkip: advance })),
44
- step === "avatar" && React.createElement(AvatarStep, { avatarSlot: avatarSlot, busy: busy, onDone: advance, onSkip: advance }),
45
- step === "sharing" && (React.createElement(SharingStep, { busy: busy, onSetSharingIntent: onSetSharingIntent, onDone: onFinish, onSkip: onFinish }))));
46
+ step === "avatar" && React.createElement(AvatarStep, { avatarSlot: avatarSlot, busy: busy, onDone: advance, onSkip: advance })));
46
47
  }
47
48
  function AvatarStep({ avatarSlot, busy, onDone, onSkip, }) {
48
49
  return (React.createElement("div", null,
@@ -51,31 +52,4 @@ function AvatarStep({ avatarSlot, busy, onDone, onSkip, }) {
51
52
  React.createElement("div", { style: { marginBottom: 12 } }, avatarSlot),
52
53
  React.createElement(PanelButtons, { primary: "Done", disabled: busy, onPrimary: onDone, onSkip: onSkip })));
53
54
  }
54
- function SharingStep({ busy, onSetSharingIntent, onDone, onSkip, }) {
55
- const [choice, setChoice] = useState("followers");
56
- const [saving, setSaving] = useState(false);
57
- const disabled = busy || saving;
58
- const done = async () => {
59
- if (choice === "followers") {
60
- onDone();
61
- return;
62
- }
63
- setSaving(true);
64
- const ok = await onSetSharingIntent("private");
65
- setSaving(false);
66
- if (ok)
67
- onDone();
68
- };
69
- return (React.createElement("div", null,
70
- React.createElement("div", { style: { fontSize: 15, fontWeight: 700, marginBottom: 2 } }, "Choose how you share"),
71
- React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 12, marginBottom: 12 } }, "This controls in-app activity sharing, not app publishing or who may follow you."),
72
- React.createElement("fieldset", { style: { border: 0, padding: 0, margin: "0 0 12px" } },
73
- React.createElement("label", { style: { display: "flex", gap: 8, alignItems: "flex-start", marginBottom: 10, cursor: disabled ? "default" : "pointer" } },
74
- React.createElement("input", { type: "radio", name: "onboarding-sharing", value: "followers", checked: choice === "followers", disabled: disabled, onChange: () => setChoice("followers") }),
75
- React.createElement("span", { style: { fontSize: 13, fontWeight: 600 } }, "Followers can see your activity in apps")),
76
- React.createElement("label", { style: { display: "flex", gap: 8, alignItems: "flex-start", cursor: disabled ? "default" : "pointer" } },
77
- React.createElement("input", { type: "radio", name: "onboarding-sharing", value: "private", checked: choice === "private", disabled: disabled, onChange: () => setChoice("private") }),
78
- React.createElement("span", { style: { fontSize: 13, fontWeight: 600 } }, "Keep everything private"))),
79
- React.createElement(PanelButtons, { primary: saving ? "Saving…" : "Finish", disabled: disabled, onPrimary: () => void done(), onSkip: onSkip })));
80
- }
81
55
  //# sourceMappingURL=OnboardingOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnboardingOverlay.js","sourceRoot":"","sources":["../../jsr/components/OnboardingOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgBxF,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAa3D,MAAM,UAAU,eAAe,CAAC,iBAA0B;IACxD,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC;AAoCD,MAAM,UAAU,iBAAiB,CAAC,EAChC,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,IAAI,EACJ,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,MAAM,EACN,WAAW,EACX,iBAAiB,GAAG,IAAI,GACD;IACvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAG9C,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAA4B,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE9F,MAAM,IAAI,GAA+B,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM;YAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM;YAAE,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAKpC,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAwB,EAAE;QAChE,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5C,IAAI,EAAE;gBAAE,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,gBAAgB,IACf,SAAS,EAAC,yCAAyC,EACnD,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,MAAM,0BAA0B,EACtG,YAAY,EAAC,iBAAiB,EAC9B,SAAS,EAAE,MAAM;QAEhB,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,CACpD,gCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,SAAS,IAAI,QAAQ,EAC9B,KAAK,EAAE;gBACL,KAAK,EAAE,MAAM;gBACb,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,UAAU;gBACnB,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,MAAM;gBAId,UAAU,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBACxD,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,EAAE;aACb,IAEA,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,0CAA0C,CACjG,CACV;QAEA,IAAI,KAAK,QAAQ,IAAI,CACpB,oBAAC,kBAAkB,IACjB,YAAY,EAAE,WAAW,EACzB,gBAAgB,EAAE,WAAW,EAC7B,QAAQ,EAAC,yJAAoJ,EAC7J,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,OAAO,GACf,CACH;QACA,IAAI,KAAK,QAAQ,IAAI,oBAAC,UAAU,IAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAI;QACzG,IAAI,KAAK,SAAS,IAAI,CACrB,oBAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAI,CACxG,CACgB,CACpB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,GAMP;IACC,OAAO,CACL;QACE,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,kBAAmB;QACjF,6BAAK,SAAS,EAAC,+CAA+C,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,iEAElG;QACN,6BAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAG,UAAU,CAAO;QACpD,oBAAC,YAAY,IAAC,OAAO,EAAC,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAI,CAC9E,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,kBAAkB,EAClB,MAAM,EACN,MAAM,GAMP;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA0B,WAAW,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,IAAI,MAAM,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QAEtB,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC/C,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE;YAAE,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,CACL;QACE,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,2BAA4B;QAC1F,6BAAK,SAAS,EAAC,+CAA+C,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,uFAElG;QACN,kCAAU,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE;YAC5D,+BACE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;gBAExH,+BACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,MAAM,KAAK,WAAW,EAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,GACtC;gBACF,8BAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,8CAAgD,CACxF;YACR,+BAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;gBAC3G,+BACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,MAAM,KAAK,SAAS,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,GACpC;gBACF,8BAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,8BAAgC,CACxE,CACC;QACX,oBAAC,YAAY,IAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAI,CACtH,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"OnboardingOverlay.js","sourceRoot":"","sources":["../../jsr/components/OnboardingOverlay.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare const CODE_DRILL_TITLES: Readonly<{
6
6
  readonly details: "App details";
7
7
  readonly help: "Help";
8
8
  }>;
9
- export declare const CODE_CARD_CSS = "\n[data-vibe-menu] .vm-code .vm-moments { margin-bottom: var(--space-14); }\n[data-vibe-menu] .vm-code .vm-suggestions { margin-bottom: var(--space-14); }\n[data-vibe-menu] .vm-codemode { display: flex; flex-direction: column; flex: 0 0 auto; min-height: 0; }\n[data-vibe-menu] .vm-codemode[data-fill] { flex: 1 1 auto; }\n/* The pinned top (kicker, composer, moment) keeps to half the Code mode card\n (80cqh) and scrolls on its own past that, so on a short frame (phone\n landscape) a multi-line composer stays reachable and the tab strip stays in\n the card. At normal sizes it never reaches the cap: only the tab body scrolls. */\n[data-vibe-menu] .vm-codemode-top { flex: none; max-height: 40cqh; overflow-y: auto; overscroll-behavior: contain; }\n[data-vibe-menu] .vm-codemode .vm-composer,\n[data-vibe-menu] .vm-codemode .vm-moments { margin-bottom: 10px; }\n\n/* Its own container: the aside steps out when the strip itself is narrow, on any host. */\n[data-vibe-menu] .vm-survey { margin: 0 0 var(--space-14); container: vm-survey / inline-size; }\n/* Code mode's card is wide and its pinned top is capped: the strip keeps the card-sized tiles. */\n[data-vibe-menu] .vm-codemode .vm-survey { margin-bottom: 10px; max-width: 420px; }\n[data-vibe-menu] .vm-survey-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-8); margin: 0 0 var(--space-8); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-title { font: 600 15px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-aside { font: 400 12px/1.3 var(--font-display); color: var(--muted); white-space: nowrap; }\n[data-vibe-menu] .vm-survey-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); }\n/* Three readings keep the four-up tile size: the missing tile's column stays empty. */\n[data-vibe-menu] .vm-survey-strip[data-count=\"3\"] { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: calc((100% - 24px) / 4 + 8px); }\n[data-vibe-menu] .vm-survey-tile { position: relative; padding: 0; aspect-ratio: 1; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-switch); overflow: hidden; background: var(--card-bg); cursor: pointer; }\n[data-vibe-menu] .vm-survey-tile[data-on=\"true\"] { outline: var(--stroke-focus) solid var(--accent); outline-offset: 2px; }\n[data-vibe-menu] .vm-survey-tile[aria-disabled=\"true\"] { cursor: default; }\n[data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on=\"true\"]) { opacity: 0.35; }\n[data-vibe-menu] .vm-survey-art { display: block; width: 100%; height: 100%; object-fit: cover; }\n[data-vibe-menu] .vm-survey-pending { width: 100%; height: 100%; background: linear-gradient(110deg, var(--line-hairline) 30%, color-mix(in srgb, var(--ink) 14%, transparent) 50%, var(--line-hairline) 70%); background-size: 200% 100%; animation: vm-survey-shimmer 1.4s linear infinite; }\n@keyframes vm-survey-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }\n[data-vibe-menu] .vm-survey-foot { display: flex; align-items: center; gap: var(--space-12); margin-top: var(--space-10); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }\n[data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-pitch { margin-top: var(--space-2); font: 400 13px/1.4 var(--font-display); color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n[data-vibe-menu] .vm-survey-pick { flex: none; height: 36px; padding: 0 var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--accent); color: var(--on-accent); font: 700 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }\n[data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }\n@container vm-survey (max-width: 360px) { [data-vibe-menu] .vm-survey-aside { display: none; } }\n@media (prefers-reduced-motion: reduce) { [data-vibe-menu] .vm-survey-pending { animation: none; } }\n";
9
+ export declare const CODE_CARD_CSS = "\n[data-vibe-menu] .vm-code .vm-moments { margin-bottom: var(--space-14); }\n[data-vibe-menu] .vm-code .vm-suggestions { margin-bottom: var(--space-14); }\n[data-vibe-menu] .vm-codemode { display: flex; flex-direction: column; flex: 0 0 auto; min-height: 0; }\n[data-vibe-menu] .vm-codemode[data-fill] { flex: 1 1 auto; }\n/* The pinned top (kicker, composer, moment) keeps to half the Code mode card\n (80cqh) and scrolls on its own past that, so on a short frame (phone\n landscape) a multi-line composer stays reachable and the tab strip stays in\n the card. At normal sizes it never reaches the cap: only the tab body scrolls. */\n[data-vibe-menu] .vm-codemode-top { flex: none; max-height: 40cqh; overflow-y: auto; overscroll-behavior: contain; }\n[data-vibe-menu] .vm-codemode .vm-composer,\n[data-vibe-menu] .vm-codemode .vm-moments { margin-bottom: 10px; }\n\n/* Its own container: the aside steps out when the strip itself is narrow, on any host. */\n[data-vibe-menu] .vm-survey { margin: 0 0 var(--space-14); container: vm-survey / inline-size; }\n/* Code mode's card is wide and its pinned top is capped: the strip keeps the card-sized tiles. */\n[data-vibe-menu] .vm-codemode .vm-survey { margin-bottom: 10px; max-width: 420px; }\n[data-vibe-menu] .vm-survey-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-8); margin: 0 0 var(--space-8); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-title { font: 600 15px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-aside { font: 400 12px/1.3 var(--font-display); color: var(--muted); white-space: nowrap; }\n[data-vibe-menu] .vm-survey-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); }\n/* Three readings keep the four-up tile size: the missing tile's column stays empty. */\n[data-vibe-menu] .vm-survey-strip[data-count=\"3\"] { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: calc((100% - 24px) / 4 + 8px); }\n[data-vibe-menu] .vm-survey-tile { position: relative; padding: 0; aspect-ratio: 1; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-switch); overflow: hidden; background: var(--card-bg); cursor: pointer; }\n[data-vibe-menu] .vm-survey-tile[data-on=\"true\"] { outline: var(--stroke-focus) solid var(--accent); outline-offset: 2px; }\n[data-vibe-menu] .vm-survey-tile[aria-disabled=\"true\"] { cursor: default; }\n[data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on=\"true\"]) { opacity: 0.35; }\n[data-vibe-menu] .vm-survey-art { display: block; width: 100%; height: 100%; object-fit: cover; }\n[data-vibe-menu] .vm-survey-foot { display: flex; align-items: center; gap: var(--space-12); margin-top: var(--space-10); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }\n[data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-pitch { margin-top: var(--space-2); font: 400 13px/1.4 var(--font-display); color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n[data-vibe-menu] .vm-survey-pick { flex: none; height: 36px; padding: 0 var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--accent); color: var(--on-accent); font: 700 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }\n[data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }\n@container vm-survey (max-width: 360px) { [data-vibe-menu] .vm-survey-aside { display: none; } }\n";
10
10
  export interface CodeCardProps {
11
11
  readonly viewer: ViewerSlice;
12
12
  readonly code: CodeSlice;
@@ -15,6 +15,7 @@ export interface MenuGeometry {
15
15
  readonly logMax: 160;
16
16
  }
17
17
  export declare const MENU_GEOMETRY: MenuGeometry;
18
+ export declare const MENU_TOP_RESERVE_VAR = "--vibe-menu-top-reserve";
18
19
  export type MenuViewport = "desktop" | "phone";
19
20
  export declare function menuViewportFor(widthPx: number): MenuViewport;
20
21
  export declare function switchInsetPx(viewport: MenuViewport): number;
@@ -14,6 +14,7 @@ export const MENU_GEOMETRY = Object.freeze({
14
14
  narrowMaxWidth: 359,
15
15
  logMax: 160,
16
16
  });
17
+ export const MENU_TOP_RESERVE_VAR = "--vibe-menu-top-reserve";
17
18
  export function menuViewportFor(widthPx) {
18
19
  return widthPx <= MENU_GEOMETRY.phoneMaxWidth ? "phone" : "desktop";
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/geometry.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,aAAa,GAAiB,MAAM,CAAC,MAAM,CAAC;IACvD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,EAAE;IACjB,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,GAAG;IACnB,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAIH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAKD,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC;IACxF,OAAO,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACnC,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAC;AAC1F,CAAC"}
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/geometry.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,aAAa,GAAiB,MAAM,CAAC,MAAM,CAAC;IACvD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,EAAE;IACjB,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,GAAG;IACnB,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,oBAAoB,GAAG,yBAAyB,CAAC;AAI9D,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAKD,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC;IACxF,OAAO,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACnC,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAC;AAC1F,CAAC"}
@@ -9,6 +9,7 @@ export interface CodeSurvey {
9
9
  readonly faces: readonly SurveyFace[];
10
10
  readonly picked?: number;
11
11
  readonly onPick?: (index: number) => void;
12
+ readonly onShown?: (faces: number) => void;
12
13
  }
13
14
  export declare const SURVEY_COPY: Readonly<{
14
15
  readonly choosing: "Want to steer the look?";
@@ -17,7 +18,8 @@ export declare const SURVEY_COPY: Readonly<{
17
18
  readonly pick: "Build this one";
18
19
  readonly region: "Steer the look";
19
20
  }>;
20
- export declare const SURVEY_STRIP_CSS = "\n/* Its own container: the aside steps out when the strip itself is narrow, on any host. */\n[data-vibe-menu] .vm-survey { margin: 0 0 var(--space-14); container: vm-survey / inline-size; }\n/* Code mode's card is wide and its pinned top is capped: the strip keeps the card-sized tiles. */\n[data-vibe-menu] .vm-codemode .vm-survey { margin-bottom: 10px; max-width: 420px; }\n[data-vibe-menu] .vm-survey-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-8); margin: 0 0 var(--space-8); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-title { font: 600 15px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-aside { font: 400 12px/1.3 var(--font-display); color: var(--muted); white-space: nowrap; }\n[data-vibe-menu] .vm-survey-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); }\n/* Three readings keep the four-up tile size: the missing tile's column stays empty. */\n[data-vibe-menu] .vm-survey-strip[data-count=\"3\"] { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: calc((100% - 24px) / 4 + 8px); }\n[data-vibe-menu] .vm-survey-tile { position: relative; padding: 0; aspect-ratio: 1; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-switch); overflow: hidden; background: var(--card-bg); cursor: pointer; }\n[data-vibe-menu] .vm-survey-tile[data-on=\"true\"] { outline: var(--stroke-focus) solid var(--accent); outline-offset: 2px; }\n[data-vibe-menu] .vm-survey-tile[aria-disabled=\"true\"] { cursor: default; }\n[data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on=\"true\"]) { opacity: 0.35; }\n[data-vibe-menu] .vm-survey-art { display: block; width: 100%; height: 100%; object-fit: cover; }\n[data-vibe-menu] .vm-survey-pending { width: 100%; height: 100%; background: linear-gradient(110deg, var(--line-hairline) 30%, color-mix(in srgb, var(--ink) 14%, transparent) 50%, var(--line-hairline) 70%); background-size: 200% 100%; animation: vm-survey-shimmer 1.4s linear infinite; }\n@keyframes vm-survey-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }\n[data-vibe-menu] .vm-survey-foot { display: flex; align-items: center; gap: var(--space-12); margin-top: var(--space-10); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }\n[data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-pitch { margin-top: var(--space-2); font: 400 13px/1.4 var(--font-display); color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n[data-vibe-menu] .vm-survey-pick { flex: none; height: 36px; padding: 0 var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--accent); color: var(--on-accent); font: 700 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }\n[data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }\n@container vm-survey (max-width: 360px) { [data-vibe-menu] .vm-survey-aside { display: none; } }\n@media (prefers-reduced-motion: reduce) { [data-vibe-menu] .vm-survey-pending { animation: none; } }\n";
21
+ export declare const SURVEY_STRIP_CSS = "\n/* Its own container: the aside steps out when the strip itself is narrow, on any host. */\n[data-vibe-menu] .vm-survey { margin: 0 0 var(--space-14); container: vm-survey / inline-size; }\n/* Code mode's card is wide and its pinned top is capped: the strip keeps the card-sized tiles. */\n[data-vibe-menu] .vm-codemode .vm-survey { margin-bottom: 10px; max-width: 420px; }\n[data-vibe-menu] .vm-survey-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-8); margin: 0 0 var(--space-8); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-title { font: 600 15px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-aside { font: 400 12px/1.3 var(--font-display); color: var(--muted); white-space: nowrap; }\n[data-vibe-menu] .vm-survey-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); }\n/* Three readings keep the four-up tile size: the missing tile's column stays empty. */\n[data-vibe-menu] .vm-survey-strip[data-count=\"3\"] { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: calc((100% - 24px) / 4 + 8px); }\n[data-vibe-menu] .vm-survey-tile { position: relative; padding: 0; aspect-ratio: 1; border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-switch); overflow: hidden; background: var(--card-bg); cursor: pointer; }\n[data-vibe-menu] .vm-survey-tile[data-on=\"true\"] { outline: var(--stroke-focus) solid var(--accent); outline-offset: 2px; }\n[data-vibe-menu] .vm-survey-tile[aria-disabled=\"true\"] { cursor: default; }\n[data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on=\"true\"]) { opacity: 0.35; }\n[data-vibe-menu] .vm-survey-art { display: block; width: 100%; height: 100%; object-fit: cover; }\n[data-vibe-menu] .vm-survey-foot { display: flex; align-items: center; gap: var(--space-12); margin-top: var(--space-10); padding: 0 var(--space-2); }\n[data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }\n[data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }\n[data-vibe-menu] .vm-survey-pitch { margin-top: var(--space-2); font: 400 13px/1.4 var(--font-display); color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n[data-vibe-menu] .vm-survey-pick { flex: none; height: 36px; padding: 0 var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--accent); color: var(--on-accent); font: 700 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }\n[data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }\n@container vm-survey (max-width: 360px) { [data-vibe-menu] .vm-survey-aside { display: none; } }\n";
22
+ export declare function surveyMinLoaded(count: number): number;
21
23
  export declare function SurveyStrip(props: {
22
24
  readonly survey: CodeSurvey;
23
- }): React.ReactElement;
25
+ }): React.ReactElement | null;
@@ -22,8 +22,6 @@ export const SURVEY_STRIP_CSS = `
22
22
  [data-vibe-menu] .vm-survey-tile[aria-disabled="true"] { cursor: default; }
23
23
  [data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on="true"]) { opacity: 0.35; }
24
24
  [data-vibe-menu] .vm-survey-art { display: block; width: 100%; height: 100%; object-fit: cover; }
25
- [data-vibe-menu] .vm-survey-pending { width: 100%; height: 100%; background: linear-gradient(110deg, var(--line-hairline) 30%, color-mix(in srgb, var(--ink) 14%, transparent) 50%, var(--line-hairline) 70%); background-size: 200% 100%; animation: vm-survey-shimmer 1.4s linear infinite; }
26
- @keyframes vm-survey-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
27
25
  [data-vibe-menu] .vm-survey-foot { display: flex; align-items: center; gap: var(--space-12); margin-top: var(--space-10); padding: 0 var(--space-2); }
28
26
  [data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }
29
27
  [data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }
@@ -31,27 +29,44 @@ export const SURVEY_STRIP_CSS = `
31
29
  [data-vibe-menu] .vm-survey-pick { flex: none; height: 36px; padding: 0 var(--space-16); border: var(--stroke-rule) solid var(--line-card); border-radius: var(--radius-full); background: var(--accent); color: var(--on-accent); font: 700 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }
32
30
  [data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }
33
31
  @container vm-survey (max-width: 360px) { [data-vibe-menu] .vm-survey-aside { display: none; } }
34
- @media (prefers-reduced-motion: reduce) { [data-vibe-menu] .vm-survey-pending { animation: none; } }
35
32
  `;
36
- function Art(props) {
37
- return props.face.src === undefined ? (React.createElement("div", { className: "vm-survey-pending", "data-testid": "survey-face-pending" })) : (React.createElement("img", { className: "vm-survey-art", src: props.face.src, alt: "", draggable: false }));
33
+ export function surveyMinLoaded(count) {
34
+ return Math.min(count, Math.max(3, count - 1));
38
35
  }
39
36
  function SurveyStripBody(props) {
40
- const { faces, picked, onPick } = props.survey;
41
- const [focus, setFocus] = React.useState(0);
37
+ const { faces, picked, onPick, onShown } = props.survey;
38
+ const [loaded, setLoaded] = React.useState(() => new Set());
39
+ const [errored, setErrored] = React.useState(() => new Set());
40
+ const failed = new Set([...errored].filter((i) => !loaded.has(i)));
41
+ const [focus, setFocus] = React.useState(undefined);
42
+ const kept = faces.map((_, i) => i).filter((i) => !failed.has(i));
43
+ const settled = faces.every((_, i) => loaded.has(i) || failed.has(i));
44
+ const enough = kept.length >= surveyMinLoaded(faces.length) && (picked === undefined || !failed.has(picked));
45
+ const visible = settled && enough;
46
+ const onShownRef = React.useRef(onShown);
47
+ onShownRef.current = onShown;
48
+ React.useEffect(() => {
49
+ if (visible)
50
+ onShownRef.current?.(kept.length);
51
+ }, [visible, kept.length]);
52
+ if (!enough)
53
+ return null;
42
54
  const chosen = picked !== undefined;
43
- const shown = picked ?? focus;
55
+ const shown = picked ?? focus ?? kept[0] ?? 0;
44
56
  const face = faces[shown];
45
- const ready = face?.src !== undefined && onPick !== undefined;
46
- return (React.createElement("section", { className: "vm-survey", "data-testid": "survey-strip", "data-picked": chosen ? "" : undefined, "aria-label": SURVEY_COPY.region },
57
+ const ready = onPick !== undefined;
58
+ return (React.createElement("section", { className: "vm-survey", hidden: !visible, "data-testid": visible ? "survey-strip" : "survey-preload", "data-picked": chosen ? "" : undefined, "aria-label": SURVEY_COPY.region },
47
59
  React.createElement("div", { className: "vm-survey-head" },
48
60
  React.createElement("span", { className: "vm-survey-title" }, chosen ? SURVEY_COPY.picked : SURVEY_COPY.choosing),
49
61
  chosen ? null : React.createElement("span", { className: "vm-survey-aside" }, SURVEY_COPY.aside)),
50
- React.createElement("div", { className: "vm-survey-strip", role: "radiogroup", "aria-label": SURVEY_COPY.choosing, "data-count": faces.length }, faces.map((f, i) => (React.createElement("button", { key: i, type: "button", role: "radio", "aria-checked": shown === i, "aria-label": `${f.label}: ${f.pitch}`, "aria-disabled": chosen, className: "vm-survey-tile", "data-on": shown === i, onClick: () => {
51
- if (!chosen)
52
- setFocus(i);
53
- } },
54
- React.createElement(Art, { face: f }))))),
62
+ React.createElement("div", { className: "vm-survey-strip", role: "radiogroup", "aria-label": SURVEY_COPY.choosing, "data-count": kept.length }, kept.map((i) => {
63
+ const f = faces[i];
64
+ return (React.createElement("button", { key: i, type: "button", role: "radio", "aria-checked": shown === i, "aria-label": `${f.label}: ${f.pitch}`, "aria-disabled": chosen, className: "vm-survey-tile", "data-on": shown === i, onClick: () => {
65
+ if (!chosen)
66
+ setFocus(i);
67
+ } },
68
+ React.createElement("img", { className: "vm-survey-art", src: f.src, alt: "", draggable: false, onLoad: () => setLoaded((prev) => (prev.has(i) ? prev : new Set(prev).add(i))), onError: () => setErrored((prev) => (prev.has(i) ? prev : new Set(prev).add(i))) })));
69
+ })),
55
70
  React.createElement("div", { className: "vm-survey-foot" },
56
71
  React.createElement("div", { className: "vm-survey-text", "aria-live": "polite" },
57
72
  React.createElement("div", { className: "vm-survey-label" }, face?.label),
@@ -59,6 +74,9 @@ function SurveyStripBody(props) {
59
74
  chosen ? null : (React.createElement("button", { type: "button", className: "vm-survey-pick", disabled: !ready, onClick: () => onPick?.(shown) }, SURVEY_COPY.pick)))));
60
75
  }
61
76
  export function SurveyStrip(props) {
62
- return React.createElement(SurveyStripBody, { key: props.survey.id, survey: props.survey });
77
+ const srcs = props.survey.faces.map((f) => f.src);
78
+ if (srcs.length === 0 || srcs.some((src) => src === undefined))
79
+ return null;
80
+ return React.createElement(SurveyStripBody, { key: `${props.survey.id}\n${srcs.join("\n")}`, survey: props.survey });
63
81
  }
64
82
  //# sourceMappingURL=SurveyStrip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SurveyStrip.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/SurveyStrip.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SurveyStrip.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/SurveyStrip.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MENU_GEOMETRY } from "../geometry.js";
1
+ import { MENU_GEOMETRY, MENU_TOP_RESERVE_VAR } from "../geometry.js";
2
2
  import { MOTION } from "../motion.js";
3
3
  const G = MENU_GEOMETRY;
4
4
  export const VIBE_MENU_SHELL_CSS = `
@@ -41,7 +41,13 @@ export const VIBE_MENU_SHELL_CSS = `
41
41
  --vm-menu-open-w: calc(var(--vm-tab-w) * 4 + var(--vm-home-extra) + var(--vm-bar-end) + 2px);
42
42
  /* The card's right edge stops where the pill artwork's flat top ends. */
43
43
  --vm-card-w: calc(var(--vm-menu-open-w) + var(--vm-bar-end) - var(--vm-ring) - var(--vm-pill-flat-inset));
44
- --vm-frame-limit: calc(100cqh - 2 * var(--vm-edge) - var(--vm-safe-bottom) - 80px);
44
+ /* The tallest the card may be with its top at the host's top reserve
45
+ (MENU_TOP_RESERVE_VAR): the frame less the card's bottom offset
46
+ (edge + safe + bar) and the reserve. Unset, the fallback of -100cqh makes
47
+ it larger than the frame, so it never caps: the frame limit and Code
48
+ mode's 80cqh box are exactly what they were without a host reserve. */
49
+ --vm-below-reserve: calc(100cqh - var(--vm-edge) - var(--vm-safe-bottom) - var(--vm-bar-h) - var(${MENU_TOP_RESERVE_VAR}, -100cqh));
50
+ --vm-frame-limit: min(calc(100cqh - 2 * var(--vm-edge) - var(--vm-safe-bottom) - 80px), var(--vm-below-reserve));
45
51
  --vm-open-ms: ${MOTION.openMs}ms;
46
52
  --vm-close-ms: ${MOTION.closeMs}ms;
47
53
  --vm-open-ease: ${MOTION.openEase};
@@ -282,7 +288,7 @@ export const VIBE_MENU_SHELL_CSS = `
282
288
  /* Code mode: a tall box (80% of the frame) and, on desktop, a wide one that
283
289
  grows leftwards; the sequencer tweens between the two boxes. */
284
290
  .vm-layer .vm-menu[data-code-mode] .vm-card {
285
- height: 80cqh;
291
+ height: min(80cqh, var(--vm-below-reserve));
286
292
  max-height: none;
287
293
  width: min(1200px, calc(100cqw - 2 * var(--vm-edge) - var(--vm-ring) - var(--vm-pill-flat-inset)));
288
294
  display: flex;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.styles.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/shell.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAYtC,MAAM,CAAC,GAAG,aAAa,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;eAuBpB,CAAC,CAAC,WAAW;eACb,CAAC,CAAC,IAAI;iBACJ,CAAC,CAAC,KAAK;iBACP,CAAC,CAAC,KAAK;gBACR,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI;;qBAED,CAAC,CAAC,SAAS;eACjB,CAAC,CAAC,IAAI;0BACK,CAAC,CAAC,aAAa;;;;;;;;;kBASvB,MAAM,CAAC,MAAM;mBACZ,MAAM,CAAC,OAAO;oBACb,MAAM,CAAC,QAAQ;qBACd,MAAM,CAAC,SAAS;qBAChB,MAAM,CAAC,cAAc;oBACtB,MAAM,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAsRV,CAAC,CAAC,aAAa;;iBAEvB,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAkDH,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;CAqBxC,CAAC"}
1
+ {"version":3,"file":"shell.styles.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/shell/shell.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAYtC,MAAM,CAAC,GAAG,aAAa,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;eAuBpB,CAAC,CAAC,WAAW;eACb,CAAC,CAAC,IAAI;iBACJ,CAAC,CAAC,KAAK;iBACP,CAAC,CAAC,KAAK;gBACR,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI;;qBAED,CAAC,CAAC,SAAS;eACjB,CAAC,CAAC,IAAI;0BACK,CAAC,CAAC,aAAa;;;;;;;;;;;;;qGAa4D,oBAAoB;;kBAEvG,MAAM,CAAC,MAAM;mBACZ,MAAM,CAAC,OAAO;oBACb,MAAM,CAAC,QAAQ;qBACd,MAAM,CAAC,SAAS;qBAChB,MAAM,CAAC,cAAc;oBACtB,MAAM,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAsRV,CAAC,CAAC,aAAa;;iBAEvB,CAAC,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAkDH,CAAC,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;CAqBxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/base",
3
- "version": "14.3.78",
3
+ "version": "14.3.80",
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.78",
14
- "@vibes.diy/vibe-runtime": "14.3.78",
15
- "@vibes.diy/vibe-types": "14.3.78",
13
+ "@vibes.diy/use-vibes-types": "14.3.80",
14
+ "@vibes.diy/vibe-runtime": "14.3.80",
15
+ "@vibes.diy/vibe-types": "14.3.80",
16
16
  "arktype": "~2.2.6",
17
17
  "officeparser": "~8.0.0",
18
18
  "qrcode-generator": "~2.0.4",