@vibes.diy/base 14.3.66 → 14.3.68

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.
@@ -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";
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";
10
10
  export interface CodeCardProps {
11
11
  readonly viewer: ViewerSlice;
12
12
  readonly code: CodeSlice;
@@ -9,6 +9,7 @@ import { Composer } from "../parts/Composer.js";
9
9
  import { DoneButton } from "../parts/DoneButton.js";
10
10
  import { MomentLine } from "../parts/MomentLine.js";
11
11
  import { Row } from "../parts/Row.js";
12
+ import { SURVEY_STRIP_CSS, SurveyStrip } from "../parts/SurveyStrip.js";
12
13
  import { CodeModeWorkspace, WORKSPACE_CODE_TABS, resolveActiveCodeTab } from "./CodeModeWorkspace.js";
13
14
  export const CODE_DRILL_TITLES = Object.freeze({ look: "Look", details: "App details", help: "Help" });
14
15
  export const CODE_CARD_CSS = `
@@ -23,7 +24,7 @@ export const CODE_CARD_CSS = `
23
24
  [data-vibe-menu] .vm-codemode-top { flex: none; max-height: 40cqh; overflow-y: auto; overscroll-behavior: contain; }
24
25
  [data-vibe-menu] .vm-codemode .vm-composer,
25
26
  [data-vibe-menu] .vm-codemode .vm-moments { margin-bottom: 10px; }
26
- `;
27
+ ${SURVEY_STRIP_CSS}`;
27
28
  const NO_MOMENT = { pinned: null, live: null };
28
29
  function codeDrillOf(input) {
29
30
  if (input.view === null)
@@ -61,6 +62,7 @@ export function CodeCard(props) {
61
62
  ? withOpenLog(currentMoment(code.moments), { logOpen: props.logOpen, hasLog: logLines.length > 0, codeMode: codeModeOn })
62
63
  : NO_MOMENT;
63
64
  const hasMoment = moment.pinned !== null || moment.live !== null;
65
+ const survey = editor && code.survey !== undefined && code.survey !== null ? React.createElement(SurveyStrip, { survey: code.survey }) : null;
64
66
  const kicker = kickerFor({ code, banner: nav.banner, editor, pending });
65
67
  const composer = pending === true ? neutralComposer(code.composer) : code.composer;
66
68
  const placeholder = pending === true ? "" : composer.cap === "Remix this" && props.remixHint !== "" ? props.remixHint : composer.placeholder;
@@ -79,7 +81,8 @@ export function CodeCard(props) {
79
81
  React.createElement("style", null, CODE_CARD_CSS),
80
82
  React.createElement("div", { className: "vm-codemode-top" },
81
83
  head,
82
- hasMoment ? React.createElement(MomentLine, { moment: moment, log: null, onAction: code.onMomentAction }) : null),
84
+ hasMoment ? React.createElement(MomentLine, { moment: moment, log: null, onAction: code.onMomentAction }) : null,
85
+ survey),
83
86
  React.createElement(CodeModeWorkspace, { tab: tab, disabledTabs: code.disabledCodeTabs, onTab: onTab, onCodeModeOff: () => code.onCodeMode(false), slots: { look: code.slots.look, help: code.slots.help, agentLog: code.slots.agentLog }, log: logLines, queued: queuedLines, workspacePanelId: props.workspacePanelId })));
84
87
  }
85
88
  const toggle = { open: props.logOpen, onToggle: () => props.onLogOpen(props.logOpen === false), lines: logLines };
@@ -101,6 +104,7 @@ export function CodeCard(props) {
101
104
  return (React.createElement("div", { className: "vm-code", "data-card": "vibe" },
102
105
  React.createElement("style", null, CODE_CARD_CSS),
103
106
  top,
107
+ survey,
104
108
  React.createElement(Suggestions, { items: suggestions, onPick: code.onSuggestion, fastPaths: code.suggestionFastPaths, onToggleFastPath: onToggleFastPath }),
105
109
  React.createElement("div", { className: "vm-group" },
106
110
  owner ? (React.createElement(Row, { lead: "palette", label: CODE_DRILL_TITLES.look, compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "look" }) })) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/CodeCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CodeCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/CodeCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAMtG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAW,CAAC,CAAC;AAGhH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;EAY3B,gBAAgB,EAAE,CAAC;AAErB,MAAM,SAAS,GAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAc9D,SAAS,WAAW,CAAC,KAAkE;IACrF,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAKlB;IAEC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAItC,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,mBAAmB,CAAC;IACzF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,QAA+B;IACtD,OAAO,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC;IAIhD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;IAC7E,MAAM,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAE7D,MAAM,WAAW,GAAuB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAuB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;IAGnE,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QACzH,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;IAEjE,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,oBAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACzH,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAGxE,MAAM,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnF,MAAM,WAAW,GACf,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAG3H,MAAM,IAAI,GAAG,CACX;QACG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,2BAAG,SAAS,EAAC,WAAW,IAAE,MAAM,CAAK,CAAC,CAAC,CAAC,IAAI;QAC7D,oBAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,GAAI,CACvE,CACJ,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QAIf,MAAM,GAAG,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACvH,SAAS,KAAK,CAAC,CAAU;YAEvB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;gBAAE,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;QAC1D,OAAO,CACL,6BAAK,SAAS,EAAC,aAAa,eAAW,MAAM,eAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7E,mCAAQ,aAAa,CAAS;YAC9B,6BAAK,SAAS,EAAC,iBAAiB;gBAC7B,IAAI;gBACJ,SAAS,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI;gBAC3F,MAAM,CACH;YACN,oBAAC,iBAAiB,IAChB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EACtF,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GACxC,CACE,CACP,CAAC;IACJ,CAAC;IAMD,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5G,MAAM,GAAG,GAAG,CACV;QACG,IAAI;QACJ,SAAS,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI,CAC1F,CACJ,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS,eAAW,MAAM;YACvC,mCAAQ,aAAa,CAAS;YAC7B,GAAG;YACJ,oBAAC,OAAO,IAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,YAAY,GAAI;YAChG,6BAAK,SAAS,EAAC,UAAU,gBAAa,KAAK,IACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CACd;YACN,oBAAC,UAAU,IAAC,MAAM,EAAE,GAAG,CAAC,YAAY,GAAI,CACpC,CACP,CAAC;IACJ,CAAC;IAGD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAG/E,MAAM,gBAAgB,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS,eAAW,MAAM;QACvC,mCAAQ,aAAa,CAAS;QAC7B,GAAG;QACH,MAAM;QACP,oBAAC,WAAW,IACV,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EACnC,gBAAgB,EAAE,gBAAgB,GAClC;QACF,6BAAK,SAAS,EAAC,UAAU;YACtB,KAAK,CAAC,CAAC,CAAC,CACP,oBAAC,GAAG,IACF,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,iBAAiB,CAAC,IAAI,EAC7B,OAAO,QACP,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAC7C,CACH,CAAC,CAAC,CAAC,IAAI;YACP,KAAK,CAAC,CAAC,CAAC,CACP,oBAAC,GAAG,IACF,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAChC,OAAO,QACP,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,GAChD,CACH,CAAC,CAAC,CAAC,IAAI;YACR,oBAAC,GAAG,IACF,IAAI,EAAC,aAAa,EAClB,KAAK,EAAE,iBAAiB,CAAC,IAAI,EAC7B,OAAO,QACP,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAC7C;YACD,eAAe,CAAC,CAAC,CAAC,CAEjB,oBAAC,GAAG,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,WAAW,EAAC,OAAO,QAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,CAC3H,CAAC,CAAC,CAAC,IAAI,CACJ,CACF,CACP,CAAC;AACJ,CAAC"}
@@ -14,6 +14,7 @@ export * from "./parts/Chip.js";
14
14
  export * from "./parts/Composer.js";
15
15
  export * from "./parts/use-composer-draft.js";
16
16
  export * from "./parts/MomentLine.js";
17
+ export * from "./parts/SurveyStrip.js";
17
18
  export * from "./parts/AccessToggle.js";
18
19
  export * from "./parts/GrantControls.js";
19
20
  export * from "./parts/MemberRow.js";
@@ -14,6 +14,7 @@ export * from "./parts/Chip.js";
14
14
  export * from "./parts/Composer.js";
15
15
  export * from "./parts/use-composer-draft.js";
16
16
  export * from "./parts/MomentLine.js";
17
+ export * from "./parts/SurveyStrip.js";
17
18
  export * from "./parts/AccessToggle.js";
18
19
  export * from "./parts/GrantControls.js";
19
20
  export * from "./parts/MemberRow.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ export interface SurveyFace {
3
+ readonly src?: string;
4
+ readonly label: string;
5
+ readonly pitch: string;
6
+ }
7
+ export interface CodeSurvey {
8
+ readonly id: string;
9
+ readonly faces: readonly SurveyFace[];
10
+ readonly picked?: number;
11
+ readonly onPick?: (index: number) => void;
12
+ }
13
+ export declare const SURVEY_COPY: Readonly<{
14
+ readonly choosing: "Want to steer the look?";
15
+ readonly aside: "Optional · the build goes on";
16
+ readonly picked: "Building in this look";
17
+ readonly pick: "Build this one";
18
+ readonly region: "Steer the look";
19
+ }>;
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 function SurveyStrip(props: {
22
+ readonly survey: CodeSurvey;
23
+ }): React.ReactElement;
@@ -0,0 +1,64 @@
1
+ import * as React from "react";
2
+ export const SURVEY_COPY = Object.freeze({
3
+ choosing: "Want to steer the look?",
4
+ aside: "Optional · the build goes on",
5
+ picked: "Building in this look",
6
+ pick: "Build this one",
7
+ region: "Steer the look",
8
+ });
9
+ export const SURVEY_STRIP_CSS = `
10
+ /* Its own container: the aside steps out when the strip itself is narrow, on any host. */
11
+ [data-vibe-menu] .vm-survey { margin: 0 0 var(--space-14); container: vm-survey / inline-size; }
12
+ /* Code mode's card is wide and its pinned top is capped: the strip keeps the card-sized tiles. */
13
+ [data-vibe-menu] .vm-codemode .vm-survey { margin-bottom: 10px; max-width: 420px; }
14
+ [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); }
15
+ [data-vibe-menu] .vm-survey-title { font: 600 15px/1.3 var(--font-display); color: var(--ink); }
16
+ [data-vibe-menu] .vm-survey-aside { font: 400 12px/1.3 var(--font-display); color: var(--muted); white-space: nowrap; }
17
+ [data-vibe-menu] .vm-survey-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-8); }
18
+ /* Three readings keep the four-up tile size: the missing tile's column stays empty. */
19
+ [data-vibe-menu] .vm-survey-strip[data-count="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); padding-right: calc((100% - 24px) / 4 + 8px); }
20
+ [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; }
21
+ [data-vibe-menu] .vm-survey-tile[data-on="true"] { outline: var(--stroke-focus) solid var(--accent); outline-offset: 2px; }
22
+ [data-vibe-menu] .vm-survey-tile[aria-disabled="true"] { cursor: default; }
23
+ [data-vibe-menu] .vm-survey[data-picked] .vm-survey-tile:not([data-on="true"]) { opacity: 0.35; }
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
+ [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
+ [data-vibe-menu] .vm-survey-text { flex: 1 1 auto; min-width: 0; }
29
+ [data-vibe-menu] .vm-survey-label { font: 700 14px/1.3 var(--font-display); color: var(--ink); }
30
+ [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; }
31
+ [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
+ [data-vibe-menu] .vm-survey-pick:disabled { opacity: 0.45; cursor: default; }
33
+ @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
+ `;
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 }));
38
+ }
39
+ function SurveyStripBody(props) {
40
+ const { faces, picked, onPick } = props.survey;
41
+ const [focus, setFocus] = React.useState(0);
42
+ const chosen = picked !== undefined;
43
+ const shown = picked ?? focus;
44
+ 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 },
47
+ React.createElement("div", { className: "vm-survey-head" },
48
+ React.createElement("span", { className: "vm-survey-title" }, chosen ? SURVEY_COPY.picked : SURVEY_COPY.choosing),
49
+ 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 }))))),
55
+ React.createElement("div", { className: "vm-survey-foot" },
56
+ React.createElement("div", { className: "vm-survey-text", "aria-live": "polite" },
57
+ React.createElement("div", { className: "vm-survey-label" }, face?.label),
58
+ React.createElement("div", { className: "vm-survey-pitch" }, face?.pitch)),
59
+ chosen ? null : (React.createElement("button", { type: "button", className: "vm-survey-pick", disabled: !ready, onClick: () => onPick?.(shown) }, SURVEY_COPY.pick)))));
60
+ }
61
+ export function SurveyStrip(props) {
62
+ return React.createElement(SurveyStripBody, { key: props.survey.id, survey: props.survey });
63
+ }
64
+ //# sourceMappingURL=SurveyStrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SurveyStrip.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/SurveyStrip.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import type { MemberRowMember } from "./parts/MemberRow.js";
10
10
  import type { AgentLogLine } from "./parts/MomentLine.js";
11
11
  import type { ComposerSlice } from "./parts/Composer.js";
12
12
  import type { SuggestionFastPath } from "./parts/Chip.js";
13
+ import type { CodeSurvey } from "./parts/SurveyStrip.js";
13
14
  export type Posture = AccessPosture;
14
15
  export type DataGrant = GrantData;
15
16
  export type RosterMember = MemberRowMember;
@@ -80,6 +81,7 @@ export interface CodeSlice {
80
81
  workspace: ReactNode;
81
82
  agentLog?: ReactNode;
82
83
  };
84
+ readonly survey?: CodeSurvey | null;
83
85
  }
84
86
  export type AppClipCardStatus = "requested" | "submitted" | "in_review" | "live" | "rejected" | "failed" | "deactivated";
85
87
  export interface ShareAppSlice {
@@ -1 +1 @@
1
- {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AA0NA,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":"AA+NA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibes.diy/base",
3
- "version": "14.3.66",
3
+ "version": "14.3.68",
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.66",
14
- "@vibes.diy/vibe-runtime": "14.3.66",
15
- "@vibes.diy/vibe-types": "14.3.66",
13
+ "@vibes.diy/use-vibes-types": "14.3.68",
14
+ "@vibes.diy/vibe-runtime": "14.3.68",
15
+ "@vibes.diy/vibe-types": "14.3.68",
16
16
  "arktype": "~2.2.6",
17
17
  "officeparser": "~8.0.0",
18
18
  "qrcode-generator": "~2.0.4",